typed-factorio 0.19.1 → 0.20.0-beta.1

Sign up to get free protection for your applications and to get access to all the features.
package/Changelog.md CHANGED
@@ -1,3 +1,9 @@
1
+ # v0.20.0
2
+
3
+ - Updated to factorio version 1.1.56
4
+ - Added custom-index-template.d.ts. You can use this if you would like to make a "custom" modification of the type definitions.
5
+ - **This is an opt-in**: Some numeric types which represent indices/number,e.g. player_index, entity_number, are now branded numbers with their own type, e.g. `PlayerIndex` and `EntityNumber`. See the README for more info.
6
+
1
7
  # v0.19.0
2
8
 
3
9
  - Updated to factorio version 1.1.53
@@ -33,8 +39,8 @@
33
39
  # v0.15.0
34
40
 
35
41
  - Table or array concepts are now declared in table form wherever it is an "read" position.
36
- - This works with setter overloading for applicable properties: `player.color.x; player.color = [1, 1, 1]` is now valid!
37
- - This also applies to concepts/complex types which contain table_or_array properties.
42
+ - This works with setter overloading for applicable properties: `player.color.x; player.color = [1, 1, 1]` is now valid!
43
+ - This also applies to concepts/complex types which contain table_or_array properties.
38
44
  - Some concepts now also have a special form where it is known to be in a "read" position, where all table_or_array concepts are declared in table form. These concepts are suffixed with "Read", e.g. `ScriptAreaRead`.
39
45
  - Arrays which are known to be in a "write" only form (e.g. method parameters) now are marked readonly. This means you can now pass readonly arrays to these methods.
40
46
  - `MapPosition` is now a table or array concept.
@@ -50,17 +56,17 @@
50
56
  - LuaStyle size, margin/padding setters now have more specific array types. These array types are `SizeArray` and `StyleValuesArray` for size and margin/padding, respectively.
51
57
  - `@noSelf` annotation is now only present when necessary.
52
58
  - For classes with subclasses:
53
- - The original class name (e.g. `LuaItemStack`) still contains attributes of all subclasses (same as before).
54
- - There is now a `Base` type (e.g. `BaseItemStack`) which only includes attributes common to all subclasses.
55
- - There is a separate type definition for each subclass, e.g. `BlueprintItem`. Note that one instance may still belong to multiple subclasses (the subclasses are not mutually exclusive).
56
- - The above two can be optionally used for stricter types.
59
+ - The original class name (e.g. `LuaItemStack`) still contains attributes of all subclasses (same as before).
60
+ - There is now a `Base` type (e.g. `BaseItemStack`) which only includes attributes common to all subclasses.
61
+ - There is a separate type definition for each subclass, e.g. `BlueprintItem`. Note that one instance may still belong to multiple subclasses (the subclasses are not mutually exclusive).
62
+ - The above two can be optionally used for stricter types.
57
63
 
58
64
  # v0.13.2
59
65
 
60
66
  - Fix: resize_to_sprite property should not be on subclass sprite-button
61
67
  - Fix: ChooseElemButtonSpec filters should be named elem_filters
62
68
  - Switch back to `/latest` api docs link
63
- - New version of web api docs is now active
69
+ - New version of web api docs is now active
64
70
 
65
71
  # v0.13.0
66
72
 
@@ -96,7 +102,7 @@
96
102
  # v0.7.3
97
103
 
98
104
  - Update to factorio version 1.1.42
99
- - No api changes, but improvements to descriptions
105
+ - No api changes, but improvements to descriptions
100
106
 
101
107
  # v0.7.2
102
108
 
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Complete and featureful typescript definitions for the Factorio modding lua api. This is intended to be used with [TypescriptToLua](https://typescripttolua.github.io/).
4
4
 
5
- This project aims to provide type definitions for the Factorio lua API that are as complete as possible. This means no `any`s or `unknown`s, correct nullability, and smart types where possible. The generator integrates both the Factorio JSON api docs and manually defined additions and overrides.
5
+ This project aims to provide type definitions for the Factorio lua API that are as complete as possible. This means no `any`s or `unknown`s, correct nullability, and lots of smart type features. The generator integrates both the Factorio JSON api docs and manually defined additions and overrides.
6
6
 
7
7
  ## Installation
8
8
 
@@ -30,7 +30,10 @@ yarn add typed-factorio
30
30
 
31
31
  This will add the types for the runtime stage to your entire project.
32
32
 
33
- Note: When types are updated, or released for a new factorio version, you will need update your package version to get the types.
33
+ Notes:
34
+ > When types are updated, or released for a new factorio version, you will need update your package version to get the types.
35
+ >
36
+ > There is an opt-in feature for stricter index types, see [Strict index types](#Strict index types) for more details.
34
37
 
35
38
  ### Settings and data stage
36
39
 
@@ -42,7 +45,7 @@ Example:
42
45
 
43
46
  ```ts
44
47
  import { Data, Mods } from "typed-factorio/data/types"
45
- // or
48
+ // or
46
49
  import { Data, Mods } from "typed-factorio/settings/types"
47
50
 
48
51
  declare const data: Data
@@ -93,15 +96,6 @@ Variant parameter types (types with "additional fields can be specified dependin
93
96
 
94
97
  The type for a specific variant is prefixed with the variant name, or with "Other" for variants without additional fields (e.g. `AmmoDamageTechnologyModifier`, `OtherTechnologyModifier`).
95
98
 
96
- ### Types with subclasses
97
-
98
- Some classes have attributes that are documented to only work on particular subclasses. For these classes, e.g. `LuaEntity`, there are also these other types that you can _optionally_ use:
99
-
100
- - a "Base" type, e.g. `BaseEntity`, which only contains members usable by all subclasses
101
- - individual subclass types, e.g. `CraftingMachineEntity`, which extends the base type with members specific to that subclass
102
-
103
- The simple class name, `LuaEntity` in this example, still contains attributes for _all_ subclasses.
104
-
105
99
  ### Events
106
100
 
107
101
  `script.on_event()`, `script.get/set_filters()`, and `script.raise_event()` all have type checking on the event data/filter type, inferred from what is passed as the event name/id.
@@ -120,14 +114,31 @@ Table-or-array types will appear in the Table form when known to be in a read po
120
114
 
121
115
  For some concepts, there is also a special form for when the concept is used in a "read" position, where all table-or-array types are in Table form. These types are suffixed with `Read`, e.g. `ScriptPositionRead`.
122
116
 
117
+
118
+ ### Types with subclasses
119
+
120
+ Some classes have attributes that are documented to only work on particular subclasses. For these classes, e.g. `LuaEntity`, there are specific types that you can _optionally_ use:
121
+
122
+ - a "Base" type, e.g. `BaseEntity`, which only contains members usable by all subclasses
123
+ - individual subclass types, e.g. `CraftingMachineEntity`, which extends the base type with members specific to that subclass
124
+
125
+ The simple class name, `LuaEntity` in this example, contains attributes for _all_ subclasses.
126
+
123
127
  ### LuaGuiElement
124
128
 
125
129
  `LuaGuiElement` is broken up into a [discriminated union](https://basarat.gitbook.io/typescript/type-system/discriminated-unions), with a separate type for each gui element type. Individual gui element types can be referred to by `<Type>GuiElement`, e.g. `ButtonGuiElement`.
126
130
 
127
- Similarly, the table passed to `LuaGuiElement.add`, referred to as `GuiSpec`, is also broken up into a discriminated union for each gui element type. The type for a specific GuiSpec type is `<Type>GuiSpec`, e.g. `ListBoxGuiSpec`. `LuaGuiElement.add` will return the appropriate gui element type corresponding to the gui spec type received.
131
+ Similarly, the table passed to `LuaGuiElement.add`, referred to as `GuiSpec`, is also broken up into a discriminated union. The type for a specific GuiSpec is `<Type>GuiSpec`, e.g. `ListBoxGuiSpec`. `LuaGuiElement.add` will return the appropriate gui element type corresponding to the gui spec type received.
128
132
 
129
133
  This is done both to provide more accurate types, and for possible integration with [JSX](https://typescripttolua.github.io/docs/jsx/).
130
134
 
131
- ### Examples
135
+ ### Strict index types
136
+
137
+ This feature is recommended, but currently is a **opt-in**. To opt in, use `typed-factorio/runtime/strict-index-types` instead of `typed-factorio/runtime` in your `tsconfig.json`.
138
+
139
+ Some `uint` types which represent indices, e.g. player_index, entity_number, are now "branded" numbers with their own type, e.g. `PlayerIndex` and `EntityNumber`. These are assignable to `number`, but `number` is not assignable to them.
140
+ These are indices that do not index into an array-like structure, and otherwise should usually not have arithmetic done to them. So, using a separate type helps ensure correctness.
141
+ You can still use these types as keys in an index signature, e.g. `{ [index: PlayerIndex]: "foo" }`.
142
+ You can cast "plain" numbers to these types, e.g. `2 as PlayerIndex`, only do this with some care.
132
143
 
133
- Check out the `test` directory on GitHub for more examples on particular type features.
144
+ - `player_index` and `surface_index` still allow the numeric constant 1 as a valid index, representing the first player or the default surface, respectively. This is allowed as this is a common enough use case.
@@ -0,0 +1,24 @@
1
+ // This references the same files as "typed-factorio/runtime".
2
+ // For example, if you want to modify a file, copy the file you want to modify to your project and make the changes. Then, copy this template file into your project and remove the line corresponding to modified file.
3
+ // If you think your modification will be useful to others, please consider making a change suggestion by creating an issue on GitHub.
4
+
5
+ // Replace "index-types.d.ts" with "index-types-strict.d.ts" below if you want strict index types.
6
+
7
+ /// <reference types="lua-types/5.2" />
8
+
9
+ // generated
10
+ /// <reference types="typed-factorio/generated/builtin-types.d.ts" />
11
+ /// <reference types="typed-factorio/generated/global-objects.d.ts" />
12
+ /// <reference types="typed-factorio/generated/defines.d.ts" />
13
+ /// <reference types="typed-factorio/generated/events.d.ts" />
14
+ /// <reference types="typed-factorio/generated/classes.d.ts" />
15
+ /// <reference types="typed-factorio/generated/concepts.d.ts" />
16
+ /// <reference types="typed-factorio/generated/index-types.d.ts" />
17
+
18
+ // other runtime
19
+ /// <reference types="typed-factorio/runtime/librariesAndFunctions.d.ts" />
20
+ /// <reference types="typed-factorio/runtime/pairs.d.ts" />
21
+
22
+ // lualib
23
+ /// <reference types="typed-factorio/runtime/util.d.ts" />
24
+ /// <reference types="typed-factorio/runtime/mod-gui.d.ts" />
@@ -300,7 +300,7 @@ interface LuaBootstrap {
300
300
  * @returns The registration number. It is used to identify the entity in the {@link OnEntityDestroyedEvent on_entity_destroyed} event.
301
301
  * @remarks Depending on when a given entity is destroyed, {@link OnEntityDestroyedEvent on_entity_destroyed} will either be fired at the end of the current tick or at the end of the next tick.
302
302
  */
303
- register_on_entity_destroyed(entity: LuaEntity): uint64
303
+ register_on_entity_destroyed(entity: LuaEntity): RegistrationNumber
304
304
  /**
305
305
  * Generate a new, unique event ID that can be used to raise custom events with {@link LuaBootstrap#raise_event LuaBootstrap::raise_event}.
306
306
  *
@@ -392,7 +392,7 @@ interface LuaBootstrap {
392
392
  /**
393
393
  * The player doing the chatting.
394
394
  */
395
- readonly player_index: uint
395
+ readonly player_index: PlayerIndex
396
396
  /**
397
397
  * The chat message to send.
398
398
  */
@@ -413,7 +413,7 @@ interface LuaBootstrap {
413
413
  /**
414
414
  * The player doing the crafting.
415
415
  */
416
- readonly player_index: uint
416
+ readonly player_index: PlayerIndex
417
417
  /**
418
418
  * The recipe used to craft this item.
419
419
  */
@@ -430,7 +430,7 @@ interface LuaBootstrap {
430
430
  /**
431
431
  * The player transferred from or to.
432
432
  */
433
- readonly player_index: uint
433
+ readonly player_index: PlayerIndex
434
434
  /**
435
435
  * The entity transferred from or to.
436
436
  */
@@ -464,7 +464,7 @@ interface LuaBootstrap {
464
464
  /**
465
465
  * The player who did the purchasing.
466
466
  */
467
- readonly player_index: uint
467
+ readonly player_index: PlayerIndex
468
468
  /**
469
469
  * The market entity.
470
470
  */
@@ -532,7 +532,7 @@ interface LuaBootstrap {
532
532
  /**
533
533
  * The surface whose tiles have been changed.
534
534
  */
535
- readonly surface_index: uint
535
+ readonly surface_index: SurfaceIndex
536
536
  /**
537
537
  * The tiles that have been changed.
538
538
  */
@@ -1171,7 +1171,7 @@ interface LuaControl {
1171
1171
  *
1172
1172
  * {@link https://lua-api.factorio.com/latest/LuaControl.html#LuaControl.is_flashlight_enabled View documentation}
1173
1173
  */
1174
- is_flashlight_enabled(): void
1174
+ is_flashlight_enabled(): boolean
1175
1175
  /**
1176
1176
  * Gets the count of the given recipe that can be crafted.
1177
1177
  *
@@ -1938,7 +1938,7 @@ interface LuaCustomInputPrototype {
1938
1938
  help(): string
1939
1939
  }
1940
1940
 
1941
- type CustomTableIndex<K extends string | number, V>
1941
+ type CustomTableIndexer<K extends string | number, V>
1942
1942
  /**
1943
1943
  * Access an element of this custom table.
1944
1944
  *
@@ -1999,7 +1999,7 @@ interface LuaCustomTableMembers {
1999
1999
  * ```
2000
2000
  */
2001
2001
  type LuaCustomTable<K extends string | number, V> = LuaCustomTableMembers &
2002
- CustomTableIndex<K, V> &
2002
+ CustomTableIndexer<K, V> &
2003
2003
  LuaPairsIterable<[number] extends [K] ? number : K, V>
2004
2004
 
2005
2005
  /**
@@ -2467,13 +2467,13 @@ interface LuaEntity extends LuaControl {
2467
2467
  */
2468
2468
  clear_request_slot(slot: uint): void
2469
2469
  /**
2470
- * Returns whether a craft is currently in process. It does not indicate whether progress is currently being made, but whether any crafting action has made progress in this machine.
2470
+ * Returns whether a craft is currently in process. It does not indicate whether progress is currently being made, but whether a crafting process has been started in this machine.
2471
2471
  *
2472
2472
  * _Can only be used if this is CraftingMachine_
2473
2473
  *
2474
2474
  * {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.is_crafting View documentation}
2475
2475
  */
2476
- is_crafting(): void
2476
+ is_crafting(): boolean
2477
2477
  /**
2478
2478
  * _Can only be used if this is Gate_
2479
2479
  *
@@ -3793,7 +3793,7 @@ interface LuaEntity extends LuaControl {
3793
3793
  *
3794
3794
  * {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.unit_number View documentation}
3795
3795
  */
3796
- readonly unit_number: uint | undefined
3796
+ readonly unit_number: UnitNumber | undefined
3797
3797
  /**
3798
3798
  * The {@link LuaEntity#unit_number unit_number} of the entity contained in this ghost. It is the same as the unit number of the {@link https://wiki.factorio.com/Prototype/EntityWithOwner EntityWithOwner} that was destroyed to create this ghost. If it was created by other means, or if the inner entity doesn not support unit numbers, this property is `nil`.
3799
3799
  *
@@ -3801,7 +3801,7 @@ interface LuaEntity extends LuaControl {
3801
3801
  *
3802
3802
  * {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.ghost_unit_number View documentation}
3803
3803
  */
3804
- readonly ghost_unit_number: uint | undefined
3804
+ readonly ghost_unit_number: UnitNumber | undefined
3805
3805
  /**
3806
3806
  * The mining progress for this mining drill or `nil` if this isn't a mining drill. Is a number in range [0, mining_target.prototype.mineable_properties.mining_time]
3807
3807
  *
@@ -5355,7 +5355,7 @@ interface BaseEntity extends LuaControl {
5355
5355
  *
5356
5356
  * {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.unit_number View documentation}
5357
5357
  */
5358
- readonly unit_number: uint | undefined
5358
+ readonly unit_number: UnitNumber | undefined
5359
5359
  /**
5360
5360
  * The mining progress for this mining drill or `nil` if this isn't a mining drill. Is a number in range [0, mining_target.prototype.mineable_properties.mining_time]
5361
5361
  *
@@ -5772,7 +5772,7 @@ interface EntityGhostEntity extends BaseEntity {
5772
5772
  *
5773
5773
  * {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.ghost_unit_number View documentation}
5774
5774
  */
5775
- readonly ghost_unit_number: uint | undefined
5775
+ readonly ghost_unit_number: UnitNumber | undefined
5776
5776
  }
5777
5777
 
5778
5778
  /**
@@ -5831,13 +5831,13 @@ interface MarketEntity extends BaseEntity {
5831
5831
  */
5832
5832
  interface CraftingMachineEntity extends BaseEntity {
5833
5833
  /**
5834
- * Returns whether a craft is currently in process. It does not indicate whether progress is currently being made, but whether any crafting action has made progress in this machine.
5834
+ * Returns whether a craft is currently in process. It does not indicate whether progress is currently being made, but whether a crafting process has been started in this machine.
5835
5835
  *
5836
5836
  * _Can only be used if this is CraftingMachine_
5837
5837
  *
5838
5838
  * {@link https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.is_crafting View documentation}
5839
5839
  */
5840
- is_crafting(): void
5840
+ is_crafting(): boolean
5841
5841
  /**
5842
5842
  * Current recipe being assembled by this machine or `nil` if no recipe is set.
5843
5843
  *
@@ -11954,7 +11954,7 @@ interface LuaGameScript {
11954
11954
  * @param player The player index or name.
11955
11955
  * @remarks This is a shortcut for game.players[...]
11956
11956
  */
11957
- get_player(player: uint | string): LuaPlayer | undefined
11957
+ get_player(index: PlayerIndex | string): LuaPlayer | undefined
11958
11958
  /**
11959
11959
  * Gets the given surface or returns `nil` if no surface is found.
11960
11960
  *
@@ -11962,7 +11962,7 @@ interface LuaGameScript {
11962
11962
  * @param surface The surface index or name.
11963
11963
  * @remarks This is a shortcut for game.surfaces[...]
11964
11964
  */
11965
- get_surface(surface: uint | string): LuaSurface | undefined
11965
+ get_surface(index: SurfaceIndex | string): LuaSurface | undefined
11966
11966
  /**
11967
11967
  * Creates a {@link LuaProfiler}, which is used for measuring script performance.
11968
11968
  *
@@ -12155,7 +12155,7 @@ interface LuaGameScript {
12155
12155
  *
12156
12156
  * {@link https://lua-api.factorio.com/latest/LuaGameScript.html#LuaGameScript.players View documentation}
12157
12157
  */
12158
- readonly players: LuaCustomTable<uint | string, LuaPlayer>
12158
+ readonly players: LuaCustomTable<PlayerIndex | string, LuaPlayer>
12159
12159
  /**
12160
12160
  * The currently active set of map settings. Even though this property is marked as read-only, the members of the dictionary that is returned can be modified mid-game.
12161
12161
  *
@@ -12422,7 +12422,7 @@ interface LuaGameScript {
12422
12422
  *
12423
12423
  * {@link https://lua-api.factorio.com/latest/LuaGameScript.html#LuaGameScript.surfaces View documentation}
12424
12424
  */
12425
- readonly surfaces: LuaCustomTable<uint | string, LuaSurface>
12425
+ readonly surfaces: LuaCustomTable<SurfaceIndex | string, LuaSurface>
12426
12426
  /**
12427
12427
  * The active mods versions. The keys are mod names, the values are the versions.
12428
12428
  *
@@ -12966,7 +12966,7 @@ interface CameraGuiSpec extends BaseGuiSpec {
12966
12966
  /**
12967
12967
  * The surface that the camera will render. Defaults to the player's current surface.
12968
12968
  */
12969
- readonly surface_index?: uint
12969
+ readonly surface_index?: SurfaceIndex
12970
12970
  /**
12971
12971
  * The initial camera zoom. Defaults to `0.75`.
12972
12972
  */
@@ -13136,7 +13136,7 @@ interface MinimapGuiSpec extends BaseGuiSpec {
13136
13136
  /**
13137
13137
  * The surface the camera will render. Defaults to the player's current surface.
13138
13138
  */
13139
- readonly surface_index?: uint
13139
+ readonly surface_index?: SurfaceIndex
13140
13140
  /**
13141
13141
  * The player index the map should use. Defaults to the current player.
13142
13142
  */
@@ -13218,7 +13218,7 @@ type GuiSpec =
13218
13218
  | TabbedPaneGuiSpec
13219
13219
  | LabelGuiSpec
13220
13220
 
13221
- interface GuiElementIndex {
13221
+ interface GuiElementIndexer {
13222
13222
  /**
13223
13223
  * The indexing operator. Gets children by name.
13224
13224
  *
@@ -13312,7 +13312,7 @@ interface BaseGuiElement {
13312
13312
  *
13313
13313
  * {@link https://lua-api.factorio.com/latest/LuaGuiElement.html#LuaGuiElement.index View documentation}
13314
13314
  */
13315
- readonly index: uint
13315
+ readonly index: GuiElementIndex
13316
13316
  /**
13317
13317
  * The GUI this element is a child of.
13318
13318
  *
@@ -13367,7 +13367,7 @@ interface BaseGuiElement {
13367
13367
  *
13368
13368
  * {@link https://lua-api.factorio.com/latest/LuaGuiElement.html#LuaGuiElement.player_index View documentation}
13369
13369
  */
13370
- readonly player_index: uint
13370
+ readonly player_index: PlayerIndex
13371
13371
  tooltip: LocalisedString
13372
13372
  /**
13373
13373
  * The type of this GUI element.
@@ -13497,7 +13497,7 @@ interface ChooseElemButtonGuiElementMembers extends BaseGuiElement {
13497
13497
  locked: boolean
13498
13498
  }
13499
13499
 
13500
- type ChooseElemButtonGuiElement = ChooseElemButtonGuiElementMembers & GuiElementIndex
13500
+ type ChooseElemButtonGuiElement = ChooseElemButtonGuiElementMembers & GuiElementIndexer
13501
13501
 
13502
13502
  /**
13503
13503
  * @noSelf
@@ -13559,7 +13559,7 @@ interface DropDownGuiElementMembers extends BaseGuiElement {
13559
13559
  selected_index: uint
13560
13560
  }
13561
13561
 
13562
- type DropDownGuiElement = DropDownGuiElementMembers & GuiElementIndex
13562
+ type DropDownGuiElement = DropDownGuiElementMembers & GuiElementIndexer
13563
13563
 
13564
13564
  interface EmptyWidgetGuiElementMembers extends BaseGuiElement {
13565
13565
  /**
@@ -13587,7 +13587,7 @@ interface EmptyWidgetGuiElementMembers extends BaseGuiElement {
13587
13587
  drag_target: LuaGuiElement | undefined
13588
13588
  }
13589
13589
 
13590
- type EmptyWidgetGuiElement = EmptyWidgetGuiElementMembers & GuiElementIndex
13590
+ type EmptyWidgetGuiElement = EmptyWidgetGuiElementMembers & GuiElementIndexer
13591
13591
 
13592
13592
  interface EntityPreviewGuiElementMembers extends BaseGuiElement {
13593
13593
  /**
@@ -13604,7 +13604,7 @@ interface EntityPreviewGuiElementMembers extends BaseGuiElement {
13604
13604
  entity: LuaEntity | undefined
13605
13605
  }
13606
13606
 
13607
- type EntityPreviewGuiElement = EntityPreviewGuiElementMembers & GuiElementIndex
13607
+ type EntityPreviewGuiElement = EntityPreviewGuiElementMembers & GuiElementIndexer
13608
13608
 
13609
13609
  /**
13610
13610
  * @noSelf
@@ -13676,7 +13676,7 @@ interface ListBoxGuiElementMembers extends BaseGuiElement {
13676
13676
  selected_index: uint
13677
13677
  }
13678
13678
 
13679
- type ListBoxGuiElement = ListBoxGuiElementMembers & GuiElementIndex
13679
+ type ListBoxGuiElement = ListBoxGuiElementMembers & GuiElementIndexer
13680
13680
 
13681
13681
  /**
13682
13682
  * @noSelf
@@ -13748,7 +13748,7 @@ interface ScrollPaneGuiElementMembers extends BaseGuiElement {
13748
13748
  vertical_scroll_policy: "auto" | "never" | "always" | "auto-and-reserve-space" | "dont-show-but-allow-scrolling"
13749
13749
  }
13750
13750
 
13751
- type ScrollPaneGuiElement = ScrollPaneGuiElementMembers & GuiElementIndex
13751
+ type ScrollPaneGuiElement = ScrollPaneGuiElementMembers & GuiElementIndexer
13752
13752
 
13753
13753
  interface SpriteButtonGuiElementMembers extends BaseGuiElement {
13754
13754
  /**
@@ -13798,7 +13798,7 @@ interface SpriteButtonGuiElementMembers extends BaseGuiElement {
13798
13798
  set mouse_button_filter(value: MouseButtonFlags)
13799
13799
  }
13800
13800
 
13801
- type SpriteButtonGuiElement = SpriteButtonGuiElementMembers & GuiElementIndex
13801
+ type SpriteButtonGuiElement = SpriteButtonGuiElementMembers & GuiElementIndexer
13802
13802
 
13803
13803
  /**
13804
13804
  * @noSelf
@@ -13846,7 +13846,7 @@ interface TabbedPaneGuiElementMembers extends BaseGuiElement {
13846
13846
  readonly tabs: TabAndContent[]
13847
13847
  }
13848
13848
 
13849
- type TabbedPaneGuiElement = TabbedPaneGuiElementMembers & GuiElementIndex
13849
+ type TabbedPaneGuiElement = TabbedPaneGuiElementMembers & GuiElementIndexer
13850
13850
 
13851
13851
  /**
13852
13852
  * @noSelf
@@ -13960,7 +13960,7 @@ interface TextBoxGuiElementMembers extends BaseGuiElement {
13960
13960
  clear_and_focus_on_right_click: boolean
13961
13961
  }
13962
13962
 
13963
- type TextBoxGuiElement = TextBoxGuiElementMembers & GuiElementIndex
13963
+ type TextBoxGuiElement = TextBoxGuiElementMembers & GuiElementIndexer
13964
13964
 
13965
13965
  interface ButtonGuiElementMembers extends BaseGuiElement {
13966
13966
  /**
@@ -13978,7 +13978,7 @@ interface ButtonGuiElementMembers extends BaseGuiElement {
13978
13978
  set mouse_button_filter(value: MouseButtonFlags)
13979
13979
  }
13980
13980
 
13981
- type ButtonGuiElement = ButtonGuiElementMembers & GuiElementIndex
13981
+ type ButtonGuiElement = ButtonGuiElementMembers & GuiElementIndexer
13982
13982
 
13983
13983
  interface CameraGuiElementMembers extends BaseGuiElement {
13984
13984
  /**
@@ -13999,7 +13999,7 @@ interface CameraGuiElementMembers extends BaseGuiElement {
13999
13999
  *
14000
14000
  * {@link https://lua-api.factorio.com/latest/LuaGuiElement.html#LuaGuiElement.surface_index View documentation}
14001
14001
  */
14002
- surface_index: uint
14002
+ surface_index: SurfaceIndex
14003
14003
  /**
14004
14004
  * The zoom this camera or minimap is using.
14005
14005
  *
@@ -14014,7 +14014,7 @@ interface CameraGuiElementMembers extends BaseGuiElement {
14014
14014
  entity: LuaEntity | undefined
14015
14015
  }
14016
14016
 
14017
- type CameraGuiElement = CameraGuiElementMembers & GuiElementIndex
14017
+ type CameraGuiElement = CameraGuiElementMembers & GuiElementIndexer
14018
14018
 
14019
14019
  interface CheckboxGuiElementMembers extends BaseGuiElement {
14020
14020
  /**
@@ -14033,7 +14033,7 @@ interface CheckboxGuiElementMembers extends BaseGuiElement {
14033
14033
  state: boolean
14034
14034
  }
14035
14035
 
14036
- type CheckboxGuiElement = CheckboxGuiElementMembers & GuiElementIndex
14036
+ type CheckboxGuiElement = CheckboxGuiElementMembers & GuiElementIndexer
14037
14037
 
14038
14038
  interface FlowGuiElementMembers extends BaseGuiElement {
14039
14039
  /**
@@ -14069,7 +14069,7 @@ interface FlowGuiElementMembers extends BaseGuiElement {
14069
14069
  drag_target: LuaGuiElement | undefined
14070
14070
  }
14071
14071
 
14072
- type FlowGuiElement = FlowGuiElementMembers & GuiElementIndex
14072
+ type FlowGuiElement = FlowGuiElementMembers & GuiElementIndexer
14073
14073
 
14074
14074
  /**
14075
14075
  * @noSelf
@@ -14127,7 +14127,7 @@ interface FrameGuiElementMembers extends BaseGuiElement {
14127
14127
  drag_target: LuaGuiElement | undefined
14128
14128
  }
14129
14129
 
14130
- type FrameGuiElement = FrameGuiElementMembers & GuiElementIndex
14130
+ type FrameGuiElement = FrameGuiElementMembers & GuiElementIndexer
14131
14131
 
14132
14132
  interface LabelGuiElementMembers extends BaseGuiElement {
14133
14133
  /**
@@ -14155,7 +14155,7 @@ interface LabelGuiElementMembers extends BaseGuiElement {
14155
14155
  drag_target: LuaGuiElement | undefined
14156
14156
  }
14157
14157
 
14158
- type LabelGuiElement = LabelGuiElementMembers & GuiElementIndex
14158
+ type LabelGuiElement = LabelGuiElementMembers & GuiElementIndexer
14159
14159
 
14160
14160
  interface LineGuiElementMembers extends BaseGuiElement {
14161
14161
  /**
@@ -14174,7 +14174,7 @@ interface LineGuiElementMembers extends BaseGuiElement {
14174
14174
  readonly direction: "horizontal" | "vertical"
14175
14175
  }
14176
14176
 
14177
- type LineGuiElement = LineGuiElementMembers & GuiElementIndex
14177
+ type LineGuiElement = LineGuiElementMembers & GuiElementIndexer
14178
14178
 
14179
14179
  interface MinimapGuiElementMembers extends BaseGuiElement {
14180
14180
  /**
@@ -14195,7 +14195,7 @@ interface MinimapGuiElementMembers extends BaseGuiElement {
14195
14195
  *
14196
14196
  * {@link https://lua-api.factorio.com/latest/LuaGuiElement.html#LuaGuiElement.surface_index View documentation}
14197
14197
  */
14198
- surface_index: uint
14198
+ surface_index: SurfaceIndex
14199
14199
  /**
14200
14200
  * The zoom this camera or minimap is using.
14201
14201
  *
@@ -14224,7 +14224,7 @@ interface MinimapGuiElementMembers extends BaseGuiElement {
14224
14224
  entity: LuaEntity | undefined
14225
14225
  }
14226
14226
 
14227
- type MinimapGuiElement = MinimapGuiElementMembers & GuiElementIndex
14227
+ type MinimapGuiElement = MinimapGuiElementMembers & GuiElementIndexer
14228
14228
 
14229
14229
  interface ProgressBarGuiElementMembers extends BaseGuiElement {
14230
14230
  /**
@@ -14243,7 +14243,7 @@ interface ProgressBarGuiElementMembers extends BaseGuiElement {
14243
14243
  value: double
14244
14244
  }
14245
14245
 
14246
- type ProgressBarGuiElement = ProgressBarGuiElementMembers & GuiElementIndex
14246
+ type ProgressBarGuiElement = ProgressBarGuiElementMembers & GuiElementIndexer
14247
14247
 
14248
14248
  interface RadioButtonGuiElementMembers extends BaseGuiElement {
14249
14249
  /**
@@ -14262,7 +14262,7 @@ interface RadioButtonGuiElementMembers extends BaseGuiElement {
14262
14262
  state: boolean
14263
14263
  }
14264
14264
 
14265
- type RadioButtonGuiElement = RadioButtonGuiElementMembers & GuiElementIndex
14265
+ type RadioButtonGuiElement = RadioButtonGuiElementMembers & GuiElementIndexer
14266
14266
 
14267
14267
  /**
14268
14268
  * @noSelf
@@ -14340,7 +14340,7 @@ interface SliderGuiElementMembers extends BaseGuiElement {
14340
14340
  slider_value: double
14341
14341
  }
14342
14342
 
14343
- type SliderGuiElement = SliderGuiElementMembers & GuiElementIndex
14343
+ type SliderGuiElement = SliderGuiElementMembers & GuiElementIndexer
14344
14344
 
14345
14345
  interface SpriteGuiElementMembers extends BaseGuiElement {
14346
14346
  /**
@@ -14363,7 +14363,7 @@ interface SpriteGuiElementMembers extends BaseGuiElement {
14363
14363
  resize_to_sprite: boolean
14364
14364
  }
14365
14365
 
14366
- type SpriteGuiElement = SpriteGuiElementMembers & GuiElementIndex
14366
+ type SpriteGuiElement = SpriteGuiElementMembers & GuiElementIndexer
14367
14367
 
14368
14368
  interface SwitchGuiElementMembers extends BaseGuiElement {
14369
14369
  /**
@@ -14424,7 +14424,7 @@ interface SwitchGuiElementMembers extends BaseGuiElement {
14424
14424
  right_label_tooltip: LocalisedString
14425
14425
  }
14426
14426
 
14427
- type SwitchGuiElement = SwitchGuiElementMembers & GuiElementIndex
14427
+ type SwitchGuiElement = SwitchGuiElementMembers & GuiElementIndexer
14428
14428
 
14429
14429
  interface TabGuiElementMembers extends BaseGuiElement {
14430
14430
  /**
@@ -14443,7 +14443,7 @@ interface TabGuiElementMembers extends BaseGuiElement {
14443
14443
  badge_text: LocalisedString
14444
14444
  }
14445
14445
 
14446
- type TabGuiElement = TabGuiElementMembers & GuiElementIndex
14446
+ type TabGuiElement = TabGuiElementMembers & GuiElementIndexer
14447
14447
 
14448
14448
  interface TableGuiElementMembers extends BaseGuiElement {
14449
14449
  /**
@@ -14511,7 +14511,7 @@ interface TableGuiElementMembers extends BaseGuiElement {
14511
14511
  drag_target: LuaGuiElement | undefined
14512
14512
  }
14513
14513
 
14514
- type TableGuiElement = TableGuiElementMembers & GuiElementIndex
14514
+ type TableGuiElement = TableGuiElementMembers & GuiElementIndexer
14515
14515
 
14516
14516
  /**
14517
14517
  * @noSelf
@@ -14609,7 +14609,7 @@ interface TextFieldGuiElementMembers extends BaseGuiElement {
14609
14609
  clear_and_focus_on_right_click: boolean
14610
14610
  }
14611
14611
 
14612
- type TextFieldGuiElement = TextFieldGuiElementMembers & GuiElementIndex
14612
+ type TextFieldGuiElement = TextFieldGuiElementMembers & GuiElementIndexer
14613
14613
 
14614
14614
  type GuiElementMembers =
14615
14615
  | ChooseElemButtonGuiElementMembers
@@ -14691,7 +14691,7 @@ type GuiElementMembers =
14691
14691
  * tabbed_pane.add_tab(tab2, label2)
14692
14692
  * ```
14693
14693
  */
14694
- type LuaGuiElement = GuiElementMembers & GuiElementIndex
14694
+ type LuaGuiElement = GuiElementMembers & GuiElementIndexer
14695
14695
 
14696
14696
  /**
14697
14697
  * Prototype of a heat energy source.
@@ -19309,7 +19309,7 @@ interface LuaPlayer extends LuaControl {
19309
19309
  *
19310
19310
  * {@link https://lua-api.factorio.com/latest/LuaPlayer.html#LuaPlayer.index View documentation}
19311
19311
  */
19312
- readonly index: uint
19312
+ readonly index: PlayerIndex
19313
19313
  readonly gui: LuaGui
19314
19314
  /**
19315
19315
  * `true` if the player opened itself. I.e. if they opened the character or god-controller GUI.
@@ -22804,7 +22804,7 @@ interface ProgrammableSpeakerSurfaceCreateEntity extends BaseSurfaceCreateEntity
22804
22804
 
22805
22805
  interface CharacterCorpseSurfaceCreateEntity extends BaseSurfaceCreateEntity {
22806
22806
  readonly inventory_size?: uint
22807
- readonly player_index?: uint
22807
+ readonly player_index?: PlayerIndex
22808
22808
  }
22809
22809
 
22810
22810
  interface HighlightBoxSurfaceCreateEntity extends BaseSurfaceCreateEntity {
@@ -23855,7 +23855,7 @@ interface LuaSurface {
23855
23855
  */
23856
23856
  clear(ignore_characters?: boolean): void
23857
23857
  /**
23858
- * Generates a path with the specified constraints (as an array of {@link PathfinderWaypoint PathfinderWaypoints}) using the unit pathfinding algorithm. This path can be used to emulate pathing behavior by script for non-unit entities. If you want to command actual units to move, use the {@link LuaEntity#set_command LuaEntity::set_command} functionality instead.
23858
+ * Generates a path with the specified constraints (as an array of {@link PathfinderWaypoint PathfinderWaypoints}) using the unit pathfinding algorithm. This path can be used to emulate pathing behavior by script for non-unit entities, such as vehicles. If you want to command actual units (such as biters or spitters) to move, use {@link LuaEntity#set_command LuaEntity::set_command} instead.
23859
23859
  *
23860
23860
  * The resulting path is ultimately returned asynchronously via {@link OnScriptPathRequestFinishedEvent on_script_path_request_finished}.
23861
23861
  *
@@ -24071,7 +24071,7 @@ interface LuaSurface {
24071
24071
  *
24072
24072
  * {@link https://lua-api.factorio.com/latest/LuaSurface.html#LuaSurface.index View documentation}
24073
24073
  */
24074
- readonly index: uint
24074
+ readonly index: SurfaceIndex
24075
24075
  /**
24076
24076
  * The generation settings for this surface. These can be modified to after surface generation, but note that this will not retroactively update the surface. To manually adjust it, {@link LuaSurface#regenerate_entity LuaSurface::regenerate_entity}, {@link LuaSurface#regenerate_decorative LuaSurface::regenerate_decorative} and {@link LuaSurface#delete_chunk LuaSurface::delete_chunk} can be used.
24077
24077
  *