warscript 0.0.1-dev.ba37a78 → 0.0.1-dev.bb34489

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 (76) hide show
  1. package/attributes.d.ts +12 -0
  2. package/attributes.lua +16 -0
  3. package/core/types/frame.d.ts +0 -1
  4. package/core/types/group.d.ts +0 -1
  5. package/core/types/handle.d.ts +2 -1
  6. package/core/types/handle.lua +5 -2
  7. package/core/types/image.d.ts +0 -1
  8. package/core/types/missile.d.ts +2 -2
  9. package/core/types/missile.lua +8 -2
  10. package/core/types/unit.lua +8 -0
  11. package/decl/index.d.ts +1 -0
  12. package/engine/ability.d.ts +1 -1
  13. package/engine/behavior.d.ts +10 -10
  14. package/engine/behaviour/ability/apply-unit-behavior.d.ts +5 -1
  15. package/engine/behaviour/ability/instant-impact.lua +4 -0
  16. package/engine/behaviour/ability.d.ts +8 -1
  17. package/engine/behaviour/ability.lua +62 -0
  18. package/engine/behaviour/unit/stun-immunity.d.ts +0 -1
  19. package/engine/behaviour/unit.d.ts +3 -2
  20. package/engine/behaviour/unit.lua +7 -0
  21. package/engine/buff.d.ts +2 -2
  22. package/engine/buff.lua +8 -10
  23. package/engine/internal/unit/bonus.d.ts +5 -6
  24. package/engine/internal/unit-missile-launch.lua +1 -1
  25. package/engine/internal/unit.d.ts +37 -10
  26. package/engine/internal/unit.lua +241 -90
  27. package/engine/object-data/auxiliary/attachment-preset.d.ts +0 -1
  28. package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
  29. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
  30. package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
  31. package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
  32. package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
  33. package/engine/object-data/entry/ability-type/mine.lua +39 -0
  34. package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
  35. package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
  36. package/engine/object-data/entry/ability-type.d.ts +0 -1
  37. package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
  38. package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
  39. package/engine/object-data/entry/buff-type.d.ts +0 -1
  40. package/engine/object-data/entry/destructible-type.d.ts +0 -1
  41. package/engine/object-data/entry/item-type/blank.d.ts +0 -1
  42. package/engine/object-data/entry/item-type.d.ts +0 -1
  43. package/engine/object-data/entry/lightning-type.d.ts +0 -1
  44. package/engine/object-data/entry/unit-type.d.ts +42 -2
  45. package/engine/object-data/entry/unit-type.lua +378 -50
  46. package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
  47. package/engine/object-data/entry/upgrade.d.ts +0 -1
  48. package/engine/object-data/entry.d.ts +2 -3
  49. package/engine/object-field/ability.d.ts +1 -1
  50. package/engine/object-field.d.ts +0 -1
  51. package/engine/random.d.ts +1 -0
  52. package/engine/random.lua +9 -0
  53. package/engine/standard/entries/unit-type.d.ts +42 -1
  54. package/engine/standard/entries/unit-type.lua +42 -1
  55. package/engine/standard/fields/ability.d.ts +1 -1
  56. package/engine/standard/fields/ability.lua +1 -1
  57. package/engine/unit.lua +9 -2
  58. package/event.d.ts +2 -3
  59. package/event.lua +9 -5
  60. package/lualib_bundle.lua +139 -40
  61. package/math/vec2.d.ts +2 -9
  62. package/math.d.ts +0 -2
  63. package/objutil/ability.d.ts +0 -1
  64. package/objutil/buff.d.ts +0 -1
  65. package/objutil/object.d.ts +0 -1
  66. package/objutil/unit.d.ts +0 -1
  67. package/package.json +13 -14
  68. package/string.d.ts +30 -0
  69. package/string.lua +14 -0
  70. package/util/stream.d.ts +0 -1
  71. package/utility/arrays.d.ts +3 -4
  72. package/utility/bit-set.d.ts +0 -2
  73. package/utility/linked-set.d.ts +1 -2
  74. package/utility/lua-maps.d.ts +1 -2
  75. package/utility/lua-sets.d.ts +1 -2
  76. package/utility/types.d.ts +2 -2
package/string.d.ts CHANGED
@@ -59,6 +59,22 @@ declare global {
59
59
  function toNumber(string: string): number;
60
60
  }
61
61
  }
62
+ declare global {
63
+ namespace string {
64
+ /**
65
+ * Returns the index within the string of the first occurrence of the specified substring, starting from the specified `startIndex`,
66
+ * or -1 if the string does not contain such substring.
67
+ */
68
+ function indexOf(string: string, substring: string, startIndex?: number): number;
69
+ }
70
+ interface String {
71
+ /**
72
+ * Returns the index within this string of the first occurrence of the specified substring, starting from the specified `startIndex`,
73
+ * or -1 if the string does not contain such substring.
74
+ */
75
+ indexOf(substring: string, startIndex?: number): number;
76
+ }
77
+ }
62
78
  declare global {
63
79
  interface String {
64
80
  /**
@@ -103,4 +119,18 @@ declare global {
103
119
  function isNotBlank(string: string): boolean;
104
120
  }
105
121
  }
122
+ declare global {
123
+ namespace string {
124
+ /**
125
+ * Returns the number of characters matching the given predicate.
126
+ */
127
+ function count(string: string, predicate: (char: string) => boolean): number;
128
+ }
129
+ interface String {
130
+ /**
131
+ * Returns the number of characters matching the given predicate.
132
+ */
133
+ count(predicate: (char: string) => boolean): number;
134
+ }
135
+ }
106
136
  export {};
package/string.lua CHANGED
@@ -2,6 +2,7 @@ local ____exports = {}
2
2
  local ____error = _G.error
3
3
  local tonumber = _G.tonumber
4
4
  local match = string.match
5
+ local find = string.find
5
6
  local sub = string.sub
6
7
  _G.string.removePrefix = function(____string, prefix)
7
8
  local prefixLength = #prefix
@@ -17,6 +18,10 @@ end
17
18
  _G.string.toNumber = function(____string)
18
19
  return tonumber(____string) or ____error(("'" .. ____string) .. "' is not a valid representation of a number.")
19
20
  end
21
+ _G.string.indexOf = function(____string, substring, startIndex)
22
+ local index = find(____string, substring, (startIndex or 0) + 1, true)
23
+ return (index or 0) - 1
24
+ end
20
25
  _G.string.indexOfLast = function(____string, predicate)
21
26
  for i = #____string, 1, -1 do
22
27
  if predicate(sub(____string, i, i)) then
@@ -31,4 +36,13 @@ end
31
36
  _G.string.isNotBlank = function(____string)
32
37
  return (match(____string, "^%s*$")) == nil
33
38
  end
39
+ _G.string.count = function(____string, predicate)
40
+ local result = 0
41
+ for i = 1, #____string do
42
+ if predicate(sub(____string, i, i)) then
43
+ result = result + 1
44
+ end
45
+ end
46
+ return result
47
+ end
34
48
  return ____exports
package/util/stream.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="@typescript-to-lua/language-extensions" />
2
1
  /** @noSelfInFile */
3
2
  export interface Stream<T> {
4
3
  toArray(): T[];
@@ -1,12 +1,11 @@
1
- /// <reference types="@typescript-to-lua/language-extensions" />
2
1
  /** @noSelfInFile */
3
2
  import { TupleOf } from "./types";
4
3
  export declare const emptyArray: <T>() => readonly T[];
5
4
  export declare const joinToString: <T>(array: readonly T[], separator: string, transform?: (element: T) => string) => string;
6
- export declare const arrayOfNotNull: <T>(...elements: readonly (T | null | undefined)[]) => T[];
5
+ export declare const arrayOfNotNull: <T>(...elements: readonly (T | undefined | null)[]) => T[];
7
6
  export declare const array: <T, N extends number>(length: N, initialize: (index: number) => T) => TupleOf<T, N>;
8
7
  export declare const toLuaSet: <T extends AnyNotNil>(array: readonly T[]) => LuaSet<T>;
9
- export declare const forEach: <T, Args extends any[]>(array: readonly T[], consumerOrKey: KeysOfType<T, (this: T, ...args: Args) => void> | ((value: T, ...args: Args) => void), ...args: Args) => void;
8
+ export declare const forEach: <T, Args extends any[]>(array: readonly T[], consumerOrKey: ((value: T, ...args: Args) => void) | KeysOfType<T, (this: T, ...args: Args) => void>, ...args: Args) => void;
10
9
  export declare const all: {
11
10
  <T>(array: readonly T[], transform: (value: T) => boolean): boolean;
12
11
  <T>(array: readonly T[], key: KeysOfType<T, boolean>): boolean;
@@ -45,7 +44,7 @@ export declare const max: (array: readonly number[]) => number;
45
44
  export declare const intersperse: <T>(array: readonly T[], delimiter: T) => T[];
46
45
  export declare const zip: <T, R, V>(array: readonly T[], otherArray: readonly R[], transform: (value: T, otherValue: R) => V) => V[];
47
46
  export declare const chunked: <T>(array: readonly T[], size: number) => T[][];
48
- export declare const sortBy: <T, R>(array: T[], selector: KeysOfType<T, R> | ((value: T) => R)) => void;
47
+ export declare const sortBy: <T, R>(array: T[], selector: ((value: T) => R) | KeysOfType<T, R>) => void;
49
48
  export declare const sortedBy: {
50
49
  <T, R>(array: readonly T[], selector: (value: T) => R): T[];
51
50
  <T, K extends keyof T>(array: readonly T[], key: K): T[];
@@ -1,5 +1,3 @@
1
- /// <reference types="@warscript/language-extensions" />
2
- /// <reference types="@typescript-to-lua/language-extensions" />
3
1
  /** @noSelfInFile */
4
2
  interface IBitSet<T extends number> {
5
3
  readonly has: LuaBitwiseAndEqualsRightMethod<T>;
@@ -1,4 +1,3 @@
1
- /// <reference types="@typescript-to-lua/language-extensions" />
2
1
  /** @noSelfInFile */
3
2
  type IteratorState<T extends AnyNotNil> = {
4
3
  t: LuaMap<T, T>;
@@ -46,5 +45,5 @@ export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet
46
45
  }
47
46
  export declare const emptyLinkedSet: <T extends AnyNotNil>() => ReadonlyLinkedSet<T>;
48
47
  export declare const linkedSetOf: <T extends AnyNotNil>(...elements: readonly T[]) => LinkedSet<T>;
49
- export declare const linkedSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | null | undefined)[]) => LinkedSet<T>;
48
+ export declare const linkedSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | undefined | null)[]) => LinkedSet<T>;
50
49
  export {};
@@ -1,6 +1,5 @@
1
- /// <reference types="@typescript-to-lua/language-extensions" />
2
1
  /** @noSelfInFile */
3
2
  import { Flatten, TupleOf } from "./types";
4
- export declare const luaMapOf: <K extends AnyNotNil, V>(...pairs: Flatten<TupleOf<[K, V], 0 | 2 | 1 | 22 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 27 | 31 | 40 | 30 | 32 | 23 | 24 | 25 | 26 | 28 | 29 | 33 | 34 | 35 | 36 | 37 | 38 | 39>>) => LuaMap<K, V>;
3
+ export declare const luaMapOf: <K extends AnyNotNil, V>(...pairs: Flatten<TupleOf<[K, V], 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40>>) => LuaMap<K, V>;
5
4
  export declare const luaMapInvert: <K extends AnyNotNil, V extends AnyNotNil>(luaMap: LuaMap<K, V>) => LuaMap<V, K>;
6
5
  export declare const mapValues: <K extends AnyNotNil, V1, V2>(luaMap: LuaMap<K, V1>, transform: (value: V1) => V2) => LuaMap<K, V2>;
@@ -1,6 +1,5 @@
1
- /// <reference types="@typescript-to-lua/language-extensions" />
2
1
  /** @noSelfInFile */
3
2
  export declare const luaSetOf: <T extends AnyNotNil>(...elements: readonly T[]) => LuaSet<T>;
4
- export declare const luaSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | null | undefined)[]) => LuaSet<T>;
3
+ export declare const luaSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | undefined | null)[]) => LuaSet<T>;
5
4
  export declare const luaSetIntersection: <T extends AnyNotNil>(firstLuaSet: ReadonlyLuaSet<T>, secondLuaSet: ReadonlyLuaSet<T>) => LuaSet<T>;
6
5
  export declare const luaSetContainsAnyOf: <T extends AnyNotNil>(luaSet: ReadonlyLuaSet<T>, ...elements: readonly T[]) => boolean;
@@ -12,14 +12,14 @@ export type ValueOf<T> = T[keyof T];
12
12
  export type EntryOf<T> = ValueOf<{
13
13
  [K in keyof T]: [K, T[K]];
14
14
  }>;
15
- export type MutableKeys<T extends object> = {
15
+ export type MutableKeys<T extends object> = keyof T & {
16
16
  [P in keyof T]-?: IfEquals<{
17
17
  [Q in P]: T[P];
18
18
  }, {
19
19
  -readonly [Q in P]: T[P];
20
20
  }, P>;
21
21
  }[keyof T];
22
- export type ReadonlyKeys<T extends object> = {
22
+ export type ReadonlyKeys<T extends object> = keyof T & {
23
23
  [P in keyof T]-?: IfEquals<{
24
24
  [Q in P]: T[P];
25
25
  }, {