typed-factorio 2.14.0 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -28,7 +28,7 @@ Example:
28
28
  ```
29
29
 
30
30
  The stages used will select the global variables defined.
31
- You can include multiple stages, but there are some caveats. See [Using multiple stages in the same project](#using-multiple-stages-in-the-same-project) for more info.
31
+ You can include multiple stages, but there are some caveats. See [Using multiple stages in the same project](#using-multiple-loading-stages-in-the-same-project) for more info.
32
32
 
33
33
  ## Usage notes
34
34
 
@@ -107,14 +107,15 @@ const foo = util.copy(bar)
107
107
 
108
108
  If you wish to see types for more lualib modules, feel free to open an issue or pull request.
109
109
 
110
- ### The `global` table
110
+ ### The `storage` table
111
111
 
112
- The `global` table (in the runtime stage) can have any shape, so it is not defined here. Instead, you can define it yourself:
112
+ The `storage` table (in the runtime stage) can have any shape, so it is not defined here. Instead, you can define it yourself:
113
113
 
114
- - Add `declare const global: <Your type>` in a `.d.ts` file included in your project, to apply it project-wide.
115
- - Add `declare const global: {...}` to each file where needed. This way, you can define only properties that each file specifically uses.
114
+ - Add `declare const storage: <Your type>` in a `.d.ts` file. Make sure this file is included by your tsconfig!
115
+ - Add `declare global { const storage: <Your type> }` in a `.ts` file included in your project.
116
+ - Add `declare const storage: {...}` to each file where needed. This way, you can define only properties that each file specifically uses.
116
117
 
117
- ## Using multiple stages in the same project
118
+ ## Using multiple loading stages in the same project
118
119
 
119
120
  Every Factorio loading stage declares different global variables.
120
121
  To add types for multiple Factorio stages, you have a few options:
@@ -123,17 +124,19 @@ To add types for multiple Factorio stages, you have a few options:
123
124
  2. Add _only_ the runtime stage, then manually declare other global variables in files that use them. There are types in `"factorio:common"` to allow this:
124
125
  ```ts
125
126
  // -- For the prototype stage --
126
- import { PrototypeData, ActiveMods } from "factorio:common"
127
+ import { PrototypeData, ActiveMods, FeatureFlags } from "factorio:common"
127
128
  declare const data: PrototypeData
128
129
  declare const mods: ActiveMods
130
+ declare const feature_flags: FeatureFlags
129
131
  // The `settings` global variable is already declared in the runtime stage.
130
132
  // However, in the prototype stage _only_ `settings.startup` are available.
131
133
  ```
132
134
  ```ts
133
135
  // -- For the settings stage --
134
- import { SettingsData, ActiveMods } from "factorio:common"
136
+ import { SettingsData, ActiveMods, FeatureFlags } from "factorio:common"
135
137
  declare const data: SettingsData
136
138
  declare const mods: ActiveMods
139
+ declare const feature_flags: FeatureFlags
137
140
  ```
138
141
  3. Use a separate `tsconfig.json` for each stage. In each `tsconfig.json`, add only files in that stage to the `"include"` field, e.g. `include: ["src/control.ts"]` for the runtime stage. However, this means you need to run `tstl` separately for each stage, and files shared by multiple stages will be compiled multiple times.
139
142
 
@@ -13,3 +13,11 @@ declare const data: import("factorio:common").DataGlobal
13
13
  * In the runtime stage, use `script.active_mods`.
14
14
  */
15
15
  declare const mods: import("factorio:common").ActiveMods
16
+
17
+ /**
18
+ * A dict of feature flags and their status.
19
+ *
20
+ * This global is only available in the settings or prototype stage.
21
+ * In the runtime stage, use `script.feature_flags`.
22
+ */
23
+ declare const feature_flags: import("factorio:common").FeatureFlags
package/common/types.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /** @noResolution */
2
2
  declare module "factorio:common" {
3
- import { ModSetting } from "factorio:runtime"
3
+ import { ModSetting, LuaBootstrap } from "factorio:runtime"
4
4
  import { Data } from "factorio:prototype"
5
5
  import { SettingsPrototypeMap } from "factorio:settings"
6
6
  /**
@@ -48,6 +48,8 @@ declare module "factorio:common" {
48
48
  readonly [modName: string]: VersionString | undefined
49
49
  }
50
50
 
51
+ export type FeatureFlags = LuaBootstrap["feature_flags"]
52
+
51
53
  /**
52
54
  * Represents the `data` global variable for the prototype stage.
53
55
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typed-factorio",
3
- "version": "2.14.0",
3
+ "version": "3.0.1",
4
4
  "description": "Featureful typescript definitions for the Factorio modding api.",
5
5
  "keywords": [
6
6
  "factorio",
@@ -46,7 +46,6 @@
46
46
  "@types/node": "^20.11.29",
47
47
  "@typescript-eslint/eslint-plugin": "^7.3.0",
48
48
  "@typescript-eslint/parser": "^7.3.0",
49
- "chalk": "^5.3.0",
50
49
  "download": "^8.0.0",
51
50
  "eslint": "^8.57.0",
52
51
  "eslint-config-prettier": "^9.1.0",