@defold-typescript/types 0.38.0 → 0.39.0

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 (80) hide show
  1. package/api-signatures.json +336 -255
  2. package/examples/translations.json +323 -147
  3. package/generated/b2d_body.d.ts +7 -4
  4. package/generated/buffer.d.ts +16 -4
  5. package/generated/camera.d.ts +1 -0
  6. package/generated/collectionfactory.d.ts +5 -2
  7. package/generated/collectionproxy.d.ts +1 -1
  8. package/generated/factory.d.ts +2 -1
  9. package/generated/go.d.ts +141 -86
  10. package/generated/graphics.d.ts +2 -0
  11. package/generated/gui.d.ts +65 -40
  12. package/generated/html5.d.ts +1 -1
  13. package/generated/http.d.ts +4 -0
  14. package/generated/model.d.ts +9 -4
  15. package/generated/particlefx.d.ts +1 -1
  16. package/generated/physics.d.ts +16 -9
  17. package/generated/profiler.d.ts +9 -2
  18. package/generated/render.d.ts +224 -99
  19. package/generated/resource.d.ts +143 -157
  20. package/generated/socket.d.ts +13 -8
  21. package/generated/sound.d.ts +3 -2
  22. package/generated/sys.d.ts +16 -10
  23. package/generated/tilemap.d.ts +25 -19
  24. package/generated/timer.d.ts +33 -24
  25. package/generated/versions/defold-1.12.4/buffer.d.ts +16 -4
  26. package/generated/versions/defold-1.12.4/camera.d.ts +1 -0
  27. package/generated/versions/defold-1.12.4/collectionfactory.d.ts +5 -2
  28. package/generated/versions/defold-1.12.4/collectionproxy.d.ts +1 -1
  29. package/generated/versions/defold-1.12.4/factory.d.ts +2 -1
  30. package/generated/versions/defold-1.12.4/go.d.ts +141 -86
  31. package/generated/versions/defold-1.12.4/graphics.d.ts +2 -0
  32. package/generated/versions/defold-1.12.4/gui.d.ts +63 -39
  33. package/generated/versions/defold-1.12.4/html5.d.ts +1 -1
  34. package/generated/versions/defold-1.12.4/http.d.ts +4 -0
  35. package/generated/versions/defold-1.12.4/model.d.ts +9 -4
  36. package/generated/versions/defold-1.12.4/particlefx.d.ts +1 -1
  37. package/generated/versions/defold-1.12.4/physics.d.ts +16 -9
  38. package/generated/versions/defold-1.12.4/profiler.d.ts +9 -2
  39. package/generated/versions/defold-1.12.4/render.d.ts +223 -98
  40. package/generated/versions/defold-1.12.4/resource.d.ts +143 -157
  41. package/generated/versions/defold-1.12.4/socket.d.ts +13 -8
  42. package/generated/versions/defold-1.12.4/sound.d.ts +3 -2
  43. package/generated/versions/defold-1.12.4/sys.d.ts +16 -10
  44. package/generated/versions/defold-1.12.4/tilemap.d.ts +25 -19
  45. package/generated/versions/defold-1.12.4/timer.d.ts +33 -24
  46. package/generated/versions/defold-1.12.4/vmath.d.ts +13 -5
  47. package/generated/versions/defold-1.12.4/window.d.ts +5 -3
  48. package/generated/versions/defold-1.13.0/b2d_body.d.ts +7 -4
  49. package/generated/versions/defold-1.13.0/buffer.d.ts +16 -4
  50. package/generated/versions/defold-1.13.0/camera.d.ts +1 -0
  51. package/generated/versions/defold-1.13.0/collectionfactory.d.ts +5 -2
  52. package/generated/versions/defold-1.13.0/collectionproxy.d.ts +1 -1
  53. package/generated/versions/defold-1.13.0/factory.d.ts +2 -1
  54. package/generated/versions/defold-1.13.0/go.d.ts +141 -86
  55. package/generated/versions/defold-1.13.0/graphics.d.ts +2 -0
  56. package/generated/versions/defold-1.13.0/gui.d.ts +63 -39
  57. package/generated/versions/defold-1.13.0/html5.d.ts +1 -1
  58. package/generated/versions/defold-1.13.0/http.d.ts +4 -0
  59. package/generated/versions/defold-1.13.0/model.d.ts +9 -4
  60. package/generated/versions/defold-1.13.0/particlefx.d.ts +1 -1
  61. package/generated/versions/defold-1.13.0/physics.d.ts +16 -9
  62. package/generated/versions/defold-1.13.0/profiler.d.ts +9 -2
  63. package/generated/versions/defold-1.13.0/render.d.ts +224 -99
  64. package/generated/versions/defold-1.13.0/resource.d.ts +143 -157
  65. package/generated/versions/defold-1.13.0/socket.d.ts +13 -8
  66. package/generated/versions/defold-1.13.0/sound.d.ts +3 -2
  67. package/generated/versions/defold-1.13.0/sys.d.ts +16 -10
  68. package/generated/versions/defold-1.13.0/tilemap.d.ts +25 -19
  69. package/generated/versions/defold-1.13.0/timer.d.ts +33 -24
  70. package/generated/versions/defold-1.13.0/vmath.d.ts +13 -5
  71. package/generated/versions/defold-1.13.0/window.d.ts +5 -3
  72. package/generated/vmath.d.ts +13 -5
  73. package/generated/window.d.ts +5 -3
  74. package/package.json +2 -1
  75. package/src/api-doc.ts +8 -0
  76. package/src/doc-comment.ts +213 -32
  77. package/src/emit-dts.ts +501 -10
  78. package/src/example-store.ts +26 -0
  79. package/src/index.ts +5 -0
  80. package/src/render-overloads.d.ts +0 -17
@@ -1,5 +1,5 @@
1
1
  /** @noSelfInFile */
2
- import type { Opaque } from "../../../src/core-types";
2
+ import type { Hash, Opaque } from "../../../src/core-types";
3
3
 
4
4
  declare global {
5
5
  /**
@@ -7,6 +7,7 @@ declare global {
7
7
  * error handling and debugging.
8
8
  */
9
9
  namespace sys {
10
+ type NetworkConnectivity = typeof sys.NETWORK_DISCONNECTED | typeof sys.NETWORK_CONNECTED_CELLULAR | typeof sys.NETWORK_CONNECTED;
10
11
  /**
11
12
  * network connected through other, non cellular, connection
12
13
  */
@@ -39,6 +40,7 @@ declare global {
39
40
  * @example
40
41
  * ```ts
41
42
  * // Deserialize a table that was previously serialized:
43
+ * const my_table = { score: 100, level: 3 };
42
44
  * const buffer = sys.serialize(my_table);
43
45
  * const table = sys.deserialize(buffer);
44
46
  * ```
@@ -53,6 +55,7 @@ declare global {
53
55
  * @example
54
56
  * ```ts
55
57
  * // Load data but return nil if path didn't exist
58
+ * const path = "/save/game.dat";
56
59
  * if (!sys.exists(path)) {
57
60
  * return undefined;
58
61
  * }
@@ -228,7 +231,7 @@ declare global {
228
231
  * }
229
232
  * ```
230
233
  */
231
- function get_connectivity(): number & { readonly __brand: "sys.NETWORK_DISCONNECTED" } | number & { readonly __brand: "sys.NETWORK_CONNECTED_CELLULAR" } | number & { readonly __brand: "sys.NETWORK_CONNECTED" };
234
+ function get_connectivity(): sys.NetworkConnectivity;
232
235
  /**
233
236
  * Returns a table with engine information.
234
237
  *
@@ -259,6 +262,7 @@ declare global {
259
262
  * @example
260
263
  * ```ts
261
264
  * // Save data on the host
265
+ * const mytable = { score: 100, level: 3 };
262
266
  * const host_path = sys.get_host_path("logs/test.txt");
263
267
  * sys.save(host_path, mytable);
264
268
  *
@@ -443,21 +447,23 @@ declare global {
443
447
  * @example
444
448
  * ```ts
445
449
  * // Load binary data from a custom project resource and update a texture resource:
446
- * function my_callback(self, request_id, result) {
447
- * if (result.status === resource.REQUEST_STATUS_FINISHED) {
448
- * resource.set_texture("/my_texture", {}, result.buf); // texture args
450
+ * function my_callback(self: unknown, request_id: unknown, result: unknown) {
451
+ * const { status, buf } = result as { status: number; buf: Opaque<"buffer"> };
452
+ * if (status === resource.REQUEST_STATUS_FINISHED) {
453
+ * resource.set_texture("/my_texture", {}, buf); // texture args
449
454
  * }
450
455
  * }
451
456
  *
452
457
  * const my_request = sys.load_buffer_async("/assets/my_level_data.bin", my_callback);
453
458
  *
454
459
  * // Load binary data from non-custom resource files on disk:
455
- * function my_callback(self, request_id, result) {
456
- * if (result.status !== sys.REQUEST_STATUS_FINISHED) {
460
+ * function my_callback(self: unknown, request_id: unknown, result: unknown) {
461
+ * const { first_asset, second_asset } = self as { first_asset: Hash; second_asset: Hash };
462
+ * if ((result as { status: number }).status !== sys.REQUEST_STATUS_FINISHED) {
457
463
  * // uh oh! File could not be found, do something graceful
458
- * } else if (request_id === self.first_asset) {
464
+ * } else if (request_id === first_asset) {
459
465
  * // result.buffer contains data from my_level_asset.bin
460
- * } else if (request_id === self.second_asset) {
466
+ * } else if (request_id === second_asset) {
461
467
  * // result.buffer contains data from 'my_level.bin'
462
468
  * }
463
469
  * }
@@ -623,7 +629,7 @@ declare global {
623
629
  * @example
624
630
  * ```ts
625
631
  * // Install error handler that just prints the errors
626
- * function my_error_handler(source, message, traceback) {
632
+ * function my_error_handler(source: unknown, message: unknown, traceback: unknown) {
627
633
  * print(source); //> lua
628
634
  * print(message); //> main/my.script:10: attempt to perform arithmetic on a string value
629
635
  * print(traceback); //> stack traceback:
@@ -55,8 +55,10 @@ declare global {
55
55
  * @returns index of the tile
56
56
  * @example
57
57
  * ```ts
58
- * // get the tile under the player.
59
- * const tileno = tilemap.get_tile("/level#tilemap", "foreground", self.player_x, self.player_y);
58
+ * function tile_under_player(self: { player_x: number; player_y: number }) {
59
+ * // get the tile under the player.
60
+ * const tileno = tilemap.get_tile("/level#tilemap", "foreground", self.player_x, self.player_y);
61
+ * }
60
62
  * ```
61
63
  */
62
64
  function get_tile(url: string | Hash | Url, layer: string | Hash, x: number, y: number): number;
@@ -74,15 +76,17 @@ declare global {
74
76
  * @returns index of the tile
75
77
  * @example
76
78
  * ```ts
77
- * // get the tile under the player.
78
- * const tile_info = tilemap.get_tile_info("/level#tilemap", "foreground", self.player_x, self.player_y);
79
- * pprint(tile_info);
80
- * // {
81
- * // index = 0,
82
- * // h_flip = false,
83
- * // v_flip = true,
84
- * // rotate_90 = false
85
- * // }
79
+ * function tile_info_under_player(self: { player_x: number; player_y: number }) {
80
+ * // get the tile under the player.
81
+ * const tile_info = tilemap.get_tile_info("/level#tilemap", "foreground", self.player_x, self.player_y);
82
+ * pprint(tile_info);
83
+ * // {
84
+ * // index = 0,
85
+ * // h_flip = false,
86
+ * // v_flip = true,
87
+ * // rotate_90 = false
88
+ * // }
89
+ * }
86
90
  * ```
87
91
  */
88
92
  function get_tile_info(url: string | Hash | Url, layer: string | Hash, x: number, y: number): { index: number; h_flip: boolean; v_flip: boolean; rotate_90: boolean };
@@ -103,7 +107,7 @@ declare global {
103
107
  * let count = 0;
104
108
  * for (let row_index = bottom; row_index <= bottom + rows_count - 1; row_index++) {
105
109
  * for (let column_index = left; column_index <= left + columns_count - 1; column_index++) {
106
- * tile = tiles[row_index][column_index];
110
+ * tile = tiles.get(row_index)?.get(column_index) ?? 0;
107
111
  * count = count + 1;
108
112
  * }
109
113
  * }
@@ -155,14 +159,16 @@ declare global {
155
159
  * @param transform_bitmask - optional flip and/or rotation should be applied to the tile
156
160
  * @example
157
161
  * ```ts
158
- * // Clear the tile under the player.
159
- * tilemap.set_tile("/level#tilemap", "foreground", self.player_x, self.player_y, 0);
162
+ * function set_tiles(self: { player_x: number; player_y: number }, x: number, y: number) {
163
+ * // Clear the tile under the player.
164
+ * tilemap.set_tile("/level#tilemap", "foreground", self.player_x, self.player_y, 0);
160
165
  *
161
- * // Set tile with different combination of flip and rotation
162
- * tilemap.set_tile("#tilemap", "layer1", x, y, 0, tilemap.H_FLIP + tilemap.V_FLIP + tilemap.ROTATE_90);
163
- * tilemap.set_tile("#tilemap", "layer1", x, y, 0, tilemap.H_FLIP + tilemap.ROTATE_270);
164
- * tilemap.set_tile("#tilemap", "layer1", x, y, 0, tilemap.V_FLIP + tilemap.H_FLIP);
165
- * tilemap.set_tile("#tilemap", "layer1", x, y, 0, tilemap.ROTATE_180);
166
+ * // Set tile with different combination of flip and rotation
167
+ * tilemap.set_tile("#tilemap", "layer1", x, y, 0, tilemap.H_FLIP + tilemap.V_FLIP + tilemap.ROTATE_90);
168
+ * tilemap.set_tile("#tilemap", "layer1", x, y, 0, tilemap.H_FLIP + tilemap.ROTATE_270);
169
+ * tilemap.set_tile("#tilemap", "layer1", x, y, 0, tilemap.V_FLIP + tilemap.H_FLIP);
170
+ * tilemap.set_tile("#tilemap", "layer1", x, y, 0, tilemap.ROTATE_180);
171
+ * }
166
172
  * ```
167
173
  */
168
174
  function set_tile(url: string | Hash | Url, layer: string | Hash, x: number, y: number, tile: number, transform_bitmask?: number): void;
@@ -20,11 +20,13 @@ declare global {
20
20
  * @returns if the timer was active, false if the timer is already cancelled / complete
21
21
  * @example
22
22
  * ```ts
23
- * self.handle = timer.delay(1, true, () => print("print every second"));
24
- * // ...
25
- * const result = timer.cancel(self.handle);
26
- * if (!result) {
27
- * print("the timer is already cancelled");
23
+ * function cancel_ticking(self: { handle: number }) {
24
+ * self.handle = timer.delay(1, true, () => print("print every second"));
25
+ * // ...
26
+ * const result = timer.cancel(self.handle);
27
+ * if (!result) {
28
+ * print("the timer is already cancelled");
29
+ * }
28
30
  * }
29
31
  * ```
30
32
  */
@@ -54,16 +56,19 @@ declare global {
54
56
  * timer.delay(1, false, () => print("print in one second"));
55
57
  *
56
58
  * // Repetitive timer which canceled after 10 calls
57
- * function call_every_second(self, handle, time_elapsed) {
58
- * self.counter = self.counter + 1;
59
- * print("Call #", self.counter);
60
- * if (self.counter === 10) {
61
- * timer.cancel(handle); // cancel timer after 10 calls
59
+ * function call_every_second(self: unknown, handle: unknown, time_elapsed: unknown) {
60
+ * const state = self as { counter: number };
61
+ * state.counter = state.counter + 1;
62
+ * print("Call #", state.counter);
63
+ * if (state.counter === 10) {
64
+ * timer.cancel(handle as number); // cancel timer after 10 calls
62
65
  * }
63
66
  * }
64
67
  *
65
- * self.counter = 0;
66
- * timer.delay(1, true, call_every_second);
68
+ * function start_counting(self: { counter: number }) {
69
+ * self.counter = 0;
70
+ * timer.delay(1, true, call_every_second);
71
+ * }
67
72
  * ```
68
73
  */
69
74
  function delay(delay: number, repeating: boolean, callback: (self: unknown, handle: unknown, time_elapsed: unknown) => void): number;
@@ -81,13 +86,15 @@ declare global {
81
86
  * boolean true = repeat timer until cancel, false = one-shot timer.
82
87
  * @example
83
88
  * ```ts
84
- * self.handle = timer.delay(1, true, () => print("print every second"));
85
- * // ...
86
- * const result = timer.get_info(self.handle);
87
- * if (!result) {
88
- * print("the timer is already cancelled or complete");
89
- * } else {
90
- * pprint(result); // delay, time_remaining, repeating
89
+ * function report_ticking(self: { handle: number }) {
90
+ * self.handle = timer.delay(1, true, () => print("print every second"));
91
+ * // ...
92
+ * const result = timer.get_info(self.handle);
93
+ * if (!result) {
94
+ * print("the timer is already cancelled or complete");
95
+ * } else {
96
+ * pprint(result); // delay, time_remaining, repeating
97
+ * }
91
98
  * }
92
99
  * ```
93
100
  */
@@ -99,11 +106,13 @@ declare global {
99
106
  * @returns if the timer was active, false if the timer is already cancelled / complete
100
107
  * @example
101
108
  * ```ts
102
- * self.handle = timer.delay(1, true, () => print("print every second or manually by timer.trigger"));
103
- * // ...
104
- * const result = timer.trigger(self.handle);
105
- * if (!result) {
106
- * print("the timer is already cancelled or complete");
109
+ * function trigger_ticking(self: { handle: number }) {
110
+ * self.handle = timer.delay(1, true, () => print("print every second or manually by timer.trigger"));
111
+ * // ...
112
+ * const result = timer.trigger(self.handle);
113
+ * if (!result) {
114
+ * print("the timer is already cancelled or complete");
115
+ * }
107
116
  * }
108
117
  * ```
109
118
  */
@@ -84,6 +84,9 @@ declare global {
84
84
  * @returns dot product
85
85
  * @example
86
86
  * ```ts
87
+ * const vector1 = vmath.vector3(1, 0, 0);
88
+ * const vector2 = vmath.vector3(0, 1, 0);
89
+ *
87
90
  * if (vmath.dot(vector1, vector2) === 0) {
88
91
  * // The two vectors are perpendicular (at right-angles to each other)
89
92
  * // ...
@@ -119,12 +122,14 @@ declare global {
119
122
  * @returns length
120
123
  * @example
121
124
  * ```ts
122
- * if (vmath.length(self.velocity) < max_velocity) {
123
- * // The speed (velocity vector) is below max.
125
+ * function below_max_speed(self: { velocity: Vector3 }, max_velocity: number) {
126
+ * if (vmath.length(self.velocity) < max_velocity) {
127
+ * // The speed (velocity vector) is below max.
124
128
  *
125
- * // TODO: max_velocity can be expressed as squared
126
- * // so we can compare with length_sqr() instead.
127
- * // ...
129
+ * // TODO: max_velocity can be expressed as squared
130
+ * // so we can compare with length_sqr() instead.
131
+ * // ...
132
+ * }
128
133
  * }
129
134
  * ```
130
135
  */
@@ -136,6 +141,9 @@ declare global {
136
141
  * @returns squared length
137
142
  * @example
138
143
  * ```ts
144
+ * const vector1 = vmath.vector3(1, 0, 0);
145
+ * const vector2 = vmath.vector3(0, 2, 0);
146
+ *
139
147
  * if (vmath.length_sqr(vector1) < vmath.length_sqr(vector2)) {
140
148
  * // Vector 1 has less magnitude than vector 2
141
149
  * // ...
@@ -5,6 +5,8 @@ declare global {
5
5
  * and screen dimming.
6
6
  */
7
7
  namespace window {
8
+ type DimModeState = typeof window.DIMMING_UNKNOWN | typeof window.DIMMING_ON | typeof window.DIMMING_OFF;
9
+ type DimModeStateSettable = typeof window.DIMMING_ON | typeof window.DIMMING_OFF;
8
10
  /**
9
11
  * Dimming mode is used to control whether or not a mobile device should dim the screen after a period without user interaction.
10
12
  */
@@ -56,7 +58,7 @@ declare global {
56
58
  *
57
59
  * - `window.DIMMING_OFF`
58
60
  */
59
- function get_dim_mode(): number & { readonly __brand: "window.DIMMING_UNKNOWN" } | number & { readonly __brand: "window.DIMMING_ON" } | number & { readonly __brand: "window.DIMMING_OFF" };
61
+ function get_dim_mode(): window.DimModeState;
60
62
  /**
61
63
  * This returns the content scale of the current display.
62
64
  *
@@ -111,7 +113,7 @@ declare global {
111
113
  *
112
114
  * - `window.DIMMING_OFF`
113
115
  */
114
- function set_dim_mode(mode: number & { readonly __brand: "window.DIMMING_ON" } | number & { readonly __brand: "window.DIMMING_OFF" }): void;
116
+ function set_dim_mode(mode: window.DimModeStateSettable): void;
115
117
  /**
116
118
  * Sets a window event listener. Only one window event listener can be set at a time.
117
119
  *
@@ -140,7 +142,7 @@ declare global {
140
142
  * - number `height`: The height of a resize event. nil otherwise.
141
143
  * @example
142
144
  * ```ts
143
- * function window_callback(self, event, data) {
145
+ * function window_callback(self: unknown, event: unknown, data: Record<string | number, unknown>) {
144
146
  * if (event === window.WINDOW_EVENT_FOCUS_LOST) {
145
147
  * print("window.WINDOW_EVENT_FOCUS_LOST");
146
148
  * } else if (event === window.WINDOW_EVENT_FOCUS_GAINED) {
@@ -84,6 +84,9 @@ declare global {
84
84
  * @returns dot product
85
85
  * @example
86
86
  * ```ts
87
+ * const vector1 = vmath.vector3(1, 0, 0);
88
+ * const vector2 = vmath.vector3(0, 1, 0);
89
+ *
87
90
  * if (vmath.dot(vector1, vector2) === 0) {
88
91
  * // The two vectors are perpendicular (at right-angles to each other)
89
92
  * // ...
@@ -119,12 +122,14 @@ declare global {
119
122
  * @returns length
120
123
  * @example
121
124
  * ```ts
122
- * if (vmath.length(self.velocity) < max_velocity) {
123
- * // The speed (velocity vector) is below max.
125
+ * function below_max_speed(self: { velocity: Vector3 }, max_velocity: number) {
126
+ * if (vmath.length(self.velocity) < max_velocity) {
127
+ * // The speed (velocity vector) is below max.
124
128
  *
125
- * // TODO: max_velocity can be expressed as squared
126
- * // so we can compare with length_sqr() instead.
127
- * // ...
129
+ * // TODO: max_velocity can be expressed as squared
130
+ * // so we can compare with length_sqr() instead.
131
+ * // ...
132
+ * }
128
133
  * }
129
134
  * ```
130
135
  */
@@ -136,6 +141,9 @@ declare global {
136
141
  * @returns squared length
137
142
  * @example
138
143
  * ```ts
144
+ * const vector1 = vmath.vector3(1, 0, 0);
145
+ * const vector2 = vmath.vector3(0, 2, 0);
146
+ *
139
147
  * if (vmath.length_sqr(vector1) < vmath.length_sqr(vector2)) {
140
148
  * // Vector 1 has less magnitude than vector 2
141
149
  * // ...
@@ -5,6 +5,8 @@ declare global {
5
5
  * and screen dimming.
6
6
  */
7
7
  namespace window {
8
+ type DimModeState = typeof window.DIMMING_UNKNOWN | typeof window.DIMMING_ON | typeof window.DIMMING_OFF;
9
+ type DimModeStateSettable = typeof window.DIMMING_ON | typeof window.DIMMING_OFF;
8
10
  /**
9
11
  * Dimming mode is used to control whether or not a mobile device should dim the screen after a period without user interaction.
10
12
  */
@@ -56,7 +58,7 @@ declare global {
56
58
  *
57
59
  * - `window.DIMMING_OFF`
58
60
  */
59
- function get_dim_mode(): number & { readonly __brand: "window.DIMMING_UNKNOWN" } | number & { readonly __brand: "window.DIMMING_ON" } | number & { readonly __brand: "window.DIMMING_OFF" };
61
+ function get_dim_mode(): window.DimModeState;
60
62
  /**
61
63
  * This returns the content scale of the current display.
62
64
  *
@@ -111,7 +113,7 @@ declare global {
111
113
  *
112
114
  * - `window.DIMMING_OFF`
113
115
  */
114
- function set_dim_mode(mode: number & { readonly __brand: "window.DIMMING_ON" } | number & { readonly __brand: "window.DIMMING_OFF" }): void;
116
+ function set_dim_mode(mode: window.DimModeStateSettable): void;
115
117
  /**
116
118
  * Sets a window event listener. Only one window event listener can be set at a time.
117
119
  *
@@ -140,7 +142,7 @@ declare global {
140
142
  * - number `height`: The height of a resize event. nil otherwise.
141
143
  * @example
142
144
  * ```ts
143
- * function window_callback(self, event, data) {
145
+ * function window_callback(self: unknown, event: unknown, data: Record<string | number, unknown>) {
144
146
  * if (event === window.WINDOW_EVENT_FOCUS_LOST) {
145
147
  * print("window.WINDOW_EVENT_FOCUS_LOST");
146
148
  * } else if (event === window.WINDOW_EVENT_FOCUS_GAINED) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defold-typescript/types",
3
- "version": "0.38.0",
3
+ "version": "0.39.0",
4
4
  "description": "TypeScript types for the Defold engine's Lua APIs.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -70,6 +70,7 @@
70
70
  "!scripts/fidelity-audit.ts",
71
71
  "!scripts/augmentation-namespaces.ts",
72
72
  "!scripts/example-pins.ts",
73
+ "!scripts/example-semantics.ts",
73
74
  "!scripts/example-surfaces.ts",
74
75
  "!scripts/example-typecheck.ts"
75
76
  ],
package/src/api-doc.ts CHANGED
@@ -20,6 +20,10 @@ export interface ApiTypedef {
20
20
  name: string;
21
21
  functions?: ApiFunction[];
22
22
  properties?: ApiVariable[];
23
+ /** A union alias's top-level arms; a shape with members carries none. */
24
+ types?: string[];
25
+ /** The type text of each parent an interface-backed typedef extends. */
26
+ extends?: string[];
23
27
  /** See {@link ApiFunction.global}. */
24
28
  global?: true;
25
29
  }
@@ -164,10 +168,14 @@ export function parseDefoldApiDoc(input: unknown): ApiModule {
164
168
  function parseTypedef(element: Record<string, unknown>): ApiTypedef {
165
169
  const functions = parseFunctionList(element.functions);
166
170
  const properties = parseVariableList(element.properties);
171
+ const types = parseStringArray(element.types);
172
+ const parents = parseStringArray(element.extends);
167
173
  return {
168
174
  name: stringOr(element.name, ""),
169
175
  ...(functions.length > 0 ? { functions } : {}),
170
176
  ...(properties.length > 0 ? { properties } : {}),
177
+ ...(types.length > 0 ? { types } : {}),
178
+ ...(parents.length > 0 ? { extends: parents } : {}),
171
179
  ...globalKey(element),
172
180
  };
173
181
  }