@panda0day/fivex 0.2.1
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.
- package/README.md +294 -0
- package/dist/client/blips-internal.d.ts +2 -0
- package/dist/client/blips-internal.d.ts.map +1 -0
- package/dist/client/blips-internal.js +32 -0
- package/dist/client/blips-internal.js.map +1 -0
- package/dist/client/core.d.ts +18 -0
- package/dist/client/core.d.ts.map +1 -0
- package/dist/client/core.js +24 -0
- package/dist/client/core.js.map +1 -0
- package/dist/client/entities/entity.d.ts +24 -0
- package/dist/client/entities/entity.d.ts.map +1 -0
- package/dist/client/entities/entity.js +64 -0
- package/dist/client/entities/entity.js.map +1 -0
- package/dist/client/entities/local-player.d.ts +8 -0
- package/dist/client/entities/local-player.d.ts.map +1 -0
- package/dist/client/entities/local-player.js +15 -0
- package/dist/client/entities/local-player.js.map +1 -0
- package/dist/client/entities/object.d.ts +14 -0
- package/dist/client/entities/object.d.ts.map +1 -0
- package/dist/client/entities/object.js +32 -0
- package/dist/client/entities/object.js.map +1 -0
- package/dist/client/entities/ped.d.ts +8 -0
- package/dist/client/entities/ped.d.ts.map +1 -0
- package/dist/client/entities/ped.js +16 -0
- package/dist/client/entities/ped.js.map +1 -0
- package/dist/client/entities/remote-player.d.ts +9 -0
- package/dist/client/entities/remote-player.d.ts.map +1 -0
- package/dist/client/entities/remote-player.js +20 -0
- package/dist/client/entities/remote-player.js.map +1 -0
- package/dist/client/entities/vehicle.d.ts +8 -0
- package/dist/client/entities/vehicle.d.ts.map +1 -0
- package/dist/client/entities/vehicle.js +16 -0
- package/dist/client/entities/vehicle.js.map +1 -0
- package/dist/client/index.d.ts +8 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +8 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/internal/state.d.ts +3 -0
- package/dist/client/internal/state.d.ts.map +1 -0
- package/dist/client/internal/state.js +5 -0
- package/dist/client/internal/state.js.map +1 -0
- package/dist/client/internal.d.ts +2 -0
- package/dist/client/internal.d.ts.map +1 -0
- package/dist/client/internal.js +17 -0
- package/dist/client/internal.js.map +1 -0
- package/dist/client/managers/client-pool.d.ts +5 -0
- package/dist/client/managers/client-pool.d.ts.map +1 -0
- package/dist/client/managers/client-pool.js +11 -0
- package/dist/client/managers/client-pool.js.map +1 -0
- package/dist/client/managers/event-manager.d.ts +11 -0
- package/dist/client/managers/event-manager.d.ts.map +1 -0
- package/dist/client/managers/event-manager.js +25 -0
- package/dist/client/managers/event-manager.js.map +1 -0
- package/dist/client/managers/object-pool.d.ts +10 -0
- package/dist/client/managers/object-pool.d.ts.map +1 -0
- package/dist/client/managers/object-pool.js +27 -0
- package/dist/client/managers/object-pool.js.map +1 -0
- package/dist/client/managers/ped-pool.d.ts +8 -0
- package/dist/client/managers/ped-pool.d.ts.map +1 -0
- package/dist/client/managers/ped-pool.js +14 -0
- package/dist/client/managers/ped-pool.js.map +1 -0
- package/dist/client/managers/player-pool.d.ts +9 -0
- package/dist/client/managers/player-pool.d.ts.map +1 -0
- package/dist/client/managers/player-pool.js +17 -0
- package/dist/client/managers/player-pool.js.map +1 -0
- package/dist/client/managers/rpc.d.ts +12 -0
- package/dist/client/managers/rpc.d.ts.map +1 -0
- package/dist/client/managers/rpc.js +43 -0
- package/dist/client/managers/rpc.js.map +1 -0
- package/dist/client/managers/vehicle-pool.d.ts +8 -0
- package/dist/client/managers/vehicle-pool.d.ts.map +1 -0
- package/dist/client/managers/vehicle-pool.js +14 -0
- package/dist/client/managers/vehicle-pool.js.map +1 -0
- package/dist/server/blips.d.ts +9 -0
- package/dist/server/blips.d.ts.map +1 -0
- package/dist/server/blips.js +25 -0
- package/dist/server/blips.js.map +1 -0
- package/dist/server/core.d.ts +13 -0
- package/dist/server/core.d.ts.map +1 -0
- package/dist/server/core.js +13 -0
- package/dist/server/core.js.map +1 -0
- package/dist/server/entities/entity.d.ts +22 -0
- package/dist/server/entities/entity.d.ts.map +1 -0
- package/dist/server/entities/entity.js +60 -0
- package/dist/server/entities/entity.js.map +1 -0
- package/dist/server/entities/object.d.ts +4 -0
- package/dist/server/entities/object.d.ts.map +1 -0
- package/dist/server/entities/object.js +4 -0
- package/dist/server/entities/object.js.map +1 -0
- package/dist/server/entities/ped.d.ts +5 -0
- package/dist/server/entities/ped.d.ts.map +1 -0
- package/dist/server/entities/ped.js +7 -0
- package/dist/server/entities/ped.js.map +1 -0
- package/dist/server/entities/player.d.ts +27 -0
- package/dist/server/entities/player.d.ts.map +1 -0
- package/dist/server/entities/player.js +80 -0
- package/dist/server/entities/player.js.map +1 -0
- package/dist/server/entities/vehicle.d.ts +18 -0
- package/dist/server/entities/vehicle.d.ts.map +1 -0
- package/dist/server/entities/vehicle.js +46 -0
- package/dist/server/entities/vehicle.js.map +1 -0
- package/dist/server/index.d.ts +5 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +5 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/internal/state.d.ts +3 -0
- package/dist/server/internal/state.d.ts.map +1 -0
- package/dist/server/internal/state.js +5 -0
- package/dist/server/internal/state.js.map +1 -0
- package/dist/server/managers/event-manager.d.ts +10 -0
- package/dist/server/managers/event-manager.d.ts.map +1 -0
- package/dist/server/managers/event-manager.js +25 -0
- package/dist/server/managers/event-manager.js.map +1 -0
- package/dist/server/managers/player-pool.d.ts +9 -0
- package/dist/server/managers/player-pool.d.ts.map +1 -0
- package/dist/server/managers/player-pool.js +17 -0
- package/dist/server/managers/player-pool.js.map +1 -0
- package/dist/server/managers/rpc.d.ts +12 -0
- package/dist/server/managers/rpc.d.ts.map +1 -0
- package/dist/server/managers/rpc.js +50 -0
- package/dist/server/managers/rpc.js.map +1 -0
- package/dist/server/managers/server-pool.d.ts +5 -0
- package/dist/server/managers/server-pool.d.ts.map +1 -0
- package/dist/server/managers/server-pool.js +9 -0
- package/dist/server/managers/server-pool.js.map +1 -0
- package/dist/server/managers/vehicle-pool.d.ts +8 -0
- package/dist/server/managers/vehicle-pool.d.ts.map +1 -0
- package/dist/server/managers/vehicle-pool.js +14 -0
- package/dist/server/managers/vehicle-pool.js.map +1 -0
- package/dist/shared/blips.d.ts +16 -0
- package/dist/shared/blips.d.ts.map +1 -0
- package/dist/shared/blips.js +6 -0
- package/dist/shared/blips.js.map +1 -0
- package/dist/shared/events-map.d.ts +11 -0
- package/dist/shared/events-map.d.ts.map +1 -0
- package/dist/shared/events-map.js +2 -0
- package/dist/shared/events-map.js.map +1 -0
- package/dist/shared/index.d.ts +4 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +4 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/math/utils.d.ts +8 -0
- package/dist/shared/math/utils.d.ts.map +1 -0
- package/dist/shared/math/utils.js +8 -0
- package/dist/shared/math/utils.js.map +1 -0
- package/dist/shared/math/vector3.d.ts +200 -0
- package/dist/shared/math/vector3.d.ts.map +1 -0
- package/dist/shared/math/vector3.js +232 -0
- package/dist/shared/math/vector3.js.map +1 -0
- package/dist/shared/net.d.ts +7 -0
- package/dist/shared/net.d.ts.map +1 -0
- package/dist/shared/net.js +7 -0
- package/dist/shared/net.js.map +1 -0
- package/dist/shared/pool-base.d.ts +11 -0
- package/dist/shared/pool-base.d.ts.map +1 -0
- package/dist/shared/pool-base.js +27 -0
- package/dist/shared/pool-base.js.map +1 -0
- package/dist/shared/rpc-core.d.ts +23 -0
- package/dist/shared/rpc-core.d.ts.map +1 -0
- package/dist/shared/rpc-core.js +33 -0
- package/dist/shared/rpc-core.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 3D vector type and math, shared by the client and server.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* This module contains no natives, so both runtimes import it. Use {@link IVector3}
|
|
6
|
+
* for anything that crosses the wire (event payloads, stored data) and {@link Vector3}
|
|
7
|
+
* for computation.
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* A plain 3D coordinate shape: `{ x, y, z }` with no methods.
|
|
13
|
+
*
|
|
14
|
+
* @remarks
|
|
15
|
+
* This is the type to use for data that is serialized — sent through `emitNet`,
|
|
16
|
+
* written to a state bag, or stored — because serialization strips class
|
|
17
|
+
* prototypes, so a {@link Vector3} arrives on the other side as a plain object
|
|
18
|
+
* anyway. Re-wrap with {@link Vector3.from} if you need the methods back.
|
|
19
|
+
*/
|
|
20
|
+
export interface IVector3 {
|
|
21
|
+
/** Position along the world X axis (east/west). */
|
|
22
|
+
x: number;
|
|
23
|
+
/** Position along the world Y axis (north/south). */
|
|
24
|
+
y: number;
|
|
25
|
+
/** Position along the world Z axis (up/down). */
|
|
26
|
+
z: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* An immutable-by-convention 3D vector with common math operations.
|
|
30
|
+
*
|
|
31
|
+
* @remarks
|
|
32
|
+
* Every operation returns a **new** `Vector3` rather than mutating in place, so
|
|
33
|
+
* instances are safe to share. Because the public `x`/`y`/`z` fields satisfy
|
|
34
|
+
* {@link IVector3}, an instance can be passed directly to any native that expects
|
|
35
|
+
* a coordinate shape (e.g. `SetEntityCoords`).
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* const a = new Vector3(0, 0, 0);
|
|
40
|
+
* const b = new Vector3(10, 0, 0);
|
|
41
|
+
*
|
|
42
|
+
* a.distanceTo(b); // 10
|
|
43
|
+
* a.lerp(b, 0.5); // Vector3(5, 0, 0)
|
|
44
|
+
* a.add(new Vector3(0, 0, 5)); // Vector3(0, 0, 5)
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare class Vector3 implements IVector3 {
|
|
48
|
+
x: number;
|
|
49
|
+
y: number;
|
|
50
|
+
z: number;
|
|
51
|
+
/**
|
|
52
|
+
* Creates a vector from its components.
|
|
53
|
+
*
|
|
54
|
+
* @param x - X component. @defaultValue 0
|
|
55
|
+
* @param y - Y component. @defaultValue 0
|
|
56
|
+
* @param z - Z component. @defaultValue 0
|
|
57
|
+
*/
|
|
58
|
+
constructor(x?: number, y?: number, z?: number);
|
|
59
|
+
/**
|
|
60
|
+
* Builds a `Vector3` from a plain object or a `[x, y, z]` tuple.
|
|
61
|
+
*
|
|
62
|
+
* @param value - Either an `{ x, y, z }` object or a numeric array in `[x, y, z]` order.
|
|
63
|
+
* @returns A new `Vector3`.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* Vector3.from({ x: 1, y: 2, z: 3 });
|
|
68
|
+
* Vector3.from(GetEntityCoords(ped, true)); // wrap a native result
|
|
69
|
+
* Vector3.from([1, 2, 3]);
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
static from(value: IVector3 | number[]): Vector3;
|
|
73
|
+
/**
|
|
74
|
+
* The zero vector, `(0, 0, 0)`.
|
|
75
|
+
*
|
|
76
|
+
* @returns A new zero `Vector3`.
|
|
77
|
+
*/
|
|
78
|
+
static zero(): Vector3;
|
|
79
|
+
/**
|
|
80
|
+
* Adds a vector or a scalar to this vector.
|
|
81
|
+
*
|
|
82
|
+
* @param value - A `Vector3` (component-wise) or a number (added to every component).
|
|
83
|
+
* @returns The resulting vector.
|
|
84
|
+
*/
|
|
85
|
+
add(value: Vector3 | number): Vector3;
|
|
86
|
+
/**
|
|
87
|
+
* Subtracts a vector or a scalar from this vector.
|
|
88
|
+
*
|
|
89
|
+
* @param value - A `Vector3` (component-wise) or a number (subtracted from every component).
|
|
90
|
+
* @returns The resulting vector.
|
|
91
|
+
*/
|
|
92
|
+
subtract(value: Vector3 | number): Vector3;
|
|
93
|
+
/**
|
|
94
|
+
* Multiplies this vector by a vector or a scalar.
|
|
95
|
+
*
|
|
96
|
+
* @remarks
|
|
97
|
+
* Vector input is a **component-wise** (Hadamard) product, not a dot or cross
|
|
98
|
+
* product. Pass a scalar to uniformly scale — e.g. `v.multiply(2)` doubles the length.
|
|
99
|
+
*
|
|
100
|
+
* @param value - A `Vector3` (component-wise) or a number (scales every component).
|
|
101
|
+
* @returns The resulting vector.
|
|
102
|
+
*/
|
|
103
|
+
multiply(value: Vector3 | number): Vector3;
|
|
104
|
+
/**
|
|
105
|
+
* Dot product with another vector.
|
|
106
|
+
*
|
|
107
|
+
* @param value - The other vector.
|
|
108
|
+
* @returns The scalar dot product. `0` means the vectors are perpendicular.
|
|
109
|
+
*/
|
|
110
|
+
dot(value: Vector3): number;
|
|
111
|
+
/**
|
|
112
|
+
* Cross product with another vector.
|
|
113
|
+
*
|
|
114
|
+
* @param value - The other vector.
|
|
115
|
+
* @returns A new vector perpendicular to both inputs.
|
|
116
|
+
*/
|
|
117
|
+
cross(value: Vector3): Vector3;
|
|
118
|
+
/**
|
|
119
|
+
* The magnitude (Euclidean length) of the vector.
|
|
120
|
+
*
|
|
121
|
+
* @remarks
|
|
122
|
+
* Involves a square root. If you only need to compare magnitudes, prefer
|
|
123
|
+
* {@link Vector3.lengthSquared} to avoid the `Math.sqrt` call.
|
|
124
|
+
*/
|
|
125
|
+
get length(): number;
|
|
126
|
+
/**
|
|
127
|
+
* The squared magnitude of the vector.
|
|
128
|
+
*
|
|
129
|
+
* @remarks
|
|
130
|
+
* Cheaper than {@link Vector3.length} because it skips the square root. Order is
|
|
131
|
+
* preserved, so it is ideal for "which is closer" comparisons.
|
|
132
|
+
*/
|
|
133
|
+
get lengthSquared(): number;
|
|
134
|
+
/**
|
|
135
|
+
* Returns a unit vector pointing in the same direction.
|
|
136
|
+
*
|
|
137
|
+
* @returns A new vector with length `1`, or {@link Vector3.zero} if this vector
|
|
138
|
+
* has zero length (avoids dividing by zero).
|
|
139
|
+
*/
|
|
140
|
+
normalize(): Vector3;
|
|
141
|
+
/**
|
|
142
|
+
* Euclidean distance to another point.
|
|
143
|
+
*
|
|
144
|
+
* @param v - The other point.
|
|
145
|
+
* @returns The distance.
|
|
146
|
+
* @see {@link Vector3.distanceToSquared} for a cheaper comparison-only variant.
|
|
147
|
+
*/
|
|
148
|
+
distanceTo(v: Vector3): number;
|
|
149
|
+
/**
|
|
150
|
+
* Squared Euclidean distance to another point.
|
|
151
|
+
*
|
|
152
|
+
* @remarks
|
|
153
|
+
* Skips the square root, so use this when ranking or thresholding distances
|
|
154
|
+
* (compare against a squared radius) rather than reporting an actual distance.
|
|
155
|
+
*
|
|
156
|
+
* @param v - The other point.
|
|
157
|
+
* @returns The squared distance.
|
|
158
|
+
*/
|
|
159
|
+
distanceToSquared(v: Vector3): number;
|
|
160
|
+
/**
|
|
161
|
+
* Linearly interpolates from this vector toward another.
|
|
162
|
+
*
|
|
163
|
+
* @param v - The target vector.
|
|
164
|
+
* @param t - Interpolation factor. `0` returns this vector, `1` returns `v`;
|
|
165
|
+
* values outside `[0, 1]` extrapolate.
|
|
166
|
+
* @returns The interpolated vector.
|
|
167
|
+
*/
|
|
168
|
+
lerp(v: Vector3, t: number): Vector3;
|
|
169
|
+
/**
|
|
170
|
+
* Creates an independent copy of this vector.
|
|
171
|
+
*
|
|
172
|
+
* @returns A new `Vector3` with the same components.
|
|
173
|
+
*/
|
|
174
|
+
clone(): Vector3;
|
|
175
|
+
/**
|
|
176
|
+
* Compares two vectors for approximate equality.
|
|
177
|
+
*
|
|
178
|
+
* @remarks
|
|
179
|
+
* Uses a tolerance because floating-point math rarely produces exactly equal
|
|
180
|
+
* components after arithmetic.
|
|
181
|
+
*
|
|
182
|
+
* @param v - The vector to compare against.
|
|
183
|
+
* @param epsilon - Maximum allowed per-component difference. @defaultValue 1e-6
|
|
184
|
+
* @returns `true` if every component is within `epsilon` of `v`.
|
|
185
|
+
*/
|
|
186
|
+
equals(v: Vector3, epsilon?: number): boolean;
|
|
187
|
+
/**
|
|
188
|
+
* Converts to a plain `[x, y, z]` tuple.
|
|
189
|
+
*
|
|
190
|
+
* @returns The components as a fixed-length array.
|
|
191
|
+
*/
|
|
192
|
+
toArray(): [number, number, number];
|
|
193
|
+
/**
|
|
194
|
+
* A human-readable representation, e.g. `"Vector3(1, 2, 3)"`.
|
|
195
|
+
*
|
|
196
|
+
* @returns The formatted string.
|
|
197
|
+
*/
|
|
198
|
+
toString(): string;
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=vector3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector3.d.ts","sourceRoot":"","sources":["../../../src/shared/math/vector3.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;GAQG;AACH,MAAM,WAAW,QAAQ;IACxB,mDAAmD;IACnD,CAAC,EAAE,MAAM,CAAC;IACV,qDAAqD;IACrD,CAAC,EAAE,MAAM,CAAC;IACV,iDAAiD;IACjD,CAAC,EAAE,MAAM,CAAC;CACV;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,OAAQ,YAAW,QAAQ;IAS/B,CAAC;IACD,CAAC;IACD,CAAC;IAVT;;;;;;OAMG;gBAEK,CAAC,SAAI,EACL,CAAC,SAAI,EACL,CAAC,SAAI;IAGb;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,OAAO;IAMhD;;;;OAIG;IACH,MAAM,CAAC,IAAI,IAAI,OAAO;IAItB;;;;;OAKG;IACH,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO;IAMrC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO;IAM1C;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO;IAM1C;;;;;OAKG;IACH,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAI3B;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAQ9B;;;;;;OAMG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;;;;OAMG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;;;;OAKG;IACH,SAAS,IAAI,OAAO;IAKpB;;;;;;OAMG;IACH,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM;IAI9B;;;;;;;;;OASG;IACH,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM;IAIrC;;;;;;;OAOG;IACH,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAIpC;;;;OAIG;IACH,KAAK,IAAI,OAAO;IAIhB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,SAAO,GAAG,OAAO;IAQ3C;;;;OAIG;IACH,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAInC;;;;OAIG;IACH,QAAQ,IAAI,MAAM;CAGlB"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 3D vector type and math, shared by the client and server.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* This module contains no natives, so both runtimes import it. Use {@link IVector3}
|
|
6
|
+
* for anything that crosses the wire (event payloads, stored data) and {@link Vector3}
|
|
7
|
+
* for computation.
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* An immutable-by-convention 3D vector with common math operations.
|
|
13
|
+
*
|
|
14
|
+
* @remarks
|
|
15
|
+
* Every operation returns a **new** `Vector3` rather than mutating in place, so
|
|
16
|
+
* instances are safe to share. Because the public `x`/`y`/`z` fields satisfy
|
|
17
|
+
* {@link IVector3}, an instance can be passed directly to any native that expects
|
|
18
|
+
* a coordinate shape (e.g. `SetEntityCoords`).
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* const a = new Vector3(0, 0, 0);
|
|
23
|
+
* const b = new Vector3(10, 0, 0);
|
|
24
|
+
*
|
|
25
|
+
* a.distanceTo(b); // 10
|
|
26
|
+
* a.lerp(b, 0.5); // Vector3(5, 0, 0)
|
|
27
|
+
* a.add(new Vector3(0, 0, 5)); // Vector3(0, 0, 5)
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export class Vector3 {
|
|
31
|
+
x;
|
|
32
|
+
y;
|
|
33
|
+
z;
|
|
34
|
+
/**
|
|
35
|
+
* Creates a vector from its components.
|
|
36
|
+
*
|
|
37
|
+
* @param x - X component. @defaultValue 0
|
|
38
|
+
* @param y - Y component. @defaultValue 0
|
|
39
|
+
* @param z - Z component. @defaultValue 0
|
|
40
|
+
*/
|
|
41
|
+
constructor(x = 0, y = 0, z = 0) {
|
|
42
|
+
this.x = x;
|
|
43
|
+
this.y = y;
|
|
44
|
+
this.z = z;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Builds a `Vector3` from a plain object or a `[x, y, z]` tuple.
|
|
48
|
+
*
|
|
49
|
+
* @param value - Either an `{ x, y, z }` object or a numeric array in `[x, y, z]` order.
|
|
50
|
+
* @returns A new `Vector3`.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* Vector3.from({ x: 1, y: 2, z: 3 });
|
|
55
|
+
* Vector3.from(GetEntityCoords(ped, true)); // wrap a native result
|
|
56
|
+
* Vector3.from([1, 2, 3]);
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
static from(value) {
|
|
60
|
+
return Array.isArray(value)
|
|
61
|
+
? new Vector3(value[0], value[1], value[2])
|
|
62
|
+
: new Vector3(value.x, value.y, value.z);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The zero vector, `(0, 0, 0)`.
|
|
66
|
+
*
|
|
67
|
+
* @returns A new zero `Vector3`.
|
|
68
|
+
*/
|
|
69
|
+
static zero() {
|
|
70
|
+
return new Vector3(0, 0, 0);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Adds a vector or a scalar to this vector.
|
|
74
|
+
*
|
|
75
|
+
* @param value - A `Vector3` (component-wise) or a number (added to every component).
|
|
76
|
+
* @returns The resulting vector.
|
|
77
|
+
*/
|
|
78
|
+
add(value) {
|
|
79
|
+
return typeof value === "number"
|
|
80
|
+
? new Vector3(this.x + value, this.y + value, this.z + value)
|
|
81
|
+
: new Vector3(this.x + value.x, this.y + value.y, this.z + value.z);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Subtracts a vector or a scalar from this vector.
|
|
85
|
+
*
|
|
86
|
+
* @param value - A `Vector3` (component-wise) or a number (subtracted from every component).
|
|
87
|
+
* @returns The resulting vector.
|
|
88
|
+
*/
|
|
89
|
+
subtract(value) {
|
|
90
|
+
return typeof value === "number"
|
|
91
|
+
? new Vector3(this.x - value, this.y - value, this.z - value)
|
|
92
|
+
: new Vector3(this.x - value.x, this.y - value.y, this.z - value.z);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Multiplies this vector by a vector or a scalar.
|
|
96
|
+
*
|
|
97
|
+
* @remarks
|
|
98
|
+
* Vector input is a **component-wise** (Hadamard) product, not a dot or cross
|
|
99
|
+
* product. Pass a scalar to uniformly scale — e.g. `v.multiply(2)` doubles the length.
|
|
100
|
+
*
|
|
101
|
+
* @param value - A `Vector3` (component-wise) or a number (scales every component).
|
|
102
|
+
* @returns The resulting vector.
|
|
103
|
+
*/
|
|
104
|
+
multiply(value) {
|
|
105
|
+
return typeof value === "number"
|
|
106
|
+
? new Vector3(this.x * value, this.y * value, this.z * value)
|
|
107
|
+
: new Vector3(this.x * value.x, this.y * value.y, this.z * value.z);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Dot product with another vector.
|
|
111
|
+
*
|
|
112
|
+
* @param value - The other vector.
|
|
113
|
+
* @returns The scalar dot product. `0` means the vectors are perpendicular.
|
|
114
|
+
*/
|
|
115
|
+
dot(value) {
|
|
116
|
+
return this.x * value.x + this.y * value.y + this.z * value.z;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Cross product with another vector.
|
|
120
|
+
*
|
|
121
|
+
* @param value - The other vector.
|
|
122
|
+
* @returns A new vector perpendicular to both inputs.
|
|
123
|
+
*/
|
|
124
|
+
cross(value) {
|
|
125
|
+
return new Vector3(this.y * value.z - this.z * value.y, this.z * value.x - this.x * value.z, this.x * value.y - this.y * value.x);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* The magnitude (Euclidean length) of the vector.
|
|
129
|
+
*
|
|
130
|
+
* @remarks
|
|
131
|
+
* Involves a square root. If you only need to compare magnitudes, prefer
|
|
132
|
+
* {@link Vector3.lengthSquared} to avoid the `Math.sqrt` call.
|
|
133
|
+
*/
|
|
134
|
+
get length() {
|
|
135
|
+
return Math.sqrt(this.dot(this));
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* The squared magnitude of the vector.
|
|
139
|
+
*
|
|
140
|
+
* @remarks
|
|
141
|
+
* Cheaper than {@link Vector3.length} because it skips the square root. Order is
|
|
142
|
+
* preserved, so it is ideal for "which is closer" comparisons.
|
|
143
|
+
*/
|
|
144
|
+
get lengthSquared() {
|
|
145
|
+
return this.dot(this);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Returns a unit vector pointing in the same direction.
|
|
149
|
+
*
|
|
150
|
+
* @returns A new vector with length `1`, or {@link Vector3.zero} if this vector
|
|
151
|
+
* has zero length (avoids dividing by zero).
|
|
152
|
+
*/
|
|
153
|
+
normalize() {
|
|
154
|
+
const length = this.length;
|
|
155
|
+
return length === 0 ? Vector3.zero() : this.multiply(1 / length);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Euclidean distance to another point.
|
|
159
|
+
*
|
|
160
|
+
* @param v - The other point.
|
|
161
|
+
* @returns The distance.
|
|
162
|
+
* @see {@link Vector3.distanceToSquared} for a cheaper comparison-only variant.
|
|
163
|
+
*/
|
|
164
|
+
distanceTo(v) {
|
|
165
|
+
return this.subtract(v).length;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Squared Euclidean distance to another point.
|
|
169
|
+
*
|
|
170
|
+
* @remarks
|
|
171
|
+
* Skips the square root, so use this when ranking or thresholding distances
|
|
172
|
+
* (compare against a squared radius) rather than reporting an actual distance.
|
|
173
|
+
*
|
|
174
|
+
* @param v - The other point.
|
|
175
|
+
* @returns The squared distance.
|
|
176
|
+
*/
|
|
177
|
+
distanceToSquared(v) {
|
|
178
|
+
return this.subtract(v).lengthSquared;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Linearly interpolates from this vector toward another.
|
|
182
|
+
*
|
|
183
|
+
* @param v - The target vector.
|
|
184
|
+
* @param t - Interpolation factor. `0` returns this vector, `1` returns `v`;
|
|
185
|
+
* values outside `[0, 1]` extrapolate.
|
|
186
|
+
* @returns The interpolated vector.
|
|
187
|
+
*/
|
|
188
|
+
lerp(v, t) {
|
|
189
|
+
return this.add(v.subtract(this).multiply(t));
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Creates an independent copy of this vector.
|
|
193
|
+
*
|
|
194
|
+
* @returns A new `Vector3` with the same components.
|
|
195
|
+
*/
|
|
196
|
+
clone() {
|
|
197
|
+
return new Vector3(this.x, this.y, this.z);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Compares two vectors for approximate equality.
|
|
201
|
+
*
|
|
202
|
+
* @remarks
|
|
203
|
+
* Uses a tolerance because floating-point math rarely produces exactly equal
|
|
204
|
+
* components after arithmetic.
|
|
205
|
+
*
|
|
206
|
+
* @param v - The vector to compare against.
|
|
207
|
+
* @param epsilon - Maximum allowed per-component difference. @defaultValue 1e-6
|
|
208
|
+
* @returns `true` if every component is within `epsilon` of `v`.
|
|
209
|
+
*/
|
|
210
|
+
equals(v, epsilon = 1e-6) {
|
|
211
|
+
return (Math.abs(this.x - v.x) < epsilon &&
|
|
212
|
+
Math.abs(this.y - v.y) < epsilon &&
|
|
213
|
+
Math.abs(this.z - v.z) < epsilon);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Converts to a plain `[x, y, z]` tuple.
|
|
217
|
+
*
|
|
218
|
+
* @returns The components as a fixed-length array.
|
|
219
|
+
*/
|
|
220
|
+
toArray() {
|
|
221
|
+
return [this.x, this.y, this.z];
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* A human-readable representation, e.g. `"Vector3(1, 2, 3)"`.
|
|
225
|
+
*
|
|
226
|
+
* @returns The formatted string.
|
|
227
|
+
*/
|
|
228
|
+
toString() {
|
|
229
|
+
return `Vector3(${this.x}, ${this.y}, ${this.z})`;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=vector3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector3.js","sourceRoot":"","sources":["../../../src/shared/math/vector3.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"net.d.ts","sourceRoot":"","sources":["../../src/shared/net.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,GAAG;;;;;CAKN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"net.js","sourceRoot":"","sources":["../../src/shared/net.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,GAAG,GAAG;IAClB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,gBAAgB;IAC3B,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE,kBAAkB;CACtB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare abstract class Pool<T> {
|
|
2
|
+
protected abstract ids(): number[];
|
|
3
|
+
protected abstract wrap(id: number): T;
|
|
4
|
+
toArray(): T[];
|
|
5
|
+
get length(): number;
|
|
6
|
+
forEach(fn: (item: T) => void): void;
|
|
7
|
+
map<R>(fn: (item: T) => R): R[];
|
|
8
|
+
filter(fn: (item: T) => boolean): T[];
|
|
9
|
+
find(fn: (item: T) => boolean): T | undefined;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=pool-base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool-base.d.ts","sourceRoot":"","sources":["../../src/shared/pool-base.ts"],"names":[],"mappings":"AAAA,8BAAsB,IAAI,CAAC,CAAC;IAC3B,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,MAAM,EAAE;IAElC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC;IAEtC,OAAO,IAAI,CAAC,EAAE;IAId,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI;IAIpC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IAI/B,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,CAAC,EAAE;IAIrC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,CAAC,GAAG,SAAS;CAO7C"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export class Pool {
|
|
2
|
+
toArray() {
|
|
3
|
+
return this.ids().map(this.wrap);
|
|
4
|
+
}
|
|
5
|
+
get length() {
|
|
6
|
+
return this.ids().length;
|
|
7
|
+
}
|
|
8
|
+
forEach(fn) {
|
|
9
|
+
for (const id of this.ids())
|
|
10
|
+
fn(this.wrap(id));
|
|
11
|
+
}
|
|
12
|
+
map(fn) {
|
|
13
|
+
return this.toArray().map(fn);
|
|
14
|
+
}
|
|
15
|
+
filter(fn) {
|
|
16
|
+
return this.toArray().filter(fn);
|
|
17
|
+
}
|
|
18
|
+
find(fn) {
|
|
19
|
+
for (const id of this.ids()) {
|
|
20
|
+
const item = this.wrap(id);
|
|
21
|
+
if (fn(item))
|
|
22
|
+
return item;
|
|
23
|
+
}
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=pool-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool-base.js","sourceRoot":"","sources":["../../src/shared/pool-base.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,IAAI;IAKzB,OAAO;QACN,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,OAAO,CAAC,EAAqB;QAC5B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE;YAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAI,EAAkB;QACxB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,EAAwB;QAC9B,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,EAAwB;QAC5B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3B,IAAI,EAAE,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC3B,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;CACD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const RpcNet: {
|
|
2
|
+
readonly req: "__fx:rpc:req";
|
|
3
|
+
readonly res: "__fx:rpc:res";
|
|
4
|
+
};
|
|
5
|
+
export interface RpcRequest {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
args: unknown[];
|
|
9
|
+
}
|
|
10
|
+
export interface RpcResponse {
|
|
11
|
+
id: string;
|
|
12
|
+
ok: boolean;
|
|
13
|
+
result?: unknown;
|
|
14
|
+
error?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const RPC_TIMEOUT_MS = 10000;
|
|
17
|
+
export declare function nextRpcId(): string;
|
|
18
|
+
export declare class PendingRequests {
|
|
19
|
+
private map;
|
|
20
|
+
waitFor<T>(id: string, timeoutMs?: number): Promise<T>;
|
|
21
|
+
settle(res: RpcResponse): void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=rpc-core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-core.d.ts","sourceRoot":"","sources":["../../src/shared/rpc-core.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;CAGT,CAAC;AAEX,MAAM,WAAW,UAAU;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,cAAc,QAAS,CAAC;AAIrC,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAQD,qBAAa,eAAe;IAC3B,OAAO,CAAC,GAAG,CAA6B;IAExC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,SAAiB,GAAG,OAAO,CAAC,CAAC,CAAC;IAU9D,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;CAU9B"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export const RpcNet = {
|
|
2
|
+
req: "__fx:rpc:req",
|
|
3
|
+
res: "__fx:rpc:res",
|
|
4
|
+
};
|
|
5
|
+
export const RPC_TIMEOUT_MS = 10_000;
|
|
6
|
+
let counter = 0;
|
|
7
|
+
export function nextRpcId() {
|
|
8
|
+
return `${Date.now().toString(36)}-${(counter++).toString(36)}`;
|
|
9
|
+
}
|
|
10
|
+
export class PendingRequests {
|
|
11
|
+
map = new Map();
|
|
12
|
+
waitFor(id, timeoutMs = RPC_TIMEOUT_MS) {
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
const timer = setTimeout(() => {
|
|
15
|
+
this.map.delete(id);
|
|
16
|
+
reject(new Error(`[fx] rpc '${id}' timed out after ${timeoutMs}ms`));
|
|
17
|
+
}, timeoutMs);
|
|
18
|
+
this.map.set(id, { resolve, reject, timer });
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
settle(res) {
|
|
22
|
+
const waiter = this.map.get(res.id);
|
|
23
|
+
if (!waiter)
|
|
24
|
+
return;
|
|
25
|
+
clearTimeout(waiter.timer);
|
|
26
|
+
this.map.delete(res.id);
|
|
27
|
+
if (res.ok)
|
|
28
|
+
waiter.resolve(res.result);
|
|
29
|
+
else
|
|
30
|
+
waiter.reject(new Error(res.error ?? "[fx] rpc failed"));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=rpc-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-core.js","sourceRoot":"","sources":["../../src/shared/rpc-core.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,cAAc;CACV,CAAC;AAeX,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AAErC,IAAI,OAAO,GAAG,CAAC,CAAC;AAEhB,MAAM,UAAU,SAAS;IACxB,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AACjE,CAAC;AAQD,MAAM,OAAO,eAAe;IACnB,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExC,OAAO,CAAI,EAAU,EAAE,SAAS,GAAG,cAAc;QAChD,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACpB,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,qBAAqB,SAAS,IAAI,CAAC,CAAC,CAAC;YACtE,CAAC,EAAE,SAAS,CAAC,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAgB;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAExB,IAAI,GAAG,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;;YAClC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,iBAAiB,CAAC,CAAC,CAAC;IAC/D,CAAC;CACD"}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@panda0day/fivex",
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"exports": {
|
|
12
|
+
"./client": {
|
|
13
|
+
"types": "./dist/client/index.d.ts",
|
|
14
|
+
"default": "./dist/client/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./server": {
|
|
17
|
+
"types": "./dist/server/index.d.ts",
|
|
18
|
+
"default": "./dist/server/index.js"
|
|
19
|
+
},
|
|
20
|
+
"./shared": {
|
|
21
|
+
"types": "./dist/shared/index.d.ts",
|
|
22
|
+
"default": "./dist/shared/index.js"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "tsc -p tsconfig.client.json && tsc -p tsconfig.server.json",
|
|
27
|
+
"prepare": "npm run build",
|
|
28
|
+
"typecheck": "tsc --noEmit -p tsconfig.client.json && tsc --noEmit -p tsconfig.server.json",
|
|
29
|
+
"lint": "biome check .",
|
|
30
|
+
"format": "biome check --write .",
|
|
31
|
+
"docs": "typedoc",
|
|
32
|
+
"check": "npm run format && npm run typecheck && npm run build"
|
|
33
|
+
},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"@citizenfx/client": "*",
|
|
36
|
+
"@citizenfx/server": "*"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@biomejs/biome": "2.5.12",
|
|
40
|
+
"@changesets/cli": "^3.0.2",
|
|
41
|
+
"@citizenfx/client": "^2.0.35214-1",
|
|
42
|
+
"@citizenfx/server": "^2.0.35214-1",
|
|
43
|
+
"typedoc": "^0.28.20",
|
|
44
|
+
"typescript": "^6.0.3"
|
|
45
|
+
}
|
|
46
|
+
}
|