Skip to content

Instantly share code, notes, and snippets.

@tubone24
Last active May 22, 2023 01:52
Show Gist options
  • Save tubone24/b00e71c41a9c2305b734d7c9e787fe28 to your computer and use it in GitHub Desktop.
Save tubone24/b00e71c41a9c2305b734d7c9e787fe28 to your computer and use it in GitHub Desktop.
vscode settings
{"lastUpload":"2023-05-22T01:51:57.956Z","extensionVersion":"v3.4.3"}
{"version":1,"resource":"file:///Users/tubone24/.bash_profile","entries":[{"id":"rjzt","timestamp":1662042052972}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/aiscript-syntax/LICENSE","entries":[{"id":"mIpS","timestamp":1680621855635}]}
{"version":1,"resource":"file:///Users/yuotsubo/Downloads/%E3%83%8F%E3%83%B3%E3%83%8A%E3%81%95%E3%82%93.md","entries":[{"id":"9oyu.md","source":"textFileCreate.source","timestamp":1655894002287},{"id":"47Qy.md","timestamp":1655894092732},{"id":"Fdfu.md","timestamp":1655894185539},{"id":"H62T.md","timestamp":1655947707692}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/testOtsuboEventHubLead/force-app/main/default/permissionsets/Apex_Recipes.permissionset-meta.xml","entries":[{"id":"c8FE.xml","timestamp":1676893727011},{"id":"FTSj.xml","timestamp":1676893745919}]}
{"version":1,"resource":"file:///Users/yuotsubo/.config/git/hooks/pre-push","entries":[{"id":"fgCC","timestamp":1662381656058}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/testOtsuboEventHubLead/force-app/main/default/lwc/jsconfig.json","entries":[{"id":"T87g.json","timestamp":1676891685927}]}
{
"compilerOptions": {
"experimentalDecorators": true
},
"include": [
"**/*",
"../../../../.sfdx/typings/lwc/**/*.d.ts"
],
"paths": {
"c/*": [
"*"
]
},
"typeAcquisition": {
"include": [
"jest"
]
}
}
{"version":1,"resource":"file:///Users/yuotsubo/.zshrc","entries":[{"id":"1QBV","timestamp":1661754359311},{"id":"AR1U","timestamp":1661754438869},{"id":"F3e5","timestamp":1661754453072},{"id":"8Jzn","timestamp":1663591218544},{"id":"hcJc","timestamp":1671843784595}]}
{"version":1,"resource":"file:///Users/tubone24/share_windows/%E3%83%A1%E3%83%A2.txt","entries":[{"id":"33BJ.txt","timestamp":1655087369433},{"id":"CDW3.txt","timestamp":1655087384164}]}
{"version":1,"resource":"vsls:/force-app/main/default/applications/Hello.app-meta.xml","entries":[{"id":"LYg8.xml","source":"Workspace Edit","timestamp":null}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/infrastructure/production/index.html","entries":[{"id":"NUK8.html","source":"textFileCreate.source","timestamp":1665578311375}]}
{"version":1,"resource":"file:///Users/tubone24/%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9Ahc.txt","entries":[{"id":"GRAC.txt","source":"textFileCreate.source","timestamp":1650719012093},{"id":"9jJi.txt","timestamp":1651218673439}]}
{"version":1,"resource":"vsls:/force-app/main/default/classes/ApiKeyTests.cls","entries":[{"id":"wdpm.cls","source":"Workspace Edit","timestamp":null}]}
{
"[Mk:dialog]":{
"prefix":"Mk:dialog",
"body":[
"[Mk:dialog(\"title\" \"text\" \"type\")]"
],
"description":[
"ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると info になります。"
]
},
"[Mk:confirm]":{
"prefix":"Mk:confirm",
"body":[
"[Mk:confirm(\"title\" \"text\" \"type\")]"
],
"description":[
"確認ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると question になります。",
"ユーザーが\"OK\"を選択した場合は true を、\"キャンセル\"を選択した場合は false が返ります。"
]
},
"[Mk:api]":{
"prefix":"Mk:api",
"body":[
"[Mk:api(\"endpoint\" \"params\")]"
],
"description":[
"Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。"
]
},
"[Mk:save]":{
"prefix":"Mk:save",
"body":[
"[Mk:save(\"key\" \"value\")]"
],
"description":[
"任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。"
]
},
"[Mk:load]":{
"prefix":"Mk:load",
"body":[
"[Mk:load(\"key\")]"
],
"description":[
"Mk:saveで永続化した指定の名前の値を読み取ります。"
]
},
"[Plugin:register_post_form_action]":{
"prefix":"Plugin:register_post_form_action",
"body":[
"[Plugin:register_post_form_action(\"title\" \"fn\")]"
],
"description":[
"投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。"
]
},
"[Plugin:register_note_action]":{
"prefix":"Plugin:register_note_action",
"body":[
"[Plugin:register_note_action(\"title\" \"fn\")]"
],
"description":[
"ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。"
]
},
"[Plugin:register_user_action]":{
"prefix":"Plugin:register_user_action",
"body":[
"[Plugin:register_user_action(\"title\" \"fn\")]"
],
"description":[
"ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。"
]
},
"[Plugin:register_note_view_interruptor]":{
"prefix":"Plugin:register_note_view_interruptor",
"body":[
"[Plugin:register_note_view_interruptor(\"fn\")]"
],
"description":[
"UIに表示されるノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:register_note_post_interruptor]":{
"prefix":"Plugin:register_note_post_interruptor",
"body":[
"[Plugin:register_note_post_interruptor(\"fn\")]"
],
"description":[
"ノート投稿時にノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:open_url]":{
"prefix":"Plugin:open_url",
"body":[
"[Plugin:open_url(\"url\")]"
],
"description":[
"第一引数に渡されたURLをブラウザの新しいタブで開きます。"
]
},
"[Plugin:config]":{
"prefix":"Plugin:config",
"body":[
"[Plugin:config()]"
],
"description":[
"プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。"
]
},
"[Ui:render]":{
"prefix":"Ui:render",
"body":[
"[Ui:render([children])]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文です。"
]
},
"[Ui:C:mfm]":{
"prefix":"Ui:C:mfm",
"body":[
"[Ui:C:mfm({ text: \"someText\"}]"
],
"description":[
"MFMテキスト"
]
}
}
{
"[Mk:dialog]":{
"prefix":"Mk:dialog",
"body":[
"[Mk:dialog(\"title\" \"text\" \"type\")]"
],
"description":[
"ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると info になります。"
]
},
"[Mk:confirm]":{
"prefix":"Mk:confirm",
"body":[
"[Mk:confirm(\"title\" \"text\" \"type\")]"
],
"description":[
"確認ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると question になります。",
"ユーザーが\"OK\"を選択した場合は true を、\"キャンセル\"を選択した場合は false が返ります。"
]
},
"[Mk:api]":{
"prefix":"Mk:api",
"body":[
"[Mk:api(\"endpoint\" \"params\")]"
],
"description":[
"Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。"
]
},
"[Mk:save]":{
"prefix":"Mk:save",
"body":[
"[Mk:save(\"key\" \"value\")]"
],
"description":[
"任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。"
]
},
"[Mk:load]":{
"prefix":"Mk:load",
"body":[
"[Mk:load(\"key\")]"
],
"description":[
"Mk:saveで永続化した指定の名前の値を読み取ります。"
]
},
"[Plugin:register_post_form_action]":{
"prefix":"Plugin:register_post_form_action",
"body":[
"[Plugin:register_post_form_action(\"title\" \"fn\")]"
],
"description":[
"投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。"
]
},
"[Plugin:register_note_action]":{
"prefix":"Plugin:register_note_action",
"body":[
"[Plugin:register_note_action(\"title\" \"fn\")]"
],
"description":[
"ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。"
]
},
"[Plugin:register_user_action]":{
"prefix":"Plugin:register_user_action",
"body":[
"[Plugin:register_user_action(\"title\" \"fn\")]"
],
"description":[
"ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。"
]
},
"[Plugin:register_note_view_interruptor]":{
"prefix":"Plugin:register_note_view_interruptor",
"body":[
"[Plugin:register_note_view_interruptor(\"fn\")]"
],
"description":[
"UIに表示されるノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:register_note_post_interruptor]":{
"prefix":"Plugin:register_note_post_interruptor",
"body":[
"[Plugin:register_note_post_interruptor(\"fn\")]"
],
"description":[
"ノート投稿時にノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:open_url]":{
"prefix":"Plugin:open_url",
"body":[
"[Plugin:open_url(\"url\")]"
],
"description":[
"第一引数に渡されたURLをブラウザの新しいタブで開きます。"
]
},
"[Plugin:config]":{
"prefix":"Plugin:config",
"body":[
"[Plugin:config()]"
],
"description":[
"プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。"
]
},
"[Ui:render]":{
"prefix":"Ui:render",
"body":[
"[Ui:render([children])]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文"
]
},
"[Ui:C:mfm]":{
"prefix":"Ui:C:mfm",
"body":[
"[Ui:C:mfm({ text: \"someText\"}]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文"
]
},
}
{
"[Mk:dialog]":{
"prefix":"Mk:dialog",
"body":[
"[Mk:dialog(\"title\" \"text\" \"type\")]"
],
"description":[
"ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると info になります。"
]
},
"[Mk:confirm]":{
"prefix":"Mk:confirm",
"body":[
"[Mk:confirm(\"title\" \"text\" \"type\")]"
],
"description":[
"確認ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると question になります。",
"ユーザーが\"OK\"を選択した場合は true を、\"キャンセル\"を選択した場合は false が返ります。"
]
},
"[Mk:api]":{
"prefix":"Mk:api",
"body":[
"[Mk:api(\"endpoint\" \"params\")]"
],
"description":[
"Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。"
]
},
"[Mk:save]":{
"prefix":"Mk:save",
"body":[
"[Mk:save(\"key\" \"value\")]"
],
"description":[
"任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。"
]
},
"[Mk:load]":{
"prefix":"Mk:load",
"body":[
"[Mk:load(\"key\")]"
],
"description":[
"Mk:saveで永続化した指定の名前の値を読み取ります。"
]
},
"[Plugin:register_post_form_action]":{
"prefix":"Plugin:register_post_form_action",
"body":[
"[Plugin:register_post_form_action(\"title\" \"fn\")]"
],
"description":[
"投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。"
]
},
"[Plugin:register_note_action]":{
"prefix":"Plugin:register_note_action",
"body":[
"[Plugin:register_note_action(\"title\" \"fn\")]"
],
"description":[
"ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。"
]
},
"[Plugin:register_user_action]":{
"prefix":"Plugin:register_user_action",
"body":[
"[Plugin:register_user_action(\"title\" \"fn\")]"
],
"description":[
"ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。"
]
},
"[Plugin:register_note_view_interruptor]":{
"prefix":"Plugin:register_note_view_interruptor",
"body":[
"[Plugin:register_note_view_interruptor(\"fn\")]"
],
"description":[
"UIに表示されるノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:register_note_post_interruptor]":{
"prefix":"Plugin:register_note_post_interruptor",
"body":[
"[Plugin:register_note_post_interruptor(\"fn\")]"
],
"description":[
"ノート投稿時にノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:open_url]":{
"prefix":"Plugin:open_url",
"body":[
"[Plugin:open_url(\"url\")]"
],
"description":[
"第一引数に渡されたURLをブラウザの新しいタブで開きます。"
]
},
"[Plugin:config]":{
"prefix":"Plugin:config",
"body":[
"[Plugin:config()]"
],
"description":[
"プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。"
]
},
"[Ui:render]":{
"prefix":"Ui:render",
"body":[
"[Ui:render([children])]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文です。"
]
},
"[Ui:C:mfm]":{
"prefix":"Ui:C:mfm",
"body":[
"[Ui:C:mfm({ text: \"someText\"}]"
],
"description":[
"Markup language For Misskeyで指定されるテキストを解釈して表示します。",
"詳細についてはhttps://misskey-hub.net/docs/features/mfm.htmlを参照ください。"
]
}
}
{
"[Mk:dialog]":{
"prefix":"Mk:dialog",
"body":[
"[Mk:dialog(\"title\" \"text\" \"type\")]"
],
"description":[
"ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると info になります。"
]
},
"[Mk:confirm]":{
"prefix":"Mk:confirm",
"body":[
"[Mk:confirm(\"title\" \"text\" \"type\")]"
],
"description":[
"確認ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると question になります。",
"ユーザーが\"OK\"を選択した場合は true を、\"キャンセル\"を選択した場合は false が返ります。"
]
},
"[Mk:api]":{
"prefix":"Mk:api",
"body":[
"[Mk:api(\"endpoint\" \"params\")]"
],
"description":[
"Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。"
]
},
"[Mk:save]":{
"prefix":"Mk:save",
"body":[
"[Mk:save(\"key\" \"value\")]"
],
"description":[
"任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。"
]
},
"[Mk:load]":{
"prefix":"Mk:load",
"body":[
"[Mk:load(\"key\")]"
],
"description":[
"Mk:saveで永続化した指定の名前の値を読み取ります。"
]
},
"[Plugin:register_post_form_action]":{
"prefix":"Plugin:register_post_form_action",
"body":[
"[Plugin:register_post_form_action(\"title\" \"fn\")]"
],
"description":[
"投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。"
]
},
"[Plugin:register_note_action]":{
"prefix":"Plugin:register_note_action",
"body":[
"[Plugin:register_note_action(\"title\" \"fn\")]"
],
"description":[
"ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。"
]
},
"[Plugin:register_user_action]":{
"prefix":"Plugin:register_user_action",
"body":[
"[Plugin:register_user_action(\"title\" \"fn\")]"
],
"description":[
"ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。"
]
},
"[Plugin:register_note_view_interruptor]":{
"prefix":"Plugin:register_note_view_interruptor",
"body":[
"[Plugin:register_note_view_interruptor(\"fn\")]"
],
"description":[
"UIに表示されるノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:register_note_post_interruptor]":{
"prefix":"Plugin:register_note_post_interruptor",
"body":[
"[Plugin:register_note_post_interruptor(\"fn\")]"
],
"description":[
"ノート投稿時にノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:open_url]":{
"prefix":"Plugin:open_url",
"body":[
"[Plugin:open_url(\"url\")]"
],
"description":[
"第一引数に渡されたURLをブラウザの新しいタブで開きます。"
]
},
"[Plugin:config]":{
"prefix":"Plugin:config",
"body":[
"[Plugin:config()]"
],
"description":[
"プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。"
]
},
"[Ui:render]":{
"prefix":"Ui:render",
"body":[
"[Ui:render([children])]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文です。"
]
},
"[Ui:C:mfm]":{
"prefix":"Ui:C:mfm",
"body":[
"[Ui:C:mfm({ text: \"someText\", size: 1, bold: false, color: \"#000\", font: \"sans-serif\"})]"
],
"description":[
"Markup language For Misskeyで指定されるテキストを解釈して表示します。",
"詳細についてはhttps://misskey-hub.net/docs/features/mfm.htmlを参照ください。"
]
}
}
{"version":1,"resource":"file:///Users/yuotsubo/project/aiscript-syntax/snippets/aiscript.snippet.json","entries":[{"id":"uhrk.json","timestamp":1680684546326},{"id":"U2KI.json","timestamp":1680684570978},{"id":"J5t3.json","timestamp":1680684594082},{"id":"PtUc.json","timestamp":1680684640147},{"id":"s0tb.json","timestamp":1680684651587},{"id":"PZQh.json","timestamp":1680684690954},{"id":"nN14.json","timestamp":1680684731354},{"id":"B5c4.json","timestamp":1680684747054},{"id":"AF4L.json","timestamp":1680684767248},{"id":"KYK7.json","timestamp":1680684787430},{"id":"et5U.json","timestamp":1680684798261},{"id":"CFpm.json","timestamp":1680684824492},{"id":"zy5W.json","timestamp":1680684915689},{"id":"e35u.json","timestamp":1680684970823}]}
{
"[Mk:dialog]":{
"prefix":"Mk:dialog",
"body":[
"[Mk:dialog(\"title\" \"text\" \"type\")]"
],
"description":[
"ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると info になります。"
]
},
"[Mk:confirm]":{
"prefix":"Mk:confirm",
"body":[
"[Mk:confirm(\"title\" \"text\" \"type\")]"
],
"description":[
"確認ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると question になります。",
"ユーザーが\"OK\"を選択した場合は true を、\"キャンセル\"を選択した場合は false が返ります。"
]
},
"[Mk:api]":{
"prefix":"Mk:api",
"body":[
"[Mk:api(\"endpoint\" \"params\")]"
],
"description":[
"Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。"
]
},
"[Mk:save]":{
"prefix":"Mk:save",
"body":[
"[Mk:save(\"key\" \"value\")]"
],
"description":[
"任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。"
]
},
"[Mk:load]":{
"prefix":"Mk:load",
"body":[
"[Mk:load(\"key\")]"
],
"description":[
"Mk:saveで永続化した指定の名前の値を読み取ります。"
]
},
"[Plugin:register_post_form_action]":{
"prefix":"Plugin:register_post_form_action",
"body":[
"[Plugin:register_post_form_action(\"title\" \"fn\")]"
],
"description":[
"投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。"
]
},
"[Plugin:register_note_action]":{
"prefix":"Plugin:register_note_action",
"body":[
"[Plugin:register_note_action(\"title\" \"fn\")]"
],
"description":[
"ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。"
]
},
"[Plugin:register_user_action]":{
"prefix":"Plugin:register_user_action",
"body":[
"[Plugin:register_user_action(\"title\" \"fn\")]"
],
"description":[
"ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。"
]
},
"[Plugin:register_note_view_interruptor]":{
"prefix":"Plugin:register_note_view_interruptor",
"body":[
"[Plugin:register_note_view_interruptor(\"fn\")]"
],
"description":[
"UIに表示されるノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:register_note_post_interruptor]":{
"prefix":"Plugin:register_note_post_interruptor",
"body":[
"[Plugin:register_note_post_interruptor(\"fn\")]"
],
"description":[
"ノート投稿時にノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:open_url]":{
"prefix":"Plugin:open_url",
"body":[
"[Plugin:open_url(\"url\")]"
],
"description":[
"第一引数に渡されたURLをブラウザの新しいタブで開きます。"
]
},
"[Plugin:config]":{
"prefix":"Plugin:config",
"body":[
"[Plugin:config()]"
],
"description":[
"プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。"
]
},
"[Ui:render]":{
"prefix":"Ui:render",
"body":[
"[Ui:render([children])]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文です。"
]
},
"[Ui:C:mfm]":{
"prefix":"Ui:C:mfm",
"body":[
"[Ui:C:mfm({ text: \"someText\"}]"
],
"description":[
"Markup language For Misskeyで指定されるテキストを解釈して表示します。"
]
}
}
{
"[Mk:dialog]":{
"prefix":"Mk:dialog",
"body":[
"[Mk:dialog(\"title\" \"text\" \"type\")]"
],
"description":[
"ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると info になります。"
]
},
"[Mk:confirm]":{
"prefix":"Mk:confirm",
"body":[
"[Mk:confirm(\"title\" \"text\" \"type\")]"
],
"description":[
"確認ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると question になります。",
"ユーザーが\"OK\"を選択した場合は true を、\"キャンセル\"を選択した場合は false が返ります。"
]
},
"[Mk:api]":{
"prefix":"Mk:api",
"body":[
"[Mk:api(\"endpoint\" \"params\")]"
],
"description":[
"Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。"
]
},
"[Mk:save]":{
"prefix":"Mk:save",
"body":[
"[Mk:save(\"key\" \"value\")]"
],
"description":[
"任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。"
]
},
"[Mk:load]":{
"prefix":"Mk:load",
"body":[
"[Mk:load(\"key\")]"
],
"description":[
"Mk:saveで永続化した指定の名前の値を読み取ります。"
]
},
"[Plugin:register_post_form_action]":{
"prefix":"Plugin:register_post_form_action",
"body":[
"[Plugin:register_post_form_action(\"title\" \"fn\")]"
],
"description":[
"投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。"
]
},
"[Plugin:register_note_action]":{
"prefix":"Plugin:register_note_action",
"body":[
"[Plugin:register_note_action(\"title\" \"fn\")]"
],
"description":[
"ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。"
]
},
"[Plugin:register_user_action]":{
"prefix":"Plugin:register_user_action",
"body":[
"[Plugin:register_user_action(\"title\" \"fn\")]"
],
"description":[
"ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。"
]
},
"[Plugin:register_note_view_interruptor]":{
"prefix":"Plugin:register_note_view_interruptor",
"body":[
"[Plugin:register_note_view_interruptor(\"fn\")]"
],
"description":[
"UIに表示されるノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:register_note_post_interruptor]":{
"prefix":"Plugin:register_note_post_interruptor",
"body":[
"[Plugin:register_note_post_interruptor(\"fn\")]"
],
"description":[
"ノート投稿時にノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:open_url]":{
"prefix":"Plugin:open_url",
"body":[
"[Plugin:open_url(\"url\")]"
],
"description":[
"第一引数に渡されたURLをブラウザの新しいタブで開きます。"
]
},
"[Plugin:config]":{
"prefix":"Plugin:config",
"body":[
"[Plugin:config()]"
],
"description":[
"プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。"
]
},
"[Ui:render]":{
"prefix":"Ui:render",
"body":[
"[Ui:render([children])]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文"
]
},
"[Ui:render]":{
"prefix":"Ui:render",
"body":[
"[Ui:render([children])]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文"
]
},
}
{
"[Mk:dialog]":{
"prefix":"Mk:dialog",
"body":[
"[Mk:dialog(\"title\" \"text\" \"type\")]"
],
"description":[
"ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると info になります。"
]
},
"[Mk:confirm]":{
"prefix":"Mk:confirm",
"body":[
"[Mk:confirm(\"title\" \"text\" \"type\")]"
],
"description":[
"確認ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると question になります。",
"ユーザーが\"OK\"を選択した場合は true を、\"キャンセル\"を選択した場合は false が返ります。"
]
},
"[Mk:api]":{
"prefix":"Mk:api",
"body":[
"[Mk:api(\"endpoint\" \"params\")]"
],
"description":[
"Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。"
]
},
"[Mk:save]":{
"prefix":"Mk:save",
"body":[
"[Mk:save(\"key\" \"value\")]"
],
"description":[
"任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。"
]
},
"[Mk:load]":{
"prefix":"Mk:load",
"body":[
"[Mk:load(\"key\")]"
],
"description":[
"Mk:saveで永続化した指定の名前の値を読み取ります。"
]
},
"[Plugin:register_post_form_action]":{
"prefix":"Plugin:register_post_form_action",
"body":[
"[Plugin:register_post_form_action(\"title\" \"fn\")]"
],
"description":[
"投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。"
]
},
"[Plugin:register_note_action]":{
"prefix":"Plugin:register_note_action",
"body":[
"[Plugin:register_note_action(\"title\" \"fn\")]"
],
"description":[
"ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。"
]
},
"[Plugin:register_user_action]":{
"prefix":"Plugin:register_user_action",
"body":[
"[Plugin:register_user_action(\"title\" \"fn\")]"
],
"description":[
"ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。"
]
},
"[Plugin:register_note_view_interruptor]":{
"prefix":"Plugin:register_note_view_interruptor",
"body":[
"[Plugin:register_note_view_interruptor(\"fn\")]"
],
"description":[
"UIに表示されるノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:register_note_post_interruptor]":{
"prefix":"Plugin:register_note_post_interruptor",
"body":[
"[Plugin:register_note_post_interruptor(\"fn\")]"
],
"description":[
"ノート投稿時にノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:open_url]":{
"prefix":"Plugin:open_url",
"body":[
"[Plugin:open_url(\"url\")]"
],
"description":[
"第一引数に渡されたURLをブラウザの新しいタブで開きます。"
]
},
"[Plugin:config]":{
"prefix":"Plugin:config",
"body":[
"[Plugin:config()]"
],
"description":[
"プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。"
]
},
"[Ui:render]":{
"prefix":"Ui:render",
"body":[
"[Ui:render([children])]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文です。"
]
},
"[Ui:C:mfm]":{
"prefix":"Ui:C:mfm",
"body":[
"[Ui:C:mfm({ text: \"someText\"}]"
],
"description":[
"Markup language For Misskeyテキスト"
]
}
}
{
"[Mk:dialog]":{
"prefix":"Mk:dialog",
"body":[
"[Mk:dialog(\"title\" \"text\" \"type\")]"
],
"description":[
"ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると info になります。"
]
},
"[Mk:confirm]":{
"prefix":"Mk:confirm",
"body":[
"[Mk:confirm(\"title\" \"text\" \"type\")]"
],
"description":[
"確認ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると question になります。",
"ユーザーが\"OK\"を選択した場合は true を、\"キャンセル\"を選択した場合は false が返ります。"
]
},
"[Mk:api]":{
"prefix":"Mk:api",
"body":[
"[Mk:api(\"endpoint\" \"params\")]"
],
"description":[
"Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。"
]
},
"[Mk:save]":{
"prefix":"Mk:save",
"body":[
"[Mk:save(\"key\" \"value\")]"
],
"description":[
"任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。"
]
},
"[Mk:load]":{
"prefix":"Mk:load",
"body":[
"[Mk:load(\"key\")]"
],
"description":[
"Mk:saveで永続化した指定の名前の値を読み取ります。"
]
},
"[Plugin:register_post_form_action]":{
"prefix":"Plugin:register_post_form_action",
"body":[
"[Plugin:register_post_form_action(\"title\" \"fn\")]"
],
"description":[
"投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。"
]
},
"[Plugin:register_note_action]":{
"prefix":"Plugin:register_note_action",
"body":[
"[Plugin:register_note_action(\"title\" \"fn\")]"
],
"description":[
"ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。"
]
},
"[Plugin:register_user_action]":{
"prefix":"Plugin:register_user_action",
"body":[
"[Plugin:register_user_action(\"title\" \"fn\")]"
],
"description":[
"ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。"
]
},
"[Plugin:register_note_view_interruptor]":{
"prefix":"Plugin:register_note_view_interruptor",
"body":[
"[Plugin:register_note_view_interruptor(\"fn\")]"
],
"description":[
"UIに表示されるノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:register_note_post_interruptor]":{
"prefix":"Plugin:register_note_post_interruptor",
"body":[
"[Plugin:register_note_post_interruptor(\"fn\")]"
],
"description":[
"ノート投稿時にノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:open_url]":{
"prefix":"Plugin:open_url",
"body":[
"[Plugin:open_url(\"url\")]"
],
"description":[
"第一引数に渡されたURLをブラウザの新しいタブで開きます。"
]
},
"[Plugin:config]":{
"prefix":"Plugin:config",
"body":[
"[Plugin:config()]"
],
"description":[
"プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。"
]
},
"[Ui:render]":{
"prefix":"Ui:render",
"body":[
"[Ui:render([children])]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文"
]
},
"[Ui:C:mfm]":{
"prefix":"Ui:C:mfm",
"body":[
"[Ui:C:mfm({}]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文"
]
},
}
{
"[Mk:dialog]":{
"prefix":"Mk:dialog",
"body":[
"[Mk:dialog(\"title\" \"text\" \"type\")]"
],
"description":[
"ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると info になります。"
]
},
"[Mk:confirm]":{
"prefix":"Mk:confirm",
"body":[
"[Mk:confirm(\"title\" \"text\" \"type\")]"
],
"description":[
"確認ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると question になります。",
"ユーザーが\"OK\"を選択した場合は true を、\"キャンセル\"を選択した場合は false が返ります。"
]
},
"[Mk:api]":{
"prefix":"Mk:api",
"body":[
"[Mk:api(\"endpoint\" \"params\")]"
],
"description":[
"Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。"
]
},
"[Mk:save]":{
"prefix":"Mk:save",
"body":[
"[Mk:save(\"key\" \"value\")]"
],
"description":[
"任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。"
]
},
"[Mk:load]":{
"prefix":"Mk:load",
"body":[
"[Mk:load(\"key\")]"
],
"description":[
"Mk:saveで永続化した指定の名前の値を読み取ります。"
]
},
"[Plugin:register_post_form_action]":{
"prefix":"Plugin:register_post_form_action",
"body":[
"[Plugin:register_post_form_action(\"title\" \"fn\")]"
],
"description":[
"投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。"
]
},
"[Plugin:register_note_action]":{
"prefix":"Plugin:register_note_action",
"body":[
"[Plugin:register_note_action(\"title\" \"fn\")]"
],
"description":[
"ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。"
]
},
"[Plugin:register_user_action]":{
"prefix":"Plugin:register_user_action",
"body":[
"[Plugin:register_user_action(\"title\" \"fn\")]"
],
"description":[
"ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。"
]
},
"[Plugin:register_note_view_interruptor]":{
"prefix":"Plugin:register_note_view_interruptor",
"body":[
"[Plugin:register_note_view_interruptor(\"fn\")]"
],
"description":[
"UIに表示されるノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:register_note_post_interruptor]":{
"prefix":"Plugin:register_note_post_interruptor",
"body":[
"[Plugin:register_note_post_interruptor(\"fn\")]"
],
"description":[
"ノート投稿時にノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:open_url]":{
"prefix":"Plugin:open_url",
"body":[
"[Plugin:open_url(\"url\")]"
],
"description":[
"第一引数に渡されたURLをブラウザの新しいタブで開きます。"
]
},
"[Plugin:config]":{
"prefix":"Plugin:config",
"body":[
"[Plugin:config()]"
],
"description":[
"プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。"
]
},
"[Ui:render]":{
"prefix":"Ui:render",
"body":[
"[Ui:render([children])]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文"
]
},
"[Ui:C:container]":{
"prefix":"Ui:C:container",
"body":[
"[Ui:render([children])]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文"
]
},
}
{
"[Mk:dialog]":{
"prefix":"Mk:dialog",
"body":[
"[Mk:dialog(\"title\" \"text\" \"type\")]"
],
"description":[
"ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると info になります。"
]
},
"[Mk:confirm]":{
"prefix":"Mk:confirm",
"body":[
"[Mk:confirm(\"title\" \"text\" \"type\")]"
],
"description":[
"確認ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると question になります。",
"ユーザーが\"OK\"を選択した場合は true を、\"キャンセル\"を選択した場合は false が返ります。"
]
},
"[Mk:api]":{
"prefix":"Mk:api",
"body":[
"[Mk:api(\"endpoint\" \"params\")]"
],
"description":[
"Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。"
]
},
"[Mk:save]":{
"prefix":"Mk:save",
"body":[
"[Mk:save(\"key\" \"value\")]"
],
"description":[
"任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。"
]
},
"[Mk:load]":{
"prefix":"Mk:load",
"body":[
"[Mk:load(\"key\")]"
],
"description":[
"Mk:saveで永続化した指定の名前の値を読み取ります。"
]
},
"[Plugin:register_post_form_action]":{
"prefix":"Plugin:register_post_form_action",
"body":[
"[Plugin:register_post_form_action(\"title\" \"fn\")]"
],
"description":[
"投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。"
]
},
"[Plugin:register_note_action]":{
"prefix":"Plugin:register_note_action",
"body":[
"[Plugin:register_note_action(\"title\" \"fn\")]"
],
"description":[
"ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。"
]
},
"[Plugin:register_user_action]":{
"prefix":"Plugin:register_user_action",
"body":[
"[Plugin:register_user_action(\"title\" \"fn\")]"
],
"description":[
"ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。"
]
},
"[Plugin:register_note_view_interruptor]":{
"prefix":"Plugin:register_note_view_interruptor",
"body":[
"[Plugin:register_note_view_interruptor(\"fn\")]"
],
"description":[
"UIに表示されるノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:register_note_post_interruptor]":{
"prefix":"Plugin:register_note_post_interruptor",
"body":[
"[Plugin:register_note_post_interruptor(\"fn\")]"
],
"description":[
"ノート投稿時にノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:open_url]":{
"prefix":"Plugin:open_url",
"body":[
"[Plugin:open_url(\"url\")]"
],
"description":[
"第一引数に渡されたURLをブラウザの新しいタブで開きます。"
]
},
"[Plugin:config]":{
"prefix":"Plugin:config",
"body":[
"[Plugin:config()]"
],
"description":[
"プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。"
]
},
"[Ui:render]":{
"prefix":"Ui:render",
"body":[
"[Ui:render([children])]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文"
]
}
}
{
"[Mk:dialog]":{
"prefix":"Mk:dialog",
"body":[
"[Mk:dialog(\"title\" \"text\" \"type\")]"
],
"description":[
"ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると info になります。"
]
},
"[Mk:confirm]":{
"prefix":"Mk:confirm",
"body":[
"[Mk:confirm(\"title\" \"text\" \"type\")]"
],
"description":[
"確認ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると question になります。",
"ユーザーが\"OK\"を選択した場合は true を、\"キャンセル\"を選択した場合は false が返ります。"
]
},
"[Mk:api]":{
"prefix":"Mk:api",
"body":[
"[Mk:api(\"endpoint\" \"params\")]"
],
"description":[
"Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。"
]
},
"[Mk:save]":{
"prefix":"Mk:save",
"body":[
"[Mk:save(\"key\" \"value\")]"
],
"description":[
"任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。"
]
},
"[Mk:load]":{
"prefix":"Mk:load",
"body":[
"[Mk:load(\"key\")]"
],
"description":[
"Mk:saveで永続化した指定の名前の値を読み取ります。"
]
},
"[Plugin:register_post_form_action]":{
"prefix":"Plugin:register_post_form_action",
"body":[
"[Plugin:register_post_form_action(\"title\" \"fn\")]"
],
"description":[
"投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。"
]
},
"[Plugin:register_note_action]":{
"prefix":"Plugin:register_note_action",
"body":[
"[Plugin:register_note_action(\"title\" \"fn\")]"
],
"description":[
"ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。"
]
},
"[Plugin:register_user_action]":{
"prefix":"Plugin:register_user_action",
"body":[
"[Plugin:register_user_action(\"title\" \"fn\")]"
],
"description":[
"ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。"
]
},
"[Plugin:register_note_view_interruptor]":{
"prefix":"Plugin:register_note_view_interruptor",
"body":[
"[Plugin:register_note_view_interruptor(\"fn\")]"
],
"description":[
"UIに表示されるノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:register_note_post_interruptor]":{
"prefix":"Plugin:register_note_post_interruptor",
"body":[
"[Plugin:register_note_post_interruptor(\"fn\")]"
],
"description":[
"ノート投稿時にノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:open_url]":{
"prefix":"Plugin:open_url",
"body":[
"[Plugin:open_url(\"url\")]"
],
"description":[
"第一引数に渡されたURLをブラウザの新しいタブで開きます。"
]
},
"[Plugin:config]":{
"prefix":"Plugin:config",
"body":[
"[Plugin:config()]"
],
"description":[
"プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。"
]
},
"[Ui:render]":{
"prefix":"Ui:render",
"body":[
"[Ui:render([children])]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文"
]
},
"[Ui:C:container]":{
"prefix":"Ui:C:container",
"body":[
"[Ui:C:container([children])]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文"
]
},
}
{
"[Mk:dialog]":{
"prefix":"Mk:dialog",
"body":[
"[Mk:dialog(\"title\" \"text\" \"type\")]"
],
"description":[
"ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると info になります。"
]
},
"[Mk:confirm]":{
"prefix":"Mk:confirm",
"body":[
"[Mk:confirm(\"title\" \"text\" \"type\")]"
],
"description":[
"確認ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると question になります。",
"ユーザーが\"OK\"を選択した場合は true を、\"キャンセル\"を選択した場合は false が返ります。"
]
},
"[Mk:api]":{
"prefix":"Mk:api",
"body":[
"[Mk:api(\"endpoint\" \"params\")]"
],
"description":[
"Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。"
]
},
"[Mk:save]":{
"prefix":"Mk:save",
"body":[
"[Mk:save(\"key\" \"value\")]"
],
"description":[
"任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。"
]
},
"[Mk:load]":{
"prefix":"Mk:load",
"body":[
"[Mk:load(\"key\")]"
],
"description":[
"Mk:saveで永続化した指定の名前の値を読み取ります。"
]
},
"[Plugin:register_post_form_action]":{
"prefix":"Plugin:register_post_form_action",
"body":[
"[Plugin:register_post_form_action(\"title\" \"fn\")]"
],
"description":[
"投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。"
]
},
"[Plugin:register_note_action]":{
"prefix":"Plugin:register_note_action",
"body":[
"[Plugin:register_note_action(\"title\" \"fn\")]"
],
"description":[
"ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。"
]
},
"[Plugin:register_user_action]":{
"prefix":"Plugin:register_user_action",
"body":[
"[Plugin:register_user_action(\"title\" \"fn\")]"
],
"description":[
"ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。"
]
},
"[Plugin:register_note_view_interruptor]":{
"prefix":"Plugin:register_note_view_interruptor",
"body":[
"[Plugin:register_note_view_interruptor(\"fn\")]"
],
"description":[
"UIに表示されるノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:register_note_post_interruptor]":{
"prefix":"Plugin:register_note_post_interruptor",
"body":[
"[Plugin:register_note_post_interruptor(\"fn\")]"
],
"description":[
"ノート投稿時にノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:open_url]":{
"prefix":"Plugin:open_url",
"body":[
"[Plugin:open_url(\"url\")]"
],
"description":[
"第一引数に渡されたURLをブラウザの新しいタブで開きます。"
]
},
"[Plugin:config]":{
"prefix":"Plugin:config",
"body":[
"[Plugin:config()]"
],
"description":[
"プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。"
]
},
"[Ui:render]":{
"prefix":"Ui:render",
"body":[
"[Ui:render([children])]"
],
"description":[
"プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。"
]
}
}
{
"[Mk:dialog]":{
"prefix":"Mk:dialog",
"body":[
"[Mk:dialog(\"title\" \"text\" \"type\")]"
],
"description":[
"ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると info になります。"
]
},
"[Mk:confirm]":{
"prefix":"Mk:confirm",
"body":[
"[Mk:confirm(\"title\" \"text\" \"type\")]"
],
"description":[
"確認ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると question になります。",
"ユーザーが\"OK\"を選択した場合は true を、\"キャンセル\"を選択した場合は false が返ります。"
]
},
"[Mk:api]":{
"prefix":"Mk:api",
"body":[
"[Mk:api(\"endpoint\" \"params\")]"
],
"description":[
"Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。"
]
},
"[Mk:save]":{
"prefix":"Mk:save",
"body":[
"[Mk:save(\"key\" \"value\")]"
],
"description":[
"任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。"
]
},
"[Mk:load]":{
"prefix":"Mk:load",
"body":[
"[Mk:load(\"key\")]"
],
"description":[
"Mk:saveで永続化した指定の名前の値を読み取ります。"
]
},
"[Plugin:register_post_form_action]":{
"prefix":"Plugin:register_post_form_action",
"body":[
"[Plugin:register_post_form_action(\"title\" \"fn\")]"
],
"description":[
"投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。"
]
},
"[Plugin:register_note_action]":{
"prefix":"Plugin:register_note_action",
"body":[
"[Plugin:register_note_action(\"title\" \"fn\")]"
],
"description":[
"ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。"
]
},
"[Plugin:register_user_action]":{
"prefix":"Plugin:register_user_action",
"body":[
"[Plugin:register_user_action(\"title\" \"fn\")]"
],
"description":[
"ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。"
]
},
"[Plugin:register_note_view_interruptor]":{
"prefix":"Plugin:register_note_view_interruptor",
"body":[
"[Plugin:register_note_view_interruptor(\"fn\")]"
],
"description":[
"UIに表示されるノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:register_note_post_interruptor]":{
"prefix":"Plugin:register_note_post_interruptor",
"body":[
"[Plugin:register_note_post_interruptor(\"fn\")]"
],
"description":[
"ノート投稿時にノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:open_url]":{
"prefix":"Plugin:open_url",
"body":[
"[Plugin:open_url(\"url\")]"
],
"description":[
"第一引数に渡されたURLをブラウザの新しいタブで開きます。"
]
},
"[Plugin:config]":{
"prefix":"Plugin:config",
"body":[
"[Plugin:config()]"
],
"description":[
"プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。"
]
},
"[Ui:render]":{
"prefix":"Ui:render",
"body":[
"[Plugin:config()]"
],
"description":[
"プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。"
]
}
}
{
"[Mk:dialog]":{
"prefix":"Mk:dialog",
"body":[
"[Mk:dialog(\"title\" \"text\" \"type\")]"
],
"description":[
"ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると info になります。"
]
},
"[Mk:confirm]":{
"prefix":"Mk:confirm",
"body":[
"[Mk:confirm(\"title\" \"text\" \"type\")]"
],
"description":[
"確認ダイアログを表示します。typeには以下の値が設定できます。",
"info success warn error question",
"省略すると question になります。",
"ユーザーが\"OK\"を選択した場合は true を、\"キャンセル\"を選択した場合は false が返ります。"
]
},
"[Mk:api]":{
"prefix":"Mk:api",
"body":[
"[Mk:api(\"endpoint\" \"params\")]"
],
"description":[
"Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。"
]
},
"[Mk:save]":{
"prefix":"Mk:save",
"body":[
"[Mk:save(\"key\" \"value\")]"
],
"description":[
"任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。"
]
},
"[Mk:load]":{
"prefix":"Mk:load",
"body":[
"[Mk:load(\"key\")]"
],
"description":[
"Mk:saveで永続化した指定の名前の値を読み取ります。"
]
},
"[Plugin:register_post_form_action]":{
"prefix":"Plugin:register_post_form_action",
"body":[
"[Plugin:register_post_form_action(\"title\" \"fn\")]"
],
"description":[
"投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。"
]
},
"[Plugin:register_note_action]":{
"prefix":"Plugin:register_note_action",
"body":[
"[Plugin:register_note_action(\"title\" \"fn\")]"
],
"description":[
"ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。"
]
},
"[Plugin:register_user_action]":{
"prefix":"Plugin:register_user_action",
"body":[
"[Plugin:register_user_action(\"title\" \"fn\")]"
],
"description":[
"ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。",
"コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。"
]
},
"[Plugin:register_note_view_interruptor]":{
"prefix":"Plugin:register_note_view_interruptor",
"body":[
"[Plugin:register_note_view_interruptor(\"fn\")]"
],
"description":[
"UIに表示されるノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:register_note_post_interruptor]":{
"prefix":"Plugin:register_note_post_interruptor",
"body":[
"[Plugin:register_note_post_interruptor(\"fn\")]"
],
"description":[
"ノート投稿時にノート情報を書き換えます。",
"コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。",
"コールバック関数の返り値でノートが書き換えられます。"
]
},
"[Plugin:open_url]":{
"prefix":"Plugin:open_url",
"body":[
"[Plugin:open_url(\"url\")]"
],
"description":[
"第一引数に渡されたURLをブラウザの新しいタブで開きます。"
]
},
"[Plugin:config]":{
"prefix":"Plugin:config",
"body":[
"[Plugin:config()]"
],
"description":[
"プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。"
]
},
"[Ui:render]":{
"prefix":"Ui:render",
"body":[
"[Ui:render([children])]"
],
"description":[
"Ui:root.update({ children: [...] }) の糖衣構文です。"
]
},
"[Ui:C:mfm]":{
"prefix":"Ui:C:mfm",
"body":[
"[Ui:C:mfm({ text: \"someText\", size: 1, bold: false}]"
],
"description":[
"Markup language For Misskeyで指定されるテキストを解釈して表示します。",
"詳細についてはhttps://misskey-hub.net/docs/features/mfm.htmlを参照ください。"
]
}
}
{"version":1,"resource":"vsls:/force-app/main/default/classes/GetEventHubLead.cls","entries":[{"id":"Hw76.cls","source":"Workspace Edit","timestamp":null}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/eventhub-sfdc-app/force-app/main/default/objects/ApiKey__mdt/fields/KeyLabel__c.field-meta.xml","entries":[{"id":"7cFB.xml","timestamp":1684413069203}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/aiscript-syntax/README.md","entries":[{"id":"hukl.md","timestamp":1680368078525},{"id":"D40C.md","timestamp":1680368091157},{"id":"jqYd.md","timestamp":1680368121439},{"id":"4SWh.md","timestamp":1680368133783},{"id":"VZEu.md","timestamp":1680621678564},{"id":"Vwej.md","timestamp":1680621720021},{"id":"Ljo4.md","source":"undoRedo.source","timestamp":1680621726418},{"id":"NFw1.md","timestamp":1680621880800},{"id":"55Nx.md","timestamp":1680684205057},{"id":"Ozdx.md","timestamp":1680684232147},{"id":"EKTe.md","timestamp":1680684280391},{"id":"WLrP.md","timestamp":1680684464908},{"id":"nkgQ.md","timestamp":1681099219049},{"id":"YzFi.md","timestamp":1681099296766},{"id":"G6Za.md","timestamp":1681099366515}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/testOtsuboEventHubLead/force-app/main/default/lwc/testOtsuboEventHubLead/testOtsuboEventHubLead.css","entries":[{"id":"IN9o.css","timestamp":1676962712304},{"id":"U900.css","timestamp":1676962792923},{"id":"EqLu.css","timestamp":1676962866350},{"id":"jHYT.css","source":"undoRedo.source","timestamp":1676962867676},{"id":"IrCc.css","timestamp":1676962899470},{"id":"215A.css","timestamp":1676963023182},{"id":"KGlZ.css","timestamp":1676963165444},{"id":"Jtle.css","timestamp":1676963293231},{"id":"2Yti.css","source":"undoRedo.source","timestamp":1677488953801},{"id":"AoYe.css","timestamp":1678782356251},{"id":"xQND.css","timestamp":1678782533976},{"id":"oeS4.css","timestamp":1678782576549},{"id":"JJJc.css","timestamp":1678782924668},{"id":"PT0C.css","timestamp":1678783007648},{"id":"ggvN.css","timestamp":1678783087055},{"id":"Xw7Y.css","timestamp":1678783242044},{"id":"xu1N.css","timestamp":1678783282086},{"id":"C8tX.css","timestamp":1678783298897},{"id":"cWHg.css","timestamp":1678783603439},{"id":"2S97.css","timestamp":1678783761385},{"id":"u1tk.css","timestamp":1678783936937},{"id":"rtlZ.css","timestamp":1678784006161},{"id":"10Ex.css","timestamp":1678784052752},{"id":"5aQy.css","timestamp":1678784172672},{"id":"ffsc.css","timestamp":1678784260094},{"id":"nnOD.css","timestamp":1678784809728},{"id":"G5Sv.css","timestamp":1678784872825},{"id":"PxUW.css","timestamp":1678784885485},{"id":"RwjU.css","timestamp":1678784962946},{"id":"Kt4t.css","timestamp":1678785033299},{"id":"O4IE.css","timestamp":1678785049194},{"id":"SUjz.css","timestamp":1678785221477},{"id":"Q8YP.css","timestamp":1678785292803},{"id":"mDfD.css","timestamp":1678785395279},{"id":"ojz4.css","timestamp":1678785537073}]}
{"version":1,"resource":"file:///Users/yuotsubo/Downloads/aaa","entries":[{"id":"k5G3","source":"textFileCreate.source","timestamp":1669804996843},{"id":"ay2E","timestamp":1669805220768},{"id":"hoII","timestamp":1669805628639}]}
{"version":1,"resource":"vscode-userdata:/Users/tubone24/Library/Application%20Support/Code/User/settings.json","entries":[{"id":"ZSFh.json","timestamp":1662874900749},{"id":"Uewa.json","timestamp":1679504371238},{"id":"lWUR.json","timestamp":1679504439222}]}
{
"sync.gist": "b00e71c41a9c2305b734d7c9e787fe28",
"sync.autoDownload": true,
"sync.autoUpload": true,
"mssql.connections": [
{
"server": "{{put-server-name-here}}",
"database": "{{put-database-name-here}}",
"user": "{{put-username-here}}",
"password": ""
}
],
"security.workspace.trust.untrustedFiles": "open",
"yaml.schemas": {},
"yaml.customTags": [
"!And",
"!And sequence",
"!If",
"!If sequence",
"!Not",
"!Not sequence",
"!Equals",
"!Equals sequence",
"!Or",
"!Or sequence",
"!FindInMap",
"!FindInMap sequence",
"!Base64",
"!Join",
"!Join sequence",
"!Cidr",
"!Ref",
"!Sub",
"!Sub sequence",
"!GetAtt",
"!GetAZs",
"!ImportValue",
"!ImportValue sequence",
"!Select",
"!Select sequence",
"!Split",
"!Split sequence"
],
"workbench.editor.enablePreview": false,
"workbench.editorAssociations": {
"*.xlsx": "default"
},
"json.schemas": [],
"editor.unicodeHighlight.nonBasicASCII": false,
"editor.suggest.showMethods": true,
"editor.suggest.preview": true,
"editor.acceptSuggestionOnEnter": "on",
"editor.snippetSuggestions": "top",
"atomKeymap.promptV3Features": true,
"markdown-pdf.executablePath": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
"settingsSync.ignoredExtensions": [
],
"editor.inlineSuggest.enabled": true,
"github.copilot.enable": {
"*": true,
"yaml": false,
"plaintext": true,
"markdown": false
}
}
{
"sync.gist": "b00e71c41a9c2305b734d7c9e787fe28",
"sync.autoDownload": true,
"sync.autoUpload": true,
"mssql.connections": [
{
"server": "{{put-server-name-here}}",
"database": "{{put-database-name-here}}",
"user": "{{put-username-here}}",
"password": ""
}
],
"security.workspace.trust.untrustedFiles": "open",
"yaml.schemas": {},
"yaml.customTags": [
"!And",
"!And sequence",
"!If",
"!If sequence",
"!Not",
"!Not sequence",
"!Equals",
"!Equals sequence",
"!Or",
"!Or sequence",
"!FindInMap",
"!FindInMap sequence",
"!Base64",
"!Join",
"!Join sequence",
"!Cidr",
"!Ref",
"!Sub",
"!Sub sequence",
"!GetAtt",
"!GetAZs",
"!ImportValue",
"!ImportValue sequence",
"!Select",
"!Select sequence",
"!Split",
"!Split sequence"
],
"workbench.editor.enablePreview": false,
"workbench.editorAssociations": {
"*.xlsx": "default"
},
"json.schemas": [],
"editor.unicodeHighlight.nonBasicASCII": false,
"editor.suggest.showMethods": true,
"editor.suggest.preview": true,
"editor.acceptSuggestionOnEnter": "on",
"editor.snippetSuggestions": "top",
"atomKeymap.promptV3Features": true,
"markdown-pdf.executablePath": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
"settingsSync.ignoredExtensions": [
],
"editor.inlineSuggest.enabled": true
}
{
"sync.gist": "b00e71c41a9c2305b734d7c9e787fe28",
"sync.autoDownload": true,
"sync.autoUpload": true,
"mssql.connections": [
{
"server": "{{put-server-name-here}}",
"database": "{{put-database-name-here}}",
"user": "{{put-username-here}}",
"password": ""
}
],
"security.workspace.trust.untrustedFiles": "open",
"yaml.schemas": {},
"yaml.customTags": [
"!And",
"!And sequence",
"!If",
"!If sequence",
"!Not",
"!Not sequence",
"!Equals",
"!Equals sequence",
"!Or",
"!Or sequence",
"!FindInMap",
"!FindInMap sequence",
"!Base64",
"!Join",
"!Join sequence",
"!Cidr",
"!Ref",
"!Sub",
"!Sub sequence",
"!GetAtt",
"!GetAZs",
"!ImportValue",
"!ImportValue sequence",
"!Select",
"!Select sequence",
"!Split",
"!Split sequence"
],
"workbench.editor.enablePreview": false,
"workbench.editorAssociations": {
"*.xlsx": "default"
},
"json.schemas": [],
"editor.unicodeHighlight.nonBasicASCII": false,
"editor.suggest.showMethods": true,
"editor.suggest.preview": true,
"editor.acceptSuggestionOnEnter": "on",
"editor.snippetSuggestions": "top"
}
{"version":1,"resource":"vsls:/force-app/main/default/lwc/eventsList/eventsList.js","entries":[{"id":"13Xt.js","source":"Workspace Edit","timestamp":null},{"id":"1kLU.js","source":"Workspace Edit","timestamp":null},{"id":"2oei.js","timestamp":null},{"id":"BaeO.js","source":"Workspace Edit","timestamp":null},{"id":"JXhq.js","timestamp":null},{"id":"JiEN.js","timestamp":null},{"id":"JrxE.js","source":"Workspace Edit","timestamp":null},{"id":"OfLP.js","source":"Workspace Edit","timestamp":null},{"id":"Q6NW.js","timestamp":null},{"id":"S3oO.js","source":"Workspace Edit","timestamp":null},{"id":"YwmI.js","source":"Workspace Edit","timestamp":null},{"id":"eLWk.js","source":"Workspace Edit","timestamp":null},{"id":"fhI0.js","source":"Workspace Edit","timestamp":null},{"id":"hNEB.js","timestamp":null},{"id":"hcd7.js","timestamp":null},{"id":"k5dr.js","source":"undoRedo.source","timestamp":null},{"id":"laGs.js","source":"Workspace Edit","timestamp":null},{"id":"ncLi.js","timestamp":null},{"id":"pgEn.js","source":"Workspace Edit","timestamp":null},{"id":"rEBa.js","source":"Workspace Edit","timestamp":null},{"id":"rthY.js","timestamp":null},{"id":"lrcO.js","source":"Workspace Edit","timestamp":null}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/testOtsuboEventHubLead/force-app/main/default/lwc/testOtsuboEventHubLead/testOtsuboEventHubLead.js-meta.xml","entries":[{"id":"9oB8.xml","timestamp":1676883297575},{"id":"eica.xml","timestamp":1676883967292},{"id":"9rne.xml","timestamp":1676884054500},{"id":"PIAB.xml","timestamp":1676890894234},{"id":"KgUj.xml","timestamp":1676890966789}]}
{
"name": "aiscript-syntax",
"displayName": "AiScript Syntax",
"description": "Provides AiScript syntax for Visual Studio Code",
"publisher": "tubone24",
"version": "0.0.1",
"engines": {
"vscode": "^1.77.0"
},
"categories": [
"Programming Languages"
],
"contributes": {
"languages": [
{
"id": "aiscript",
"aliases": [
"AiScript",
"aiscript"
],
"extensions": [
".is"
],
"configuration": "./language-configuration.json"
}
],
"grammars": [
{
"language": "aiscript",
"scopeName": "source.is",
"path": "./syntaxes/aiscript.tmLanguage.json"
}
]
}
}
{
"name": "aiscript-syntax",
"displayName": "AiScript Syntax",
"description": "Provides AiScript syntax for Visual Studio Code",
"publisher": "tubone24",
"repository": "https://github.com/tubone24/aiscript-syntax-vscode",
"license": "MIT",
"version": "0.0.2",
"engines": {
"vscode": "^1.77.0"
},
"categories": [
"Programming Languages"
],
"contributes": {
"languages": [
{
"id": "aiscript",
"aliases": [
"AiScript",
"aiscript"
],
"extensions": [
".is"
],
"configuration": "./language-configuration.json"
}
],
"grammars": [
{
"language": "aiscript",
"scopeName": "source.is",
"path": "./syntaxes/aiscript.tmLanguage.json"
}
],
"snippets": [
{
"language": "aiscript",
"scopeName":"source.is",
"path": "./snippets/aiscript.snippet.json"
}
]
}
}
{
"name": "aiscript-syntax",
"displayName": "AiScript Syntax",
"description": "Provides AiScript syntax for Visual Studio Code",
"publisher": "tubone24",
"repository": "https://github.com/tubone24/aiscript-syntax-vscode",
"license": "MIT",
"version": "0.2.0",
"engines": {
"vscode": "^1.77.0"
},
"categories": [
"Programming Languages",
"AiScript"
],
"scripts": {
"vsce": "vsce",
"package": "npm run vsce package",
"publish": "npm run vsce publish",
"fmt": "prettier --write **/*.{json,md} *.{json,md}",
"fmt:check": "prettier --check **/*.{json,md} *.{json,md}"
},
"contributes": {
"languages": [
{
"id": "aiscript",
"aliases": [
"AiScript",
"aiscript"
],
"extensions": [
".is"
],
"configuration": "./language-configuration.json"
}
],
"grammars": [
{
"language": "aiscript",
"scopeName": "source.is",
"path": "./syntaxes/aiscript.tmLanguage.json"
}
],
"snippets": [
{
"language": "aiscript",
"scopeName": "source.is",
"path": "./snippets/aiscript.snippet.json"
}
]
},
"devDependencies": {
"@vscode/vsce": "2.19.0",
"prettier": "2.8.7"
}
}
{"version":1,"resource":"file:///Users/yuotsubo/project/aiscript-syntax/package.json","entries":[{"id":"TFHp.json","timestamp":1680316555695},{"id":"jAy4.json","timestamp":1680316830923},{"id":"5WZ0.json","timestamp":1680317163914},{"id":"gwjb.json","timestamp":1680317299709},{"id":"mM9V.json","timestamp":1680368192331},{"id":"YYmz.json","timestamp":1680621783520},{"id":"9DUj.json","timestamp":1680621866952},{"id":"W0Q1.json","timestamp":1680622249809},{"id":"dz7M.json","timestamp":1681570143091},{"id":"oTkW.json","timestamp":1681571092691},{"id":"F3gm.json","timestamp":1681627181775}]}
{
"name": "aiscript-syntax",
"displayName": "AiScript Syntax",
"description": "Provides AiScript syntax for Visual Studio Code",
"publisher": "tubone24",
"repository": "https://github.com/tubone24/aiscript-syntax-vscode",
"icon": "icon.png",
"license": "MIT",
"version": "0.2.1",
"engines": {
"vscode": "^1.77.0"
},
"categories": [
"Programming Languages"
],
"scripts": {
"vsce": "vsce",
"package": "npm run vsce package",
"publish": "npm run vsce publish",
"fmt": "prettier --write **/*.{json,md} *.{json,md}",
"fmt:check": "prettier --check **/*.{json,md} *.{json,md}"
},
"contributes": {
"languages": [
{
"id": "aiscript",
"aliases": [
"AiScript",
"aiscript"
],
"extensions": [
".is"
],
"configuration": "./language-configuration.json"
}
],
"grammars": [
{
"language": "aiscript",
"scopeName": "source.is",
"path": "./syntaxes/aiscript.tmLanguage.json"
}
],
"snippets": [
{
"language": "aiscript",
"scopeName": "source.is",
"path": "./snippets/aiscript.snippet.json"
}
]
},
"devDependencies": {
"@vscode/vsce": "2.19.0",
"prettier": "2.8.7"
}
}
{
"name": "aiscript-syntax",
"displayName": "AiScript Syntax",
"description": "Provides AiScript syntax for Visual Studio Code",
"publisher": "tubone24",
"version": "0.0.1",
"engines": {
"vscode": "^1.77.0"
},
"categories": [
"Programming Languages"
],
"contributes": {
"languages": [
{
"id": "aiscript",
"aliases": [
"AiScript",
"aiscript"
],
"extensions": [
".is"
],
"configuration": "./language-configuration.json"
}
],
"grammars": [
{
"language": "aiscript",
"scopeName": "source.is",
"path": "./syntaxes/aiscript.tmLanguage.json"
}
]
}
}
{
"name": "aiscript-syntax",
"displayName": "AiScript Syntax",
"description": "Provides AiScript syntax for Visual Studio Code",
"publisher": "tubone24",
"version": "0.0.1",
"engines": {
"vscode": "^1.77.0"
},
"categories": [
"Programming Languages"
],
"contributes": {
"languages": [
{
"id": "aiscript",
"aliases": [
"AiScript",
"aiscript"
],
"extensions": [
".is"
],
"configuration": "./language-configuration.json"
}
],
"grammars": [
{
"language": "aiscript",
"scopeName": "source.is",
"path": "./syntaxes/aiscript.tmLanguage.json"
}
]
}
}
{
"name": "aiscript-syntax",
"displayName": "AiScript Syntax",
"description": "Provides AiScript syntax for Visual Studio Code",
"publisher": "tubone24",
"version": "0.0.1",
"repository": "https://github.com/tubone24/aiscript-syntax-vscode",
"engines": {
"vscode": "^1.77.0"
},
"categories": [
"Programming Languages"
],
"contributes": {
"languages": [
{
"id": "aiscript",
"aliases": [
"AiScript",
"aiscript"
],
"extensions": [
".is"
],
"configuration": "./language-configuration.json"
}
],
"grammars": [
{
"language": "aiscript",
"scopeName": "source.is",
"path": "./syntaxes/aiscript.tmLanguage.json"
}
]
}
}
{
"name": "aiscript-syntax",
"displayName": "AiScript Syntax",
"description": "Provides AiScript syntax for Visual Studio Code",
"publisher": "tubone24",
"repository": "https://github.com/tubone24/aiscript-syntax-vscode",
"license": "MIT",
"version": "0.2.0",
"engines": {
"vscode": "^1.77.0"
},
"categories": [
"Programming Languages"
],
"scripts": {
"vsce": "vsce",
"package": "npm run vsce package",
"publish": "npm run vsce publish",
"fmt": "prettier --write **/*.{json,md} *.{json,md}",
"fmt:check": "prettier --check **/*.{json,md} *.{json,md}"
},
"contributes": {
"languages": [
{
"id": "aiscript",
"aliases": [
"AiScript",
"aiscript"
],
"extensions": [
".is"
],
"configuration": "./language-configuration.json"
}
],
"grammars": [
{
"language": "aiscript",
"scopeName": "source.is",
"path": "./syntaxes/aiscript.tmLanguage.json"
}
],
"snippets": [
{
"language": "aiscript",
"scopeName": "source.is",
"path": "./snippets/aiscript.snippet.json"
}
]
},
"devDependencies": {
"@vscode/vsce": "2.19.0",
"prettier": "2.8.7"
}
}
{
"name": "aiscript-syntax",
"displayName": "AiScript Syntax",
"description": "Provides AiScript syntax for Visual Studio Code",
"version": "0.0.1",
"engines": {
"vscode": "^1.77.0"
},
"categories": [
"Programming Languages"
],
"contributes": {
"languages": [
{
"id": "aiscript",
"aliases": [
"AiScript",
"aiscript"
],
"extensions": [
".is"
],
"configuration": "./language-configuration.json"
}
],
"grammars": [
{
"language": "aiscript",
"scopeName": "source.is",
"path": "./syntaxes/aiscript.tmLanguage.json"
}
]
}
}
{
"name": "aiscript-syntax",
"displayName": "AiScript Syntax",
"description": "Provides AiScript syntax for Visual Studio Code",
"publisher": "tubone24",
"repository": "https://github.com/tubone24/aiscript-syntax-vscode",
"license": "MIT",
"version": "0.0.3",
"engines": {
"vscode": "^1.77.0"
},
"categories": [
"Programming Languages"
],
"contributes": {
"languages": [
{
"id": "aiscript",
"aliases": [
"AiScript",
"aiscript"
],
"extensions": [
".is"
],
"configuration": "./language-configuration.json"
}
],
"grammars": [
{
"language": "aiscript",
"scopeName": "source.is",
"path": "./syntaxes/aiscript.tmLanguage.json"
}
],
"snippets": [
{
"language": "aiscript",
"scopeName":"source.is",
"path": "./snippets/aiscript.snippet.json"
}
]
}
}
{
"name": "aiscript-syntax",
"displayName": "AiScript Syntax",
"description": "Provides AiScript syntax for Visual Studio Code",
"publisher": "tubone24",
"repository": "https://github.com/tubone24/aiscript-syntax-vscode",
"version": "0.0.1",
"engines": {
"vscode": "^1.77.0"
},
"categories": [
"Programming Languages"
],
"contributes": {
"languages": [
{
"id": "aiscript",
"aliases": [
"AiScript",
"aiscript"
],
"extensions": [
".is"
],
"configuration": "./language-configuration.json"
}
],
"grammars": [
{
"language": "aiscript",
"scopeName": "source.is",
"path": "./syntaxes/aiscript.tmLanguage.json"
}
],
"snippets": [
{
"language": "aiscript",
"scopeName":"source.is",
"path": "./snippets/aiscript.snippet.json"
}
]
}
}
{"version":1,"resource":"file:///Users/yuotsubo/project/eventhub-sfdc-app/force-app/main/default/classes/ApiKey.cls","entries":[{"id":"Pc2A.cls","timestamp":1684395382176},{"id":"wKRC.cls","timestamp":1684395527414},{"id":"iBR3.cls","timestamp":1684467175156}]}
{"version":1,"resource":"vsls:/package.json","entries":[{"id":"JaUn.json","source":"Workspace Edit","timestamp":null}]}
{
"name": "salesforce-app",
"private": true,
"version": "1.0.0",
"description": "Salesforce App",
"scripts": {
"lint": "eslint **/{aura,lwc}/**",
"test": "npm run test:unit",
"test:unit": "sfdx-lwc-jest",
"test:unit:watch": "sfdx-lwc-jest --watch",
"test:unit:debug": "sfdx-lwc-jest --debug",
"test:unit:coverage": "sfdx-lwc-jest --coverage",
"prettier": "prettier --write \"**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,xml,yaml,yml}\"",
"prettier:verify": "prettier --list-different \"**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,xml,yaml,yml}\"",
"postinstall": "husky install",
"precommit": "lint-staged"
},
"devDependencies": {
"@lwc/eslint-plugin-lwc": "^1.1.2",
"@prettier/plugin-xml": "^2.0.1",
"@salesforce/eslint-config-lwc": "^3.2.3",
"@salesforce/eslint-plugin-aura": "^2.0.0",
"@salesforce/eslint-plugin-lightning": "^1.0.0",
"@salesforce/sfdx-lwc-jest": "^1.3.0",
"eslint": "^8.11.0",
"eslint-plugin-import": "^2.25.4",
"eslint-plugin-jest": "^26.1.2",
"husky": "^7.0.4",
"lint-staged": "^12.3.7",
"prettier": "^2.6.0",
"prettier-plugin-apex": "^1.10.0"
},
"lint-staged": {
"**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,xml,yaml,yml}": [
"prettier --write"
],
"**/{aura,lwc}/**": [
"eslint"
]
}
}
{"version":1,"resource":"file:///Users/yuotsubo/.huskyrc","entries":[{"id":"ea8T","source":"textFileCreate.source","timestamp":1656242660172}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/testOtsuboEventHubLead/scripts/apex/hello.apex","entries":[{"id":"wAkZ.apex","source":"undoRedo.source","timestamp":1676887031211}]}
{"version":1,"resource":"vsls:/force-app/main/default/lwc/eventsList/__tests__/eventsList.js","entries":[{"id":"BgEW.js","source":"Workspace Edit","timestamp":null},{"id":"lzAz.js","source":"Workspace Edit","timestamp":null}]}
{"version":1,"resource":"file:///Users/yuotsubo/Downloads/plantuml","entries":[{"id":"SRP5","source":"textFileCreate.source","timestamp":1662736055656}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/eventhub-sfdc-app/force-app/main/default/classes/GetEventHubLead.cls","entries":[{"id":"p02a.cls","timestamp":1684395426874},{"id":"vTSq.cls","timestamp":1684411471320},{"id":"VISK.cls","timestamp":1684464608155},{"id":"craX.cls","timestamp":1684464749028}]}
{"version":1,"resource":"vsls:/force-app/main/default/lwc/eventsList/__tests__/eventsList.test.js","entries":[{"id":"agX9.js","source":"Workspace Edit","timestamp":null},{"id":"kzQp.js","source":"Workspace Edit","timestamp":null}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/testOtsuboEventHubLead/force-app/main/default/lwc/testOtsuboEventHubLead/testOtsuboEventHubLead.js","entries":[{"id":"jEY9.js","timestamp":1676956847228},{"id":"wK7P.js","timestamp":1676956857670},{"id":"ijZA.js","timestamp":1676956869087},{"id":"i2vT.js","timestamp":1676956912488},{"id":"9K4b.js","timestamp":1676956960608},{"id":"HgSt.js","timestamp":1676957011078},{"id":"2k9u.js","timestamp":1676957073273},{"id":"7Qr7.js","timestamp":1676957143966},{"id":"wog8.js","timestamp":1676957212747},{"id":"C70X.js","timestamp":1676957262017},{"id":"nRf5.js","timestamp":1676957527228},{"id":"v3t9.js","timestamp":1676957549716},{"id":"vkm8.js","timestamp":1676957700841},{"id":"TCR7.js","timestamp":1676957723585},{"id":"ctZI.js","timestamp":1676957806722},{"id":"ZMrI.js","timestamp":1676957846911},{"id":"XOJ4.js","timestamp":1676957888097},{"id":"9hvG.js","timestamp":1676957945265},{"id":"0Roa.js","timestamp":1676957969254},{"id":"gVbI.js","timestamp":1676958343423},{"id":"SCet.js","timestamp":1676963569689},{"id":"HUix.js","timestamp":1676963619055},{"id":"8WDm.js","timestamp":1676963646045},{"id":"a8fi.js","timestamp":1676963659562},{"id":"Qcuc.js","timestamp":1676967484742},{"id":"DNbO.js","timestamp":1676967517331},{"id":"jdYW.js","timestamp":1676967552314},{"id":"WswS.js","timestamp":1676967657205},{"id":"m8D1.js","timestamp":1678426333713},{"id":"FSV7.js","timestamp":1678426927490},{"id":"56XU.js","timestamp":1678686542243},{"id":"1bvs.js","timestamp":1678690667668},{"id":"PcHI.js","timestamp":1678705883328},{"id":"g6Qt.js","timestamp":1678705953179},{"id":"UOHH.js","timestamp":1678769897932},{"id":"vrCm.js","timestamp":1678770533294},{"id":"XAKu.js","timestamp":1678771519931},{"id":"VwHK.js","timestamp":1678780812887},{"id":"GiLk.js","timestamp":1678781036752},{"id":"HDTb.js","timestamp":1678781338918},{"id":"h9lJ.js","timestamp":1678781421317},{"id":"o5Nu.js","timestamp":1678781432314},{"id":"9otI.js","source":"undoRedo.source","timestamp":1678781648135},{"id":"xEre.js","timestamp":1678781711675},{"id":"8ya3.js","timestamp":1678781842575},{"id":"VOlM.js","timestamp":1678781889881},{"id":"pqTu.js","timestamp":1678782038210},{"id":"yVpC.js","timestamp":1678782735752},{"id":"qhmS.js","timestamp":1678782867326},{"id":"OSfN.js","timestamp":1678783290779}]}
{"version":1,"resource":"file:///Users/tubone24/project/mac-auto-setup/ansible/mac/roles/dev-tools/tasks/main.yml","entries":[{"id":"mphY.yml","timestamp":1662041806625},{"id":"1byI.yml","timestamp":1662041948567}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/eventhub-sfdc-app/jest.config.js","entries":[{"id":"UXgs.js","timestamp":1680575085552},{"id":"kotz.js","timestamp":1680575147610},{"id":"cd5O.js","source":"undoRedo.source","timestamp":1680575155242},{"id":"zwSP.js","timestamp":1680575176783},{"id":"n5VV.js","source":"undoRedo.source","timestamp":1680575186576},{"id":"iJ5n.js","timestamp":1680575285119},{"id":"LqM3.js","timestamp":1680575326053},{"id":"XvVg.js","timestamp":1680575451697}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/testOtsuboEventHubLead/force-app/main/default/classes/GetEventHubLead.cls","entries":[{"id":"uJAL.cls","timestamp":1676899985509},{"id":"plGy.cls","timestamp":1676899998083},{"id":"d4Pa.cls","timestamp":1676900145218},{"id":"z435.cls","timestamp":1676900166217},{"id":"X1jY.cls","timestamp":1676900316512},{"id":"pclF.cls","timestamp":1676900402325},{"id":"cMu0.cls","timestamp":1676900437310},{"id":"B3ft.cls","source":"undoRedo.source","timestamp":1676900449917},{"id":"KvDU.cls","timestamp":1676900514619},{"id":"pmaj.cls","source":"undoRedo.source","timestamp":1676900524599},{"id":"HfOO.cls","timestamp":1676900540511},{"id":"wtSw.cls","timestamp":1676900593466},{"id":"mYee.cls","timestamp":1676900788740},{"id":"JGzB.cls","timestamp":1676901061227},{"id":"SdUM.cls","timestamp":1676901103539},{"id":"MqSn.cls","timestamp":1676901143010},{"id":"CG2F.cls","timestamp":1676901218541},{"id":"Njwz.cls","timestamp":1676901252012},{"id":"Zgkj.cls","timestamp":1676901671371},{"id":"lbkw.cls","timestamp":1676901695814},{"id":"36fC.cls","timestamp":1676901728609},{"id":"UcNQ.cls","timestamp":1676901758420},{"id":"P9R5.cls","timestamp":1676901818085},{"id":"BErw.cls","timestamp":1676901897653},{"id":"qQhn.cls","timestamp":1676901929673},{"id":"7GGO.cls","timestamp":1676902069881},{"id":"pay8.cls","timestamp":1676902161057},{"id":"A1EV.cls","timestamp":1676902419138},{"id":"yOCU.cls","timestamp":1676902435836},{"id":"0QPc.cls","timestamp":1676902449214},{"id":"B8oU.cls","timestamp":1676902522874},{"id":"Ohpx.cls","timestamp":1676902626694},{"id":"Jav4.cls","timestamp":1676902644796},{"id":"V8hu.cls","timestamp":1676902701035},{"id":"MpLA.cls","timestamp":1676902800930},{"id":"HPRD.cls","timestamp":1676902820189},{"id":"XSDS.cls","timestamp":1676902833484},{"id":"ZtRZ.cls","timestamp":1676902851658},{"id":"8r5M.cls","source":"undoRedo.source","timestamp":1676902980932},{"id":"OrBk.cls","timestamp":1676903029985},{"id":"XbkJ.cls","timestamp":1676903056740},{"id":"QWxM.cls","timestamp":1676907659884},{"id":"zseN.cls","timestamp":1676907686226},{"id":"49NH.cls","timestamp":1676911410837},{"id":"fCpE.cls","timestamp":1676911422163},{"id":"VcAv.cls","timestamp":1676911559865},{"id":"LIaP.cls","timestamp":1676912017682},{"id":"oRpN.cls","timestamp":1676963414688},{"id":"cDj4.cls","source":"undoRedo.source","timestamp":1676963635190},{"id":"BJ4J.cls","timestamp":1679635957593}]}
{"version":1,"resource":"file:///Users/yuotsubo/Downloads/new_read_and_write.json","entries":[{"id":"NalQ.json","source":"textFileCreate.source","timestamp":1669730613451}]}
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::prod-michibiku-convocation-notice",
"arn:aws:s3:::prod-michibiku-convocation-notice/*",
"arn:aws:s3:::prod-michibiku-minutes",
"arn:aws:s3:::prod-michibiku-minutes/*",
"arn:aws:s3:::prod-michibiku-attachments",
"arn:aws:s3:::prod-michibiku-attachments/*",
"arn:aws:s3:::prod-michibiku-company-icon",
"arn:aws:s3:::prod-michibiku-company-icon/*"
],
"Effect": "Allow"
},
{
"Action": [
"cognito-idp:AdminDeleteUser",
"cognito-idp:AdminCreateUser",
"cognito-idp:AdminSetUserPassword",
"cognito-idp:AdminUpdateUserAttributes",
"cognito-idp:AssociateSoftwareToken",
"cognito-idp:VerifySoftwareToken",
"cognito-idp:AdminSetUserMFAPreference",
"cognito-idp:AdminGetUser",
"cognito-idp:AdminInitiateAuth",
"cognito-idp:AdminRespondToAuthChallenge"
],
"Resource": "arn:aws:cognito-idp:ap-northeast-1:486641582775:userpool/ap-northeast-1_3ScSQlUXw",
"Effect": "Allow"
},
{
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": [
"arn:aws:ses:ap-northeast-1:486641582775:identity/michibiku.co.jp",
"arn:aws:ses:ap-northeast-1:486641582775:configuration-set/configurationSetForEmailNotification"
],
"Effect": "Allow"
},
{
"Action": [
"s3:GetObject*",
"s3:GetBucket*",
"s3:List*",
"s3:DeleteObject*",
"s3:PutObject",
"s3:Abort*"
],
"Resource": [
"arn:aws:s3:::prod-michibiku-transcriptions",
"arn:aws:s3:::prod-michibiku-transcriptions/*"
],
"Effect": "Allow"
},
{
"Action": "states:StartExecution",
"Resource": "arn:aws:states:ap-northeast-1:486641582775:stateMachine:AmiVoiceRecognitionStateMachineProdB78594D7-77mVTs8dhbIY",
"Effect": "Allow"
}
]
}
{"version":1,"resource":"file:///Users/tubone24/hc_pat.txt","entries":[{"id":"n3Dq.txt","source":"textFileCreate.source","timestamp":1650704020554}]}
{"version":1,"resource":"vsls:/force-app/main/default/lwc/eventsList/eventsList.xml","entries":[{"id":"W07l.xml","source":"Workspace Edit","timestamp":null}]}
{"version":1,"resource":"vsls:/force-app/main/default/lwc/eventsList/eventsList.css","entries":[{"id":"MPJ1.css","timestamp":null},{"id":"3fUI.css","source":"Workspace Edit","timestamp":null},{"id":"azVe.css","timestamp":null},{"id":"dsrC.css","source":"Workspace Edit","timestamp":null}]}
{
"packageDirectories": [
{
"path": "force-app",
"default": true
}
],
"name": "testOtsuboEventHubLead",
"namespace": "",
"sfdcLoginUrl": "https://login.salesforce.com",
"sourceApiVersion": "56.0"
}
{
"packageDirectories": [
{
"path": "force-app",
"default": true
}
],
"name": "testOtsuboEventHubLead",
"namespace": "testOtsuboEventHubLead",
"sfdcLoginUrl": "https://login.salesforce.com",
"sourceApiVersion": "56.0"
}
{"version":1,"resource":"file:///Users/yuotsubo/project/testOtsuboEventHubLead/sfdx-project.json","entries":[{"id":"EJAV.json","timestamp":1676891440279},{"id":"d2K1.json","source":"undoRedo.source","timestamp":1676891464613}]}
{"version":1,"resource":"file:///Users/yuotsubo/.ssh/config","entries":[{"id":"8PwP","timestamp":1657585524799},{"id":"oQL1","timestamp":1668416412506},{"id":"QbLd","timestamp":1668421673658},{"id":"5Hrh","timestamp":1671963620914},{"id":"0o2f","timestamp":1671963662362}]}
{"version":1,"resource":"vsls:/force-app/main/default/classes/GetEventHubLeadTests.cls","entries":[{"id":"Vpg4.cls","source":"Workspace Edit","timestamp":null},{"id":"1b6v.cls","timestamp":null},{"id":"eA3g.cls","source":"Workspace Edit","timestamp":null}]}
{
"orgName": "EventHub, Inc.",
"edition": "Developer",
"features": ["EnableSetPasswordInApi"],
"settings": {
"lightningExperienceSettings": {
"enableS1DesktopEnabled": true
},
"mobileSettings": {
"enableS1EncryptedStoragePref2": false
},
"languageSettings": {
"enableTranslationWorkbench": true
}
}
}
{
"orgName": "EventHub, Inc.",
"edition": "Developer",
"features": ["EnableSetPasswordInApi"],
"settings": {
"lightningExperienceSettings": {
"enableS1DesktopEnabled": true
},
"mobileSettings": {
"enableS1EncryptedStoragePref2": false
},
"languageSettings": {
"enableTranslationWorkbench": true
}
}
}
{"version":1,"resource":"file:///Users/yuotsubo/project/eventhub-sfdc-app/config/project-scratch-def.json","entries":[{"id":"0RkT.json","timestamp":1684389162614},{"id":"DJZD.json","source":"undoRedo.source","timestamp":1684460155878}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/eventhub-sfdc-app/force-app/main/default/objects/ApiKey__mdt/fields/Key__c.field-meta.xml","entries":[{"id":"FMkG.xml","timestamp":1684413073527}]}
{"version":1,"resource":"vsls:/force-app/main/default/classes/MultiRequestMock.cls","entries":[{"id":"72Du.cls","source":"Workspace Edit","timestamp":null}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/misskey_plugins/plugins/ramen_timer.is","entries":[{"id":"BBaG.is","source":"undoRedo.source","timestamp":1680316252208},{"id":"ev0W.is","source":"undoRedo.source","timestamp":1680317948650},{"id":"O9uN.is","timestamp":1680319792591},{"id":"LGgA.is","timestamp":1680319844089},{"id":"4SHy.is","timestamp":1681535111320},{"id":"Y1sd.is","timestamp":1681544753036},{"id":"H9gt.is","timestamp":1681565062660},{"id":"a3vp.is","timestamp":1681569087053}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/eventhub/frontend/event/env/qa.env","entries":[{"id":"smws.env","timestamp":1665579623680}]}
{"version":1,"resource":"file:///Users/tubone24/Downloads/schema.gql","entries":[{"id":"ggkX.gql","timestamp":1664379171559},{"id":"O9O7.gql","timestamp":1664379207736},{"id":"rlFI.gql","timestamp":1664379391943},{"id":"HKWo.gql","timestamp":1664379669140},{"id":"ev5I.gql","source":"undoRedo.source","timestamp":1664380211236},{"id":"q2Vd.gql","timestamp":1664380249628},{"id":"mAyM.gql","timestamp":1664380427703},{"id":"1wwP.gql","timestamp":1664380577163},{"id":"sEMn.gql","timestamp":1664381308263}]}
{"version":1,"resource":"file:///Users/yuotsubo/.aws/config","entries":[{"id":"mcyM","source":"textFileCreate.source","timestamp":1668421627574},{"id":"DjCr","timestamp":1669722416050}]}
{
"sync.gist": "b00e71c41a9c2305b734d7c9e787fe28",
"sync.autoDownload": true,
"sync.autoUpload": true,
"mssql.connections": [
{
"server": "{{put-server-name-here}}",
"database": "{{put-database-name-here}}",
"user": "{{put-username-here}}",
"password": ""
}
],
"security.workspace.trust.untrustedFiles": "open",
"yaml.schemas": {},
"yaml.customTags": [
"!And",
"!And sequence",
"!If",
"!If sequence",
"!Not",
"!Not sequence",
"!Equals",
"!Equals sequence",
"!Or",
"!Or sequence",
"!FindInMap",
"!FindInMap sequence",
"!Base64",
"!Join",
"!Join sequence",
"!Cidr",
"!Ref",
"!Sub",
"!Sub sequence",
"!GetAtt",
"!GetAZs",
"!ImportValue",
"!ImportValue sequence",
"!Select",
"!Select sequence",
"!Split",
"!Split sequence"
],
"workbench.editor.enablePreview": false,
"workbench.editorAssociations": {
"*.xlsx": "default"
},
"json.schemas": [],
"editor.unicodeHighlight.nonBasicASCII": false,
"editor.suggest.showMethods": true,
"editor.suggest.preview": true,
"editor.acceptSuggestionOnEnter": "on",
"editor.snippetSuggestions": "top",
"window.zoomLevel": 1,
"atomKeymap.promptV3Features": true,
"markdown-pdf.executablePath": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
"settingsSync.ignoredExtensions": [
],
"editor.inlineSuggest.enabled": true,
"github.copilot.enable": {
"*": true,
"yaml": false,
"plaintext": true,
"markdown": false
},
"[aiscript]": {}
}
{
"sync.gist": "b00e71c41a9c2305b734d7c9e787fe28",
"sync.autoDownload": true,
"sync.autoUpload": true,
"mssql.connections": [
{
"server": "{{put-server-name-here}}",
"database": "{{put-database-name-here}}",
"user": "{{put-username-here}}",
"password": ""
}
],
"security.workspace.trust.untrustedFiles": "open",
"yaml.schemas": {},
"yaml.customTags": [
"!And",
"!And sequence",
"!If",
"!If sequence",
"!Not",
"!Not sequence",
"!Equals",
"!Equals sequence",
"!Or",
"!Or sequence",
"!FindInMap",
"!FindInMap sequence",
"!Base64",
"!Join",
"!Join sequence",
"!Cidr",
"!Ref",
"!Sub",
"!Sub sequence",
"!GetAtt",
"!GetAZs",
"!ImportValue",
"!ImportValue sequence",
"!Select",
"!Select sequence",
"!Split",
"!Split sequence"
],
"workbench.editor.enablePreview": false,
"workbench.editorAssociations": {
"*.xlsx": "default"
},
"json.schemas": [],
"editor.unicodeHighlight.nonBasicASCII": false,
"workbench.colorTheme": "Blueprint",
"editor.suggest.showMethods": true,
"editor.suggest.preview": true,
"editor.acceptSuggestionOnEnter": "on",
"editor.snippetSuggestions": "top",
"window.zoomLevel": 2
}
{"version":1,"resource":"vscode-userdata:/Users/yuotsubo/Library/Application%20Support/Code/User/settings.json","entries":[{"id":"O0ub.json","timestamp":1656505968656},{"id":"b8zR.json","timestamp":1662543755811},{"id":"XO4N.json","timestamp":1662544001154},{"id":"V70Q.json","timestamp":1664255287955},{"id":"owHN.json","timestamp":1669805335762},{"id":"aszE.json","timestamp":1680316401660}]}
{
"sync.gist": "b00e71c41a9c2305b734d7c9e787fe28",
"sync.autoDownload": true,
"sync.autoUpload": true,
"mssql.connections": [
{
"server": "{{put-server-name-here}}",
"database": "{{put-database-name-here}}",
"user": "{{put-username-here}}",
"password": ""
}
],
"security.workspace.trust.untrustedFiles": "open",
"yaml.schemas": {},
"yaml.customTags": [
"!And",
"!And sequence",
"!If",
"!If sequence",
"!Not",
"!Not sequence",
"!Equals",
"!Equals sequence",
"!Or",
"!Or sequence",
"!FindInMap",
"!FindInMap sequence",
"!Base64",
"!Join",
"!Join sequence",
"!Cidr",
"!Ref",
"!Sub",
"!Sub sequence",
"!GetAtt",
"!GetAZs",
"!ImportValue",
"!ImportValue sequence",
"!Select",
"!Select sequence",
"!Split",
"!Split sequence"
],
"workbench.editor.enablePreview": false,
"workbench.editorAssociations": {
"*.xlsx": "default"
},
"json.schemas": [],
"editor.unicodeHighlight.nonBasicASCII": false,
"workbench.colorTheme": "Blueprint",
"editor.suggest.showMethods": true,
"editor.suggest.preview": true,
"editor.acceptSuggestionOnEnter": "on",
"editor.snippetSuggestions": "top"
}
{
"sync.gist": "b00e71c41a9c2305b734d7c9e787fe28",
"sync.autoDownload": true,
"sync.autoUpload": true,
"mssql.connections": [
{
"server": "{{put-server-name-here}}",
"database": "{{put-database-name-here}}",
"user": "{{put-username-here}}",
"password": ""
}
],
"security.workspace.trust.untrustedFiles": "open",
"yaml.schemas": {},
"yaml.customTags": [
"!And",
"!And sequence",
"!If",
"!If sequence",
"!Not",
"!Not sequence",
"!Equals",
"!Equals sequence",
"!Or",
"!Or sequence",
"!FindInMap",
"!FindInMap sequence",
"!Base64",
"!Join",
"!Join sequence",
"!Cidr",
"!Ref",
"!Sub",
"!Sub sequence",
"!GetAtt",
"!GetAZs",
"!ImportValue",
"!ImportValue sequence",
"!Select",
"!Select sequence",
"!Split",
"!Split sequence"
],
"workbench.editor.enablePreview": false,
"workbench.editorAssociations": {
"*.xlsx": "default"
},
"json.schemas": [],
"editor.unicodeHighlight.nonBasicASCII": false,
"editor.suggest.showMethods": true,
"editor.suggest.preview": true,
"editor.acceptSuggestionOnEnter": "on",
"editor.snippetSuggestions": "top",
"window.zoomLevel": 1,
"atomKeymap.promptV3Features": true,
"markdown-pdf.executablePath": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
}
{
"sync.gist": "b00e71c41a9c2305b734d7c9e787fe28",
"sync.autoDownload": true,
"sync.autoUpload": true,
"mssql.connections": [
{
"server": "{{put-server-name-here}}",
"database": "{{put-database-name-here}}",
"user": "{{put-username-here}}",
"password": ""
}
],
"security.workspace.trust.untrustedFiles": "open",
"yaml.schemas": {},
"yaml.customTags": [
"!And",
"!And sequence",
"!If",
"!If sequence",
"!Not",
"!Not sequence",
"!Equals",
"!Equals sequence",
"!Or",
"!Or sequence",
"!FindInMap",
"!FindInMap sequence",
"!Base64",
"!Join",
"!Join sequence",
"!Cidr",
"!Ref",
"!Sub",
"!Sub sequence",
"!GetAtt",
"!GetAZs",
"!ImportValue",
"!ImportValue sequence",
"!Select",
"!Select sequence",
"!Split",
"!Split sequence"
],
"workbench.editor.enablePreview": false,
"workbench.editorAssociations": {
"*.xlsx": "default"
},
"json.schemas": [],
"editor.unicodeHighlight.nonBasicASCII": false,
"editor.suggest.showMethods": true,
"editor.suggest.preview": true,
"editor.acceptSuggestionOnEnter": "on",
"editor.snippetSuggestions": "top",
"window.zoomLevel": 1,
"atomKeymap.promptV3Features": true
}
{
"sync.gist": "b00e71c41a9c2305b734d7c9e787fe28",
"sync.autoDownload": true,
"sync.autoUpload": true,
"mssql.connections": [
{
"server": "{{put-server-name-here}}",
"database": "{{put-database-name-here}}",
"user": "{{put-username-here}}",
"password": ""
}
],
"security.workspace.trust.untrustedFiles": "open",
"yaml.schemas": {},
"yaml.customTags": [
"!And",
"!And sequence",
"!If",
"!If sequence",
"!Not",
"!Not sequence",
"!Equals",
"!Equals sequence",
"!Or",
"!Or sequence",
"!FindInMap",
"!FindInMap sequence",
"!Base64",
"!Join",
"!Join sequence",
"!Cidr",
"!Ref",
"!Sub",
"!Sub sequence",
"!GetAtt",
"!GetAZs",
"!ImportValue",
"!ImportValue sequence",
"!Select",
"!Select sequence",
"!Split",
"!Split sequence"
],
"workbench.editor.enablePreview": false,
"workbench.editorAssociations": {
"*.xlsx": "default"
},
"json.schemas": [],
"editor.unicodeHighlight.nonBasicASCII": false,
"workbench.colorTheme": "Blueprint",
"editor.suggest.showMethods": true,
"editor.suggest.preview": true,
"editor.acceptSuggestionOnEnter": "on",
"editor.snippetSuggestions": "top",
"window.zoomLevel": 1
}
{"version":1,"resource":"file:///Users/yuotsubo/project/aiscript-syntax/CHANGELOG.md","entries":[{"id":"fNtB.md","timestamp":1680622135733},{"id":"AJWp.md","timestamp":1680622149618},{"id":"Bq8E.md","timestamp":1681570256706}]}
{"version":1,"resource":"vsls:/force-app/main/default/flexipages/Hello.flexipage-meta.xml","entries":[{"id":"u5S9.xml","source":"Workspace Edit","timestamp":null}]}
{"version":1,"resource":"file:///Users/yuotsubo/Downloads/188.html","entries":[{"id":"41DS.html","source":"textFileCreate.source","timestamp":1669806059977},{"id":"8Rum.html","timestamp":1669806091195}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/eventhub-sfdc-app/force-app/main/default/objects/ApiKey__mdt/ApiKey__mdt.object-meta.xml","entries":[{"id":"gQov.xml","timestamp":1684415765141}]}
{"version":1,"resource":"file:///Users/tubone24/.wezterm.lua","entries":[{"id":"VulZ.lua","source":"textFileCreate.source","timestamp":1662043878014}]}
{"version":1,"resource":"vsls:/~external/c49eef5d-a6ea-4851-bbc7-621aedd757e3/settings.json","entries":[{"id":"r54q.json","source":"Workspace Edit","timestamp":null}]}
{
"editor.minimap.enabled": false,
"workbench.editor.enablePreview": false,
"editor.fontFamily": "'MesloLGS NF', Menlo, Monaco, 'Courier New', monospace",
"daily-memo.directory": "~/Documents/daily_memo",
"workbench.iconTheme": "material-icon-theme",
"editor.formatOnSave": true,
"cSpell.enabledLanguageIds": [
"asciidoc",
"c",
"cpp",
"csharp",
"css",
"elixir",
"erlang",
"git-commit",
"go",
"graphql",
"handlebars",
"haskell",
"html",
"jade",
"java",
"javascript",
"javascriptreact",
"json",
"jsonc",
"jupyter",
"latex",
"less",
"markdown",
"php",
"plaintext",
"python",
"pug",
"restructuredtext",
"rust",
"scala",
"scss",
"scminput",
"swift",
"text",
"typescript",
"typescriptreact",
"vue",
"yaml",
"yml",
"ruby"
],
"workbench.colorTheme": "Monokai Dimmed",
"workbench.preferredLightColorTheme": "Red",
"workbench.preferredDarkColorTheme": "Monokai",
"[python]": {
"editor.formatOnType": true
},
"window.zoomLevel": 1,
"terminal.integrated.defaultProfile.linux": "",
"terminal.integrated.defaultProfile.osx": "bash"
}
{"version":1,"resource":"file:///Users/yuotsubo/.gitconfig","entries":[{"id":"zfeC","timestamp":1663461585255},{"id":"mcKA","timestamp":1663462272379},{"id":"rERv","timestamp":1663462970859},{"id":"9Rfd","timestamp":1663464471874},{"id":"unkx","timestamp":1663464494754},{"id":"SZNJ","timestamp":1663464555945},{"id":"6mGg","timestamp":1663465336447},{"id":"AvL5","timestamp":1666785901708},{"id":"TzTZ","source":"undoRedo.source","timestamp":1666785951108},{"id":"O5wi","timestamp":1666942641180},{"id":"lZTk","timestamp":1671774219505}]}
{"version":1,"resource":"vsls:/force-app/main/default/lwc/apiSettings/apiSettings.css","entries":[{"id":"jV92.css","source":"Workspace Edit","timestamp":null}]}
{"version":1,"resource":"vsls:/force-app/main/default/tab/Hello.tab-meta.xml","entries":[{"id":"q5Ce.xml","source":"Workspace Edit","timestamp":null}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/testOtsuboEventHubLead/scripts/apex/getEventHubLead.apex","entries":[{"id":"aeR8.apex","timestamp":1676887053432},{"id":"gH9Y.apex","timestamp":1676887115538},{"id":"rPnI.apex","timestamp":1676887192910},{"id":"TGrq.apex","timestamp":1676887204605},{"id":"SDuf.apex","timestamp":1676887610968},{"id":"B2aa.apex","timestamp":1676887712850},{"id":"TdVR.apex","timestamp":1676888192792},{"id":"ypgx.apex","source":"undoRedo.source","timestamp":1676888215079},{"id":"A88t.apex","timestamp":1676888254708},{"id":"A2YN.apex","timestamp":1676888340411},{"id":"y24L.apex","timestamp":1676888462352}]}
{"version":1,"resource":"file:///Users/tubone24/project/aleph_demo/.gitignore","entries":[{"id":"DC9r","source":"textFileCreate.source","timestamp":1662045351740}]}
{"version":1,"resource":"vsls:/force-app/main/default/permissionsets/Hello.permissionset-meta.xml","entries":[{"id":"G4iB.xml","source":"Workspace Edit","timestamp":null}]}
{"version":1,"resource":"vsls:/force-app/main/default/lwc/apiSettings/apiSettings.js","entries":[{"id":"9Nrx.js","source":"Workspace Edit","timestamp":null}]}
{"version":1,"resource":"file:///Users/yuotsubo/.wezterm.lua","entries":[{"id":"eDmD.lua","timestamp":1661770900018},{"id":"8KPu.lua","timestamp":1661770911745},{"id":"q3Ma.lua","timestamp":1661770941052},{"id":"Er2x.lua","timestamp":1661770953644},{"id":"9KNm.lua","timestamp":1661770990067},{"id":"rybR.lua","timestamp":1661771020105},{"id":"fZHp.lua","timestamp":1661771039312},{"id":"UnyY.lua","timestamp":1661771097779},{"id":"wQYV.lua","timestamp":1661771138760},{"id":"iP1Z.lua","timestamp":1661771231459},{"id":"eMPO.lua","timestamp":1661771269291},{"id":"oxlq.lua","source":"undoRedo.source","timestamp":1661771283100},{"id":"NVgW.lua","timestamp":1661771289954},{"id":"yjCW.lua","source":"undoRedo.source","timestamp":1661771293758},{"id":"CQj4.lua","timestamp":1661771378441},{"id":"eJ1n.lua","timestamp":1661771463700},{"id":"Ou0q.lua","timestamp":1661771522974},{"id":"V3jg.lua","timestamp":1661773908164},{"id":"HgHf.lua","timestamp":1661773918710},{"id":"FyYA.lua","timestamp":1661773947813},{"id":"jQYw.lua","timestamp":1661773975500},{"id":"9NYo.lua","timestamp":1661774646087},{"id":"1RYU.lua","timestamp":1661774665372},{"id":"8lo1.lua","source":"undoRedo.source","timestamp":1661774707741},{"id":"2vVm.lua","timestamp":1661774791804},{"id":"vq3s.lua","timestamp":1661775054600},{"id":"vmnk.lua","timestamp":1661775194187},{"id":"Sxqj.lua","timestamp":1661775606869},{"id":"PdJP.lua","timestamp":1661775704054},{"id":"mTBl.lua","timestamp":1661775797926},{"id":"OhgD.lua","timestamp":1661775812317},{"id":"vZHu.lua","timestamp":1661775823801},{"id":"QXVn.lua","timestamp":1661775870470},{"id":"583b.lua","timestamp":1661775922784},{"id":"QPZ1.lua","timestamp":1661775975332},{"id":"Wwvl.lua","timestamp":1661776125796},{"id":"tKE4.lua","timestamp":1661776174462},{"id":"PbIC.lua","timestamp":1661776276447},{"id":"RPgJ.lua","timestamp":1661776480071},{"id":"zafS.lua","timestamp":1661776540113},{"id":"ZZSz.lua","timestamp":1661776604707},{"id":"6cKR.lua","timestamp":1661776637132},{"id":"27D9.lua","timestamp":1661776656668},{"id":"IoNf.lua","timestamp":1661776708229},{"id":"se6Y.lua","source":"undoRedo.source","timestamp":1661776731873},{"id":"M6RA.lua","timestamp":1661776905439},{"id":"bySf.lua","timestamp":1661776929843},{"id":"YUkM.lua","timestamp":1662132128120},{"id":"AMkP.lua","timestamp":1663421245536},{"id":"slUO.lua","timestamp":1663421350961}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/aiscript-syntax/LICENSE.md","entries":[{"id":"EaON.md","source":"textFileCreate.source","timestamp":1680368218976},{"id":"MDYy.md","timestamp":1680368258837}]}
{"version":1,"resource":"file:///Users/tubone24/project/mac-auto-setup/ansible/mac/roles/dev-tools/tasks/wezterm.yml","entries":[{"id":"QLTQ.yml","timestamp":1662041847005}]}
{"version":1,"resource":"file:///Users/tubone24/.gitconfig","entries":[{"id":"4p0Y","timestamp":1651219346813}]}
{"version":1,"resource":"vsls:/force-app/main/default/tabs/Hello.tab-meta.xml","entries":[{"id":"PwuZ.xml","source":"Workspace Edit","timestamp":null}]}
{"version":1,"resource":"file:///Users/yuotsubo/Downloads/186.html%5D","entries":[{"id":"KmAc.html]","source":"textFileCreate.source","timestamp":1669805644010}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/eventhub-sfdc-app/force-app/main/default/classes/ApiKeyTests.cls","entries":[{"id":"xKhu.cls","timestamp":1684395518246},{"id":"FCUW.cls","timestamp":1684411453035}]}
{
"packageDirectories": [
{
"path": "force-app",
"default": true,
"package": "EventHub App",
"versionName": "ver 0.4",
"versionNumber": "0.4.0.NEXT",
"versionDescription": ""
}
],
"name": "EventHubLightningWebComponent",
"namespace": "EventHub",
"sfdcLoginUrl": "https://login.salesforce.com",
"sourceApiVersion": "56.0",
"packageAliases": {
"EventHub App": "0Ho5i0000004CN0CAM",
"EventHub [email protected]": "04t5i00000060yKAAQ",
"EventHub [email protected]": "04t5i00000061mCAAQ",
"EventHub [email protected]": "04t5i00000061qtAAA"
}
}
{
"packageDirectories": [
{
"path": "force-app",
"default": true
}
],
"name": "EventHubLightningWebComponent",
"namespace": "EventHub",
"sfdcLoginUrl": "https://login.salesforce.com",
"sourceApiVersion": "56.0"
}
{
"packageDirectories": [
{
"path": "force-app",
"default": true,
"package": "EventHub App",
"versionName": "ver 0.2",
"versionNumber": "0.2.0.NEXT",
"versionDescription": ""
}
],
"name": "EventHubLightningWebComponent",
"namespace": "EventHub",
"sfdcLoginUrl": "https://login.salesforce.com",
"sourceApiVersion": "56.0",
"packageAliases": {
"EventHub App": "0Ho5i0000004CN0CAM",
"EventHub [email protected]": "04t5i00000060yKAAQ"
}
}
{"version":1,"resource":"file:///Users/yuotsubo/project/eventhub-sfdc-app/sfdx-project.json","entries":[{"id":"qaJk.json","timestamp":1684229405574},{"id":"CQIW.json","timestamp":1684389020319},{"id":"CzFy.json","timestamp":1684395629583},{"id":"q8fl.json","timestamp":1684411487837},{"id":"3zCG.json","timestamp":1684413089471},{"id":"Xe2K.json","timestamp":1684415780648},{"id":"MAHs.json","source":"undoRedo.source","timestamp":1684460166735},{"id":"mpKz.json","timestamp":1684460183515},{"id":"gKQW.json","timestamp":1684464646529},{"id":"vnjU.json","timestamp":1684467192357}]}
{
"packageDirectories": [
{
"path": "force-app",
"default": true,
"package": "EventHub App",
"versionName": "ver 0.7",
"versionNumber": "0.7.0.NEXT",
"versionDescription": ""
}
],
"name": "EventHubLightningWebComponent",
"namespace": "EventHub",
"sfdcLoginUrl": "https://login.salesforce.com",
"sourceApiVersion": "56.0",
"packageAliases": {
"EventHub App": "0Ho5i0000004CN0CAM",
"EventHub [email protected]": "04t5i00000060yKAAQ",
"EventHub [email protected]": "04t5i00000061mCAAQ",
"EventHub [email protected]": "04t5i00000061qtAAA",
"EventHub [email protected]": "04t5i00000061r3AAA",
"EventHub [email protected]": "04t5i00000061vGAAQ",
"EventHub [email protected]": "04t5i000000627jAAA"
}
}
{
"packageDirectories": [
{
"path": "force-app",
"default": true,
"package": "EventHub App",
"versionName": "ver 0.5",
"versionNumber": "0.5.0.NEXT",
"versionDescription": ""
}
],
"name": "EventHubLightningWebComponent",
"namespace": "EventHub",
"sfdcLoginUrl": "https://login.salesforce.com",
"sourceApiVersion": "56.0",
"packageAliases": {
"EventHub App": "0Ho5i0000004CN0CAM",
"EventHub [email protected]": "04t5i00000060yKAAQ",
"EventHub [email protected]": "04t5i00000061mCAAQ",
"EventHub [email protected]": "04t5i00000061qtAAA",
"EventHub [email protected]": "04t5i00000061r3AAA",
"EventHub [email protected]": "04t5i00000061vGAAQ"
}
}
{
"packageDirectories": [
{
"path": "force-app",
"default": true,
"package": "EventHub App",
"versionName": "ver 0.6",
"versionNumber": "0.6.0.NEXT",
"versionDescription": ""
}
],
"name": "EventHubLightningWebComponent",
"namespace": "EventHub",
"sfdcLoginUrl": "https://login.salesforce.com",
"sourceApiVersion": "56.0",
"packageAliases": {
"EventHub App": "0Ho5i0000004CN0CAM",
"EventHub [email protected]": "04t5i00000060yKAAQ",
"EventHub [email protected]": "04t5i00000061mCAAQ",
"EventHub [email protected]": "04t5i00000061qtAAA",
"EventHub [email protected]": "04t5i00000061r3AAA",
"EventHub [email protected]": "04t5i00000061vGAAQ"
}
}
{
"packageDirectories": [
{
"path": "force-app",
"default": true,
"package": "EventHub App",
"versionName": "ver 0.3",
"versionNumber": "0.3.0.NEXT",
"versionDescription": ""
}
],
"name": "EventHubLightningWebComponent",
"namespace": "EventHub",
"sfdcLoginUrl": "https://login.salesforce.com",
"sourceApiVersion": "56.0",
"packageAliases": {
"EventHub App": "0Ho5i0000004CN0CAM",
"EventHub [email protected]": "04t5i00000060yKAAQ",
"EventHub [email protected]": "04t5i00000061mCAAQ"
}
}
{
"packageDirectories": [
{
"path": "force-app",
"default": true
}
],
"name": "EventHubLightningWebComponent",
"namespace": "ehbetatest",
"sfdcLoginUrl": "https://login.salesforce.com",
"sourceApiVersion": "56.0"
}
{
"packageDirectories": [
{
"path": "force-app",
"default": true,
"package": "EventHub App",
"versionName": "ver 0.8",
"versionNumber": "0.8.0.NEXT",
"versionDescription": ""
}
],
"name": "EventHubLightningWebComponent",
"namespace": "EventHub",
"sfdcLoginUrl": "https://login.salesforce.com",
"sourceApiVersion": "56.0",
"packageAliases": {
"EventHub App": "0Ho5i0000004CN0CAM",
"EventHub [email protected]": "04t5i00000060yKAAQ",
"EventHub [email protected]": "04t5i00000061mCAAQ",
"EventHub [email protected]": "04t5i00000061qtAAA",
"EventHub [email protected]": "04t5i00000061r3AAA",
"EventHub [email protected]": "04t5i00000061vGAAQ",
"EventHub [email protected]": "04t5i000000627jAAA",
"EventHub [email protected]": "04t5i00000062BwAAI"
}
}
{
"packageDirectories": [
{
"path": "force-app",
"default": true,
"package": "EventHub App",
"versionName": "ver 0.5",
"versionNumber": "0.5.0.NEXT",
"versionDescription": ""
}
],
"name": "EventHubLightningWebComponent",
"namespace": "EventHub",
"sfdcLoginUrl": "https://login.salesforce.com",
"sourceApiVersion": "56.0",
"packageAliases": {
"EventHub App": "0Ho5i0000004CN0CAM",
"EventHub [email protected]": "04t5i00000060yKAAQ",
"EventHub [email protected]": "04t5i00000061mCAAQ",
"EventHub [email protected]": "04t5i00000061qtAAA",
"EventHub [email protected]": "04t5i00000061r3AAA"
}
}
{"version":1,"resource":"vsls:/force-app/main/default/lwc/eventsList/eventsList.html","entries":[{"id":"CL05.html","timestamp":null},{"id":"VrLN.html","timestamp":null},{"id":"YlsS.html","source":"Workspace Edit","timestamp":null},{"id":"q9lF.html","source":"Workspace Edit","timestamp":null},{"id":"yNfs.html","source":"Workspace Edit","timestamp":null},{"id":"2vdc.html","timestamp":null},{"id":"8dzx.html","source":"Workspace Edit","timestamp":null},{"id":"FS5H.html","timestamp":null},{"id":"GbGK.html","source":"Workspace Edit","timestamp":null},{"id":"kvq6.html","timestamp":null},{"id":"y4q2.html","source":"Workspace Edit","timestamp":null},{"id":"83gS.html","timestamp":null},{"id":"luh2.html","source":"Workspace Edit","timestamp":null},{"id":"otfS.html","timestamp":null},{"id":"wpEx.html","source":"Workspace Edit","timestamp":null},{"id":"G2Ox.html","timestamp":null},{"id":"kUqv.html","source":"Workspace Edit","timestamp":null},{"id":"qL5x.html","timestamp":null},{"id":"1wS7.html","source":"Workspace Edit","timestamp":null},{"id":"kY2K.html","timestamp":null}]}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-call": {
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"end": "(?=`)",
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
"end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"patterns": [
{
"include": "#support-function-call-identifiers"
},
{
"name": "entity.name.function.tagged-template.aiscript",
"match": "([_$[:alpha:]][_$[:alnum:]]*)"
}
]
},
{
"include": "#type-arguments"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
}
},
"end": "(?=`)",
"patterns": [
{
"include": "#type-arguments"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#expression"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-primitive"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-parameters"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-primitive": {
"name": "support.type.primitive.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
},
{
"include": "#type-parameters"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.expression.keyof.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
},
{
"name": "keyword.operator.expression.import.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
}
]
},
"type-infer": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",
"name": "meta.type.infer.aiscript",
"captures": {
"1": {
"name": "keyword.operator.expression.infer.aiscript"
},
"2": {
"name": "entity.name.type.aiscript"
},
"3": {
"name": "keyword.operator.expression.extends.aiscript"
}
}
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
},
{
"include": "#number-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript ",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.aiscript"
},
"3": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"4": {
"name": "storage.type.numeric.bigint.aiscript"
},
"5": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"6": {
"name": "storage.type.numeric.bigint.aiscript"
},
"7": {
"name": "storage.type.numeric.bigint.aiscript"
},
"8": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"9": {
"name": "storage.type.numeric.bigint.aiscript"
},
"10": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"11": {
"name": "storage.type.numeric.bigint.aiscript"
},
"12": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"13": {
"name": "storage.type.numeric.bigint.aiscript"
},
"14": {
"name": "storage.type.numeric.bigint.aiscript"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
},
{
"include": "#number-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"include": "#string"
}
]
},
"constant_boolean": {
"patterns": [
{
"include": "#boolean-literal"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.aiscript"
},
"3": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"4": {
"name": "storage.type.numeric.bigint.aiscript"
},
"5": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"6": {
"name": "storage.type.numeric.bigint.aiscript"
},
"7": {
"name": "storage.type.numeric.bigint.aiscript"
},
"8": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"9": {
"name": "storage.type.numeric.bigint.aiscript"
},
"10": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"11": {
"name": "storage.type.numeric.bigint.aiscript"
},
"12": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"13": {
"name": "storage.type.numeric.bigint.aiscript"
},
"14": {
"name": "storage.type.numeric.bigint.aiscript"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#function"
},
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings"
},
{
"include": "#var_declaration"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}]
},
"strings": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": {"patterns": [{"include": "#var"}]},
"2": {"patterns": [{"include": "#var_name"}]},
"3": {"patterns": [{"include": "#constant"}]}
}
}
],
"repository": {
"var": {
"patterns": [
{
"name" : "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{"include": "#constant_number"},
{"include": "#constant_string"}
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*{[\\s\\S]*}",
"captures": {
"1": {"patterns": [{"include": "#function_name"}]},
"2": {"patterns": [{"include": "#function_arguments"}]}
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings_double"
},
{
"include": "#strings_single"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"strings_double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"strings_single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"string-character-escape": {
"name": "constant.character.escape.js",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}]
},
"strings": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": {"patterns": [{"include": "#var"}]},
"2": {"patterns": [{"include": "#var_name"}]},
"3": {"patterns": [{"include": "#constant"}]}
}
}
],
"repository": {
"var": {
"patterns": [
{
"name" : "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{"include": "#constant_number"},
{"include": "#constant_string"}
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*{([\\s\\S]*?)}",
"captures": {
"1": {"patterns": [{"include": "#function_name"}]},
"2": {"patterns": [{"include": "#function_arguments"}]}
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
},
{
"include": "#number-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript ",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.aiscript"
},
"3": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"4": {
"name": "storage.type.numeric.bigint.aiscript"
},
"5": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"6": {
"name": "storage.type.numeric.bigint.aiscript"
},
"7": {
"name": "storage.type.numeric.bigint.aiscript"
},
"8": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"9": {
"name": "storage.type.numeric.bigint.aiscript"
},
"10": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"11": {
"name": "storage.type.numeric.bigint.aiscript"
},
"12": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"13": {
"name": "storage.type.numeric.bigint.aiscript"
},
"14": {
"name": "storage.type.numeric.bigint.aiscript"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-primitive"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-parameters"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
},
{
"include": "#type-parameters"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript ",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.aiscript"
},
"3": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"4": {
"name": "storage.type.numeric.bigint.aiscript"
},
"5": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"6": {
"name": "storage.type.numeric.bigint.aiscript"
},
"7": {
"name": "storage.type.numeric.bigint.aiscript"
},
"8": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"9": {
"name": "storage.type.numeric.bigint.aiscript"
},
"10": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"11": {
"name": "storage.type.numeric.bigint.aiscript"
},
"12": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"13": {
"name": "storage.type.numeric.bigint.aiscript"
},
"14": {
"name": "storage.type.numeric.bigint.aiscript"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script-configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var-declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
},
{
"include": "#number-literal"
},
{
"include": "#array-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script-configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var-declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"include": "#string"
}
]
},
"constant_boolean": {
"patterns": [
{
"include": "#boolean-literal"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"array-literal": {
"name": "meta.array.literal.aiscript",
"begin": "\\s*(\\[)",
"beginCaptures": {
"1": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"include": "#punctuation-comma"
}
]
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.aiscript"
},
"3": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"4": {
"name": "storage.type.numeric.bigint.aiscript"
},
"5": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"6": {
"name": "storage.type.numeric.bigint.aiscript"
},
"7": {
"name": "storage.type.numeric.bigint.aiscript"
},
"8": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"9": {
"name": "storage.type.numeric.bigint.aiscript"
},
"10": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"11": {
"name": "storage.type.numeric.bigint.aiscript"
},
"12": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"13": {
"name": "storage.type.numeric.bigint.aiscript"
},
"14": {
"name": "storage.type.numeric.bigint.aiscript"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
},
{
"include": "#number-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript ",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.aiscript"
},
"3": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"4": {
"name": "storage.type.numeric.bigint.aiscript"
},
"5": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"6": {
"name": "storage.type.numeric.bigint.aiscript"
},
"7": {
"name": "storage.type.numeric.bigint.aiscript"
},
"8": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"9": {
"name": "storage.type.numeric.bigint.aiscript"
},
"10": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"11": {
"name": "storage.type.numeric.bigint.aiscript"
},
"12": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"13": {
"name": "storage.type.numeric.bigint.aiscript"
},
"14": {
"name": "storage.type.numeric.bigint.aiscript"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-call": {
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"end": "(?=`)",
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
"end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"patterns": [
{
"include": "#support-function-call-identifiers"
},
{
"name": "entity.name.function.tagged-template.aiscript",
"match": "([_$[:alpha:]][_$[:alnum:]]*)"
}
]
},
{
"include": "#type-arguments"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
}
},
"end": "(?=`)",
"patterns": [
{
"include": "#type-arguments"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#expression"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-primitive"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-parameters"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-primitive": {
"name": "support.type.primitive.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
},
{
"include": "#type-parameters"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.expression.keyof.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
},
{
"name": "keyword.operator.expression.import.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
}
]
},
"type-infer": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",
"name": "meta.type.infer.aiscript",
"captures": {
"1": {
"name": "keyword.operator.expression.infer.aiscript"
},
"2": {
"name": "entity.name.type.aiscript"
},
"3": {
"name": "keyword.operator.expression.extends.aiscript"
}
}
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
},
{
"include": "#number-literal"
},
{
"include": "#array-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"include": "#string"
}
]
},
"constant_boolean": {
"patterns": [
{
"include": "#boolean-literal"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"array-literal": {
"name": "meta.array.literal.aiscript",
"begin": "\\s*(\\[)",
"beginCaptures": {
"1": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"include": "#punctuation-comma"
}
]
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.aiscript"
},
"3": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"4": {
"name": "storage.type.numeric.bigint.aiscript"
},
"5": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"6": {
"name": "storage.type.numeric.bigint.aiscript"
},
"7": {
"name": "storage.type.numeric.bigint.aiscript"
},
"8": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"9": {
"name": "storage.type.numeric.bigint.aiscript"
},
"10": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"11": {
"name": "storage.type.numeric.bigint.aiscript"
},
"12": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"13": {
"name": "storage.type.numeric.bigint.aiscript"
},
"14": {
"name": "storage.type.numeric.bigint.aiscript"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-primitive"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-parameters"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
},
{
"include": "#type-parameters"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript ",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"name": "constant.numeric.hex.js",
"match": "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",
"captures": {
"1": {
"name": "storage.type.numeric.bigint.js"
}
}
},
{
"name": "constant.numeric.binary.js",
"match": "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",
"captures": {
"1": {
"name": "storage.type.numeric.bigint.js"
}
}
},
{
"name": "constant.numeric.octal.js",
"match": "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",
"captures": {
"1": {
"name": "storage.type.numeric.bigint.js"
}
}
},
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.js"
},
"1": {
"name": "meta.delimiter.decimal.period.js"
},
"2": {
"name": "storage.type.numeric.bigint.js"
},
"3": {
"name": "meta.delimiter.decimal.period.js"
},
"4": {
"name": "storage.type.numeric.bigint.js"
},
"5": {
"name": "meta.delimiter.decimal.period.js"
},
"6": {
"name": "storage.type.numeric.bigint.js"
},
"7": {
"name": "storage.type.numeric.bigint.js"
},
"8": {
"name": "meta.delimiter.decimal.period.js"
},
"9": {
"name": "storage.type.numeric.bigint.js"
},
"10": {
"name": "meta.delimiter.decimal.period.js"
},
"11": {
"name": "storage.type.numeric.bigint.js"
},
"12": {
"name": "meta.delimiter.decimal.period.js"
},
"13": {
"name": "storage.type.numeric.bigint.js"
},
"14": {
"name": "storage.type.numeric.bigint.js"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}]
},
"strings": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": {"patterns": [{"include": "#var"}]},
"2": {"patterns": [{"include": "#var_name"}]},
"3": {"patterns": [{"include": "#constant"}]}
}
}
],
"repository": {
"var": {
"patterns": [
{
"name" : "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{"include": "#constant_number"},
{"include": "#constant_string"}
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*{([\\s\\S]*?)}",
"captures": {
"1": {"patterns": [{"include": "#function_name"}]},
"2": {"patterns": [{"include": "#function_arguments"}]},
"3": {}
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{"version":1,"resource":"file:///Users/yuotsubo/project/aiscript-syntax/syntaxes/aiscript.tmLanguage.json","entries":[{"id":"MO2j.json","source":"undoRedo.source","timestamp":1680319628670},{"id":"SY48.json","timestamp":1680320012672},{"id":"2jok.json","timestamp":1680320070591},{"id":"Glam.json","timestamp":1680320070603},{"id":"ktHb.json","timestamp":1680320070620},{"id":"l6UY.json","timestamp":1680320070622},{"id":"74eQ.json","timestamp":1680320169197},{"id":"dWTY.json","timestamp":1680320276190},{"id":"UmpK.json","timestamp":1680365475996},{"id":"Gf2o.json","timestamp":1681535076180},{"id":"etG4.json","timestamp":1681535281422},{"id":"qFcA.json","timestamp":1681535368864},{"id":"Jcrq.json","timestamp":1681535558589},{"id":"WsbD.json","timestamp":1681535592266},{"id":"49g0.json","timestamp":1681535625503},{"id":"rsrL.json","timestamp":1681535655548},{"id":"je6y.json","timestamp":1681535767458},{"id":"VWMT.json","timestamp":1681542653521},{"id":"XYk8.json","timestamp":1681542788272},{"id":"KHgX.json","timestamp":1681543399576},{"id":"rSA4.json","timestamp":1681543439027},{"id":"LgQq.json","timestamp":1681543567698},{"id":"GIR7.json","timestamp":1681544453474},{"id":"0bdf.json","source":"undoRedo.source","timestamp":1681544516773},{"id":"lFYc.json","timestamp":1681544771711},{"id":"gSgi.json","timestamp":1681544789995},{"id":"jISi.json","timestamp":1681544984769},{"id":"bcbw.json","timestamp":1681545028057},{"id":"MZXX.json","timestamp":1681545507573},{"id":"ZHGd.json","timestamp":1681545599560},{"id":"wApm.json","timestamp":1681563551824},{"id":"Ry2c.json","timestamp":1681564414066},{"id":"CfcJ.json","timestamp":1681564563108},{"id":"vgla.json","timestamp":1681564619939},{"id":"tjuR.json","timestamp":1681564654688},{"id":"aEg0.json","timestamp":1681564672178},{"id":"VVks.json","timestamp":1681564947630},{"id":"LF5k.json","timestamp":1681565132386},{"id":"Ut42.json","timestamp":1681565656895},{"id":"auEk.json","source":"undoRedo.source","timestamp":1681565685011},{"id":"OOvj.json","timestamp":1681566078825},{"id":"0e2v.json","timestamp":1681566111552},{"id":"8CNO.json","timestamp":1681566200084},{"id":"Zn9b.json","timestamp":1681569265544},{"id":"VI9J.json","timestamp":1681569280703},{"id":"oWRQ.json","timestamp":1681569403467},{"id":"kw1u.json","timestamp":1681569768325},{"id":"2A7z.json","timestamp":1681569903140},{"id":"bVzI.json","timestamp":1681570013220},{"id":"AKZd.json","timestamp":1681570041412}]}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings_double"
},
{
"include": "#strings"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"strings_double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings_double"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}]
},
"strings_double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": {"patterns": [{"include": "#var"}]},
"2": {"patterns": [{"include": "#var_name"}]},
"3": {"patterns": [{"include": "#constant"}]}
}
}
],
"repository": {
"var": {
"patterns": [
{
"name" : "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{"include": "#constant_number"},
{"include": "#constant_string"}
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": {"patterns": [{"include": "#function_name"}]},
"2": {"patterns": [{"include": "#function_arguments"}]}
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-call": {
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"end": "(?=`)",
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
"end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"patterns": [
{
"include": "#support-function-call-identifiers"
},
{
"name": "entity.name.function.tagged-template.aiscript",
"match": "([_$[:alpha:]][_$[:alnum:]]*)"
}
]
},
{
"include": "#type-arguments"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
}
},
"end": "(?=`)",
"patterns": [
{
"include": "#type-arguments"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#expression"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-primitive"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-parameters"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-primitive": {
"name": "support.type.primitive.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
},
{
"include": "#type-parameters"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.expression.keyof.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
},
{
"name": "keyword.operator.expression.import.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
}
]
},
"type-infer": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",
"name": "meta.type.infer.aiscript",
"captures": {
"1": {
"name": "keyword.operator.expression.infer.aiscript"
},
"2": {
"name": "entity.name.type.aiscript"
},
"3": {
"name": "keyword.operator.expression.extends.aiscript"
}
}
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}]
},
"strings": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": {"patterns": [{"include": "#var"}]},
"2": {"patterns": [{"include": "#var_name"}]},
"3": {"patterns": [{"include": "#constant"}]}
}
}
],
"repository": {
"var": {
"patterns": [
{
"name" : "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{"include": "#constant_number"},
{"include": "#constant_string"}
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*{[\\s\\S]*}",
"captures": {
"1": {"patterns": [{"include": "#function_name"}]},
"2": {"patterns": [{"include": "#function_arguments"}]}
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-call": {
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"end": "(?=`)",
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
"end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"patterns": [
{
"include": "#support-function-call-identifiers"
},
{
"name": "entity.name.function.tagged-template.aiscript",
"match": "([_$[:alpha:]][_$[:alnum:]]*)"
}
]
},
{
"include": "#type-arguments"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
}
},
"end": "(?=`)",
"patterns": [
{
"include": "#type-arguments"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#expression"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-primitive"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-parameters"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-primitive": {
"name": "support.type.primitive.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
},
{
"include": "#type-parameters"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.expression.keyof.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
},
{
"name": "keyword.operator.expression.import.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
}
]
},
"type-infer": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",
"name": "meta.type.infer.aiscript",
"captures": {
"1": {
"name": "keyword.operator.expression.infer.aiscript"
},
"2": {
"name": "entity.name.type.aiscript"
},
"3": {
"name": "keyword.operator.expression.extends.aiscript"
}
}
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings_double"
},
{
"include": "#strings_single"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"strings_double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"strings_single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.js"
}
},
"end": "'",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings_double"
},
{
"include": "#strings_single"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"strings_double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"strings_single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-call": {
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"end": "(?=`)",
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
"end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"patterns": [
{
"include": "#support-function-call-identifiers"
},
{
"name": "entity.name.function.tagged-template.aiscript",
"match": "([_$[:alpha:]][_$[:alnum:]]*)"
}
]
},
{
"include": "#type-arguments"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
}
},
"end": "(?=`)",
"patterns": [
{
"include": "#type-arguments"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#expression"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-call": {
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"end": "(?=`)",
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
"end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"patterns": [
{
"include": "#support-function-call-identifiers"
},
{
"name": "entity.name.function.tagged-template.aiscript",
"match": "([_$[:alpha:]][_$[:alnum:]]*)"
}
]
},
{
"include": "#type-arguments"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
}
},
"end": "(?=`)",
"patterns": [
{
"include": "#type-arguments"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#expression"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\$\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}]
},
"strings": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": {"patterns": [{"include": "#var"}]},
"2": {"patterns": [{"include": "#var_name"}]},
"3": {"patterns": [{"include": "#constant"}]}
}
}
],
"repository": {
"var": {
"patterns": [
{
"name" : "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{"include": "#constant_number"},
{"include": "#constant_string"}
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*{[\\s\\S]*}",
"captures": {
"1": {"patterns": [{"include": "#function_name"}]},
"2": {"patterns": [{"include": "#function_arguments"}]}
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
},
{
"include": "#number-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"include": "#string"
}
]
},
"constant_boolean": {
"patterns": [
{
"include": "#boolean-literal"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript ",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.aiscript"
},
"3": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"4": {
"name": "storage.type.numeric.bigint.aiscript"
},
"5": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"6": {
"name": "storage.type.numeric.bigint.aiscript"
},
"7": {
"name": "storage.type.numeric.bigint.aiscript"
},
"8": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"9": {
"name": "storage.type.numeric.bigint.aiscript"
},
"10": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"11": {
"name": "storage.type.numeric.bigint.aiscript"
},
"12": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"13": {
"name": "storage.type.numeric.bigint.aiscript"
},
"14": {
"name": "storage.type.numeric.bigint.aiscript"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"begin": "### {",
"end": "}"
}
]
},
"keywords": {
"patterns": [{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}]
},
"strings": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": {"patterns": [{"include": "#var"}]},
"2": {"patterns": [{"include": "#var_name"}]},
"3": {"patterns": [{"include": "#constant"}]}
}
}
],
"repository": {
"var": {
"patterns": [
{
"name" : "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{"include": "#constant_number"},
{"include": "#constant_string"}
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*{[\\s\\S]*}",
"captures": {
"1": {"patterns": [{"include": "#function_name"}]},
"2": {"patterns": [{"include": "#function_arguments"}]}
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
},
{
"include": "#number-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-parameters"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
},
{
"include": "#type-parameters"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript ",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.aiscript"
},
"3": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"4": {
"name": "storage.type.numeric.bigint.aiscript"
},
"5": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"6": {
"name": "storage.type.numeric.bigint.aiscript"
},
"7": {
"name": "storage.type.numeric.bigint.aiscript"
},
"8": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"9": {
"name": "storage.type.numeric.bigint.aiscript"
},
"10": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"11": {
"name": "storage.type.numeric.bigint.aiscript"
},
"12": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"13": {
"name": "storage.type.numeric.bigint.aiscript"
},
"14": {
"name": "storage.type.numeric.bigint.aiscript"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#type"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-call": {
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"end": "(?=`)",
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
"end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"patterns": [
{
"include": "#support-function-call-identifiers"
},
{
"name": "entity.name.function.tagged-template.aiscript",
"match": "([_$[:alpha:]][_$[:alnum:]]*)"
}
]
},
{
"include": "#type-arguments"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
}
},
"end": "(?=`)",
"patterns": [
{
"include": "#type-arguments"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#expression"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-primitive"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-parameters"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-primitive": {
"name": "support.type.primitive.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
},
{
"include": "#type-parameters"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.expression.keyof.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
},
{
"name": "keyword.operator.expression.import.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
}
]
},
"type-infer": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",
"name": "meta.type.infer.aiscript",
"captures": {
"1": {
"name": "keyword.operator.expression.infer.aiscript"
},
"2": {
"name": "entity.name.type.aiscript"
},
"3": {
"name": "keyword.operator.expression.extends.aiscript"
}
}
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-call": {
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"end": "(?=`)",
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
"end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"patterns": [
{
"include": "#support-function-call-identifiers"
},
{
"name": "entity.name.function.tagged-template.aiscript",
"match": "([_$[:alpha:]][_$[:alnum:]]*)"
}
]
},
{
"include": "#type-arguments"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
}
},
"end": "(?=`)",
"patterns": [
{
"include": "#type-arguments"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#expression"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line",
"match": "\\/\\/.*"
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}]
},
"strings": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": {"patterns": [{"include": "#var"}]},
"2": {"patterns": [{"include": "#var_name"}]},
"3": {"patterns": [{"include": "#constant"}]}
}
}
],
"repository": {
"var": {
"patterns": [
{
"name" : "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{"include": "#constant_number"},
{"include": "#constant_string"}
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*{[\\s\\S]*}",
"captures": {
"1": {"patterns": [{"include": "#function_name"}]},
"2": {"patterns": [{"include": "#function_arguments"}]}
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#expression"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-primitive"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-parameters"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-primitive": {
"name": "support.type.primitive.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
},
{
"include": "#type-parameters"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.expression.keyof.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
},
{
"name": "keyword.operator.expression.import.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
}
]
},
"type-infer": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",
"name": "meta.type.infer.aiscript",
"captures": {
"1": {
"name": "keyword.operator.expression.infer.aiscript"
},
"2": {
"name": "entity.name.type.aiscript"
},
"3": {
"name": "keyword.operator.expression.extends.aiscript"
}
}
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
},
{
"include": "#number-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript ",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.aiscript"
},
"3": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"4": {
"name": "storage.type.numeric.bigint.aiscript"
},
"5": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"6": {
"name": "storage.type.numeric.bigint.aiscript"
},
"7": {
"name": "storage.type.numeric.bigint.aiscript"
},
"8": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"9": {
"name": "storage.type.numeric.bigint.aiscript"
},
"10": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"11": {
"name": "storage.type.numeric.bigint.aiscript"
},
"12": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"13": {
"name": "storage.type.numeric.bigint.aiscript"
},
"14": {
"name": "storage.type.numeric.bigint.aiscript"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
},
{
"include": "#number-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"include": "#string"
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript ",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.aiscript"
},
"3": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"4": {
"name": "storage.type.numeric.bigint.aiscript"
},
"5": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"6": {
"name": "storage.type.numeric.bigint.aiscript"
},
"7": {
"name": "storage.type.numeric.bigint.aiscript"
},
"8": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"9": {
"name": "storage.type.numeric.bigint.aiscript"
},
"10": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"11": {
"name": "storage.type.numeric.bigint.aiscript"
},
"12": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"13": {
"name": "storage.type.numeric.bigint.aiscript"
},
"14": {
"name": "storage.type.numeric.bigint.aiscript"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings_double"
},
{
"include": "#strings_single"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"strings_double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"strings_single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"end": "'",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-call": {
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"end": "(?=`)",
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
"end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"patterns": [
{
"include": "#support-function-call-identifiers"
},
{
"name": "entity.name.function.tagged-template.aiscript",
"match": "([_$[:alpha:]][_$[:alnum:]]*)"
}
]
},
{
"include": "#type-arguments"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
}
},
"end": "(?=`)",
"patterns": [
{
"include": "#type-arguments"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#expression"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\$\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings_double"
},
{
"include": "#strings_single"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"strings_double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"strings_single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-primitive"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-parameters"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
},
{
"include": "#type-parameters"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.js",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.js",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}]
},
"strings": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": {"patterns": [{"include": "#var"}]},
"2": {"patterns": [{"include": "#var_name"}]},
"3": {"patterns": [{"include": "#constant"}]}
}
}
],
"repository": {
"var": {
"patterns": [
{
"name" : "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{"include": "#constant_number"},
{"include": "#constant_string"}
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*{[\\s\\S]*}",
"captures": {
"1": {"patterns": [{"include": "#function_name"}]},
"2": {"patterns": [{"include": "#function_arguments"}]}
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-primitive"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-parameters"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
},
{
"include": "#type-parameters"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript ",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.aiscript"
},
"3": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"4": {
"name": "storage.type.numeric.bigint.aiscript"
},
"5": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"6": {
"name": "storage.type.numeric.bigint.js"
},
"7": {
"name": "storage.type.numeric.bigint.js"
},
"8": {
"name": "meta.delimiter.decimal.period.js"
},
"9": {
"name": "storage.type.numeric.bigint.js"
},
"10": {
"name": "meta.delimiter.decimal.period.js"
},
"11": {
"name": "storage.type.numeric.bigint.js"
},
"12": {
"name": "meta.delimiter.decimal.period.js"
},
"13": {
"name": "storage.type.numeric.bigint.js"
},
"14": {
"name": "storage.type.numeric.bigint.js"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}]
},
"strings": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": {"patterns": [{"include": "#var"}]},
"2": {"patterns": [{"include": "#var_name"}]},
"3": {"patterns": [{"include": "#constant"}]}
}
}
],
"repository": {
"var": {
"patterns": [
{
"name" : "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{"include": "#constant_number"},
{"include": "#constant_string"}
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": {"patterns": [{"include": "#function_name"}]},
"2": {"patterns": [{"include": "#function_arguments"}]}
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
},
{
"include": "#number-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript ",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.aiscript"
},
"3": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"4": {
"name": "storage.type.numeric.bigint.aiscript"
},
"5": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"6": {
"name": "storage.type.numeric.bigint.aiscript"
},
"7": {
"name": "storage.type.numeric.bigint.aiscript"
},
"8": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"9": {
"name": "storage.type.numeric.bigint.aiscript"
},
"10": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"11": {
"name": "storage.type.numeric.bigint.aiscript"
},
"12": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"13": {
"name": "storage.type.numeric.bigint.aiscript"
},
"14": {
"name": "storage.type.numeric.bigint.aiscript"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-primitive"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-parameters"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
},
{
"include": "#type-parameters"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript ",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.js"
},
"3": {
"name": "meta.delimiter.decimal.period.js"
},
"4": {
"name": "storage.type.numeric.bigint.js"
},
"5": {
"name": "meta.delimiter.decimal.period.js"
},
"6": {
"name": "storage.type.numeric.bigint.js"
},
"7": {
"name": "storage.type.numeric.bigint.js"
},
"8": {
"name": "meta.delimiter.decimal.period.js"
},
"9": {
"name": "storage.type.numeric.bigint.js"
},
"10": {
"name": "meta.delimiter.decimal.period.js"
},
"11": {
"name": "storage.type.numeric.bigint.js"
},
"12": {
"name": "meta.delimiter.decimal.period.js"
},
"13": {
"name": "storage.type.numeric.bigint.js"
},
"14": {
"name": "storage.type.numeric.bigint.js"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
},
{
"include": "#number-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\""
},
{
"name": "string.quoted.single.aiscript",
"begin": "'",
"end": "'"
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript ",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.aiscript"
},
"3": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"4": {
"name": "storage.type.numeric.bigint.aiscript"
},
"5": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"6": {
"name": "storage.type.numeric.bigint.aiscript"
},
"7": {
"name": "storage.type.numeric.bigint.aiscript"
},
"8": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"9": {
"name": "storage.type.numeric.bigint.aiscript"
},
"10": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"11": {
"name": "storage.type.numeric.bigint.aiscript"
},
"12": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"13": {
"name": "storage.type.numeric.bigint.aiscript"
},
"14": {
"name": "storage.type.numeric.bigint.aiscript"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
},
{
"include": "#number-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-primitive"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-parameters"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
},
{
"include": "#type-parameters"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript ",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.aiscript"
},
"3": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"4": {
"name": "storage.type.numeric.bigint.aiscript"
},
"5": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"6": {
"name": "storage.type.numeric.bigint.aiscript"
},
"7": {
"name": "storage.type.numeric.bigint.aiscript"
},
"8": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"9": {
"name": "storage.type.numeric.bigint.aiscript"
},
"10": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"11": {
"name": "storage.type.numeric.bigint.aiscript"
},
"12": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"13": {
"name": "storage.type.numeric.bigint.aiscript"
},
"14": {
"name": "storage.type.numeric.bigint.aiscript"
}
}
}
]
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.js",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.js"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.js"
},
"2": {
"name": "invalid.illegal.newline.js"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.js",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.js"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.js"
},
"2": {
"name": "invalid.illegal.newline.js"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.js",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.js",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.js"
},
"2": {
"name": "string.template.js punctuation.definition.string.template.begin.js"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.js punctuation.definition.string.template.end.js"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-call": {
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"end": "(?=`)",
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
"end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"patterns": [
{
"include": "#support-function-call-identifiers"
},
{
"name": "entity.name.function.tagged-template.js",
"match": "([_$[:alpha:]][_$[:alnum:]]*)"
}
]
},
{
"include": "#type-arguments"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.js"
}
},
"end": "(?=`)",
"patterns": [
{
"include": "#type-arguments"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.js",
"begin": "\\$\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.js"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.js"
}
},
"patterns": [
{
"include": "#expression"
}
],
"contentName": "meta.embedded.line.js"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.js",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.js"
},
"2": {
"name": "string.template.js punctuation.definition.string.template.begin.js"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.js punctuation.definition.string.template.end.js"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.js",
"begin": "\\$\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.js"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.js"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.js"
},
"regex": {
"patterns": [
{
"name": "string.regexp.js",
"begin": "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
"beginCaptures": {
"1": {
"name": "punctuation.definition.string.begin.js"
}
},
"end": "(/)([dgimsuy]*)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.js"
},
"2": {
"name": "keyword.other.js"
}
},
"patterns": [
{
"include": "#regexp"
}
]
},
{
"name": "string.regexp.js",
"begin": "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.js"
}
},
"end": "(/)([dgimsuy]*)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.js"
},
"2": {
"name": "keyword.other.js"
}
},
"patterns": [
{
"include": "#regexp"
}
]
}
]
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-primitive"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-parameters"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
},
{
"include": "#type-parameters"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#strings_double"
},
{
"include": "#strings_single"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"strings_double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"strings_single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"name": "constant.character.escape.aiscript",
"match": "\\\\."
}
]
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-call": {
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"end": "(?=`)",
"patterns": [
{
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
"end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"patterns": [
{
"include": "#support-function-call-identifiers"
},
{
"name": "entity.name.function.tagged-template.aiscript",
"match": "([_$[:alpha:]][_$[:alnum:]]*)"
}
]
},
{
"include": "#type-arguments"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
}
},
"end": "(?=`)",
"patterns": [
{
"include": "#type-arguments"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\$\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#expression"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"include": "#template-call"
},
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\$\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-primitive"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-parameters"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-conditional"
},
{
"include": "#type-fn-type-parameters"
},
{
"include": "#type-paren-or-function-parameters"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-primitive": {
"name": "support.type.primitive.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-conditional": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
}
},
"end": "(?<=:)",
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#type"
}
]
}
]
},
"type-paren-or-function-parameters": {
"name": "meta.type.paren.cover.aiscript",
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "meta.brace.round.aiscript"
}
},
"patterns": [
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "entity.name.function.aiscript variable.language.this.aiscript"
},
"4": {
"name": "entity.name.function.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.operator.rest.aiscript"
},
"3": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"4": {
"name": "variable.parameter.aiscript"
},
"5": {
"name": "keyword.operator.optional.aiscript"
}
}
},
{
"include": "#type-annotation"
},
{
"name": "punctuation.separator.parameter.aiscript",
"match": ","
},
{
"include": "#type"
}
]
},
"type-fn-type-parameters": {
"patterns": [
{
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
"beginCaptures": {
"1": {
"name": "meta.type.constructor.aiscript storage.modifier.aiscript"
},
"2": {
"name": "meta.type.constructor.aiscript keyword.control.new.aiscript"
}
},
"end": "(?<=>)",
"patterns": [
{
"include": "#comment"
},
{
"include": "#type-parameters"
}
]
},
{
"name": "meta.type.constructor.aiscript",
"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.aiscript"
},
"2": {
"name": "keyword.control.new.aiscript"
}
},
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"name": "meta.type.function.aiscript",
"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
"end": "(?<=\\))",
"patterns": [
{
"include": "#function-parameters"
}
]
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.expression.keyof.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
},
{
"name": "keyword.operator.expression.import.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
}
]
},
"type-infer": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",
"name": "meta.type.infer.aiscript",
"captures": {
"1": {
"name": "keyword.operator.expression.infer.aiscript"
},
"2": {
"name": "entity.name.type.aiscript"
},
"3": {
"name": "keyword.operator.expression.extends.aiscript"
}
}
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "constant.character.aiscript",
"begin": "\"",
"end": "\""
}
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"scopeName": "source.is"
}
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "AiScript",
"patterns": [
{
"include": "#comments"
},
{
"include": "#script_configuration"
},
{
"include": "#keywords"
},
{
"include": "#string"
},
{
"include": "#var_declaration"
},
{
"include": "#function"
},
{
"include": "#boolean-literal"
},
{
"include": "#number-literal"
}
],
"repository": {
"comments": {
"patterns": [
{
"name": "comment.line.aiscript",
"match": "\\/\\/.*"
},
{
"name": "comment.block.aiscript",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.aiscript"
}
}
}
]
},
"script_configuration": {
"patterns": [
{
"name": "markup.aiscript",
"match": "###\\s*{([\\s\\S]*?)}"
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.control.aiscript",
"match": "\\b(if|elif|else|each|for|return)\\b"
}
]
},
"string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template"
}
]
},
"qstring-double": {
"name": "string.quoted.double.aiscript",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\")|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"qstring-single": {
"name": "string.quoted.single.aiscript",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.aiscript"
}
},
"end": "(\\')|((?:[^\\\\\\n])$)",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.aiscript"
},
"2": {
"name": "invalid.illegal.newline.aiscript"
}
},
"patterns": [
{
"include": "#string-character-escape"
}
]
},
"string-character-escape": {
"name": "constant.character.escape.aiscript",
"match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
},
"template": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"contentName": "meta.embedded.line.aiscript"
},
"type-string": {
"patterns": [
{
"include": "#qstring-single"
},
{
"include": "#qstring-double"
},
{
"include": "#template-type"
}
]
},
"template-type": {
"patterns": [
{
"contentName": "string.template.aiscript",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.aiscript"
},
"2": {
"name": "string.template.aiscript punctuation.definition.string.template.begin.aiscript"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "string.template.aiscript punctuation.definition.string.template.end.aiscript"
}
},
"patterns": [
{
"include": "#template-type-substitution-element"
},
{
"include": "#string-character-escape"
}
]
}
]
},
"template-type-substitution-element": {
"name": "meta.template.expression.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.template-expression.begin.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.template-expression.end.aiscript"
}
},
"patterns": [
{
"include": "#type"
}
],
"contentName": "meta.embedded.line.aiscript"
},
"type": {
"patterns": [
{
"include": "#type-string"
},
{
"include": "#numeric-literal"
},
{
"include": "#type-builtin-literals"
},
{
"include": "#type-tuple"
},
{
"include": "#type-object"
},
{
"include": "#type-operators"
},
{
"include": "#type-function-return-type"
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
"captures": {
"1": {
"name": "storage.modifier.aiscript"
}
}
},
{
"include": "#type-name"
}
]
},
"type-builtin-literals": {
"name": "support.type.builtin.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
"type-tuple": {
"name": "meta.type.tuple.aiscript",
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "meta.brace.square.aiscript"
}
},
"patterns": [
{
"name": "keyword.operator.rest.aiscript",
"match": "\\.\\.\\."
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
"captures": {
"1": {
"name": "entity.name.label.aiscript"
},
"2": {
"name": "keyword.operator.optional.aiscript"
},
"3": {
"name": "punctuation.separator.label.aiscript"
}
}
},
{
"include": "#type"
},
{
"include": "#punctuation-comma"
}
]
},
"type-object": {
"name": "meta.object.type.aiscript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.block.aiscript"
}
},
"patterns": [
{
"include": "#comment"
},
{
"include": "#method-declaration"
},
{
"include": "#indexer-declaration"
},
{
"include": "#indexer-mapped-type-declaration"
},
{
"include": "#field-declaration"
},
{
"include": "#type-annotation"
},
{
"begin": "\\.\\.\\.",
"beginCaptures": {
"0": {
"name": "keyword.operator.spread.aiscript"
}
},
"end": "(?=\\}|;|,|$)|(?<=\\})",
"patterns": [
{
"include": "#type"
}
]
},
{
"include": "#punctuation-comma"
},
{
"include": "#punctuation-semicolon"
},
{
"include": "#type"
}
]
},
"type-function-return-type": {
"patterns": [
{
"name": "meta.type.function.return.aiscript",
"begin": "(=>)(?=\\s*\\S)",
"beginCaptures": {
"1": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
},
{
"name": "meta.type.function.return.aiscript",
"begin": "=>",
"beginCaptures": {
"0": {
"name": "storage.type.function.arrow.aiscript"
}
},
"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
"patterns": [
{
"include": "#type-function-return-type-core"
}
]
}
]
},
"type-function-return-type-core": {
"patterns": [
{
"include": "#comment"
},
{
"begin": "(?<==>)(?=\\s*\\{)",
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"include": "#type-predicate-operator"
},
{
"include": "#type"
}
]
},
"type-operators": {
"patterns": [
{
"include": "#typeof-operator"
},
{
"include": "#type-infer"
},
{
"begin": "([&|])(?=\\s*\\{)",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?<=\\})",
"patterns": [
{
"include": "#type-object"
}
]
},
{
"begin": "[&|]",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.aiscript"
}
},
"end": "(?=\\S)"
},
{
"name": "keyword.operator.ternary.aiscript",
"match": "(\\?|\\:)"
}
]
},
"type-predicate-operator": {
"patterns": [
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
},
"4": {
"name": "keyword.operator.expression.is.aiscript"
}
}
},
{
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
"captures": {
"1": {
"name": "keyword.operator.type.asserts.aiscript"
},
"2": {
"name": "variable.parameter.aiscript variable.language.this.aiscript"
},
"3": {
"name": "variable.parameter.aiscript"
}
}
},
{
"name": "keyword.operator.type.asserts.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "keyword.operator.expression.is.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"type-name": {
"patterns": [
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
},
"4": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
"beginCaptures": {
"1": {
"name": "entity.name.type.aiscript"
},
"2": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.begin.aiscript"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "meta.type.parameters.aiscript punctuation.definition.typeparameters.end.aiscript"
}
},
"contentName": "meta.type.parameters.aiscript",
"patterns": [
{
"include": "#type-arguments-body"
}
]
},
{
"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "entity.name.type.module.aiscript"
},
"2": {
"name": "punctuation.accessor.aiscript"
},
"3": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
{
"name": "entity.name.type.aiscript",
"match": "[_$[:alpha:]][_$[:alnum:]]*"
}
]
},
"punctuation-comma": {
"name": "punctuation.separator.comma.aiscript",
"match": ","
},
"punctuation-semicolon": {
"name": "punctuation.terminator.statement.aiscript",
"match": ";"
},
"punctuation-accessor": {
"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
"captures": {
"1": {
"name": "punctuation.accessor.aiscript"
},
"2": {
"name": "punctuation.accessor.optional.aiscript"
}
}
},
"var_declaration": {
"patterns": [
{
"match": "(\\S+)\\s+(\\S+)\\s+=\\s+(\\S+)",
"captures": {
"1": { "patterns": [{ "include": "#var" }] },
"2": { "patterns": [{ "include": "#var_name" }] },
"3": { "patterns": [{ "include": "#constant" }] }
}
}
],
"repository": {
"var": {
"patterns": [
{
"name": "storage.type.aiscript",
"match": "var|let|const"
}
]
},
"var_name": {
"patterns": [
{
"name": "variable.other.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"constant": {
"patterns": [
{ "include": "#constant_number" },
{ "include": "#constant_string" }
],
"repository": {
"constant_number": {
"patterns": [
{
"name": "constant.numeric.aiscript",
"match": "-?[0-9]+"
}
]
},
"constant_string": {
"patterns": [
{
"name": "string.quoted.double.aiscript",
"begin": "\"",
"end": "\""
},
{
"name": "string.quoted.single.aiscript",
"begin": "'",
"end": "'"
},
]
},
"constant_boolean": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "true|false"
}
]
},
"constant_null": {
"patterns": [
{
"name": "constant.language.aiscript",
"match": "null"
}
]
},
"constant_object": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\{",
"end": "\\}"
}
]
},
"constant_array": {
"patterns": [
{
"name": "constant.other.aiscript",
"begin": "\\[",
"end": "\\]"
}
]
}
}
}
}
},
"function": {
"patterns": [
{
"match": "@(\\S+)\\s*\\((.*)\\)\\s*",
"captures": {
"1": { "patterns": [{ "include": "#function_name" }] },
"2": { "patterns": [{ "include": "#function_arguments" }] }
}
}
],
"repository": {
"function_name": {
"patterns": [
{
"name": "entity.name.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
},
"function_arguments": {
"patterns": [
{
"name": "variable.parameter.function.aiscript",
"match": "[0-9a-zA-Z]+"
}
]
}
}
}
},
"boolean-literal": {
"patterns": [
{
"name": "constant.language.boolean.true.aiscript",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
},
{
"name": "constant.language.boolean.false.aiscript ",
"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
}
]
},
"numeric-literal": {
"patterns": [
{
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.aiscript"
},
"1": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"2": {
"name": "storage.type.numeric.bigint.aiscript"
},
"3": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"4": {
"name": "storage.type.numeric.bigint.aiscript"
},
"5": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"6": {
"name": "storage.type.numeric.bigint.aiscript"
},
"7": {
"name": "storage.type.numeric.bigint.aiscript"
},
"8": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"9": {
"name": "storage.type.numeric.bigint.aiscript"
},
"10": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"11": {
"name": "storage.type.numeric.bigint.aiscript"
},
"12": {
"name": "meta.delimiter.decimal.period.aiscript"
},
"13": {
"name": "storage.type.numeric.bigint.aiscript"
},
"14": {
"name": "storage.type.numeric.bigint.aiscript"
}
}
}
]
},
"scopeName": "source.is"
}
{"version":1,"resource":"file:///Users/yuotsubo/project/aiscript-syntax/.gitignore","entries":[{"id":"bas1","timestamp":1680315297350}]}
{"version":1,"resource":"vsls:/force-app/main/default/lwc/apiSettings/apiSettings.html","entries":[{"id":"ABkx.html","source":"Workspace Edit","timestamp":null}]}
[
{
"questionnaireAnswers": [{ "questions": [] }],
"startAt": "2022-01-01T09:00:00.000Z",
"endAt": "2022-01-10T01:00:00.000Z",
"name": "sample event 0",
"eventKey": "00000000"
},
{
"questionnaireAnswers": [{ "questions": [] }],
"startAt": "2022-01-02T09:00:00.000Z",
"endAt": "2022-01-04T01:00:00.000Z",
"name": "sample event 3",
"eventKey": "333333333"
},
{
"questionnaireAnswers": [],
"startAt": "2022-01-02T09:00:00.000Z",
"endAt": "2022-01-31T01:00:00.000Z",
"name": "sample event 2",
"eventKey": "22222222"
},
{
"questionnaireAnswers": [],
"startAt": "2022-03-01T09:00:00.000Z",
"endAt": "2022-03-02T01:00:00.000Z",
"name": "sample event 4",
"eventKey": "44444444"
},
{
"questionnaireAnswers": [{ "questions": [] }],
"startAt": "2022-02-12T09:00:00.000Z",
"endAt": "2022-02-12T10:00:00.000Z",
"name": "sample event 6",
"eventKey": "66666666"
},
{
"questionnaireAnswers": [],
"startAt": "2022-01-22T09:00:00.000Z",
"endAt": "2022-01-23T01:00:00.000Z",
"name": "sample event 5",
"eventKey": "5555555"
}
]
{"version":1,"resource":"vsls:/force-app/main/default/lwc/eventsList/__tests__/data/getLeadInfoUnsorted.json","entries":[{"id":"Drf5.json","source":"Workspace Edit","timestamp":null},{"id":"hfPe.json","source":"Workspace Edit","timestamp":null}]}
[
{
"questionnaireAnswers": [true],
"startAt": "2022-01-01T09:00:00.000Z",
"endAt": "2022-01-10T01:00:00.000Z",
"name": "sample event 0",
"eventKey": "00000000"
},
{
"questionnaireAnswers": [true],
"startAt": "2022-01-02T09:00:00.000Z",
"endAt": "2022-01-04T01:00:00.000Z",
"name": "sample event 3",
"eventKey": "333333333"
},
{
"startAt": "2022-01-02T09:00:00.000Z",
"endAt": "2022-01-31T01:00:00.000Z",
"name": "sample event 2",
"eventKey": "22222222"
},
{
"startAt": "2022-03-01T09:00:00.000Z",
"endAt": "2022-03-02T01:00:00.000Z",
"name": "sample event 4",
"eventKey": "44444444"
},
{
"questionnaireAnswers": [true],
"startAt": "2022-02-12T09:00:00.000Z",
"endAt": "2022-02-13T01:00:00.000Z",
"name": "sample event 6",
"eventKey": "66666666"
},
{
"startAt": "2022-01-22T09:00:00.000Z",
"endAt": "2022-01-23T01:00:00.000Z",
"name": "sample event 5",
"eventKey": "5555555"
}
]
{"version":1,"resource":"file:///Users/tubone24/.gitignore_global","entries":[{"id":"mNhO","source":"textFileCreate.source","timestamp":1651219304048}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/testOtsuboEventHubLead/force-app/main/default/lwc/testOtsuboEventHubLead/testOtsuboEventHubLead.html","entries":[{"id":"GbG1.html","timestamp":1676958138973},{"id":"v1cg.html","timestamp":1676958166053},{"id":"Iknr.html","timestamp":1676961660905},{"id":"YrAt.html","timestamp":1676961719534},{"id":"rZYd.html","timestamp":1676961781324},{"id":"sQXy.html","timestamp":1676961804237},{"id":"2W5t.html","timestamp":1676961819097},{"id":"9iWf.html","timestamp":1676961892178},{"id":"Njc3.html","timestamp":1676961920152},{"id":"kMlL.html","timestamp":1676961960156},{"id":"saPG.html","timestamp":1676962006458},{"id":"sWRZ.html","timestamp":1676962047807},{"id":"Rlg7.html","timestamp":1676962718054},{"id":"WzDm.html","timestamp":1676962950050},{"id":"xq5v.html","timestamp":1676963082013},{"id":"dOFc.html","timestamp":1676963093222},{"id":"yMnr.html","timestamp":1676963156942},{"id":"pCQJ.html","timestamp":1676963344774},{"id":"53yg.html","timestamp":1676964500693},{"id":"bdHA.html","timestamp":1676964728343},{"id":"RKbe.html","timestamp":1676964743638},{"id":"FdbX.html","timestamp":1676964889060},{"id":"Jd8O.html","timestamp":1676964936242},{"id":"FHhu.html","timestamp":1676965028174},{"id":"Tsj5.html","timestamp":1676965075408},{"id":"OJCA.html","source":"undoRedo.source","timestamp":1676965115691},{"id":"5ECK.html","timestamp":1676965230331},{"id":"zIsN.html","timestamp":1676965271963},{"id":"6Qhu.html","timestamp":1676965294588},{"id":"KXYk.html","timestamp":1676965318764},{"id":"0fp3.html","source":"undoRedo.source","timestamp":1676965347269},{"id":"fF1A.html","timestamp":1676965355038},{"id":"vQRv.html","timestamp":1676965380288},{"id":"pdFe.html","timestamp":1676965530038},{"id":"jSUY.html","timestamp":1676965561999},{"id":"6nDF.html","timestamp":1676965581275},{"id":"qI5m.html","timestamp":1676965703736},{"id":"Msw0.html","timestamp":1676965889011},{"id":"hFJz.html","timestamp":1676967222117},{"id":"SiC7.html","timestamp":1676967578890},{"id":"CQuZ.html","timestamp":1676967589412},{"id":"3lDU.html","timestamp":1676967662077},{"id":"bkBH.html","timestamp":1676967870698},{"id":"hepV.html","timestamp":1676969179585},{"id":"ZiZN.html","timestamp":1678079330722},{"id":"A0hz.html","timestamp":1678079386605},{"id":"hu3P.html","timestamp":1678079641032},{"id":"5xfu.html","timestamp":1678425768456},{"id":"BgSw.html","timestamp":1679474430276},{"id":"siqq.html","source":"undoRedo.source","timestamp":1679474501660}]}
{"version":1,"resource":"vsls:/force-app/main/default/classes/ApiKey.cls","entries":[{"id":"soNd.cls","source":"Workspace Edit","timestamp":null}]}
{"version":1,"resource":"vsls:/force-app/main/default/lwc/eventsList/eventsList.js-meta.xml","entries":[{"id":"XP3u.xml","source":"Workspace Edit","timestamp":null}]}
{"version":1,"resource":"file:///Users/yuotsubo/sfdc_connectionapp_key/README.md","entries":[{"id":"U3ja.md","source":"textFileCreate.source","timestamp":1681263972691},{"id":"hKdx.md","timestamp":1681263975748}]}
{"version":1,"resource":"file:///Users/yuotsubo/project/eventhub-sfdc-app/force-app/main/default/profiles/Admin.profile-meta.xml","entries":[{"id":"EZZq.xml","source":"undoRedo.source","timestamp":1684475300037}]}
{"version":1,"resource":"file:///Users/yuotsubo/Downloads/backup_read_and_write.json","entries":[{"id":"gOze.json","source":"textFileCreate.source","timestamp":1669730475305}]}
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject*",
"s3:GetBucket*",
"s3:List*",
"s3:DeleteObject*",
"s3:PutObject",
"s3:Abort*"
],
"Resource": [
"arn:aws:s3:::prod-michibiku-convocation-notice",
"arn:aws:s3:::prod-michibiku-convocation-notice/*"
],
"Effect": "Allow"
},
{
"Action": [
"s3:GetObject*",
"s3:GetBucket*",
"s3:List*",
"s3:DeleteObject*",
"s3:PutObject",
"s3:Abort*"
],
"Resource": [
"arn:aws:s3:::prod-michibiku-minutes",
"arn:aws:s3:::prod-michibiku-minutes/*"
],
"Effect": "Allow"
},
{
"Action": [
"s3:GetObject*",
"s3:GetBucket*",
"s3:List*",
"s3:DeleteObject*",
"s3:PutObject",
"s3:Abort*"
],
"Resource": [
"arn:aws:s3:::prod-michibiku-attachments",
"arn:aws:s3:::prod-michibiku-attachments/*"
],
"Effect": "Allow"
},
{
"Action": [
"s3:GetObject*",
"s3:GetBucket*",
"s3:List*",
"s3:DeleteObject*",
"s3:PutObject",
"s3:Abort*"
],
"Resource": [
"arn:aws:s3:::prod-michibiku-company-icon",
"arn:aws:s3:::prod-michibiku-company-icon/*"
],
"Effect": "Allow"
},
{
"Action": [
"cognito-idp:AdminDeleteUser",
"cognito-idp:AdminCreateUser",
"cognito-idp:AdminSetUserPassword",
"cognito-idp:AdminUpdateUserAttributes",
"cognito-idp:AssociateSoftwareToken",
"cognito-idp:VerifySoftwareToken",
"cognito-idp:AdminSetUserMFAPreference",
"cognito-idp:AdminGetUser",
"cognito-idp:AdminInitiateAuth",
"cognito-idp:AdminRespondToAuthChallenge"
],
"Resource": "arn:aws:cognito-idp:ap-northeast-1:486641582775:userpool/ap-northeast-1_3ScSQlUXw",
"Effect": "Allow"
},
{
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": [
"arn:aws:ses:ap-northeast-1:486641582775:identity/michibiku.co.jp",
"arn:aws:ses:ap-northeast-1:486641582775:configuration-set/configurationSetForEmailNotification"
],
"Effect": "Allow"
},
{
"Action": [
"s3:GetObject*",
"s3:GetBucket*",
"s3:List*",
"s3:DeleteObject*",
"s3:PutObject",
"s3:Abort*"
],
"Resource": [
"arn:aws:s3:::prod-michibiku-transcriptions",
"arn:aws:s3:::prod-michibiku-transcriptions/*"
],
"Effect": "Allow"
},
{
"Action": "states:StartExecution",
"Resource": "arn:aws:states:ap-northeast-1:486641582775:stateMachine:AmiVoiceRecognitionStateMachineProdB78594D7-77mVTs8dhbIY",
"Effect": "Allow"
}
]
}
{"version":1,"resource":"file:///Users/yuotsubo/.gitignore_global","entries":[{"id":"1DA9","timestamp":1659665435897}]}
This file has been truncated, but you can view the full file.
[
{
"metadata": {
"id": "e481f37f-988f-48e8-85c8-f8b6554acd8f",
"publisherId": "adelphes.android-dev-ext",
"publisherDisplayName": "adelphes"
},
"name": "android-dev-ext",
"publisher": "adelphes",
"version": "1.3.2"
},
{
"metadata": {
"id": "7b1a75e2-45ea-4217-b257-c8e3671ec822",
"publisherId": "Jarga.apib",
"publisherDisplayName": "Jarga"
},
"name": "apib",
"publisher": "Jarga",
"version": "0.0.2"
},
{
"metadata": {
"id": "fa57ae0e-d21e-40d8-a0bb-a58b5fd9ead3",
"publisherId": "ms-vscode.atom-keybindings",
"publisherDisplayName": "ms-vscode"
},
"name": "atom-keybindings",
"publisher": "ms-vscode",
"version": "3.3.0"
},
{
"metadata": {
"id": "f1b47f88-a256-4d39-a24a-546cbf1a4ed9",
"publisherId": "mark-tucker.aws-cli-configure",
"publisherDisplayName": "mark-tucker"
},
"name": "aws-cli-configure",
"publisher": "mark-tucker",
"version": "0.3.0"
},
{
"metadata": {
"id": "ac5787df-9b2d-441c-abf0-977d62bc66f0",
"publisherId": "amazonwebservices.aws-toolkit-vscode",
"publisherDisplayName": "amazonwebservices"
},
"name": "aws-toolkit-vscode",
"publisher": "amazonwebservices",
"version": "1.73.0"
},
{
"metadata": {
"id": "5178733e-4b02-4829-95c5-1ce970847c23",
"publisherId": "teabyii.ayu",
"publisherDisplayName": "teabyii"
},
"name": "ayu",
"publisher": "teabyii",
"version": "1.0.5"
},
{
"metadata": {
"id": "f4f0748b-9f86-461e-84f9-73bf2e1f91c2",
"publisherId": "rogalmic.bash-debug",
"publisherDisplayName": "rogalmic"
},
"name": "bash-debug",
"publisher": "rogalmic",
"version": "0.3.9"
},
{
"metadata": {
"id": "697255a9-3f36-44c8-b084-d3b91edfb23a",
"publisherId": "HookyQR.beautify",
"publisherDisplayName": "HookyQR"
},
"name": "beautify",
"publisher": "HookyQR",
"version": "1.5.0"
},
{
"metadata": {
"id": "42c113a2-e02a-4bb7-8df1-d1432646a78c",
"publisherId": "coddx.coddx-alpha",
"publisherDisplayName": "coddx"
},
"name": "coddx-alpha",
"publisher": "coddx",
"version": "0.3.1"
},
{
"metadata": {
"id": "e337c67b-55c2-4fef-8949-eb260e7fb7fd",
"publisherId": "Shan.code-settings-sync",
"publisherDisplayName": "Shan"
},
"name": "code-settings-sync",
"publisher": "Shan",
"version": "3.4.3"
},
{
"metadata": {
"id": "23c4aeee-f844-43cd-b53e-1113e483f1a6",
"publisherId": "GitHub.copilot",
"publisherDisplayName": "GitHub"
},
"name": "copilot",
"publisher": "GitHub",
"version": "1.86.82"
},
{
"metadata": {
"id": "690b692e-e8a9-493f-b802-8089d50ac1b2",
"publisherId": "ms-vscode.cpptools",
"publisherDisplayName": "ms-vscode"
},
"name": "cpptools",
"publisher": "ms-vscode",
"version": "1.15.4"
},
{
"metadata": {
"id": "f57f68ea-9ee8-42b5-9a97-041d3e4278c4",
"publisherId": "Dart-Code.dart-code",
"publisherDisplayName": "Dart-Code"
},
"name": "dart-code",
"publisher": "Dart-Code",
"version": "3.64.0"
},
{
"metadata": {
"id": "88e082b7-d289-4c59-bde4-4c61e0280428",
"publisherId": "ms-mssql.data-workspace-vscode",
"publisherDisplayName": "ms-mssql"
},
"name": "data-workspace-vscode",
"publisher": "ms-mssql",
"version": "0.4.0"
},
{
"metadata": {
"id": "d1e030a6-f502-48bb-92d6-7eb9f74d5bcf",
"publisherId": "nopjmp.fairyfloss",
"publisherDisplayName": "nopjmp"
},
"name": "fairyfloss",
"publisher": "nopjmp",
"version": "0.2.2"
},
{
"metadata": {
"id": "f6c3ec04-6057-4d9c-b997-69cba07a6158",
"publisherId": "Dart-Code.flutter",
"publisherDisplayName": "Dart-Code"
},
"name": "flutter",
"publisher": "Dart-Code",
"version": "3.64.0"
},
{
"metadata": {
"id": "5960f38e-0bbe-4644-8f9c-9c8824e82511",
"publisherId": "donjayamanne.githistory",
"publisherDisplayName": "donjayamanne"
},
"name": "githistory",
"publisher": "donjayamanne",
"version": "0.6.20"
},
{
"metadata": {
"id": "4de763bd-505d-4978-9575-2b7696ecf94e",
"publisherId": "eamodio.gitlens",
"publisherDisplayName": "eamodio"
},
"name": "gitlens",
"publisher": "eamodio",
"version": "13.6.0"
},
{
"metadata": {
"id": "6fdfb72c-12e3-4a3d-99c7-39840e4f83c2",
"publisherId": "gitpod.gitpod-desktop",
"publisherDisplayName": "gitpod"
},
"name": "gitpod-desktop",
"publisher": "gitpod",
"version": "0.0.107"
},
{
"metadata": {
"id": "13fbce29-2b71-4689-8d18-df247ae6c5f8",
"publisherId": "trixnz.go-to-method",
"publisherDisplayName": "trixnz"
},
"name": "go-to-method",
"publisher": "trixnz",
"version": "0.2.0"
},
{
"metadata": {
"id": "38ad8277-d23f-4cfc-becf-c77e41c3f2ee",
"publisherId": "spywhere.guides",
"publisherDisplayName": "spywhere"
},
"name": "guides",
"publisher": "spywhere",
"version": "0.9.3"
},
{
"metadata": {
"id": "52a9b6d2-38d8-44b5-8d11-1ced151c24e1",
"publisherId": "josephtbradley.hive-sql",
"publisherDisplayName": "josephtbradley"
},
"name": "hive-sql",
"publisher": "josephtbradley",
"version": "0.0.4"
},
{
"metadata": {
"id": "18b0ddc7-5d9c-4604-a7fa-10e66a2cb10d",
"publisherId": "george-alisson.html-preview-vscode",
"publisherDisplayName": "george-alisson"
},
"name": "html-preview-vscode",
"publisher": "george-alisson",
"version": "0.2.5"
},
{
"metadata": {
"id": "4ad0ce32-ff3f-49f0-83b5-93e5dc00cfff",
"publisherId": "ms-python.isort",
"publisherDisplayName": "ms-python"
},
"name": "isort",
"publisher": "ms-python",
"version": "2022.8.0"
},
{
"metadata": {
"id": "236ff452-49f5-47a4-8928-ab18f5b9c7bf",
"publisherId": "eriklynd.json-tools",
"publisherDisplayName": "eriklynd"
},
"name": "json-tools",
"publisher": "eriklynd",
"version": "1.0.2"
},
{
"metadata": {
"id": "6c2f1801-1e7f-45b2-9b5c-7782f1e076e8",
"publisherId": "ms-toolsai.jupyter",
"publisherDisplayName": "ms-toolsai"
},
"name": "jupyter",
"publisher": "ms-toolsai",
"version": "2023.4.1011241018"
},
{
"metadata": {
"id": "9f6dc8db-620c-4844-b8c5-e74914f1be27",
"publisherId": "ms-toolsai.jupyter-keymap",
"publisherDisplayName": "ms-toolsai"
},
"name": "jupyter-keymap",
"publisher": "ms-toolsai",
"version": "1.1.0"
},
{
"metadata": {
"id": "b15c72f8-d5fe-421a-a4f7-27ed9f6addbf",
"publisherId": "ms-toolsai.jupyter-renderers",
"publisherDisplayName": "ms-toolsai"
},
"name": "jupyter-renderers",
"publisher": "ms-toolsai",
"version": "1.0.15"
},
{
"metadata": {
"id": "b63c44fd-0457-4696-99e9-dbfdf70d77de",
"publisherId": "ritwickdey.LiveServer",
"publisherDisplayName": "ritwickdey"
},
"name": "LiveServer",
"publisher": "ritwickdey",
"version": "5.7.9"
},
{
"metadata": {
"id": "e8b488af-fccf-4adf-b60c-fc7455bea107",
"publisherId": "emilast.LogFileHighlighter",
"publisherDisplayName": "emilast"
},
"name": "LogFileHighlighter",
"publisher": "emilast",
"version": "2.16.0"
},
{
"metadata": {
"id": "98790d67-10fa-497c-9113-f6c7489207b2",
"publisherId": "yzhang.markdown-all-in-one",
"publisherDisplayName": "yzhang"
},
"name": "markdown-all-in-one",
"publisher": "yzhang",
"version": "3.5.1"
},
{
"metadata": {
"id": "f015bc3c-a098-4245-8765-615e002e09ab",
"publisherId": "yzane.markdown-pdf",
"publisherDisplayName": "yzane"
},
"name": "markdown-pdf",
"publisher": "yzane",
"version": "1.4.4"
},
{
"metadata": {
"id": "3b1db1fc-c7f7-4bd6-9fa4-b499dfa99a8a",
"publisherId": "shd101wyy.markdown-preview-enhanced",
"publisherDisplayName": "shd101wyy"
},
"name": "markdown-preview-enhanced",
"publisher": "shd101wyy",
"version": "0.6.8"
},
{
"metadata": {
"id": "4bf45e86-a448-4531-8c01-ef33f4536306",
"publisherId": "ms-mssql.mssql",
"publisherDisplayName": "ms-mssql"
},
"name": "mssql",
"publisher": "ms-mssql",
"version": "1.18.0"
},
{
"metadata": {
"id": "1f3d8d31-8ff8-4429-8565-7313f9c67971",
"publisherId": "kosz78.nim",
"publisherDisplayName": "kosz78"
},
"name": "nim",
"publisher": "kosz78",
"version": "0.6.6"
},
{
"metadata": {
"id": "8567d26a-2dcc-4c34-846c-d56fb6bdf985",
"publisherId": "danijel-malik.nimble",
"publisherDisplayName": "danijel-malik"
},
"name": "nimble",
"publisher": "danijel-malik",
"version": "0.3.1"
},
{
"metadata": {
"id": "113b22c8-8125-42ec-8c6b-80c3f5d5fa5f",
"publisherId": "IBM.output-colorizer",
"publisherDisplayName": "IBM"
},
"name": "output-colorizer",
"publisher": "IBM",
"version": "0.1.2"
},
{
"metadata": {
"id": "79afa437-682e-4fa2-a4fd-87844832a1dc",
"publisherId": "ryu1kn.partial-diff",
"publisherDisplayName": "ryu1kn"
},
"name": "partial-diff",
"publisher": "ryu1kn",
"version": "1.4.3"
},
{
"metadata": {
"id": "0d1241e3-fa60-4f24-8f2a-6d7085677c48",
"publisherId": "ionutvmi.path-autocomplete",
"publisherDisplayName": "ionutvmi"
},
"name": "path-autocomplete",
"publisher": "ionutvmi",
"version": "1.23.1"
},
{
"metadata": {
"id": "d95cb424-7a5a-4e08-9698-107d6fd590cf",
"publisherId": "jebbs.plantuml",
"publisherDisplayName": "jebbs"
},
"name": "plantuml",
"publisher": "jebbs",
"version": "2.17.5"
},
{
"metadata": {
"id": "ea52326c-68a8-4587-a2f0-abb0a91e455a",
"publisherId": "xyz.plsql-language",
"publisherDisplayName": "xyz"
},
"name": "plsql-language",
"publisher": "xyz",
"version": "1.8.2"
},
{
"metadata": {
"id": "96fa4707-6983-4489-b7c5-d5ffdfdcce90",
"publisherId": "esbenp.prettier-vscode",
"publisherDisplayName": "esbenp"
},
"name": "prettier-vscode",
"publisher": "esbenp",
"version": "9.12.0"
},
{
"metadata": {
"id": "67e66172-30c7-4478-8f5d-6eac4ae755dc",
"publisherId": "mohsen1.prettify-json",
"publisherDisplayName": "mohsen1"
},
"name": "prettify-json",
"publisher": "mohsen1",
"version": "0.0.3"
},
{
"metadata": {
"id": "f1f59ae4-9318-4f3c-a9b5-81b2eaa5f8a5",
"publisherId": "ms-python.python",
"publisherDisplayName": "ms-python"
},
"name": "python",
"publisher": "ms-python",
"version": "2023.8.0"
},
{
"metadata": {
"id": "3792588c-3d35-442d-91ea-fe6a755e8155",
"publisherId": "mechatroner.rainbow-csv",
"publisherDisplayName": "mechatroner"
},
"name": "rainbow-csv",
"publisher": "mechatroner",
"version": "3.7.0"
},
{
"metadata": {
"id": "7ed7bccd-f358-4c6f-88c0-1296185abaa1",
"publisherId": "chrmarti.regex",
"publisherDisplayName": "chrmarti"
},
"name": "regex",
"publisher": "chrmarti",
"version": "0.4.0"
},
{
"metadata": {
"id": "93ce222b-5f6f-49b7-9ab1-a0463c6238df",
"publisherId": "ms-vscode-remote.remote-containers",
"publisherD
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment