warscript 0.0.1-dev.632c807 → 0.0.1-dev.a12bd26

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.
@@ -7,7 +7,7 @@ local ____exports = {}
7
7
  local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
8
8
  local AbilityType = ____ability_2Dtype.AbilityType
9
9
  local ____arrays = require("utility.arrays")
10
- local EMPTY_ARRAY = ____arrays.EMPTY_ARRAY
10
+ local emptyArray = ____arrays.emptyArray
11
11
  local map = ____arrays.map
12
12
  local ____buff_2Dtype = require("engine.object-data.entry.buff-type")
13
13
  local BuffType = ____buff_2Dtype.BuffType
@@ -78,7 +78,7 @@ __TS__SetDescriptor(
78
78
  function(levelAbilityUpgrades)
79
79
  return levelAbilityUpgrades[i + 1]
80
80
  end
81
- ) or (abilityUpgrades[i + 1] or EMPTY_ARRAY)
81
+ ) or (abilityUpgrades[i + 1] or emptyArray())
82
82
  )
83
83
  end
84
84
  end
@@ -33,7 +33,7 @@ export type ObjectFieldValueChangeEvent<T extends ObjectField<any, any, any, any
33
33
  previousValue: ValueType,
34
34
  newValue: ValueType
35
35
  ]> : never;
36
- export type ReadonlyObjectFieldType<T extends ObjectField<any, any, any, any>> = Omit<T, "setValue" | "removeValue">;
36
+ export type ReadonlyObjectFieldType<T extends ObjectField<any, any, any, any>> = Omit<T, "setValue" | "removeValue" | "trySetValue">;
37
37
  type ReadonlyObjectFieldConstructor<T extends ObjectField> = OmitConstructor<typeof ObjectField> & (abstract new (...args: any[]) => ReadonlyObjectFieldType<T>);
38
38
  export declare abstract class ObjectField<ObjectDataEntryType extends ObjectDataEntry = ObjectDataEntry, InstanceType extends AnyNotNil = AnyNotNil, ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = unknown> extends ObjectFieldBase<ObjectDataEntryType, InstanceType, ValueType, NativeFieldType> {
39
39
  protected abstract readonly defaultValue: ValueType;
@@ -42,12 +42,13 @@ export declare abstract class ObjectField<ObjectDataEntryType extends ObjectData
42
42
  getValue(entry: ObjectDataEntryType | InstanceType): ValueType;
43
43
  setValue(entry: ObjectDataEntryType | InstanceType, value: ValueType): boolean;
44
44
  removeValue(entry: ObjectDataEntryType): boolean;
45
+ trySetValue(entry: ObjectDataEntryType | InstanceType, value: unknown): boolean;
45
46
  private invokeValueChangeEvent;
46
47
  private invokeValueChangeEventRecursive;
47
48
  protected static getOrCreateValueChangeEvent<T extends ObjectField, R extends ReadonlyObjectFieldType<T>>(this: ReadonlyObjectFieldConstructor<T>): ObjectFieldValueChangeEvent<R>;
48
49
  static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<ObjectField>>;
49
50
  }
50
- export type ReadonlyObjectLevelFieldType<T extends ObjectLevelField<any, any, any, any>> = Omit<T, "setValue">;
51
+ export type ReadonlyObjectLevelFieldType<T extends ObjectLevelField<any, any, any, any>> = Omit<T, "setValue" | "trySetValue">;
51
52
  export type ObjectLevelFieldValueChangeEvent<T extends ObjectLevelField<any, any, any, any> | ReadonlyObjectLevelFieldType<ObjectLevelField<any, any, any, any>>> = T extends ObjectLevelField<any, infer InstanceType, infer ValueType, any, any> ? DispatchingEvent<[
52
53
  instance: InstanceType,
53
54
  field: T,
@@ -76,6 +77,7 @@ export declare abstract class ObjectLevelField<ObjectDataEntryType extends Objec
76
77
  protected abstract getLevelCount(entry: ObjectDataEntryType | InstanceType): number;
77
78
  getValue<LevelType extends [number] | []>(entry: ObjectDataEntryType | InstanceType, ...[level]: LevelType): LevelType extends [number] ? ValueType : ValueType[];
78
79
  setValue(entry: ObjectDataEntryType | InstanceType, ...[levelOrValue, value]: [value: ObjectDataEntryLevelFieldValueSupplier<InputValueType, ValueType>] | [level: number, value: InputValueType]): boolean;
80
+ trySetValue(entry: ObjectDataEntryType | InstanceType, levelOrValue: number | unknown, value?: unknown): boolean;
79
81
  private invokeValueChangeEvent;
80
82
  private invokeValueChangeEventRecursive;
81
83
  protected static getOrCreateValueChangeEvent<T extends ObjectLevelField, R extends ReadonlyObjectLevelFieldType<T>>(this: ReadonlyObjectLevelFieldConstructor<T>): ObjectLevelFieldValueChangeEvent<R>;
@@ -4,6 +4,7 @@ local __TS__Class = ____lualib.__TS__Class
4
4
  local __TS__InstanceOf = ____lualib.__TS__InstanceOf
5
5
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
6
6
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
7
+ local __TS__TypeOf = ____lualib.__TS__TypeOf
7
8
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
8
9
  local ____exports = {}
9
10
  local ____event = require("event")
@@ -155,6 +156,12 @@ function ObjectField.prototype.removeValue(self, entry)
155
156
  end
156
157
  return false
157
158
  end
159
+ function ObjectField.prototype.trySetValue(self, entry, value)
160
+ if __TS__TypeOf(value) ~= __TS__TypeOf(self.defaultValue) then
161
+ return false
162
+ end
163
+ return self:setValue(entry, value)
164
+ end
158
165
  function ObjectField.prototype.invokeValueChangeEvent(self, ...)
159
166
  self:invokeValueChangeEventRecursive(
160
167
  getClass(self),
@@ -399,6 +406,21 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
399
406
  end
400
407
  return true
401
408
  end
409
+ function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value)
410
+ if value ~= nil then
411
+ if __TS__TypeOf(value) ~= __TS__TypeOf(self.defaultValue) then
412
+ return false
413
+ end
414
+ if type(levelOrValue) ~= "number" then
415
+ return false
416
+ end
417
+ return self:setValue(entry, levelOrValue, value)
418
+ end
419
+ if __TS__TypeOf(levelOrValue) ~= __TS__TypeOf(self.defaultValue) then
420
+ return false
421
+ end
422
+ return self:setValue(entry, levelOrValue)
423
+ end
402
424
  function ObjectLevelField.prototype.invokeValueChangeEvent(self, ...)
403
425
  self:invokeValueChangeEventRecursive(
404
426
  getClass(self),
package/exception.d.ts CHANGED
@@ -15,3 +15,5 @@ export declare class IllegalStateException extends Exception {
15
15
  }
16
16
  export declare class CancellationException extends Exception {
17
17
  }
18
+ export declare class UnsupportedOperationException extends Exception {
19
+ }
package/exception.lua CHANGED
@@ -50,4 +50,8 @@ ____exports.CancellationException = __TS__Class()
50
50
  local CancellationException = ____exports.CancellationException
51
51
  CancellationException.name = "CancellationException"
52
52
  __TS__ClassExtends(CancellationException, ____exports.Exception)
53
+ ____exports.UnsupportedOperationException = __TS__Class()
54
+ local UnsupportedOperationException = ____exports.UnsupportedOperationException
55
+ UnsupportedOperationException.name = "UnsupportedOperationException"
56
+ __TS__ClassExtends(UnsupportedOperationException, ____exports.Exception)
53
57
  return ____exports
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "warscript",
4
- "version": "0.0.1-dev.632c807",
4
+ "version": "0.0.1-dev.a12bd26",
5
5
  "description": "A typescript library for Warcraft III using Warpack.",
6
6
  "keywords": [
7
7
  "warcraft",
@@ -25,7 +25,7 @@
25
25
  "@warscript/tstl-plugin": "^0.0.1",
26
26
  "typescript-to-lua": "^1.24.1",
27
27
  "lua-types": "^2.13.1",
28
- "warpack": "0.0.1-dev.559048d"
28
+ "warpack": "0.0.1-dev.5bdabe5"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@typescript-eslint/eslint-plugin": "^5.59.11",
@@ -1,7 +1,7 @@
1
1
  /// <reference types="@typescript-to-lua/language-extensions" />
2
2
  /** @noSelfInFile */
3
3
  import { TupleOf } from "./types";
4
- export declare const EMPTY_ARRAY: readonly any[];
4
+ export declare const emptyArray: <T>() => readonly T[];
5
5
  export declare const joinToString: <T>(array: readonly T[], separator: string, transform?: (element: T) => string) => string;
6
6
  export declare const arrayOfNotNull: <T>(...elements: readonly (T | null | undefined)[]) => T[];
7
7
  export declare const array: <T, N extends number>(length: N, initialize: (index: number) => T) => TupleOf<T, N>;
@@ -8,7 +8,10 @@ local mathMin = math.min
8
8
  local select = _G.select
9
9
  local tableConcat = table.concat
10
10
  local tableSort = table.sort
11
- ____exports.EMPTY_ARRAY = {}
11
+ local EMPTY_ARRAY = {}
12
+ ____exports.emptyArray = function()
13
+ return EMPTY_ARRAY
14
+ end
12
15
  ____exports.joinToString = function(array, separator, transform)
13
16
  if transform == nil then
14
17
  transform = tostring
@@ -4,10 +4,25 @@ type IteratorState<T extends AnyNotNil> = {
4
4
  t: LuaMap<T, T>;
5
5
  n?: T;
6
6
  };
7
- export interface LinkedSet<T> extends LuaPairsKeyIterable<T> {
8
- readonly __linkedHashSet: unique symbol;
7
+ type OneSidedTypeGuard = {
8
+ readonly __oneSidedTypeGuard: unique symbol;
9
+ };
10
+ export interface ReadonlyLinkedSet<T extends AnyNotNil> extends LuaPairsKeyIterable<T> {
11
+ copyOf(): LinkedSet<T>;
12
+ first(): T | undefined;
13
+ last(): T | undefined;
14
+ next(key: T): T | undefined;
15
+ previous(key: T): T | undefined;
16
+ contains(key: AnyNotNil): key is T & OneSidedTypeGuard;
17
+ size: number;
18
+ forEach<Args extends any[]>(action: (value: T, ...args: Args) => void, ...args: Args): void;
19
+ toArray(): T[];
20
+ sumOf(selector: ((value: T) => number) | KeysOfType<T, number>): number;
21
+ }
22
+ export interface LinkedSet<T extends AnyNotNil> extends LuaPairsKeyIterable<T> {
23
+ readonly __linkedSet: unique symbol;
9
24
  }
10
- export declare class LinkedSet<T extends AnyNotNil> {
25
+ export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet<T> {
11
26
  private n;
12
27
  private p;
13
28
  private f?;
@@ -20,9 +35,7 @@ export declare class LinkedSet<T extends AnyNotNil> {
20
35
  previous(key: T): T | undefined;
21
36
  add(key: T): boolean;
22
37
  remove(key: T): boolean;
23
- contains(key: AnyNotNil): key is T & {
24
- readonly __oneSidedTypeGuard: unique symbol;
25
- };
38
+ contains(key: AnyNotNil): key is T & OneSidedTypeGuard;
26
39
  clear(): void;
27
40
  get size(): number;
28
41
  forEach<Args extends any[]>(action: (value: T, ...args: Args) => void, ...args: Args): void;