@thigasdevelopment/luam 0.10.2 → 0.10.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/luam.mjs +148 -101
  2. package/package.json +1 -1
package/luam.mjs CHANGED
@@ -6050,7 +6050,7 @@ import { tmpdir } from "node:os";
6050
6050
  import { join as join2 } from "node:path";
6051
6051
 
6052
6052
  // src/cli/version.ts
6053
- var VERSION = true ? "0.10.2" : "0.0.0-dev";
6053
+ var VERSION = true ? "0.10.4" : "0.0.0-dev";
6054
6054
  var PROGRAM_NAME = "luam";
6055
6055
  var PROGRAM_DESCRIPTION = "luam \u2014 the Luam compiler for Multi Theft Auto resources.";
6056
6056
 
@@ -9186,8 +9186,8 @@ function oopMethod(name, environment, procedural, type) {
9186
9186
  function oopProperty(name, environment, procedural, type) {
9187
9187
  return { name, kind: "property", environment, procedural, type };
9188
9188
  }
9189
- function oopConstructor(environment, type) {
9190
- return { environment, type };
9189
+ function oopConstructor(environment, type, procedural = null) {
9190
+ return { environment, type, procedural };
9191
9191
  }
9192
9192
  function oopClass(name, parent, members, staticMethods = [], constructor = null) {
9193
9193
  return { name, parent, members, staticMethods, constructor };
@@ -9227,7 +9227,7 @@ var MTA_OOP_1 = [
9227
9227
  oopMethod("getAllByIP", "server", "getAccountsByIP", fn([STRING], TABLE, 1)),
9228
9228
  oopMethod("getAllBySerial", "server", "getAccountsBySerial", fn([STRING], TABLE, 1))
9229
9229
  ],
9230
- oopConstructor("server", fn([STRING, STRING, BOOLEAN], named("Account"), 1))
9230
+ oopConstructor("server", fn([STRING, STRING, BOOLEAN], named("Account"), 1), "getAccount")
9231
9231
  ),
9232
9232
  oopClass(
9233
9233
  "ACL",
@@ -9248,7 +9248,7 @@ var MTA_OOP_1 = [
9248
9248
  oopMethod("reload", "server", "aclReload", fn([], BOOLEAN, 0)),
9249
9249
  oopMethod("save", "server", "aclSave", fn([], BOOLEAN, 0))
9250
9250
  ],
9251
- oopConstructor("server", fn([STRING], named("ACL"), 1))
9251
+ oopConstructor("server", fn([STRING], named("ACL"), 1), "aclCreate")
9252
9252
  ),
9253
9253
  oopClass(
9254
9254
  "ACLGroup",
@@ -9269,7 +9269,7 @@ var MTA_OOP_1 = [
9269
9269
  oopMethod("get", "server", "aclGetGroup", fn([STRING], named("ACLGroup"), 1)),
9270
9270
  oopMethod("list", "server", "aclGroupList", fn([], TABLE, 0))
9271
9271
  ],
9272
- oopConstructor("server", fn([STRING], named("ACLGroup"), 1))
9272
+ oopConstructor("server", fn([STRING], named("ACLGroup"), 1), "aclCreateGroup")
9273
9273
  ),
9274
9274
  oopClass(
9275
9275
  "Ban",
@@ -9299,7 +9299,7 @@ var MTA_OOP_1 = [
9299
9299
  oopMethod("getList", "server", "getBans", fn([], TABLE, 0)),
9300
9300
  oopMethod("reload", "server", "reloadBans", fn([], BOOLEAN, 0))
9301
9301
  ],
9302
- oopConstructor("server", fn([STRING, STRING, STRING, named("Player"), STRING, NUMBER], named("Ban"), 0))
9302
+ oopConstructor("server", fn([STRING, STRING, STRING, named("Player"), STRING, NUMBER], named("Ban"), 0), "addBan")
9303
9303
  ),
9304
9304
  oopClass("Blip", "Element", [
9305
9305
  oopMethod("getColor", "shared", "getBlipColor", fn([], tupleOf([NUMBER, NUMBER, NUMBER, NUMBER]), 0)),
@@ -9350,7 +9350,7 @@ var MTA_OOP_1 = [
9350
9350
  oopMethod("isDomainBlocked", "client", "isBrowserDomainBlocked", fn([STRING, BOOLEAN], BOOLEAN, 1)),
9351
9351
  oopMethod("requestDomains", "client", "requestBrowserDomains", fn([TABLE, BOOLEAN, ANY], BOOLEAN, 1))
9352
9352
  ],
9353
- oopConstructor("client", fn([NUMBER, NUMBER, BOOLEAN, BOOLEAN], named("Browser"), 3))
9353
+ oopConstructor("client", fn([NUMBER, NUMBER, BOOLEAN, BOOLEAN], named("Browser"), 3), "createBrowser")
9354
9354
  ),
9355
9355
  oopClass(
9356
9356
  "Camera",
@@ -9425,14 +9425,14 @@ var MTA_OOP_1 = [
9425
9425
  ),
9426
9426
  oopClass(
9427
9427
  "Connection",
9428
- "Element",
9428
+ null,
9429
9429
  [
9430
9430
  oopMethod("exec", "server", "dbExec", fn([STRING, ANY], BOOLEAN, 1, true)),
9431
9431
  oopMethod("prepareString", "server", "dbPrepareString", fn([STRING, ANY], STRING, 1, true)),
9432
9432
  oopMethod("query", "server", "dbQuery", fn([ANY, ANY, ANY, ANY, ANY], ANY, 2, true))
9433
9433
  ],
9434
9434
  [],
9435
- oopConstructor("server", fn([STRING, STRING, STRING, STRING, STRING], named("Connection"), 2))
9435
+ oopConstructor("server", fn([STRING, STRING, STRING, STRING, STRING], named("Connection"), 2), "dbConnect")
9436
9436
  ),
9437
9437
  oopClass(
9438
9438
  "DxFont",
@@ -9443,14 +9443,14 @@ var MTA_OOP_1 = [
9443
9443
  oopMethod("getTextWidth", "client", "dxGetTextWidth", fn([STRING, NUMBER, ANY, BOOLEAN], NUMBER, 1))
9444
9444
  ],
9445
9445
  [],
9446
- oopConstructor("client", fn([STRING, NUMBER, BOOLEAN, STRING], named("DxFont"), 1))
9446
+ oopConstructor("client", fn([STRING, NUMBER, BOOLEAN, STRING], named("DxFont"), 1), "dxCreateFont")
9447
9447
  ),
9448
9448
  oopClass(
9449
9449
  "DxRenderTarget",
9450
9450
  null,
9451
9451
  [],
9452
9452
  [],
9453
- oopConstructor("client", fn([NUMBER, NUMBER, BOOLEAN], named("DxRenderTarget"), 2))
9453
+ oopConstructor("client", fn([NUMBER, NUMBER, BOOLEAN], named("DxRenderTarget"), 2), "dxCreateRenderTarget")
9454
9454
  ),
9455
9455
  oopClass(
9456
9456
  "DxScreenSource",
@@ -9459,14 +9459,14 @@ var MTA_OOP_1 = [
9459
9459
  oopMethod("update", "client", "dxUpdateScreenSource", fn([BOOLEAN], BOOLEAN, 0))
9460
9460
  ],
9461
9461
  [],
9462
- oopConstructor("client", fn([NUMBER, NUMBER], named("DxScreenSource"), 2))
9462
+ oopConstructor("client", fn([NUMBER, NUMBER], named("DxScreenSource"), 2), "dxCreateScreenSource")
9463
9463
  ),
9464
9464
  oopClass(
9465
9465
  "DxShader",
9466
9466
  null,
9467
9467
  [],
9468
9468
  [],
9469
- oopConstructor("client", fn([STRING, NUMBER, NUMBER, BOOLEAN, STRING], named("DxShader"), 1))
9469
+ oopConstructor("client", fn([STRING, NUMBER, NUMBER, BOOLEAN, STRING], named("DxShader"), 1), "dxCreateShader")
9470
9470
  ),
9471
9471
  oopClass(
9472
9472
  "DxTexture",
@@ -9477,7 +9477,7 @@ var MTA_OOP_1 = [
9477
9477
  oopMethod("setPixels", "client", "dxSetTexturePixels", fn([ANY, ANY, ANY, NUMBER, NUMBER, NUMBER, ANY], BOOLEAN, 2))
9478
9478
  ],
9479
9479
  [],
9480
- oopConstructor("client", fn([STRING, STRING, BOOLEAN, STRING], named("DxTexture"), 1))
9480
+ oopConstructor("client", fn([STRING, STRING, BOOLEAN, STRING], named("DxTexture"), 1), "dxCreateTexture")
9481
9481
  )
9482
9482
  ];
9483
9483
 
@@ -9553,7 +9553,7 @@ var MTA_OOP_2 = [
9553
9553
  oopMethod("addWaterSplash", "client", "fxAddWaterSplash", fn([NUMBER, NUMBER, NUMBER], BOOLEAN, 3)),
9554
9554
  oopMethod("addWood", "client", "fxAddWood", fn([NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER], BOOLEAN, 6))
9555
9555
  ],
9556
- oopConstructor("client", fn([STRING, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, BOOLEAN], named("Effect"), 4))
9556
+ oopConstructor("client", fn([STRING, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, BOOLEAN], named("Effect"), 4), "createEffect")
9557
9557
  ),
9558
9558
  oopClass(
9559
9559
  "Element",
@@ -9669,7 +9669,7 @@ var MTA_OOP_2 = [
9669
9669
  oopMethod("getByIndex", "server", "getElementByIndex", fn([STRING, NUMBER], named("Element"), 2)),
9670
9670
  oopMethod("getWithinRange", "shared", "getElementsWithinRange", fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, NUMBER, NUMBER], TABLE, 4))
9671
9671
  ],
9672
- oopConstructor("shared", fn([STRING, STRING], named("Element"), 1))
9672
+ oopConstructor("shared", fn([STRING, STRING], named("Element"), 1), "createElement")
9673
9673
  ),
9674
9674
  oopClass(
9675
9675
  "Engine",
@@ -9696,7 +9696,7 @@ var MTA_OOP_2 = [
9696
9696
  oopMethod("replace", "client", "engineReplaceCOL", fn([NUMBER], BOOLEAN, 1))
9697
9697
  ],
9698
9698
  [],
9699
- oopConstructor("client", fn([STRING], named("EngineCOL"), 1))
9699
+ oopConstructor("client", fn([STRING], named("EngineCOL"), 1), "engineLoadCOL")
9700
9700
  ),
9701
9701
  oopClass(
9702
9702
  "EngineDFF",
@@ -9705,7 +9705,7 @@ var MTA_OOP_2 = [
9705
9705
  oopMethod("replace", "client", "engineReplaceModel", fn([NUMBER, BOOLEAN], BOOLEAN, 1))
9706
9706
  ],
9707
9707
  [],
9708
- oopConstructor("client", fn([STRING], named("EngineDFF"), 1))
9708
+ oopConstructor("client", fn([STRING], named("EngineDFF"), 1), "engineLoadDFF")
9709
9709
  ),
9710
9710
  oopClass(
9711
9711
  "EngineTXD",
@@ -9714,7 +9714,7 @@ var MTA_OOP_2 = [
9714
9714
  oopMethod("import", "client", "engineImportTXD", fn([NUMBER], BOOLEAN, 1))
9715
9715
  ],
9716
9716
  [],
9717
- oopConstructor("client", fn([STRING, BOOLEAN], named("EngineTXD"), 1))
9717
+ oopConstructor("client", fn([STRING, BOOLEAN], named("EngineTXD"), 1), "engineLoadTXD")
9718
9718
  ),
9719
9719
  oopClass(
9720
9720
  "File",
@@ -9741,8 +9741,12 @@ var MTA_OOP_2 = [
9741
9741
  oopMethod("new", "shared", "fileCreate", fn([STRING], named("File"), 1)),
9742
9742
  oopMethod("rename", "shared", "fileRename", fn([STRING, STRING], BOOLEAN, 2))
9743
9743
  ],
9744
- oopConstructor("shared", fn([STRING], named("File"), 1))
9745
- ),
9744
+ oopConstructor("shared", fn([STRING], named("File"), 1), "fileOpen")
9745
+ )
9746
+ ];
9747
+
9748
+ // ../mta-types/src/generated/oop/mta-oop-3.ts
9749
+ var MTA_OOP_3 = [
9746
9750
  oopClass(
9747
9751
  "GuiBrowser",
9748
9752
  "GuiElement",
@@ -9751,18 +9755,18 @@ var MTA_OOP_2 = [
9751
9755
  oopMethod("getBrowser", "client", "guiGetBrowser", fn([], named("Browser"), 0))
9752
9756
  ],
9753
9757
  [],
9754
- oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, BOOLEAN, BOOLEAN, BOOLEAN, named("Element")], named("GuiBrowser"), 7))
9755
- )
9756
- ];
9757
-
9758
- // ../mta-types/src/generated/oop/mta-oop-3.ts
9759
- var MTA_OOP_3 = [
9758
+ oopConstructor(
9759
+ "client",
9760
+ fn([NUMBER, NUMBER, NUMBER, NUMBER, BOOLEAN, BOOLEAN, BOOLEAN, named("Element")], named("GuiBrowser"), 7),
9761
+ "guiCreateBrowser"
9762
+ )
9763
+ ),
9760
9764
  oopClass(
9761
9765
  "GuiButton",
9762
9766
  null,
9763
9767
  [],
9764
9768
  [],
9765
- oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, named("Element")], named("GuiButton"), 6))
9769
+ oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, named("Element")], named("GuiButton"), 6), "guiCreateButton")
9766
9770
  ),
9767
9771
  oopClass(
9768
9772
  "GuiCheckbox",
@@ -9773,7 +9777,11 @@ var MTA_OOP_3 = [
9773
9777
  oopMethod("setSelected", "client", "guiCheckBoxSetSelected", fn([BOOLEAN], BOOLEAN, 1))
9774
9778
  ],
9775
9779
  [],
9776
- oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, BOOLEAN, named("Element")], named("GuiCheckbox"), 7))
9780
+ oopConstructor(
9781
+ "client",
9782
+ fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, BOOLEAN, named("Element")], named("GuiCheckbox"), 7),
9783
+ "guiCreateCheckBox"
9784
+ )
9777
9785
  ),
9778
9786
  oopClass(
9779
9787
  "GuiCombobox",
@@ -9792,7 +9800,7 @@ var MTA_OOP_3 = [
9792
9800
  oopMethod("setSelected", "client", "guiComboBoxSetSelected", fn([NUMBER], BOOLEAN, 1))
9793
9801
  ],
9794
9802
  [],
9795
- oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, named("Element")], named("GuiCombobox"), 6))
9803
+ oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, named("Element")], named("GuiCombobox"), 6), "guiCreateComboBox")
9796
9804
  ),
9797
9805
  oopClass(
9798
9806
  "GuiEdit",
@@ -9808,7 +9816,7 @@ var MTA_OOP_3 = [
9808
9816
  oopMethod("setReadOnly", "client", "guiEditSetReadOnly", fn([BOOLEAN], BOOLEAN, 1))
9809
9817
  ],
9810
9818
  [],
9811
- oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, named("Element")], named("GuiEdit"), 6))
9819
+ oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, named("Element")], named("GuiEdit"), 6), "guiCreateEdit")
9812
9820
  ),
9813
9821
  oopClass(
9814
9822
  "GuiElement",
@@ -9868,7 +9876,7 @@ var MTA_OOP_3 = [
9868
9876
  null,
9869
9877
  [],
9870
9878
  [],
9871
- oopConstructor("client", fn([STRING, NUMBER], named("GuiFont"), 1))
9879
+ oopConstructor("client", fn([STRING, NUMBER], named("GuiFont"), 1), "guiCreateFont")
9872
9880
  ),
9873
9881
  oopClass(
9874
9882
  "GuiGridList",
@@ -9916,7 +9924,7 @@ var MTA_OOP_3 = [
9916
9924
  oopProperty("verticalScrollPosition", "client", "guiGridListGetVerticalScrollPosition", NUMBER)
9917
9925
  ],
9918
9926
  [],
9919
- oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, BOOLEAN, named("Element")], named("GuiGridList"), 5))
9927
+ oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, BOOLEAN, named("Element")], named("GuiGridList"), 5), "guiCreateGridList")
9920
9928
  ),
9921
9929
  oopClass(
9922
9930
  "GuiLabel",
@@ -9932,7 +9940,7 @@ var MTA_OOP_3 = [
9932
9940
  oopProperty("textExtent", "client", "guiLabelGetTextExtent", NUMBER)
9933
9941
  ],
9934
9942
  [],
9935
- oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, named("Element")], named("GuiLabel"), 6))
9943
+ oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, named("Element")], named("GuiLabel"), 6), "guiCreateLabel")
9936
9944
  ),
9937
9945
  oopClass(
9938
9946
  "GuiMemo",
@@ -9949,7 +9957,7 @@ var MTA_OOP_3 = [
9949
9957
  oopProperty("verticalScrollPosition", "client", "guiMemoGetVerticalScrollPosition", NUMBER)
9950
9958
  ],
9951
9959
  [],
9952
- oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, named("Element")], named("GuiMemo"), 6))
9960
+ oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, named("Element")], named("GuiMemo"), 6), "guiCreateMemo")
9953
9961
  ),
9954
9962
  oopClass(
9955
9963
  "GuiRadioButton",
@@ -9960,7 +9968,11 @@ var MTA_OOP_3 = [
9960
9968
  oopMethod("setSelected", "client", "guiRadioButtonSetSelected", fn([BOOLEAN], BOOLEAN, 1))
9961
9969
  ],
9962
9970
  [],
9963
- oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, named("Element")], named("GuiRadioButton"), 6))
9971
+ oopConstructor(
9972
+ "client",
9973
+ fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, named("Element")], named("GuiRadioButton"), 6),
9974
+ "guiCreateRadioButton"
9975
+ )
9964
9976
  ),
9965
9977
  oopClass(
9966
9978
  "GuiStaticImage",
@@ -9969,7 +9981,11 @@ var MTA_OOP_3 = [
9969
9981
  oopMethod("loadImage", "client", "guiStaticImageLoadImage", fn([STRING], BOOLEAN, 1))
9970
9982
  ],
9971
9983
  [],
9972
- oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, named("Element")], named("GuiStaticImage"), 6))
9984
+ oopConstructor(
9985
+ "client",
9986
+ fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, named("Element")], named("GuiStaticImage"), 6),
9987
+ "guiCreateStaticImage"
9988
+ )
9973
9989
  ),
9974
9990
  oopClass(
9975
9991
  "GuiTab",
@@ -9978,7 +9994,7 @@ var MTA_OOP_3 = [
9978
9994
  oopMethod("delete", "client", "guiDeleteTab", fn([named("Element")], BOOLEAN, 1))
9979
9995
  ],
9980
9996
  [],
9981
- oopConstructor("client", fn([STRING, named("Element")], named("GuiTab"), 2))
9997
+ oopConstructor("client", fn([STRING, named("Element")], named("GuiTab"), 2), "guiCreateTab")
9982
9998
  ),
9983
9999
  oopClass(
9984
10000
  "GuiTabPanel",
@@ -9988,7 +10004,7 @@ var MTA_OOP_3 = [
9988
10004
  oopProperty("selectedTab", "client", "guiGetSelectedTab", named("Element"))
9989
10005
  ],
9990
10006
  [],
9991
- oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, BOOLEAN, named("Element")], named("GuiTabPanel"), 5))
10007
+ oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, BOOLEAN, named("Element")], named("GuiTabPanel"), 5), "guiCreateTabPanel")
9992
10008
  ),
9993
10009
  oopClass(
9994
10010
  "GuiWindow",
@@ -9998,8 +10014,12 @@ var MTA_OOP_3 = [
9998
10014
  oopMethod("setSizable", "client", "guiWindowSetSizable", fn([BOOLEAN], BOOLEAN, 1))
9999
10015
  ],
10000
10016
  [],
10001
- oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN], named("GuiWindow"), 6))
10002
- ),
10017
+ oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN], named("GuiWindow"), 6), "guiCreateWindow")
10018
+ )
10019
+ ];
10020
+
10021
+ // ../mta-types/src/generated/oop/mta-oop-4.ts
10022
+ var MTA_OOP_4 = [
10003
10023
  oopClass(
10004
10024
  "Light",
10005
10025
  null,
@@ -10018,30 +10038,10 @@ var MTA_OOP_3 = [
10018
10038
  [],
10019
10039
  oopConstructor(
10020
10040
  "client",
10021
- fn(
10022
- [
10023
- NUMBER,
10024
- NUMBER,
10025
- NUMBER,
10026
- NUMBER,
10027
- NUMBER,
10028
- NUMBER,
10029
- NUMBER,
10030
- NUMBER,
10031
- NUMBER,
10032
- NUMBER,
10033
- NUMBER,
10034
- BOOLEAN
10035
- ],
10036
- named("Light"),
10037
- 4
10038
- )
10041
+ fn([NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, BOOLEAN], named("Light"), 4),
10042
+ "createLight"
10039
10043
  )
10040
- )
10041
- ];
10042
-
10043
- // ../mta-types/src/generated/oop/mta-oop-4.ts
10044
- var MTA_OOP_4 = [
10044
+ ),
10045
10045
  oopClass(
10046
10046
  "Marker",
10047
10047
  "Element",
@@ -10064,7 +10064,7 @@ var MTA_OOP_4 = [
10064
10064
  oopProperty("target", "shared", "getMarkerTarget", TABLE)
10065
10065
  ],
10066
10066
  [],
10067
- oopConstructor("shared", fn([NUMBER, NUMBER, NUMBER, STRING, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, ANY], named("Marker"), 3))
10067
+ oopConstructor("shared", fn([NUMBER, NUMBER, NUMBER, STRING, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, ANY], named("Marker"), 3), "createMarker")
10068
10068
  ),
10069
10069
  oopClass("Material", "Element", [
10070
10070
  oopMethod("getSize", "client", "dxGetMaterialSize", fn([], tupleOf([NUMBER, NUMBER, ANY]), 0))
@@ -10114,7 +10114,7 @@ var MTA_OOP_4 = [
10114
10114
  oopMethod("toggleRespawn", "client", "toggleObjectRespawn", fn([BOOLEAN], BOOLEAN, 1))
10115
10115
  ],
10116
10116
  [],
10117
- oopConstructor("shared", fn([NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, BOOLEAN], named("Object"), 4))
10117
+ oopConstructor("shared", fn([NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, BOOLEAN], named("Object"), 4), "createObject")
10118
10118
  ),
10119
10119
  oopClass("Ped", "Element", [
10120
10120
  oopMethod("addClothes", "shared", "addPedClothes", fn([STRING, STRING, NUMBER], BOOLEAN, 3)),
@@ -10217,7 +10217,7 @@ var MTA_OOP_4 = [
10217
10217
  "Element",
10218
10218
  [],
10219
10219
  [],
10220
- oopConstructor("shared", fn([NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER], named("Pickup"), 5))
10220
+ oopConstructor("shared", fn([NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER], named("Pickup"), 5), "createPickup")
10221
10221
  )
10222
10222
  ];
10223
10223
 
@@ -10317,7 +10317,7 @@ var MTA_OOP_5 = [
10317
10317
  oopMethod("setMoney", "client", "setPlayerMoney", fn([NUMBER, BOOLEAN], BOOLEAN, 1)),
10318
10318
  oopMethod("takeMoney", "client", "takePlayerMoney", fn([NUMBER], BOOLEAN, 1))
10319
10319
  ],
10320
- oopConstructor("shared", fn([STRING], named("Player"), 1))
10320
+ oopConstructor("shared", fn([STRING], named("Player"), 1), "getPlayerFromName")
10321
10321
  ),
10322
10322
  oopClass(
10323
10323
  "Projectile",
@@ -10356,7 +10356,8 @@ var MTA_OOP_5 = [
10356
10356
  ],
10357
10357
  named("Projectile"),
10358
10358
  1
10359
- )
10359
+ ),
10360
+ "createProjectile"
10360
10361
  )
10361
10362
  ),
10362
10363
  oopClass(
@@ -10373,7 +10374,11 @@ var MTA_OOP_5 = [
10373
10374
  oopMethod("setSize", "shared", "setRadarAreaSize", fn([NUMBER, NUMBER], BOOLEAN, 2))
10374
10375
  ],
10375
10376
  [],
10376
- oopConstructor("shared", fn([NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, named("Element")], named("RadarArea"), 4))
10377
+ oopConstructor(
10378
+ "shared",
10379
+ fn([NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, named("Element")], named("RadarArea"), 4),
10380
+ "createRadarArea"
10381
+ )
10377
10382
  ),
10378
10383
  oopClass("RenderTarget", null, [
10379
10384
  oopMethod("setAsTarget", "client", "dxSetRenderTarget", fn([BOOLEAN], BOOLEAN, 0))
@@ -10440,7 +10445,7 @@ var MTA_OOP_5 = [
10440
10445
  oopMethod("getFromName", "shared", "getResourceFromName", fn([STRING], named("Resource"), 1)),
10441
10446
  oopMethod("getThis", "shared", "getThisResource", fn([], named("Resource"), 0))
10442
10447
  ],
10443
- oopConstructor("server", fn([STRING, STRING], named("Resource"), 1))
10448
+ oopConstructor("server", fn([STRING, STRING], named("Resource"), 1), "createResource")
10444
10449
  ),
10445
10450
  oopClass(
10446
10451
  "Searchlight",
@@ -10460,7 +10465,11 @@ var MTA_OOP_5 = [
10460
10465
  oopProperty("startRadius", "client", "getSearchLightStartRadius", NUMBER)
10461
10466
  ],
10462
10467
  [],
10463
- oopConstructor("client", fn([NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, BOOLEAN], named("Searchlight"), 8))
10468
+ oopConstructor(
10469
+ "client",
10470
+ fn([NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, BOOLEAN], named("Searchlight"), 8),
10471
+ "createSearchLight"
10472
+ )
10464
10473
  )
10465
10474
  ];
10466
10475
 
@@ -10543,14 +10552,14 @@ var MTA_OOP_6 = [
10543
10552
  [
10544
10553
  oopMethod("playFrontEnd", "client", "playSoundFrontEnd", fn([NUMBER], BOOLEAN, 1))
10545
10554
  ],
10546
- oopConstructor("client", fn([STRING, BOOLEAN, BOOLEAN], named("Sound"), 1))
10555
+ oopConstructor("client", fn([STRING, BOOLEAN, BOOLEAN], named("Sound"), 1), "playSound")
10547
10556
  ),
10548
10557
  oopClass(
10549
10558
  "Sound3D",
10550
10559
  "Sound",
10551
10560
  [],
10552
10561
  [],
10553
- oopConstructor("client", fn([STRING, NUMBER, NUMBER, NUMBER, BOOLEAN], named("Sound3D"), 4))
10562
+ oopConstructor("client", fn([STRING, NUMBER, NUMBER, NUMBER, BOOLEAN], named("Sound3D"), 4), "playSound3D")
10554
10563
  ),
10555
10564
  oopClass(
10556
10565
  "Team",
@@ -10585,7 +10594,7 @@ var MTA_OOP_6 = [
10585
10594
  oopProperty("valid", "shared", "isTimer", BOOLEAN)
10586
10595
  ],
10587
10596
  [],
10588
- oopConstructor("shared", fn([ANY, NUMBER, NUMBER], named("Timer"), 3, true))
10597
+ oopConstructor("shared", fn([ANY, NUMBER, NUMBER], named("Timer"), 3, true), "setTimer")
10589
10598
  )
10590
10599
  ];
10591
10600
 
@@ -10801,7 +10810,11 @@ var MTA_OOP_7 = [
10801
10810
  oopMethod("setModelWheelSize", "client", "setVehicleModelWheelSize", fn([NUMBER, STRING, NUMBER], BOOLEAN, 3)),
10802
10811
  oopMethod("setVehicleModelDummyPosition", "client", "setVehicleModelDummyPosition", fn([TABLE, NUMBER, NUMBER], BOOLEAN, 3))
10803
10812
  ],
10804
- oopConstructor("shared", fn([NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, NUMBER, NUMBER], named("Vehicle"), 4))
10813
+ oopConstructor(
10814
+ "shared",
10815
+ fn([NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, STRING, BOOLEAN, NUMBER, NUMBER], named("Vehicle"), 4),
10816
+ "createVehicle"
10817
+ )
10805
10818
  ),
10806
10819
  oopClass(
10807
10820
  "Water",
@@ -10821,25 +10834,8 @@ var MTA_OOP_7 = [
10821
10834
  ],
10822
10835
  oopConstructor(
10823
10836
  "shared",
10824
- fn(
10825
- [
10826
- NUMBER,
10827
- NUMBER,
10828
- NUMBER,
10829
- NUMBER,
10830
- NUMBER,
10831
- NUMBER,
10832
- NUMBER,
10833
- NUMBER,
10834
- NUMBER,
10835
- NUMBER,
10836
- NUMBER,
10837
- NUMBER,
10838
- BOOLEAN
10839
- ],
10840
- named("Water"),
10841
- 9
10842
- )
10837
+ fn([NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, NUMBER, BOOLEAN], named("Water"), 9),
10838
+ "createWater"
10843
10839
  )
10844
10840
  )
10845
10841
  ];
@@ -10873,7 +10869,7 @@ var MTA_OOP_8 = [
10873
10869
  oopProperty("target", "client", "getWeaponTarget", ANY)
10874
10870
  ],
10875
10871
  [],
10876
- oopConstructor("client", fn([STRING, NUMBER, NUMBER, NUMBER], named("Weapon"), 4))
10872
+ oopConstructor("client", fn([STRING, NUMBER, NUMBER, NUMBER], named("Weapon"), 4), "createWeapon")
10877
10873
  ),
10878
10874
  oopClass(
10879
10875
  "XML",
@@ -10883,7 +10879,7 @@ var MTA_OOP_8 = [
10883
10879
  oopMethod("load", "shared", "xmlLoadFile", fn([STRING, BOOLEAN], named("XmlNode"), 1)),
10884
10880
  oopMethod("loadstring", "shared", "xmlLoadString", fn([STRING], named("XmlNode"), 1))
10885
10881
  ],
10886
- oopConstructor("shared", fn([STRING, STRING], named("XML"), 2))
10882
+ oopConstructor("shared", fn([STRING, STRING], named("XML"), 2), "xmlCreateFile")
10887
10883
  ),
10888
10884
  oopClass("XmlNode", null, [
10889
10885
  oopProperty("attributes", "shared", "xmlNodeGetAttributes", TABLE),
@@ -11074,7 +11070,8 @@ function buildConstructors() {
11074
11070
  for (const declaration of allOopClasses()) {
11075
11071
  const type = declaration.constructor === null ? null : descriptorToType(declaration.constructor.type);
11076
11072
  if (type?.kind === "function") {
11077
- constructors.set(declaration.name, { type, environment: declaration.constructor?.environment ?? "shared" });
11073
+ const environment = declaration.constructor?.environment ?? "shared";
11074
+ constructors.set(declaration.name, { type, environment, procedural: declaration.constructor?.procedural ?? null });
11078
11075
  }
11079
11076
  }
11080
11077
  return constructors;
@@ -11098,6 +11095,55 @@ function mtaMember(className, member) {
11098
11095
  return mtaClassRegistry().lookupMember(className, member);
11099
11096
  }
11100
11097
 
11098
+ // ../compiler/src/checker/shape-hint.ts
11099
+ function matchesDiscriminants(source, candidate) {
11100
+ for (const [name, member] of candidate.members) {
11101
+ const written = source.members.get(name);
11102
+ if (!isLiteralType(member) || written === void 0) {
11103
+ continue;
11104
+ }
11105
+ if (!isAssignable(written, member)) {
11106
+ return false;
11107
+ }
11108
+ }
11109
+ return true;
11110
+ }
11111
+ function chooseCandidate(source, candidates) {
11112
+ const [only] = candidates;
11113
+ if (candidates.length === 1 && only !== void 0) {
11114
+ return only;
11115
+ }
11116
+ const matching = candidates.filter((candidate) => matchesDiscriminants(source, candidate));
11117
+ const [best] = matching;
11118
+ return matching.length === 1 && best !== void 0 ? best : null;
11119
+ }
11120
+ function missingKeys(source, target) {
11121
+ const missing = [];
11122
+ for (const [name, member] of target.members) {
11123
+ if (member.kind !== "optional" && !source.members.has(name)) {
11124
+ missing.push(`"${name}"`);
11125
+ }
11126
+ }
11127
+ return missing;
11128
+ }
11129
+ function missingKeyHint(source, target) {
11130
+ if (source.kind !== "record" || source.isLiteral !== true) {
11131
+ return "";
11132
+ }
11133
+ const options = target.kind === "union" ? target.options : [target];
11134
+ const candidates = options.filter((option) => option.kind === "record");
11135
+ const candidate = chooseCandidate(source, candidates);
11136
+ if (candidate === null) {
11137
+ return "";
11138
+ }
11139
+ const missing = missingKeys(source, candidate);
11140
+ if (missing.length === 0) {
11141
+ return "";
11142
+ }
11143
+ const label2 = missing.length === 1 ? `Key ${missing[0]} is` : `Keys ${missing.join(", ")} are`;
11144
+ return ` ${label2} missing from "${typeToString(candidate)}".`;
11145
+ }
11146
+
11101
11147
  // ../compiler/src/checker/type-intersection.ts
11102
11148
  function namedMembers(context, name) {
11103
11149
  if (context.declarations.lookupInterface(name) === null && context.declarations.lookupClass(name) === null) {
@@ -11382,7 +11428,8 @@ var CheckContext = class {
11382
11428
  }
11383
11429
  const received = isLiteralType(target) || target.kind === "union" ? source : widenLiteral(source);
11384
11430
  const message = `${subject} expects "${typeToString(target)}" but received "${typeToString(received)}".`;
11385
- this.report("check-type-mismatch", `${message}${nilHint(source, target, this.mode)}`, position2);
11431
+ const hint = `${nilHint(source, target, this.mode)}${missingKeyHint(source, target)}`;
11432
+ this.report("check-type-mismatch", `${message}${hint}`, position2);
11386
11433
  }
11387
11434
  declareProject(project) {
11388
11435
  for (const declaration of project.globals) {
@@ -12120,7 +12167,7 @@ var ELEMENT_TYPES = [
12120
12167
  { name: "Browser", parent: "Element" },
12121
12168
  { name: "Camera", parent: "Element" },
12122
12169
  { name: "ColShape", parent: "Element" },
12123
- { name: "Connection", parent: "Element" },
12170
+ { name: "Connection", parent: null },
12124
12171
  { name: "DxFont", parent: null },
12125
12172
  { name: "DxRenderTarget", parent: null },
12126
12173
  { name: "DxScreenSource", parent: null },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thigasdevelopment/luam",
3
- "version": "0.10.2",
3
+ "version": "0.10.4",
4
4
  "description": "The Luam compiler for Multi Theft Auto resources.",
5
5
  "keywords": [
6
6
  "mta",