@defold-typescript/types 0.39.0 → 0.40.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 (87) hide show
  1. package/api-availability.json +117 -0
  2. package/api-signatures.json +262 -237
  3. package/examples/translations.json +81 -81
  4. package/generated/b2d_shape.d.ts +23 -1
  5. package/generated/buffer.d.ts +18 -15
  6. package/generated/camera.d.ts +2 -2
  7. package/generated/collectionfactory.d.ts +12 -10
  8. package/generated/collectionproxy.d.ts +1 -1
  9. package/generated/compute.d.ts +1 -1
  10. package/generated/go.d.ts +9 -5
  11. package/generated/graphics.d.ts +52 -0
  12. package/generated/gui.d.ts +53 -32
  13. package/generated/html5.d.ts +3 -1
  14. package/generated/http.d.ts +4 -2
  15. package/generated/image.d.ts +24 -15
  16. package/generated/kinds/gui-script.d.ts +1 -0
  17. package/generated/kinds/render-script.d.ts +1 -0
  18. package/generated/kinds/script.d.ts +1 -0
  19. package/generated/material.d.ts +1 -1
  20. package/generated/model.d.ts +32 -3
  21. package/generated/physics.d.ts +13 -11
  22. package/generated/profiler.d.ts +1 -1
  23. package/generated/render.d.ts +72 -15
  24. package/generated/resource.d.ts +100 -69
  25. package/generated/socket.d.ts +23 -13
  26. package/generated/sound.d.ts +3 -3
  27. package/generated/sprite.d.ts +9 -1
  28. package/generated/sys.d.ts +34 -23
  29. package/generated/versions/defold-1.12.4/buffer.d.ts +18 -15
  30. package/generated/versions/defold-1.12.4/camera.d.ts +2 -2
  31. package/generated/versions/defold-1.12.4/collectionfactory.d.ts +12 -10
  32. package/generated/versions/defold-1.12.4/go.d.ts +9 -5
  33. package/generated/versions/defold-1.12.4/gui.d.ts +47 -31
  34. package/generated/versions/defold-1.12.4/html5.d.ts +3 -1
  35. package/generated/versions/defold-1.12.4/http.d.ts +4 -2
  36. package/generated/versions/defold-1.12.4/image.d.ts +24 -15
  37. package/generated/versions/defold-1.12.4/index.d.ts +1 -0
  38. package/generated/versions/defold-1.12.4/model.d.ts +32 -3
  39. package/generated/versions/defold-1.12.4/physics.d.ts +13 -11
  40. package/generated/versions/defold-1.12.4/profiler.d.ts +1 -1
  41. package/generated/versions/defold-1.12.4/render.d.ts +72 -15
  42. package/generated/versions/defold-1.12.4/resource.d.ts +100 -69
  43. package/generated/versions/defold-1.12.4/socket.d.ts +23 -13
  44. package/generated/versions/defold-1.12.4/sound.d.ts +3 -3
  45. package/generated/versions/defold-1.12.4/sprite.d.ts +9 -1
  46. package/generated/versions/defold-1.12.4/sys.d.ts +34 -23
  47. package/generated/versions/defold-1.12.4/vmath.d.ts +5 -5
  48. package/generated/versions/defold-1.13.0/b2d_shape.d.ts +23 -1
  49. package/generated/versions/defold-1.13.0/buffer.d.ts +18 -15
  50. package/generated/versions/defold-1.13.0/camera.d.ts +2 -2
  51. package/generated/versions/defold-1.13.0/collectionfactory.d.ts +12 -10
  52. package/generated/versions/defold-1.13.0/compute.d.ts +1 -1
  53. package/generated/versions/defold-1.13.0/go.d.ts +9 -5
  54. package/generated/versions/defold-1.13.0/graphics.d.ts +48 -0
  55. package/generated/versions/defold-1.13.0/gui.d.ts +47 -31
  56. package/generated/versions/defold-1.13.0/html5.d.ts +3 -1
  57. package/generated/versions/defold-1.13.0/http.d.ts +4 -2
  58. package/generated/versions/defold-1.13.0/image.d.ts +24 -15
  59. package/generated/versions/defold-1.13.0/index.d.ts +1 -0
  60. package/generated/versions/defold-1.13.0/material.d.ts +1 -1
  61. package/generated/versions/defold-1.13.0/model.d.ts +32 -3
  62. package/generated/versions/defold-1.13.0/physics.d.ts +13 -11
  63. package/generated/versions/defold-1.13.0/profiler.d.ts +1 -1
  64. package/generated/versions/defold-1.13.0/render.d.ts +72 -15
  65. package/generated/versions/defold-1.13.0/resource.d.ts +100 -69
  66. package/generated/versions/defold-1.13.0/socket.d.ts +23 -13
  67. package/generated/versions/defold-1.13.0/sound.d.ts +3 -3
  68. package/generated/versions/defold-1.13.0/sprite.d.ts +9 -1
  69. package/generated/versions/defold-1.13.0/sys.d.ts +34 -23
  70. package/generated/versions/defold-1.13.0/vmath.d.ts +5 -5
  71. package/generated/vmath.d.ts +5 -5
  72. package/index.d.ts +1 -0
  73. package/package.json +1 -1
  74. package/scripts/generate-api-signatures.ts +2 -1
  75. package/scripts/prose-constants.ts +96 -0
  76. package/scripts/regen.ts +6 -2
  77. package/src/component-properties.d.ts +33 -0
  78. package/src/core-types.ts +4 -2
  79. package/src/custom-messages.d.ts +4 -3
  80. package/src/doc-comment.ts +35 -12
  81. package/src/emit-dts.ts +457 -47
  82. package/src/engine-globals.d.ts +2 -2
  83. package/src/go-overloads.d.ts +11 -10
  84. package/src/index.ts +4 -0
  85. package/src/param-correction-provenance.ts +67 -0
  86. package/src/render-overloads.d.ts +15 -0
  87. package/src/script-api.ts +3 -1
@@ -12,8 +12,8 @@ declare global {
12
12
  function hash<S extends string>(s: S): Core.Hash<S>;
13
13
  /** Render a `Hash` handle as its hexadecimal string. */
14
14
  function hash_to_hex(h: Core.Hash): string;
15
- /** Pretty-print any value to the console for debugging. */
16
- function pprint(v: unknown): void;
15
+ /** Pretty-print any values to the console for debugging. */
16
+ function pprint(...args: unknown[]): void;
17
17
  /**
18
18
  * A typed handle to a resource the engine owns — a GUI node, a texture, a
19
19
  * render target, a physics body, a socket, and so on. You get one back from an
@@ -9,9 +9,10 @@ interface ScriptProperty<TValue> {
9
9
  declare global {
10
10
  namespace go {
11
11
  interface GoPropertyOptions {
12
+ /** Zero-based element index into an array property; the transpiler emits Defold's 1-based index. */
12
13
  index?: number;
13
- key?: Hash;
14
- keys?: Record<string | number, unknown>;
14
+ key?: Hash | string;
15
+ keys?: (Hash | string)[];
15
16
  }
16
17
 
17
18
  /**
@@ -20,9 +21,9 @@ declare global {
20
21
  * @param url - url of the game object or component having the property
21
22
  * @param property - id of the property to retrieve
22
23
  * @param options - optional options table
23
- * - index number index into array property (1 based)
24
- * - key hash name of internal property
25
- * - keys table array of internal component resources identified by key (e.g. a particle fx emitter, see examples below)
24
+ * - index number zero-based index into array property; the transpiler emits Defold's 1-based index
25
+ * - key hash or string name of internal property
26
+ * - keys array of hashes or strings identifying internal component resources (e.g. a particle fx emitter, see examples below)
26
27
  * @returns the value of the specified property
27
28
  * @example
28
29
  * ```ts
@@ -52,11 +53,11 @@ declare global {
52
53
  *
53
54
  * @param url - url of the game object or component having the property
54
55
  * @param property - id of the property to set
55
- * @param value - the value to set
56
+ * @param value - the value to set, or an array of vector4 to set a material property array
56
57
  * @param options - optional options table
57
- * - index integer index into array property (1 based)
58
- * - key hash name of internal property
59
- * - keys table array of internal component resources identified by key (e.g. a particle fx emitter, see examples below)
58
+ * - index integer zero-based index into array property; the transpiler emits Defold's 1-based index
59
+ * - key hash or string name of internal property
60
+ * - keys array of hashes or strings identifying internal component resources (e.g. a particle fx emitter, see examples below)
60
61
  * @example
61
62
  * ```ts
62
63
  * go.set("#sprite", "tint", vmath.vector4(1, 0, 0, 1));
@@ -80,7 +81,7 @@ declare global {
80
81
  function set(
81
82
  url: SceneAddress | Hash | Url,
82
83
  property: string | Hash,
83
- value: number | boolean | Hash | Url | Vector3 | Vector4 | Quaternion,
84
+ value: number | boolean | Hash | Url | Vector3 | Vector4 | Quaternion | Vector4[],
84
85
  options?: GoPropertyOptions,
85
86
  ): void;
86
87
  /**
package/src/index.ts CHANGED
@@ -53,6 +53,10 @@ export {
53
53
  type EmitOptions,
54
54
  emitDeclarations,
55
55
  emitSymbolSignatures,
56
+ firstSlotAlternativeOf,
57
+ PARAM_DOC_REWRITES,
58
+ type ParamDocRewrite,
59
+ rewriteParamDoc,
56
60
  type SlotTypes,
57
61
  type SymbolSignature,
58
62
  TS_IDENTIFIER,
@@ -0,0 +1,67 @@
1
+ import { type ApiModule, parseDefoldApiDoc } from "./api-doc";
2
+ import type { ParamTypeCorrection } from "./emit-dts";
3
+ import type { ProvenanceSurface } from "./optional-correction-provenance";
4
+
5
+ export interface ParamTypeProvenance {
6
+ readonly key: string;
7
+ readonly sightedIn: readonly string[];
8
+ readonly neededBy: readonly string[];
9
+ readonly resolvedIn: readonly string[];
10
+ }
11
+
12
+ const PARAM_SEPARATOR = ":param:";
13
+
14
+ // `nil` is optionality, which `isDocOptional` owns; the correction replaces only
15
+ // the concrete tokens, so only those are evidence.
16
+ function baseTokens(tokens: readonly string[]): string {
17
+ return tokens.filter((token) => token !== "nil").join("|");
18
+ }
19
+
20
+ // A target needs a correction while any declaration of the slot there still
21
+ // states the pinned tokens, so an overload that shows the defect keeps it alive.
22
+ // Any other declared token set — fixed or retyped — no longer carries the
23
+ // contradiction the entry records, and the entry goes once no target needs it.
24
+ export function paramCorrectionProvenance(
25
+ entries: readonly [string, ParamTypeCorrection][],
26
+ surfaces: readonly ProvenanceSurface[],
27
+ ): ParamTypeProvenance[] {
28
+ const parsed = new Map<ProvenanceSurface, ApiModule>();
29
+ const parse = (surface: ProvenanceSurface): ApiModule => {
30
+ let module = parsed.get(surface);
31
+ if (!module) {
32
+ module = parseDefoldApiDoc(surface.doc);
33
+ parsed.set(surface, module);
34
+ }
35
+ return module;
36
+ };
37
+
38
+ return entries.map(([key, correction]) => {
39
+ const separator = key.lastIndexOf(PARAM_SEPARATOR);
40
+ if (separator < 0) throw new Error(`paramCorrectionProvenance: malformed key ${key}`);
41
+ const element = key.slice(0, separator);
42
+ const slot = key.slice(separator + PARAM_SEPARATOR.length);
43
+ const namespace = element.slice(0, element.lastIndexOf("."));
44
+ const pinned = baseTokens(correction.upstream);
45
+
46
+ const neededByTarget = new Map<string, boolean>();
47
+ for (const surface of surfaces) {
48
+ if (surface.namespace !== namespace) continue;
49
+ for (const fn of parse(surface).functions) {
50
+ if (fn.name !== element) continue;
51
+ for (const parameter of fn.parameters) {
52
+ if (parameter.name !== slot) continue;
53
+ const needed = neededByTarget.get(surface.target) ?? false;
54
+ neededByTarget.set(surface.target, needed || baseTokens(parameter.types) === pinned);
55
+ }
56
+ }
57
+ }
58
+
59
+ const sightedIn = [...neededByTarget.keys()].sort();
60
+ return {
61
+ key,
62
+ sightedIn,
63
+ neededBy: sightedIn.filter((target) => neededByTarget.get(target) === true),
64
+ resolvedIn: sightedIn.filter((target) => neededByTarget.get(target) === false),
65
+ };
66
+ });
67
+ }
@@ -25,5 +25,20 @@ declare global {
25
25
  name: string,
26
26
  parameters: Record<string | number, unknown>,
27
27
  ): Opaque<"render_target">;
28
+ /**
29
+ * The rendering context was lost. Rendering is paused and all graphics
30
+ * resources become invalid. Passed to the `render.set_listener` callback.
31
+ */
32
+ const CONTEXT_EVENT_CONTEXT_LOST: number & {
33
+ readonly __brand: "render.CONTEXT_EVENT_CONTEXT_LOST";
34
+ };
35
+ /**
36
+ * The rendering context was restored. Rendering is still paused and graphics
37
+ * resources are still invalid, but can be reloaded. Passed to the
38
+ * `render.set_listener` callback.
39
+ */
40
+ const CONTEXT_EVENT_CONTEXT_RESTORED: number & {
41
+ readonly __brand: "render.CONTEXT_EVENT_CONTEXT_RESTORED";
42
+ };
28
43
  }
29
44
  }
package/src/script-api.ts CHANGED
@@ -49,8 +49,10 @@ function stringOr(value: unknown, fallback: string): string {
49
49
 
50
50
  // A `.script_api` `type:` may spell a union inline (`string | nil`), where the
51
51
  // core ref-doc format carries one token per alternative. Splitting here keeps the
52
- // downstream emitter and fidelity resolver working in single tokens.
52
+ // downstream emitter and fidelity resolver working in single tokens. A `type:`
53
+ // may also be a YAML list (`[table, string]`), one alternative per entry.
53
54
  function splitTypeTokens(type: unknown): string[] {
55
+ if (Array.isArray(type)) return type.flatMap(splitTypeTokens);
54
56
  if (typeof type !== "string") return [];
55
57
  return type
56
58
  .split("|")