@thigasdevelopment/luam 0.19.10 → 0.19.12

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 +521 -96
  2. package/package.json +1 -1
package/luam.mjs CHANGED
@@ -4427,13 +4427,16 @@ function isCallStart(stream) {
4427
4427
  return stream.check("punctuation", "(") || stream.check("punctuation", "{") || stream.check("string") || stream.check("template");
4428
4428
  }
4429
4429
  function parseSuffixed(stream) {
4430
+ const checkpoint = stream.checkpoint();
4430
4431
  let expression = parsePrimary(stream);
4432
+ stream.recordSpan(expression, checkpoint);
4431
4433
  for (; ; ) {
4432
4434
  const token = stream.current();
4433
4435
  if (token.kind === "punctuation" && token.value === ".") {
4434
4436
  stream.next();
4435
4437
  const property = stream.expectName().value;
4436
4438
  expression = { kind: "member-expression", object: expression, property, position: token.position };
4439
+ stream.recordSpan(expression, checkpoint);
4437
4440
  continue;
4438
4441
  }
4439
4442
  if (token.kind === "punctuation" && token.value === "[") {
@@ -4441,6 +4444,7 @@ function parseSuffixed(stream) {
4441
4444
  const index = parseExpression(stream);
4442
4445
  stream.expect("punctuation", "]");
4443
4446
  expression = { kind: "index-expression", object: expression, index, position: token.position };
4447
+ stream.recordSpan(expression, checkpoint);
4444
4448
  continue;
4445
4449
  }
4446
4450
  if (token.kind === "punctuation" && token.value === ":" && stream.checkName(1)) {
@@ -4448,11 +4452,13 @@ function parseSuffixed(stream) {
4448
4452
  const method = stream.next().value;
4449
4453
  const typeArguments2 = parseCallTypeArguments(stream);
4450
4454
  expression = { kind: "call-expression", callee: expression, method, typeArguments: typeArguments2, args: parseArguments(stream), position: token.position };
4455
+ stream.recordSpan(expression, checkpoint);
4451
4456
  continue;
4452
4457
  }
4453
4458
  const typeArguments = parseCallTypeArguments(stream);
4454
4459
  if (typeArguments.length > 0 || isCallStart(stream)) {
4455
4460
  expression = { kind: "call-expression", callee: expression, method: null, typeArguments, args: parseArguments(stream), position: token.position };
4461
+ stream.recordSpan(expression, checkpoint);
4456
4462
  continue;
4457
4463
  }
4458
4464
  return expression;
@@ -6972,7 +6978,7 @@ import { tmpdir } from "node:os";
6972
6978
  import { join as join2 } from "node:path";
6973
6979
 
6974
6980
  // src/cli/version.ts
6975
- var VERSION = true ? "0.19.10" : "0.0.0-dev";
6981
+ var VERSION = true ? "0.19.12" : "0.0.0-dev";
6976
6982
  var PROGRAM_NAME = "luam";
6977
6983
  var PROGRAM_DESCRIPTION = "luam \u2014 the Luam compiler for Multi Theft Auto resources.";
6978
6984
 
@@ -15805,7 +15811,9 @@ function contextualFunction(type) {
15805
15811
  // ../mta-types/src/generated/mta-events.ts
15806
15812
  var SHARED_EVENTS = [];
15807
15813
  var SERVER_EVENTS = [
15814
+ "onAccountCreate",
15808
15815
  "onAccountDataChange",
15816
+ "onAccountRemove",
15809
15817
  "onBan",
15810
15818
  "onChatMessage",
15811
15819
  "onColShapeHit",
@@ -15822,12 +15830,14 @@ var SERVER_EVENTS = [
15822
15830
  "onElementModelChange",
15823
15831
  "onElementStartSync",
15824
15832
  "onElementStopSync",
15833
+ "onExplosion",
15825
15834
  "onMarkerHit",
15826
15835
  "onMarkerLeave",
15827
15836
  "onPedDamage",
15828
15837
  "onPedVehicleEnter",
15829
15838
  "onPedVehicleExit",
15830
15839
  "onPedWasted",
15840
+ "onPedWeaponReload",
15831
15841
  "onPedWeaponSwitch",
15832
15842
  "onPickupHit",
15833
15843
  "onPickupLeave",
@@ -15836,12 +15846,16 @@ var SERVER_EVENTS = [
15836
15846
  "onPlayerACInfo",
15837
15847
  "onPlayerBan",
15838
15848
  "onPlayerChangeNick",
15849
+ "onPlayerChangesProtectedData",
15850
+ "onPlayerChangesWorldSpecialProperty",
15839
15851
  "onPlayerChat",
15840
15852
  "onPlayerClick",
15841
15853
  "onPlayerCommand",
15842
15854
  "onPlayerConnect",
15843
15855
  "onPlayerContact",
15844
15856
  "onPlayerDamage",
15857
+ "onPlayerDetonateSatchels",
15858
+ "onPlayerDiscordJoin",
15845
15859
  "onPlayerJoin",
15846
15860
  "onPlayerLogin",
15847
15861
  "onPlayerLogout",
@@ -15854,12 +15868,17 @@ var SERVER_EVENTS = [
15854
15868
  "onPlayerPickupLeave",
15855
15869
  "onPlayerPickupUse",
15856
15870
  "onPlayerPrivateMessage",
15871
+ "onPlayerProjectileCreation",
15857
15872
  "onPlayerQuit",
15858
15873
  "onPlayerResourceStart",
15859
15874
  "onPlayerScreenShot",
15860
15875
  "onPlayerSpawn",
15861
15876
  "onPlayerStealthKill",
15862
15877
  "onPlayerTarget",
15878
+ "onPlayerTeamChange",
15879
+ "onPlayerTeleport",
15880
+ "onPlayerTriggerEventThreshold",
15881
+ "onPlayerTriggerInvalidEvent",
15863
15882
  "onPlayerUnmute",
15864
15883
  "onPlayerVehicleEnter",
15865
15884
  "onPlayerVehicleExit",
@@ -15867,12 +15886,15 @@ var SERVER_EVENTS = [
15867
15886
  "onPlayerVoiceStop",
15868
15887
  "onPlayerWasted",
15869
15888
  "onPlayerWeaponFire",
15889
+ "onPlayerWeaponReload",
15870
15890
  "onPlayerWeaponSwitch",
15871
15891
  "onResourceLoadStateChange",
15872
15892
  "onResourcePreStart",
15873
15893
  "onResourceStart",
15894
+ "onResourceStateChange",
15874
15895
  "onResourceStop",
15875
15896
  "onSettingChange",
15897
+ "onShutdown",
15876
15898
  "onTrailerAttach",
15877
15899
  "onTrailerDetach",
15878
15900
  "onUnban",
@@ -15903,6 +15925,7 @@ var CLIENT_EVENTS = [
15903
15925
  "onClientColShapeHit",
15904
15926
  "onClientColShapeLeave",
15905
15927
  "onClientConsole",
15928
+ "onClientCoreCommand",
15906
15929
  "onClientCursorMove",
15907
15930
  "onClientDebugMessage",
15908
15931
  "onClientDoubleClick",
@@ -15945,6 +15968,7 @@ var CLIENT_EVENTS = [
15945
15968
  "onClientObjectMoveStart",
15946
15969
  "onClientObjectMoveStop",
15947
15970
  "onClientPaste",
15971
+ "onClientPedChoke",
15948
15972
  "onClientPedDamage",
15949
15973
  "onClientPedHeliKilled",
15950
15974
  "onClientPedHitByWaterCannon",
@@ -16019,6 +16043,17 @@ var MTA_EVENTS = {
16019
16043
 
16020
16044
  // ../mta-types/src/generated/events/mta-event-signatures-server-1.ts
16021
16045
  var MTA_EVENT_SIGNATURES_SERVER_1 = {
16046
+ onAccountCreate: fn(
16047
+ [
16048
+ named("Account")
16049
+ ],
16050
+ VOID,
16051
+ 1,
16052
+ false,
16053
+ [
16054
+ "theAccount"
16055
+ ]
16056
+ ),
16022
16057
  onAccountDataChange: fn(
16023
16058
  [
16024
16059
  named("Account"),
@@ -16034,6 +16069,17 @@ var MTA_EVENT_SIGNATURES_SERVER_1 = {
16034
16069
  "theValue"
16035
16070
  ]
16036
16071
  ),
16072
+ onAccountRemove: fn(
16073
+ [
16074
+ named("Account")
16075
+ ],
16076
+ VOID,
16077
+ 1,
16078
+ false,
16079
+ [
16080
+ "theAccount"
16081
+ ]
16082
+ ),
16037
16083
  onBan: fn(
16038
16084
  [
16039
16085
  named("Ban")
@@ -16048,7 +16094,7 @@ var MTA_EVENT_SIGNATURES_SERVER_1 = {
16048
16094
  onChatMessage: fn(
16049
16095
  [
16050
16096
  STRING,
16051
- ANY
16097
+ named("Element")
16052
16098
  ],
16053
16099
  VOID,
16054
16100
  2,
@@ -16100,16 +16146,22 @@ var MTA_EVENT_SIGNATURES_SERVER_1 = {
16100
16146
  STRING,
16101
16147
  NUMBER,
16102
16148
  STRING,
16149
+ NUMBER,
16150
+ NUMBER,
16151
+ NUMBER,
16103
16152
  NUMBER
16104
16153
  ],
16105
16154
  VOID,
16106
- 4,
16155
+ 7,
16107
16156
  false,
16108
16157
  [
16109
16158
  "message",
16110
16159
  "level",
16111
16160
  "file",
16112
- "line"
16161
+ "line",
16162
+ "r",
16163
+ "g",
16164
+ "b"
16113
16165
  ]
16114
16166
  ),
16115
16167
  onElementClicked: fn(
@@ -16206,7 +16258,11 @@ var MTA_EVENT_SIGNATURES_SERVER_1 = {
16206
16258
  "oldInterior",
16207
16259
  "newInterior"
16208
16260
  ]
16209
- ),
16261
+ )
16262
+ };
16263
+
16264
+ // ../mta-types/src/generated/events/mta-event-signatures-server-2.ts
16265
+ var MTA_EVENT_SIGNATURES_SERVER_2 = {
16210
16266
  onElementModelChange: fn(
16211
16267
  [
16212
16268
  NUMBER,
@@ -16241,11 +16297,24 @@ var MTA_EVENT_SIGNATURES_SERVER_1 = {
16241
16297
  [
16242
16298
  "oldSyncer"
16243
16299
  ]
16244
- )
16245
- };
16246
-
16247
- // ../mta-types/src/generated/events/mta-event-signatures-server-2.ts
16248
- var MTA_EVENT_SIGNATURES_SERVER_2 = {
16300
+ ),
16301
+ onExplosion: fn(
16302
+ [
16303
+ NUMBER,
16304
+ NUMBER,
16305
+ NUMBER,
16306
+ NUMBER
16307
+ ],
16308
+ VOID,
16309
+ 4,
16310
+ false,
16311
+ [
16312
+ "x",
16313
+ "y",
16314
+ "z",
16315
+ "theType"
16316
+ ]
16317
+ ),
16249
16318
  onMarkerHit: fn(
16250
16319
  [
16251
16320
  named("Element"),
@@ -16321,17 +16390,36 @@ var MTA_EVENT_SIGNATURES_SERVER_2 = {
16321
16390
  named("Element"),
16322
16391
  NUMBER,
16323
16392
  NUMBER,
16324
- BOOLEAN
16393
+ BOOLEAN,
16394
+ NUMBER,
16395
+ NUMBER
16325
16396
  ],
16326
16397
  VOID,
16327
- 5,
16398
+ 7,
16328
16399
  false,
16329
16400
  [
16330
16401
  "totalAmmo",
16331
16402
  "killer",
16332
16403
  "killerWeapon",
16333
16404
  "bodypart",
16334
- "stealth"
16405
+ "stealth",
16406
+ "animGroup",
16407
+ "animID"
16408
+ ]
16409
+ ),
16410
+ onPedWeaponReload: fn(
16411
+ [
16412
+ NUMBER,
16413
+ NUMBER,
16414
+ NUMBER
16415
+ ],
16416
+ VOID,
16417
+ 3,
16418
+ false,
16419
+ [
16420
+ "weapon",
16421
+ "clip",
16422
+ "ammo"
16335
16423
  ]
16336
16424
  ),
16337
16425
  onPedWeaponSwitch: fn(
@@ -16386,7 +16474,11 @@ var MTA_EVENT_SIGNATURES_SERVER_2 = {
16386
16474
  [
16387
16475
  "playerWhoUsed"
16388
16476
  ]
16389
- ),
16477
+ )
16478
+ };
16479
+
16480
+ // ../mta-types/src/generated/events/mta-event-signatures-server-3.ts
16481
+ var MTA_EVENT_SIGNATURES_SERVER_3 = {
16390
16482
  onPlayerACInfo: fn(
16391
16483
  [
16392
16484
  TABLE,
@@ -16432,6 +16524,34 @@ var MTA_EVENT_SIGNATURES_SERVER_2 = {
16432
16524
  "changedByUser"
16433
16525
  ]
16434
16526
  ),
16527
+ onPlayerChangesProtectedData: fn(
16528
+ [
16529
+ named("Element"),
16530
+ STRING,
16531
+ ANY
16532
+ ],
16533
+ VOID,
16534
+ 3,
16535
+ false,
16536
+ [
16537
+ "element",
16538
+ "key",
16539
+ "value"
16540
+ ]
16541
+ ),
16542
+ onPlayerChangesWorldSpecialProperty: fn(
16543
+ [
16544
+ STRING,
16545
+ BOOLEAN
16546
+ ],
16547
+ VOID,
16548
+ 2,
16549
+ false,
16550
+ [
16551
+ "property",
16552
+ "enabled"
16553
+ ]
16554
+ ),
16435
16555
  onPlayerChat: fn(
16436
16556
  [
16437
16557
  STRING,
@@ -16469,11 +16589,7 @@ var MTA_EVENT_SIGNATURES_SERVER_2 = {
16469
16589
  "screenPosX",
16470
16590
  "screenPosY"
16471
16591
  ]
16472
- )
16473
- };
16474
-
16475
- // ../mta-types/src/generated/events/mta-event-signatures-server-3.ts
16476
- var MTA_EVENT_SIGNATURES_SERVER_3 = {
16592
+ ),
16477
16593
  onPlayerCommand: fn(
16478
16594
  [
16479
16595
  STRING
@@ -16536,6 +16652,26 @@ var MTA_EVENT_SIGNATURES_SERVER_3 = {
16536
16652
  "loss"
16537
16653
  ]
16538
16654
  ),
16655
+ onPlayerDetonateSatchels: fn(
16656
+ [],
16657
+ VOID,
16658
+ 0,
16659
+ false,
16660
+ []
16661
+ ),
16662
+ onPlayerDiscordJoin: fn(
16663
+ [
16664
+ BOOLEAN,
16665
+ STRING
16666
+ ],
16667
+ VOID,
16668
+ 2,
16669
+ false,
16670
+ [
16671
+ "justConnected",
16672
+ "key"
16673
+ ]
16674
+ ),
16539
16675
  onPlayerJoin: fn(
16540
16676
  [],
16541
16677
  VOID,
@@ -16568,7 +16704,11 @@ var MTA_EVENT_SIGNATURES_SERVER_3 = {
16568
16704
  "thePreviousAccount",
16569
16705
  "theCurrentAccount"
16570
16706
  ]
16571
- ),
16707
+ )
16708
+ };
16709
+
16710
+ // ../mta-types/src/generated/events/mta-event-signatures-server-4.ts
16711
+ var MTA_EVENT_SIGNATURES_SERVER_4 = {
16572
16712
  onPlayerMarkerHit: fn(
16573
16713
  [
16574
16714
  named("Marker"),
@@ -16630,7 +16770,7 @@ var MTA_EVENT_SIGNATURES_SERVER_3 = {
16630
16770
  ),
16631
16771
  onPlayerPickupHit: fn(
16632
16772
  [
16633
- ANY
16773
+ named("Pickup")
16634
16774
  ],
16635
16775
  VOID,
16636
16776
  1,
@@ -16641,7 +16781,7 @@ var MTA_EVENT_SIGNATURES_SERVER_3 = {
16641
16781
  ),
16642
16782
  onPlayerPickupLeave: fn(
16643
16783
  [
16644
- ANY
16784
+ named("Pickup")
16645
16785
  ],
16646
16786
  VOID,
16647
16787
  1,
@@ -16652,7 +16792,7 @@ var MTA_EVENT_SIGNATURES_SERVER_3 = {
16652
16792
  ),
16653
16793
  onPlayerPickupUse: fn(
16654
16794
  [
16655
- ANY
16795
+ named("Pickup")
16656
16796
  ],
16657
16797
  VOID,
16658
16798
  1,
@@ -16664,14 +16804,49 @@ var MTA_EVENT_SIGNATURES_SERVER_3 = {
16664
16804
  onPlayerPrivateMessage: fn(
16665
16805
  [
16666
16806
  STRING,
16667
- named("Player")
16807
+ named("Player"),
16808
+ STRING
16668
16809
  ],
16669
16810
  VOID,
16670
- 2,
16811
+ 3,
16671
16812
  false,
16672
16813
  [
16673
- "message",
16674
- "recipient"
16814
+ "fullMessage",
16815
+ "recipient",
16816
+ "content"
16817
+ ]
16818
+ ),
16819
+ onPlayerProjectileCreation: fn(
16820
+ [
16821
+ NUMBER,
16822
+ NUMBER,
16823
+ NUMBER,
16824
+ NUMBER,
16825
+ NUMBER,
16826
+ named("Element"),
16827
+ NUMBER,
16828
+ NUMBER,
16829
+ NUMBER,
16830
+ NUMBER,
16831
+ NUMBER,
16832
+ NUMBER
16833
+ ],
16834
+ VOID,
16835
+ 12,
16836
+ false,
16837
+ [
16838
+ "weaponType",
16839
+ "x",
16840
+ "y",
16841
+ "z",
16842
+ "force",
16843
+ "target",
16844
+ "rotX",
16845
+ "rotY",
16846
+ "rotZ",
16847
+ "velX",
16848
+ "velY",
16849
+ "velZ"
16675
16850
  ]
16676
16851
  ),
16677
16852
  onPlayerQuit: fn(
@@ -16699,11 +16874,7 @@ var MTA_EVENT_SIGNATURES_SERVER_3 = {
16699
16874
  [
16700
16875
  "loadedResource"
16701
16876
  ]
16702
- )
16703
- };
16704
-
16705
- // ../mta-types/src/generated/events/mta-event-signatures-server-4.ts
16706
- var MTA_EVENT_SIGNATURES_SERVER_4 = {
16877
+ ),
16707
16878
  onPlayerScreenShot: fn(
16708
16879
  [
16709
16880
  named("Resource"),
@@ -16758,7 +16929,11 @@ var MTA_EVENT_SIGNATURES_SERVER_4 = {
16758
16929
  [
16759
16930
  "targetPlayer"
16760
16931
  ]
16761
- ),
16932
+ )
16933
+ };
16934
+
16935
+ // ../mta-types/src/generated/events/mta-event-signatures-server-5.ts
16936
+ var MTA_EVENT_SIGNATURES_SERVER_5 = {
16762
16937
  onPlayerTarget: fn(
16763
16938
  [
16764
16939
  named("Element")
@@ -16770,6 +16945,66 @@ var MTA_EVENT_SIGNATURES_SERVER_4 = {
16770
16945
  "targettedElement"
16771
16946
  ]
16772
16947
  ),
16948
+ onPlayerTeamChange: fn(
16949
+ [
16950
+ named("Team"),
16951
+ named("Team")
16952
+ ],
16953
+ VOID,
16954
+ 2,
16955
+ false,
16956
+ [
16957
+ "oldTeam",
16958
+ "newTeam"
16959
+ ]
16960
+ ),
16961
+ onPlayerTeleport: fn(
16962
+ [
16963
+ NUMBER,
16964
+ NUMBER,
16965
+ NUMBER,
16966
+ NUMBER,
16967
+ NUMBER,
16968
+ NUMBER
16969
+ ],
16970
+ VOID,
16971
+ 6,
16972
+ false,
16973
+ [
16974
+ "previousX",
16975
+ "previousY",
16976
+ "previousZ",
16977
+ "currentX",
16978
+ "currentY",
16979
+ "currentZ"
16980
+ ]
16981
+ ),
16982
+ onPlayerTriggerEventThreshold: fn(
16983
+ [
16984
+ STRING
16985
+ ],
16986
+ VOID,
16987
+ 1,
16988
+ false,
16989
+ [
16990
+ "eventName"
16991
+ ]
16992
+ ),
16993
+ onPlayerTriggerInvalidEvent: fn(
16994
+ [
16995
+ STRING,
16996
+ BOOLEAN,
16997
+ BOOLEAN
16998
+ ],
16999
+ VOID,
17000
+ 3,
17001
+ false,
17002
+ [
17003
+ "eventName",
17004
+ "isAdded",
17005
+ "isRemote"
17006
+ ]
17007
+ ),
16773
17008
  onPlayerUnmute: fn(
16774
17009
  [],
16775
17010
  VOID,
@@ -16829,17 +17064,21 @@ var MTA_EVENT_SIGNATURES_SERVER_4 = {
16829
17064
  named("Element"),
16830
17065
  NUMBER,
16831
17066
  NUMBER,
16832
- BOOLEAN
17067
+ BOOLEAN,
17068
+ NUMBER,
17069
+ NUMBER
16833
17070
  ],
16834
17071
  VOID,
16835
- 5,
17072
+ 7,
16836
17073
  false,
16837
17074
  [
16838
17075
  "totalAmmo",
16839
17076
  "killer",
16840
17077
  "killerWeapon",
16841
17078
  "bodypart",
16842
- "stealth"
17079
+ "stealth",
17080
+ "animGroup",
17081
+ "animID"
16843
17082
  ]
16844
17083
  ),
16845
17084
  onPlayerWeaponFire: fn(
@@ -16857,7 +17096,7 @@ var MTA_EVENT_SIGNATURES_SERVER_4 = {
16857
17096
  8,
16858
17097
  false,
16859
17098
  [
16860
- "weapon",
17099
+ "weaponID",
16861
17100
  "endX",
16862
17101
  "endY",
16863
17102
  "endZ",
@@ -16867,6 +17106,21 @@ var MTA_EVENT_SIGNATURES_SERVER_4 = {
16867
17106
  "startZ"
16868
17107
  ]
16869
17108
  ),
17109
+ onPlayerWeaponReload: fn(
17110
+ [
17111
+ NUMBER,
17112
+ NUMBER,
17113
+ NUMBER
17114
+ ],
17115
+ VOID,
17116
+ 3,
17117
+ false,
17118
+ [
17119
+ "weapon",
17120
+ "ammoInClip",
17121
+ "ammo"
17122
+ ]
17123
+ ),
16870
17124
  onPlayerWeaponSwitch: fn(
16871
17125
  [
16872
17126
  NUMBER,
@@ -16894,7 +17148,11 @@ var MTA_EVENT_SIGNATURES_SERVER_4 = {
16894
17148
  "oldState",
16895
17149
  "newState"
16896
17150
  ]
16897
- ),
17151
+ )
17152
+ };
17153
+
17154
+ // ../mta-types/src/generated/events/mta-event-signatures-server-6.ts
17155
+ var MTA_EVENT_SIGNATURES_SERVER_6 = {
16898
17156
  onResourcePreStart: fn(
16899
17157
  [
16900
17158
  named("Resource")
@@ -16916,11 +17174,22 @@ var MTA_EVENT_SIGNATURES_SERVER_4 = {
16916
17174
  [
16917
17175
  "startedResource"
16918
17176
  ]
16919
- )
16920
- };
16921
-
16922
- // ../mta-types/src/generated/events/mta-event-signatures-server-5.ts
16923
- var MTA_EVENT_SIGNATURES_SERVER_5 = {
17177
+ ),
17178
+ onResourceStateChange: fn(
17179
+ [
17180
+ named("Resource"),
17181
+ STRING,
17182
+ STRING
17183
+ ],
17184
+ VOID,
17185
+ 3,
17186
+ false,
17187
+ [
17188
+ "changedResource",
17189
+ "oldState",
17190
+ "newState"
17191
+ ]
17192
+ ),
16924
17193
  onResourceStop: fn(
16925
17194
  [
16926
17195
  named("Resource"),
@@ -16949,6 +17218,19 @@ var MTA_EVENT_SIGNATURES_SERVER_5 = {
16949
17218
  "newValue"
16950
17219
  ]
16951
17220
  ),
17221
+ onShutdown: fn(
17222
+ [
17223
+ named("Resource"),
17224
+ STRING
17225
+ ],
17226
+ VOID,
17227
+ 2,
17228
+ false,
17229
+ [
17230
+ "theResource",
17231
+ "reason"
17232
+ ]
17233
+ ),
16952
17234
  onTrailerAttach: fn(
16953
17235
  [
16954
17236
  named("Vehicle")
@@ -17028,11 +17310,17 @@ var MTA_EVENT_SIGNATURES_SERVER_5 = {
17028
17310
  ]
17029
17311
  ),
17030
17312
  onVehicleExplode: fn(
17031
- [],
17313
+ [
17314
+ BOOLEAN,
17315
+ named("Player")
17316
+ ],
17032
17317
  VOID,
17033
- 0,
17318
+ 2,
17034
17319
  false,
17035
- []
17320
+ [
17321
+ "withExplosion",
17322
+ "player"
17323
+ ]
17036
17324
  ),
17037
17325
  onVehicleRespawn: fn(
17038
17326
  [
@@ -17153,7 +17441,7 @@ var MTA_EVENT_SIGNATURES_CLIENT_1 = {
17153
17441
  false,
17154
17442
  [
17155
17443
  "URL",
17156
- "isMain"
17444
+ "isMainFrame"
17157
17445
  ]
17158
17446
  ),
17159
17447
  onClientBrowserNavigate: fn(
@@ -17319,6 +17607,17 @@ var MTA_EVENT_SIGNATURES_CLIENT_1 = {
17319
17607
 
17320
17608
  // ../mta-types/src/generated/events/mta-event-signatures-client-2.ts
17321
17609
  var MTA_EVENT_SIGNATURES_CLIENT_2 = {
17610
+ onClientCoreCommand: fn(
17611
+ [
17612
+ STRING
17613
+ ],
17614
+ VOID,
17615
+ 1,
17616
+ false,
17617
+ [
17618
+ "command"
17619
+ ]
17620
+ ),
17322
17621
  onClientCursorMove: fn(
17323
17622
  [
17324
17623
  NUMBER,
@@ -17531,18 +17830,18 @@ var MTA_EVENT_SIGNATURES_CLIENT_2 = {
17531
17830
  [
17532
17831
  "editBox"
17533
17832
  ]
17534
- ),
17833
+ )
17834
+ };
17835
+
17836
+ // ../mta-types/src/generated/events/mta-event-signatures-client-3.ts
17837
+ var MTA_EVENT_SIGNATURES_CLIENT_3 = {
17535
17838
  onClientGUIBlur: fn(
17536
17839
  [],
17537
17840
  VOID,
17538
17841
  0,
17539
17842
  false,
17540
17843
  []
17541
- )
17542
- };
17543
-
17544
- // ../mta-types/src/generated/events/mta-event-signatures-client-3.ts
17545
- var MTA_EVENT_SIGNATURES_CLIENT_3 = {
17844
+ ),
17546
17845
  onClientGUIChanged: fn(
17547
17846
  [
17548
17847
  named("Element")
@@ -17739,7 +18038,11 @@ var MTA_EVENT_SIGNATURES_CLIENT_3 = {
17739
18038
  "absoluteY",
17740
18039
  "leftGUI"
17741
18040
  ]
17742
- ),
18041
+ )
18042
+ };
18043
+
18044
+ // ../mta-types/src/generated/events/mta-event-signatures-client-4.ts
18045
+ var MTA_EVENT_SIGNATURES_CLIENT_4 = {
17743
18046
  onClientMouseLeave: fn(
17744
18047
  [
17745
18048
  NUMBER,
@@ -17754,11 +18057,7 @@ var MTA_EVENT_SIGNATURES_CLIENT_3 = {
17754
18057
  "absoluteY",
17755
18058
  "enteredGUI"
17756
18059
  ]
17757
- )
17758
- };
17759
-
17760
- // ../mta-types/src/generated/events/mta-event-signatures-client-4.ts
17761
- var MTA_EVENT_SIGNATURES_CLIENT_4 = {
18060
+ ),
17762
18061
  onClientMouseMove: fn(
17763
18062
  [
17764
18063
  NUMBER,
@@ -17843,6 +18142,19 @@ var MTA_EVENT_SIGNATURES_CLIENT_4 = {
17843
18142
  "clipboardText"
17844
18143
  ]
17845
18144
  ),
18145
+ onClientPedChoke: fn(
18146
+ [
18147
+ NUMBER,
18148
+ named("Ped")
18149
+ ],
18150
+ VOID,
18151
+ 2,
18152
+ false,
18153
+ [
18154
+ "weaponID",
18155
+ "responsiblePed"
18156
+ ]
18157
+ ),
17846
18158
  onClientPedDamage: fn(
17847
18159
  [
17848
18160
  named("Element"),
@@ -17940,9 +18252,13 @@ var MTA_EVENT_SIGNATURES_CLIENT_4 = {
17940
18252
  "killer",
17941
18253
  "weapon",
17942
18254
  "bodypart",
17943
- "loss"
18255
+ "lossOrStealth"
17944
18256
  ]
17945
- ),
18257
+ )
18258
+ };
18259
+
18260
+ // ../mta-types/src/generated/events/mta-event-signatures-client-5.ts
18261
+ var MTA_EVENT_SIGNATURES_CLIENT_5 = {
17946
18262
  onClientPedWeaponFire: fn(
17947
18263
  [
17948
18264
  NUMBER,
@@ -17978,11 +18294,7 @@ var MTA_EVENT_SIGNATURES_CLIENT_4 = {
17978
18294
  "thePlayer",
17979
18295
  "matchingDimension"
17980
18296
  ]
17981
- )
17982
- };
17983
-
17984
- // ../mta-types/src/generated/events/mta-event-signatures-client-5.ts
17985
- var MTA_EVENT_SIGNATURES_CLIENT_5 = {
18297
+ ),
17986
18298
  onClientPickupLeave: fn(
17987
18299
  [
17988
18300
  named("Player"),
@@ -18174,7 +18486,11 @@ var MTA_EVENT_SIGNATURES_CLIENT_5 = {
18174
18486
  [
18175
18487
  "stuntType"
18176
18488
  ]
18177
- ),
18489
+ )
18490
+ };
18491
+
18492
+ // ../mta-types/src/generated/events/mta-event-signatures-client-6.ts
18493
+ var MTA_EVENT_SIGNATURES_CLIENT_6 = {
18178
18494
  onClientPlayerTarget: fn(
18179
18495
  [
18180
18496
  named("Element")
@@ -18198,11 +18514,7 @@ var MTA_EVENT_SIGNATURES_CLIENT_5 = {
18198
18514
  "theVehicle",
18199
18515
  "seat"
18200
18516
  ]
18201
- )
18202
- };
18203
-
18204
- // ../mta-types/src/generated/events/mta-event-signatures-client-6.ts
18205
- var MTA_EVENT_SIGNATURES_CLIENT_6 = {
18517
+ ),
18206
18518
  onClientPlayerVehicleExit: fn(
18207
18519
  [
18208
18520
  named("Vehicle"),
@@ -18257,16 +18569,20 @@ var MTA_EVENT_SIGNATURES_CLIENT_6 = {
18257
18569
  named("Element"),
18258
18570
  NUMBER,
18259
18571
  NUMBER,
18260
- BOOLEAN
18572
+ BOOLEAN,
18573
+ NUMBER,
18574
+ NUMBER
18261
18575
  ],
18262
18576
  VOID,
18263
- 4,
18577
+ 6,
18264
18578
  false,
18265
18579
  [
18266
18580
  "killer",
18267
18581
  "weapon",
18268
18582
  "bodypart",
18269
- "stealth"
18583
+ "stealth",
18584
+ "animGroup",
18585
+ "animID"
18270
18586
  ]
18271
18587
  ),
18272
18588
  onClientPlayerWeaponFire: fn(
@@ -18389,7 +18705,11 @@ var MTA_EVENT_SIGNATURES_CLIENT_6 = {
18389
18705
  [
18390
18706
  "didClearRenderTargets"
18391
18707
  ]
18392
- ),
18708
+ )
18709
+ };
18710
+
18711
+ // ../mta-types/src/generated/events/mta-event-signatures-client-7.ts
18712
+ var MTA_EVENT_SIGNATURES_CLIENT_7 = {
18393
18713
  onClientSoundBeat: fn(
18394
18714
  [
18395
18715
  NUMBER
@@ -18422,11 +18742,7 @@ var MTA_EVENT_SIGNATURES_CLIENT_6 = {
18422
18742
  [
18423
18743
  "length"
18424
18744
  ]
18425
- )
18426
- };
18427
-
18428
- // ../mta-types/src/generated/events/mta-event-signatures-client-7.ts
18429
- var MTA_EVENT_SIGNATURES_CLIENT_7 = {
18745
+ ),
18430
18746
  onClientSoundStarted: fn(
18431
18747
  [
18432
18748
  STRING
@@ -18532,7 +18848,7 @@ var MTA_EVENT_SIGNATURES_CLIENT_7 = {
18532
18848
  [
18533
18849
  "theHitElement",
18534
18850
  "damageImpulseMag",
18535
- "bodypart",
18851
+ "bodyPart",
18536
18852
  "collisionX",
18537
18853
  "collisionY",
18538
18854
  "collisionZ",
@@ -18616,7 +18932,11 @@ var MTA_EVENT_SIGNATURES_CLIENT_7 = {
18616
18932
  0,
18617
18933
  false,
18618
18934
  []
18619
- ),
18935
+ )
18936
+ };
18937
+
18938
+ // ../mta-types/src/generated/events/mta-event-signatures-client-8.ts
18939
+ var MTA_EVENT_SIGNATURES_CLIENT_8 = {
18620
18940
  onClientVehicleStartEnter: fn(
18621
18941
  [
18622
18942
  named("Ped"),
@@ -18646,11 +18966,7 @@ var MTA_EVENT_SIGNATURES_CLIENT_7 = {
18646
18966
  "seat",
18647
18967
  "door"
18648
18968
  ]
18649
- )
18650
- };
18651
-
18652
- // ../mta-types/src/generated/events/mta-event-signatures-client-8.ts
18653
- var MTA_EVENT_SIGNATURES_CLIENT_8 = {
18969
+ ),
18654
18970
  onClientVehicleWeaponHit: fn(
18655
18971
  [
18656
18972
  NUMBER,
@@ -18731,7 +19047,8 @@ var MTA_EVENT_SIGNATURES = {
18731
19047
  ...MTA_EVENT_SIGNATURES_SERVER_2,
18732
19048
  ...MTA_EVENT_SIGNATURES_SERVER_3,
18733
19049
  ...MTA_EVENT_SIGNATURES_SERVER_4,
18734
- ...MTA_EVENT_SIGNATURES_SERVER_5
19050
+ ...MTA_EVENT_SIGNATURES_SERVER_5,
19051
+ ...MTA_EVENT_SIGNATURES_SERVER_6
18735
19052
  },
18736
19053
  client: {
18737
19054
  ...MTA_EVENT_SIGNATURES_CLIENT_1,
@@ -21909,14 +22226,15 @@ function canonicalEdit(input, statement, span) {
21909
22226
  if (trimmed.length === 0) {
21910
22227
  return erasedEdit(source, span);
21911
22228
  }
21912
- const authored = source.slice(span.start, span.end);
21913
- const replacement = reindent(trimmed, indentOf(source, span.start));
22229
+ const end = erasedEnd(source, span);
22230
+ const authored = source.slice(span.start, end);
22231
+ const replacement = `${reindent(trimmed, indentOf(source, span.start))}${source.slice(span.end, end).trim()}`;
21914
22232
  const missing2 = lineCount2(authored) - lineCount2(replacement);
21915
22233
  if (missing2 < 0 && input.development) {
21916
22234
  return null;
21917
22235
  }
21918
- const padded = missing2 > 0 && source.slice(span.end).trim().length > 0 ? `${replacement}${"\n".repeat(missing2)}` : replacement;
21919
- return { start: span.start, end: span.end, replacement: padded, lines: emitted2.lines };
22236
+ const padded = missing2 > 0 && source.slice(end).trim().length > 0 ? `${replacement}${"\n".repeat(missing2)}` : replacement;
22237
+ return { start: span.start, end, replacement: padded, lines: emitted2.lines };
21920
22238
  }
21921
22239
 
21922
22240
  // ../compiler/src/emitter/preserve-decorators.ts
@@ -22059,7 +22377,11 @@ function selfEdit(source, member, span) {
22059
22377
  return { start: parenthesis + 1, end: parenthesis + 1, replacement: "self" };
22060
22378
  }
22061
22379
  function isKept(member) {
22062
- return !isLazyField(member) && (member.kind === "class-method" || member.value !== null);
22380
+ return !isLazyField(member);
22381
+ }
22382
+ function declaredFieldEdit(source, member, end, separator) {
22383
+ const start = member.position.offset;
22384
+ return { start, end, replacement: `${member.name} = nil${separator}${blankSpan(source.slice(start, end))}` };
22063
22385
  }
22064
22386
  function isLazyField(member) {
22065
22387
  return member.kind === "class-field" && member.decorators.some((decorator) => decorator.name === "Lazy");
@@ -22120,6 +22442,13 @@ function classEdits(input, statement, spans) {
22120
22442
  edits.push({ start: span.start, end, replacement: isLazyField(member) ? longComment(text) : blankSpan(text) });
22121
22443
  continue;
22122
22444
  }
22445
+ const needsSeparator2 = separator === null && (member !== kept[kept.length - 1] || injected !== null);
22446
+ if (member.kind === "class-field" && member.value === null) {
22447
+ const end = separator === null ? span.end : separator + 1;
22448
+ const written = separator === null ? needsSeparator2 ? "," : "" : source.slice(separator, separator + 1);
22449
+ edits.push(declaredFieldEdit(source, member, end, written));
22450
+ continue;
22451
+ }
22123
22452
  if (member.kind === "class-method" && !member.isStatic) {
22124
22453
  const self = selfEdit(source, member, span);
22125
22454
  if (self === null) {
@@ -22127,7 +22456,7 @@ function classEdits(input, statement, spans) {
22127
22456
  }
22128
22457
  edits.push(self);
22129
22458
  }
22130
- if (separator === null && (member !== kept[kept.length - 1] || injected !== null)) {
22459
+ if (needsSeparator2) {
22131
22460
  edits.push({ start: span.end, end: span.end, replacement: "," });
22132
22461
  }
22133
22462
  }
@@ -22146,6 +22475,99 @@ function classEdits(input, statement, spans) {
22146
22475
  return edits;
22147
22476
  }
22148
22477
 
22478
+ // ../compiler/src/emitter/preserve-expressions.ts
22479
+ function children(expression) {
22480
+ switch (expression.kind) {
22481
+ case "member-expression":
22482
+ return [expression.object];
22483
+ case "index-expression":
22484
+ return [expression.object, expression.index];
22485
+ case "call-expression":
22486
+ return [expression.callee, ...expression.args];
22487
+ case "new-expression":
22488
+ return [...expression.args];
22489
+ case "table-expression":
22490
+ return expression.fields.flatMap((field2) => field2.key === null ? [field2.value] : [field2.key, field2.value]);
22491
+ case "binary-expression":
22492
+ return [expression.left, expression.right];
22493
+ case "unary-expression":
22494
+ return [expression.operand];
22495
+ case "group-expression":
22496
+ return [expression.expression];
22497
+ default:
22498
+ return [];
22499
+ }
22500
+ }
22501
+ function isOwnFailure(expression, types, statics) {
22502
+ switch (expression.kind) {
22503
+ case "template-literal":
22504
+ case "new-expression":
22505
+ return true;
22506
+ case "member-expression":
22507
+ return statics.has(expression) || resolvePropertyExtension(types.get(expression.object) ?? null, expression.property) !== null;
22508
+ case "call-expression":
22509
+ if (expression.method === null && expression.callee.kind === "identifier" && expression.callee.name === "super") {
22510
+ return true;
22511
+ }
22512
+ return expression.callee.kind === "member-expression" && resolveCallExtension(types.get(expression.callee.object) ?? null, expression.callee.property) !== null;
22513
+ default:
22514
+ return false;
22515
+ }
22516
+ }
22517
+ function holdsFunction(expression) {
22518
+ return expression.kind === "function-expression" || children(expression).some(holdsFunction);
22519
+ }
22520
+ function collect2(input, expression, found) {
22521
+ if (isPreservableExpression(expression, input.types, input.staticAccess)) {
22522
+ return true;
22523
+ }
22524
+ if (isOwnFailure(expression, input.types, input.staticAccess)) {
22525
+ found.push(expression);
22526
+ return true;
22527
+ }
22528
+ return children(expression).every((child) => collect2(input, child, found));
22529
+ }
22530
+ function statementExpressions3(statement) {
22531
+ switch (statement.kind) {
22532
+ case "local-statement":
22533
+ return [...statement.values];
22534
+ case "assignment-statement":
22535
+ return statement.operator === "=" ? [...statement.targets, ...statement.values] : null;
22536
+ case "call-statement":
22537
+ return [statement.expression];
22538
+ case "return-statement":
22539
+ return [...statement.values];
22540
+ case "if-statement":
22541
+ return statement.clauses.map((clause) => clause.condition);
22542
+ default:
22543
+ return null;
22544
+ }
22545
+ }
22546
+ function expressionEdits(input, statement) {
22547
+ const slots = input.development ? statementExpressions3(statement) : null;
22548
+ if (slots === null) {
22549
+ return null;
22550
+ }
22551
+ const found = [];
22552
+ if (!slots.every((slot) => collect2(input, slot, found)) || found.length === 0) {
22553
+ return null;
22554
+ }
22555
+ const edits = [];
22556
+ for (const expression of found) {
22557
+ const span = input.spans.get(expression);
22558
+ if (span === void 0 || holdsFunction(expression)) {
22559
+ return null;
22560
+ }
22561
+ const state = createEmitState(input.types, input.references, input.generatedMembers, input.staticAccess);
22562
+ const replacement = emitExpression(state, expression);
22563
+ if (replacement.includes("\n") || input.source.slice(span.start, span.end).includes("\n")) {
22564
+ return null;
22565
+ }
22566
+ edits.push({ start: span.start, end: span.end, replacement });
22567
+ }
22568
+ return edits;
22569
+ }
22570
+
22149
22571
  // ../compiler/src/emitter/preserve-loops.ts
22150
22572
  var BREAK_KEYWORD = "break";
22151
22573
  var CONTINUE_KEYWORD = "continue";
@@ -22263,8 +22685,11 @@ function visit(collector, statement, wrapped) {
22263
22685
  descend(collector, statement, false, surgical.wrapsBody);
22264
22686
  return;
22265
22687
  }
22266
- if (isPreservableStatement(statement, collector.input.types, collector.input.staticAccess) && keepsScaffolding(statement)) {
22688
+ const preservable = isPreservableStatement(statement, collector.input.types, collector.input.staticAccess);
22689
+ const narrowed = preservable ? null : expressionEdits(collector.input, statement);
22690
+ if ((preservable || narrowed !== null) && keepsScaffolding(statement)) {
22267
22691
  const inherited = statement.kind === "do-statement" || statement.kind === "if-statement" ? wrapped : false;
22692
+ collector.edits.push(...narrowed ?? []);
22268
22693
  descend(collector, statement, inherited, false);
22269
22694
  return;
22270
22695
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thigasdevelopment/luam",
3
- "version": "0.19.10",
3
+ "version": "0.19.12",
4
4
  "description": "The Luam compiler for Multi Theft Auto resources.",
5
5
  "keywords": [
6
6
  "mta",