@oliversalzburg/js-utils 0.0.6 → 0.0.8
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/LICENSES.md +17 -0
- package/lib/dom/core.d.ts +12 -0
- package/lib/dom/core.js +23 -0
- package/lib/dom/core.js.map +1 -0
- package/lib/dom/index.d.ts +1 -0
- package/lib/dom/index.js +2 -0
- package/lib/dom/index.js.map +1 -0
- package/lib/error-serializer.js +1 -2
- package/lib/error-serializer.js.map +1 -1
- package/lib/error-serializer.test.d.ts +1 -0
- package/lib/error-serializer.test.js +117 -0
- package/lib/error-serializer.test.js.map +1 -0
- package/lib/graphics/canvas.d.ts +21 -0
- package/lib/graphics/canvas.js +21 -0
- package/lib/graphics/canvas.js.map +1 -1
- package/lib/graphics/render-loop.d.ts +21 -3
- package/lib/graphics/render-loop.js +25 -2
- package/lib/graphics/render-loop.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/math/core.js +1 -1
- package/lib/math/core.js.map +1 -1
- package/lib/math/index.d.ts +2 -0
- package/lib/math/index.js +2 -0
- package/lib/math/index.js.map +1 -1
- package/lib/math/vector.d.ts +2 -33
- package/lib/math/vector.js +2 -41
- package/lib/math/vector.js.map +1 -1
- package/lib/math/vector2.d.ts +164 -0
- package/lib/math/vector2.js +255 -0
- package/lib/math/vector2.js.map +1 -0
- package/lib/math/vector3.d.ts +45 -0
- package/lib/math/vector3.js +58 -0
- package/lib/math/vector3.js.map +1 -0
- package/lib/random.d.ts +6 -3
- package/lib/random.js +15 -12
- package/lib/random.js.map +1 -1
- package/package.json +13 -13
- package/docs/README.md +0 -3
- package/docs/classes/AbstractError.md +0 -271
- package/docs/classes/Canvas.md +0 -177
- package/docs/classes/InternalError.md +0 -301
- package/docs/classes/InvalidArgumentError.md +0 -277
- package/docs/classes/InvalidOperationError.md +0 -277
- package/docs/classes/NotImplementedError.md +0 -276
- package/docs/classes/PermissionViolationError.md +0 -277
- package/docs/classes/Random.md +0 -109
- package/docs/classes/RenderLoop.md +0 -49
- package/docs/classes/ResourceConflictError.md +0 -276
- package/docs/classes/UnexpectedNilError.md +0 -169
- package/docs/classes/UnknownError.md +0 -280
- package/docs/classes/Vector2.md +0 -79
- package/docs/classes/Vector3.md +0 -106
- package/docs/modules.md +0 -1313
- package/typedoc.json +0 -8
package/LICENSES.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Contains original work from <https://github.com/josephg/noisejs>.
|
|
2
|
+
|
|
3
|
+
ISC License
|
|
4
|
+
|
|
5
|
+
Copyright (c) 2013, Joseph Gentle
|
|
6
|
+
|
|
7
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
8
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
9
|
+
copyright notice and this permission notice appear in all copies.
|
|
10
|
+
|
|
11
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
12
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
13
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
14
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
15
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
|
16
|
+
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
17
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ConstructorOf } from "../core.js";
|
|
2
|
+
/**
|
|
3
|
+
* Retrieves an element from the document and returns it if it has the
|
|
4
|
+
* expected type. Otherwise an error is thrown.
|
|
5
|
+
* @param document The document from which to look up the element.
|
|
6
|
+
* @param id The ID of the element.
|
|
7
|
+
* @param Type The type you expect the element to have.
|
|
8
|
+
* @returns The requested element, if it has the expected type.
|
|
9
|
+
* @throws {InvalidOperationError} When the the document element has an
|
|
10
|
+
* unexpected type.
|
|
11
|
+
*/
|
|
12
|
+
export declare const getDocumentElementTypeById: <T extends HTMLElement>(document: Document, id: string, Type: ConstructorOf<T>) => T;
|
package/lib/dom/core.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { InvalidOperationError } from "../errors/InvalidOperationError.js";
|
|
2
|
+
import { UnexpectedNilError } from "../nil.js";
|
|
3
|
+
/**
|
|
4
|
+
* Retrieves an element from the document and returns it if it has the
|
|
5
|
+
* expected type. Otherwise an error is thrown.
|
|
6
|
+
* @param document The document from which to look up the element.
|
|
7
|
+
* @param id The ID of the element.
|
|
8
|
+
* @param Type The type you expect the element to have.
|
|
9
|
+
* @returns The requested element, if it has the expected type.
|
|
10
|
+
* @throws {InvalidOperationError} When the the document element has an
|
|
11
|
+
* unexpected type.
|
|
12
|
+
*/
|
|
13
|
+
export const getDocumentElementTypeById = (document, id, Type) => {
|
|
14
|
+
const element = document.getElementById(id);
|
|
15
|
+
if (element === null) {
|
|
16
|
+
throw new UnexpectedNilError(`The document element '${id}' does not exist.`);
|
|
17
|
+
}
|
|
18
|
+
if (!(element instanceof Type)) {
|
|
19
|
+
throw new InvalidOperationError(`The document element '${id}' has an unexpected type.`);
|
|
20
|
+
}
|
|
21
|
+
return element;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../source/dom/core.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,QAAkB,EAClB,EAAU,EACV,IAAsB,EACnB,EAAE;IACL,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAE5C,IAAI,OAAO,KAAK,IAAI,EAAE;QACpB,MAAM,IAAI,kBAAkB,CAAC,yBAAyB,EAAE,mBAAmB,CAAC,CAAC;KAC9E;IAED,IAAI,CAAC,CAAC,OAAO,YAAY,IAAI,CAAC,EAAE;QAC9B,MAAM,IAAI,qBAAqB,CAAC,yBAAyB,EAAE,2BAA2B,CAAC,CAAC;KACzF;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./core.js";
|
package/lib/dom/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/dom/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|
package/lib/error-serializer.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { types } from "node:util";
|
|
2
1
|
import { AbstractError } from "./errors/AbstractError.js";
|
|
3
2
|
import { InternalError } from "./errors/InternalError.js";
|
|
4
3
|
import { UnknownError } from "./errors/UnknownError.js";
|
|
@@ -8,7 +7,7 @@ import { UnknownError } from "./errors/UnknownError.js";
|
|
|
8
7
|
* @returns `true` if the subject is an `Error`, `false` otherwise.
|
|
9
8
|
*/
|
|
10
9
|
export const isError = (subject) => {
|
|
11
|
-
return subject instanceof Error ||
|
|
10
|
+
return subject instanceof Error || Object.prototype.toString.call(subject) === "[object Error]";
|
|
12
11
|
};
|
|
13
12
|
/**
|
|
14
13
|
* Returns an `AbstractError` that best represents the passed subject.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-serializer.js","sourceRoot":"","sources":["../source/error-serializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"error-serializer.js","sourceRoot":"","sources":["../source/error-serializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAOxD;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAoB,EAAE;IAC5D,OAAO,OAAO,YAAY,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,gBAAgB,CAAC;AAClG,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAiB,EAAE;IAChE,IAAI,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;QAC1C,OAAO,OAAO,CAAC;KAChB;IAED,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QACpB,OAAO,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KACzC;IAED,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAY,EAAU,EAAE;IAClD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AAClE,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAY,EAA2B,EAAE;IACrE,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;QAC5D,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,YAAkC,CAAC,CAAC;KAClE;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,KAAa,EACI,EAAE;IACnB,MAAM,UAAU,GAAoB;QAClC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC;IAEF,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/* eslint-disable no-unused-expressions */
|
|
2
|
+
import { expect } from "chai";
|
|
3
|
+
import { it } from "mocha";
|
|
4
|
+
import { errorToJSON, errorToRecord, errorToSimpleSerializable, isError, unknownToError, } from "./error-serializer.js";
|
|
5
|
+
import { InternalError } from "./errors/InternalError.js";
|
|
6
|
+
import { InvalidArgumentError } from "./errors/InvalidArgumentError.js";
|
|
7
|
+
function generateDefaultError() {
|
|
8
|
+
try {
|
|
9
|
+
throw new Error("oops");
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
return error;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
it("unknown to Error: AbstractError", () => {
|
|
16
|
+
const subjectError = new InvalidArgumentError("oops");
|
|
17
|
+
const serialized = unknownToError(subjectError);
|
|
18
|
+
expect(serialized.code).to.equal("ERR_OS_INVALID_ARGUMENT");
|
|
19
|
+
expect(serialized.message).to.equal("oops");
|
|
20
|
+
expect(serialized.name).to.equal("InvalidArgumentError");
|
|
21
|
+
expect(serialized.stack).to.be.a("string");
|
|
22
|
+
});
|
|
23
|
+
it("unknown to Error: Error", () => {
|
|
24
|
+
const subjectError = new Error("oops");
|
|
25
|
+
const serialized = unknownToError(subjectError);
|
|
26
|
+
expect(serialized.code).to.equal("ERR_OS_INTERNAL");
|
|
27
|
+
expect(serialized.message).to.equal("oops");
|
|
28
|
+
expect(serialized.name).to.equal("InternalError");
|
|
29
|
+
expect(serialized.stack).to.be.a("string");
|
|
30
|
+
});
|
|
31
|
+
it("unknown to Error: string", () => {
|
|
32
|
+
const subjectError = "oops";
|
|
33
|
+
const serialized = unknownToError(subjectError);
|
|
34
|
+
expect(serialized.code).to.equal("ERR_OS_UNKNOWN");
|
|
35
|
+
expect(serialized.message).to.equal("oops");
|
|
36
|
+
expect(serialized.name).to.equal("UnknownError");
|
|
37
|
+
expect(serialized.stack).to.be.a("string");
|
|
38
|
+
});
|
|
39
|
+
it("unknown to Error: null", () => {
|
|
40
|
+
const subjectError = null;
|
|
41
|
+
const serialized = unknownToError(subjectError);
|
|
42
|
+
expect(serialized.code).to.equal("ERR_OS_UNKNOWN");
|
|
43
|
+
expect(serialized.message).to.equal("null");
|
|
44
|
+
expect(serialized.name).to.equal("UnknownError");
|
|
45
|
+
expect(serialized.stack).to.be.a("string");
|
|
46
|
+
});
|
|
47
|
+
it("serializes an error to JSON", () => {
|
|
48
|
+
const subjectError = new Error("oops");
|
|
49
|
+
const plain = JSON.stringify(subjectError);
|
|
50
|
+
const serialized = errorToJSON(subjectError);
|
|
51
|
+
// We expect more properties to have been serialized into the string.
|
|
52
|
+
expect(serialized).not.to.equal(plain);
|
|
53
|
+
expect(serialized.length).to.be.greaterThan(plain.length);
|
|
54
|
+
});
|
|
55
|
+
it("serializes an error to a record: Error", () => {
|
|
56
|
+
const subjectError = new Error("oops");
|
|
57
|
+
const serialized = errorToRecord(subjectError);
|
|
58
|
+
expect(isError(subjectError)).to.be.true;
|
|
59
|
+
expect(isError(serialized)).to.be.false;
|
|
60
|
+
expect(serialized.message).to.equal("oops");
|
|
61
|
+
expect(serialized.stack).to.be.a("string");
|
|
62
|
+
});
|
|
63
|
+
it("serializes an error to a record: Default Error", () => {
|
|
64
|
+
const subjectError = generateDefaultError();
|
|
65
|
+
const serialized = errorToRecord(subjectError);
|
|
66
|
+
expect(isError(subjectError)).to.be.true;
|
|
67
|
+
expect(isError(serialized)).to.be.false;
|
|
68
|
+
expect(serialized.code).to.be.undefined;
|
|
69
|
+
expect(serialized.message).to.equal("oops");
|
|
70
|
+
expect(serialized.name).to.be.undefined;
|
|
71
|
+
expect(serialized.stack).to.be.a("string");
|
|
72
|
+
});
|
|
73
|
+
it("serializes an error to a record: Node Error", async function () {
|
|
74
|
+
let assert;
|
|
75
|
+
try {
|
|
76
|
+
assert = (await import("node:assert")).default;
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
this.skip();
|
|
80
|
+
}
|
|
81
|
+
let error;
|
|
82
|
+
try {
|
|
83
|
+
assert(false, "oops");
|
|
84
|
+
}
|
|
85
|
+
catch (thrownError) {
|
|
86
|
+
error = thrownError;
|
|
87
|
+
}
|
|
88
|
+
const subjectError = error;
|
|
89
|
+
const serialized = errorToRecord(subjectError);
|
|
90
|
+
expect(isError(subjectError)).to.be.true;
|
|
91
|
+
expect(isError(serialized)).to.be.false;
|
|
92
|
+
expect(serialized.code).to.equal("ERR_ASSERTION");
|
|
93
|
+
expect(serialized.message).to.equal("oops");
|
|
94
|
+
expect(serialized.name).to.equal("AssertionError");
|
|
95
|
+
expect(serialized.stack).to.be.a("string");
|
|
96
|
+
});
|
|
97
|
+
it("serializes an error to a simple object for persistence: Error", () => {
|
|
98
|
+
const subjectError = InternalError.fromError(new Error("oops"));
|
|
99
|
+
const serialized = errorToSimpleSerializable(subjectError);
|
|
100
|
+
expect(isError(subjectError)).to.be.true;
|
|
101
|
+
expect(isError(serialized)).to.be.false;
|
|
102
|
+
expect(serialized.code).to.equal("ERR_OS_INTERNAL");
|
|
103
|
+
expect(serialized.message).to.equal("oops");
|
|
104
|
+
expect(serialized.name).to.equal("InternalError");
|
|
105
|
+
expect(serialized.stack).to.be.a("string");
|
|
106
|
+
});
|
|
107
|
+
it("serializes an error to a simple object for persistence: Node Error", () => {
|
|
108
|
+
const subjectError = InternalError.fromError(generateDefaultError());
|
|
109
|
+
const serialized = errorToSimpleSerializable(subjectError);
|
|
110
|
+
expect(isError(subjectError)).to.be.true;
|
|
111
|
+
expect(isError(serialized)).to.be.false;
|
|
112
|
+
expect(serialized.code).to.equal("ERR_OS_INTERNAL");
|
|
113
|
+
expect(serialized.message).to.equal("oops");
|
|
114
|
+
expect(serialized.name).to.equal("InternalError");
|
|
115
|
+
expect(serialized.stack).to.be.a("string");
|
|
116
|
+
});
|
|
117
|
+
//# sourceMappingURL=error-serializer.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-serializer.test.js","sourceRoot":"","sources":["../source/error-serializer.test.ts"],"names":[],"mappings":"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"}
|
package/lib/graphics/canvas.d.ts
CHANGED
|
@@ -4,11 +4,32 @@
|
|
|
4
4
|
* to provide some convience for double-buffered drawing.
|
|
5
5
|
*/
|
|
6
6
|
export declare class Canvas {
|
|
7
|
+
/**
|
|
8
|
+
* The {@linkcode https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement HTMLCanvasElement}
|
|
9
|
+
* we're interacting with.
|
|
10
|
+
*/
|
|
7
11
|
readonly canvas: HTMLCanvasElement;
|
|
12
|
+
/**
|
|
13
|
+
* The width of the canvas.
|
|
14
|
+
*/
|
|
8
15
|
readonly width: number;
|
|
16
|
+
/**
|
|
17
|
+
* The height of the canvas.
|
|
18
|
+
*/
|
|
9
19
|
readonly height: number;
|
|
20
|
+
/**
|
|
21
|
+
* The {@linkcode https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2 CanvasRenderingContext2D}
|
|
22
|
+
* we're using to draw to the canvas.
|
|
23
|
+
*/
|
|
10
24
|
readonly context: CanvasRenderingContext2D;
|
|
25
|
+
/**
|
|
26
|
+
* The {@linkcode https://developer.mozilla.org/en-US/docs/Web/API/ImageData ImageData} object
|
|
27
|
+
* that represents our frontbuffer, which is the canvas itself.
|
|
28
|
+
*/
|
|
11
29
|
readonly pixMap: ImageData;
|
|
30
|
+
/**
|
|
31
|
+
* Our backbuffer.
|
|
32
|
+
*/
|
|
12
33
|
readonly buffer: Uint8ClampedArray;
|
|
13
34
|
/**
|
|
14
35
|
* Constructs a new {@link Canvas}.
|
package/lib/graphics/canvas.js
CHANGED
|
@@ -5,11 +5,32 @@ import { blend, blendAdditive, blendSubtractive, fromRGBA, getA, getB, getG, get
|
|
|
5
5
|
* to provide some convience for double-buffered drawing.
|
|
6
6
|
*/
|
|
7
7
|
export class Canvas {
|
|
8
|
+
/**
|
|
9
|
+
* The {@linkcode https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement HTMLCanvasElement}
|
|
10
|
+
* we're interacting with.
|
|
11
|
+
*/
|
|
8
12
|
canvas;
|
|
13
|
+
/**
|
|
14
|
+
* The width of the canvas.
|
|
15
|
+
*/
|
|
9
16
|
width;
|
|
17
|
+
/**
|
|
18
|
+
* The height of the canvas.
|
|
19
|
+
*/
|
|
10
20
|
height;
|
|
21
|
+
/**
|
|
22
|
+
* The {@linkcode https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2 CanvasRenderingContext2D}
|
|
23
|
+
* we're using to draw to the canvas.
|
|
24
|
+
*/
|
|
11
25
|
context;
|
|
26
|
+
/**
|
|
27
|
+
* The {@linkcode https://developer.mozilla.org/en-US/docs/Web/API/ImageData ImageData} object
|
|
28
|
+
* that represents our frontbuffer, which is the canvas itself.
|
|
29
|
+
*/
|
|
12
30
|
pixMap;
|
|
31
|
+
/**
|
|
32
|
+
* Our backbuffer.
|
|
33
|
+
*/
|
|
13
34
|
buffer;
|
|
14
35
|
/**
|
|
15
36
|
* Constructs a new {@link Canvas}.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../source/graphics/canvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,KAAK,EACL,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,GACL,MAAM,WAAW,CAAC;AAEnB;;;GAGG;AACH,MAAM,OAAO,MAAM;
|
|
1
|
+
{"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../source/graphics/canvas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,38 @@
|
|
|
1
|
-
import { AnyFunction } from "../core.js";
|
|
2
1
|
import { Canvas } from "./canvas.js";
|
|
2
|
+
/**
|
|
3
|
+
* The signature of a function that is called to draw a frame.
|
|
4
|
+
*/
|
|
5
|
+
export type RenderLoopCallback = (delta: number, timestamp: number) => unknown;
|
|
3
6
|
/**
|
|
4
7
|
* Conveniently provides a way to have a render loop called at
|
|
5
8
|
* a constant frame rate.
|
|
6
9
|
*/
|
|
7
10
|
export declare class RenderLoop {
|
|
8
11
|
#private;
|
|
12
|
+
/**
|
|
13
|
+
* The {@link Canvas} we're rendering to.
|
|
14
|
+
*/
|
|
9
15
|
readonly canvas: Canvas | undefined;
|
|
10
|
-
|
|
16
|
+
/**
|
|
17
|
+
* A function that we call when a new frame should be drawn.
|
|
18
|
+
*/
|
|
19
|
+
readonly renderLoop: RenderLoopCallback;
|
|
11
20
|
private previousTimestamp;
|
|
12
21
|
private readonly boundMain;
|
|
22
|
+
private frameRequestId;
|
|
13
23
|
/**
|
|
14
24
|
* Constructs a new {@link RenderLoop}.
|
|
15
25
|
* @param renderLoop The function to call when a new frame should be drawn.
|
|
16
26
|
* @param canvas When provided, the canvas is automatically updated
|
|
17
27
|
* after a frame was rendered.
|
|
18
28
|
*/
|
|
19
|
-
constructor(renderLoop:
|
|
29
|
+
constructor(renderLoop: RenderLoopCallback, canvas?: Canvas);
|
|
30
|
+
/**
|
|
31
|
+
* Stop the render loop.
|
|
32
|
+
*/
|
|
33
|
+
block(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Start the render loop.
|
|
36
|
+
*/
|
|
37
|
+
unblock(): void;
|
|
20
38
|
}
|
|
@@ -3,10 +3,17 @@
|
|
|
3
3
|
* a constant frame rate.
|
|
4
4
|
*/
|
|
5
5
|
export class RenderLoop {
|
|
6
|
+
/**
|
|
7
|
+
* The {@link Canvas} we're rendering to.
|
|
8
|
+
*/
|
|
6
9
|
canvas;
|
|
10
|
+
/**
|
|
11
|
+
* A function that we call when a new frame should be drawn.
|
|
12
|
+
*/
|
|
7
13
|
renderLoop;
|
|
8
14
|
previousTimestamp;
|
|
9
15
|
boundMain;
|
|
16
|
+
frameRequestId = null;
|
|
10
17
|
/**
|
|
11
18
|
* Constructs a new {@link RenderLoop}.
|
|
12
19
|
* @param renderLoop The function to call when a new frame should be drawn.
|
|
@@ -19,6 +26,22 @@ export class RenderLoop {
|
|
|
19
26
|
this.previousTimestamp = 0;
|
|
20
27
|
this.boundMain = this.#main.bind(this);
|
|
21
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Stop the render loop.
|
|
31
|
+
*/
|
|
32
|
+
block() {
|
|
33
|
+
if (this.frameRequestId === null) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
window.cancelAnimationFrame(this.frameRequestId);
|
|
37
|
+
this.frameRequestId = null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Start the render loop.
|
|
41
|
+
*/
|
|
42
|
+
unblock() {
|
|
43
|
+
this.frameRequestId = window.requestAnimationFrame(this.boundMain);
|
|
44
|
+
}
|
|
22
45
|
/**
|
|
23
46
|
* Our main loop.
|
|
24
47
|
* @param timestamp The current timestamp.
|
|
@@ -26,7 +49,7 @@ export class RenderLoop {
|
|
|
26
49
|
#main(timestamp) {
|
|
27
50
|
const timeDelta = timestamp - this.previousTimestamp;
|
|
28
51
|
this.#drawFrame(timestamp, timeDelta);
|
|
29
|
-
|
|
52
|
+
this.unblock();
|
|
30
53
|
this.previousTimestamp = timestamp;
|
|
31
54
|
}
|
|
32
55
|
/**
|
|
@@ -35,7 +58,7 @@ export class RenderLoop {
|
|
|
35
58
|
* @param delta The delta to the timestamp of the previous frame.
|
|
36
59
|
*/
|
|
37
60
|
#drawFrame(timestamp, delta) {
|
|
38
|
-
this.renderLoop(
|
|
61
|
+
this.renderLoop(delta, timestamp);
|
|
39
62
|
if (!this.canvas) {
|
|
40
63
|
return;
|
|
41
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-loop.js","sourceRoot":"","sources":["../../source/graphics/render-loop.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"render-loop.js","sourceRoot":"","sources":["../../source/graphics/render-loop.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,OAAO,UAAU;IACrB;;OAEG;IACM,MAAM,CAAqB;IAEpC;;OAEG;IACM,UAAU,CAAqB;IAEhC,iBAAiB,CAAS;IACjB,SAAS,CAA8B;IAChD,cAAc,GAAkB,IAAI,CAAC;IAE7C;;;;;OAKG;IACH,YAAY,UAA8B,EAAE,MAAe;QACzD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;YAChC,OAAO;SACR;QAED,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAiB;QACrB,MAAM,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEtC,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,SAAiB,EAAE,KAAa;QACzC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAElC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO;SACR;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAErB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,6BAA6B,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;CACF"}
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC"}
|
package/lib/math/core.js
CHANGED
package/lib/math/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../source/math/core.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../source/math/core.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAElD;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE;IACzC,OAAO,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE;IACzC,OAAO,OAAO,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAE;IACzE,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;IACtB,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE;IACrC,IAAI,CAAC,KAAK,KAAK,EAAE;QACf,OAAO,CAAC,CAAC;KACV,CAAC,oBAAoB;IACtB,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,8BAA8B;IACrD,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,EAAE,GAAG,CAAC,EAAE;QACb,CAAC,GAAG,EAAE,CAAC;QACP,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KAC1B;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AACrC,CAAC,CAAC"}
|
package/lib/math/index.d.ts
CHANGED
package/lib/math/index.js
CHANGED
package/lib/math/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/math/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/math/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
|
package/lib/math/vector.d.ts
CHANGED
|
@@ -1,33 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
*/
|
|
4
|
-
export declare class Vector2 {
|
|
5
|
-
x: number;
|
|
6
|
-
y: number;
|
|
7
|
-
/**
|
|
8
|
-
* Constructs a new {@link Vector2}.
|
|
9
|
-
* @param x The X component.
|
|
10
|
-
* @param y The Y component.
|
|
11
|
-
*/
|
|
12
|
-
constructor(x: number, y: number);
|
|
13
|
-
/**
|
|
14
|
-
* Returns the dot product between the two vectors.
|
|
15
|
-
* @param x The X component of the other vector.
|
|
16
|
-
* @param y The Y component of the other vector.
|
|
17
|
-
* @returns The dot product between the two vectors.
|
|
18
|
-
*/
|
|
19
|
-
dot2(x: number, y: number): number;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* A vector with 3 components.
|
|
23
|
-
*/
|
|
24
|
-
export declare class Vector3 extends Vector2 {
|
|
25
|
-
z: number;
|
|
26
|
-
/**
|
|
27
|
-
* Constructs a new {@link Vector3}.
|
|
28
|
-
* @param x The X component.
|
|
29
|
-
* @param y The Y component.
|
|
30
|
-
* @param z The Z component.
|
|
31
|
-
*/
|
|
32
|
-
constructor(x: number, y: number, z: number);
|
|
33
|
-
}
|
|
1
|
+
export * from "./vector2.js";
|
|
2
|
+
export * from "./vector3.js";
|
package/lib/math/vector.js
CHANGED
|
@@ -1,42 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
*/
|
|
4
|
-
export class Vector2 {
|
|
5
|
-
x;
|
|
6
|
-
y;
|
|
7
|
-
/**
|
|
8
|
-
* Constructs a new {@link Vector2}.
|
|
9
|
-
* @param x The X component.
|
|
10
|
-
* @param y The Y component.
|
|
11
|
-
*/
|
|
12
|
-
constructor(x, y) {
|
|
13
|
-
this.x = x;
|
|
14
|
-
this.y = y;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Returns the dot product between the two vectors.
|
|
18
|
-
* @param x The X component of the other vector.
|
|
19
|
-
* @param y The Y component of the other vector.
|
|
20
|
-
* @returns The dot product between the two vectors.
|
|
21
|
-
*/
|
|
22
|
-
dot2(x, y) {
|
|
23
|
-
return this.x * x + this.y * y;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* A vector with 3 components.
|
|
28
|
-
*/
|
|
29
|
-
export class Vector3 extends Vector2 {
|
|
30
|
-
z;
|
|
31
|
-
/**
|
|
32
|
-
* Constructs a new {@link Vector3}.
|
|
33
|
-
* @param x The X component.
|
|
34
|
-
* @param y The Y component.
|
|
35
|
-
* @param z The Z component.
|
|
36
|
-
*/
|
|
37
|
-
constructor(x, y, z) {
|
|
38
|
-
super(x, y);
|
|
39
|
-
this.z = z;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
1
|
+
export * from "./vector2.js";
|
|
2
|
+
export * from "./vector3.js";
|
|
42
3
|
//# sourceMappingURL=vector.js.map
|
package/lib/math/vector.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector.js","sourceRoot":"","sources":["../../source/math/vector.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"vector.js","sourceRoot":"","sources":["../../source/math/vector.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
|