typed-factorio 2.8.0 → 2.10.1
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.
- package/README.md +33 -27
- package/package.json +2 -2
- package/prototype/generated/prototypes.d.ts +1791 -1771
- package/prototype/generated/types.d.ts +1558 -1495
- package/runtime/generated/builtin-types.d.ts +12 -12
- package/runtime/generated/classes.d.ts +3843 -3599
- package/runtime/generated/concepts.d.ts +207 -203
- package/runtime/generated/defines.d.ts +123 -123
- package/runtime/generated/events.d.ts +185 -185
- package/runtime/generated/global-functions.d.ts +3 -3
- package/runtime/generated/global-objects.d.ts +6 -6
- package/settings/types.d.ts +11 -6
package/README.md
CHANGED
@@ -10,7 +10,8 @@ The generator uses both the Factorio api docs JSON and manually defined addition
|
|
10
10
|
To use in your [TypescriptToLua](https://typescripttolua.github.io/) project:
|
11
11
|
|
12
12
|
1. Install this package: `npm install typed-factorio`
|
13
|
-
|
13
|
+
|
14
|
+
- Note: When types are updated for a new factorio version, you will need to update this package.
|
14
15
|
|
15
16
|
2. Add types for the [stages](https://lua-api.factorio.com/1.1.89/index.html) used to `tsconfig.json > compilerOptions > types`.
|
16
17
|
The available stages are `"typed-factorio/settings"`, `"typed-factorio/prototype"`, and `"typed-factorio/runtime"`.
|
@@ -35,7 +36,8 @@ Here are some notes on using the types:
|
|
35
36
|
|
36
37
|
### Types for other stages
|
37
38
|
|
38
|
-
No matter which stage(s) are selected, _type_ definitions for all stages are available in the modules `"factorio:settings"`, `"factorio:prototype"`, and `"factorio:runtime"`:
|
39
|
+
No matter which stage(s) are selected, _type_ definitions for all stages are available in the modules `"factorio:settings"`, `"factorio:prototype"`, and `"factorio:runtime"`:
|
40
|
+
|
39
41
|
```ts
|
40
42
|
import { BoolSettingDefinition } from "factorio:settings"
|
41
43
|
import { ItemPrototype } from "factorio:prototype"
|
@@ -45,40 +47,46 @@ import { LuaEntity } from "factorio:runtime"
|
|
45
47
|
You can also include just `"typed-factorio"` in your `types` field. This will include only global variables available to _all_ stages.
|
46
48
|
|
47
49
|
### `data.extend()` types
|
48
|
-
|
50
|
+
|
51
|
+
In the settings and prototype stages, the `data` global variable is available.
|
49
52
|
|
50
53
|
For [performance reasons](https://github.com/microsoft/TypeScript/wiki/Performance#preferring-base-types-over-unions), `data.extend()` is by default loosely typed.
|
51
54
|
To get full type checking, you can use specific types in one of the following ways:
|
55
|
+
|
52
56
|
```ts
|
53
57
|
// Use `satisfies` to check types:
|
54
58
|
data.extend([
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
59
|
+
{
|
60
|
+
type: "ammo-category",
|
61
|
+
name: "foo",
|
62
|
+
} satisfies AmmoCategory,
|
63
|
+
{
|
64
|
+
type: "item",
|
65
|
+
name: "bar",
|
66
|
+
// ...other fields
|
67
|
+
} satisfies ItemPrototype,
|
64
68
|
])
|
65
69
|
|
66
70
|
// List types as a type argument to `extend`:
|
67
71
|
data.extend<AmmoCategory | ItemPrototype>([
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
72
|
+
{
|
73
|
+
type: "ammo-category",
|
74
|
+
name: "foo",
|
75
|
+
},
|
76
|
+
{
|
77
|
+
type: "item",
|
78
|
+
name: "bar",
|
79
|
+
// ...other fields
|
80
|
+
},
|
77
81
|
])
|
78
82
|
|
79
83
|
// Use types on separate variables:
|
80
|
-
const fooCategory: AmmoCategory = {
|
81
|
-
|
84
|
+
const fooCategory: AmmoCategory = {
|
85
|
+
/* ... */
|
86
|
+
}
|
87
|
+
const barItem: ItemPrototype = {
|
88
|
+
/* ... */
|
89
|
+
}
|
82
90
|
data.extend([fooCategory, barItem])
|
83
91
|
```
|
84
92
|
|
@@ -149,6 +157,7 @@ Event IDs (`defines.events`) hold type info for their corresponding event type a
|
|
149
157
|
You can pass an event data type parameter to `script.generate_event_name<T>()`, and it will return a `CustomEventId` that includes type info.
|
150
158
|
|
151
159
|
### Optional custominput name checking
|
160
|
+
|
152
161
|
You can optionally enable type-checking for custom input names (for `script.on_event` and `CustomInputPrototype`).
|
153
162
|
To do so, specify names by extending the CustomInputNames interface like so:
|
154
163
|
|
@@ -159,7 +168,7 @@ declare module "factorio:common" {
|
|
159
168
|
}
|
160
169
|
}
|
161
170
|
|
162
|
-
script.on_event("my-custom-input", ()=>{}) // type-checked
|
171
|
+
script.on_event("my-custom-input", () => {}) // type-checked
|
163
172
|
```
|
164
173
|
|
165
174
|
If not specified, `CustomInputName` defaults to just `string`.
|
@@ -201,11 +210,8 @@ Similarly, `GuiSpec` (the table passed to `LuaGuiElement.add`), is also a discri
|
|
201
210
|
|
202
211
|
This is done both to provide more accurate types, and for possible integration with [JSX](https://typescripttolua.github.io/docs/jsx/).
|
203
212
|
|
204
|
-
|
205
213
|
## Support
|
206
214
|
|
207
215
|
If you find this project useful, consider tipping me on Kofi!
|
208
216
|
|
209
217
|
<a href='https://ko-fi.com/Z8Z1VI6P8' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://storage.ko-fi.com/cdn/kofi2.png?v=3' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>
|
210
|
-
|
211
|
-
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "typed-factorio",
|
3
|
-
"version": "2.
|
3
|
+
"version": "2.10.1",
|
4
4
|
"description": "Featureful typescript definitions for the Factorio modding api.",
|
5
5
|
"keywords": [
|
6
6
|
"factorio",
|
@@ -26,7 +26,7 @@
|
|
26
26
|
"generate-no-format": "tsx --tsconfig generator/tsconfig.json generator/main.ts --no-format",
|
27
27
|
"clean": "rimraf runtime/generated prototype/generated",
|
28
28
|
"lint": "eslint .",
|
29
|
-
"check": "tsc --noEmit && npm run lint",
|
29
|
+
"check": "tsc --noEmit && npm run lint && prettier --check .",
|
30
30
|
"prepublishOnly": "npm run generate && npm run check",
|
31
31
|
"script": "tsx --tsconfig scripts/tsconfig.json",
|
32
32
|
"download-latest-json-apis": "npm run script ./scripts/download-latest.ts",
|