trying to build protos

This commit is contained in:
evanpelle
2024-08-20 08:11:41 -07:00
parent 95133007c2
commit 8bd86d0384
11 changed files with 1461 additions and 16 deletions
+4 -3
View File
@@ -34,11 +34,12 @@
* BUG: invert zoom DONE 8/19/2024
* better algorithm for name render placement DONE 8/19/2024
* show how many players in each lobby DONE 8/19/2024
* make boats larger
* boats same color as owner
* make boats larger DONE 8/19/2024
* boats same color as owner 8/19/2024
* store map as proto
* make coasts look better
* have boats not get close to shore
* BUG: boat doesn't work if on lake on other player not on lake
* BUG: boat doesn't work if on lake if other player not on same lake
* Allow boats to attack TerraNullius
* add shader to dim border
* remove player.info()
+219
View File
@@ -0,0 +1,219 @@
import * as $protobuf from "protobufjs";
import Long = require("long");
/** Properties of a TerrainMap. */
export interface ITerrainMap {
/** TerrainMap height */
height?: (number|null);
/** TerrainMap width */
width?: (number|null);
/** TerrainMap terrain */
terrain?: (ITerrainTile[]|null);
}
/** Represents a TerrainMap. */
export class TerrainMap implements ITerrainMap {
/**
* Constructs a new TerrainMap.
* @param [properties] Properties to set
*/
constructor(properties?: ITerrainMap);
/** TerrainMap height. */
public height: number;
/** TerrainMap width. */
public width: number;
/** TerrainMap terrain. */
public terrain: ITerrainTile[];
/**
* Creates a new TerrainMap instance using the specified properties.
* @param [properties] Properties to set
* @returns TerrainMap instance
*/
public static create(properties?: ITerrainMap): TerrainMap;
/**
* Encodes the specified TerrainMap message. Does not implicitly {@link TerrainMap.verify|verify} messages.
* @param message TerrainMap message or plain object to encode
* @param [writer] Writer to encode to
* @returns Writer
*/
public static encode(message: ITerrainMap, writer?: $protobuf.Writer): $protobuf.Writer;
/**
* Encodes the specified TerrainMap message, length delimited. Does not implicitly {@link TerrainMap.verify|verify} messages.
* @param message TerrainMap message or plain object to encode
* @param [writer] Writer to encode to
* @returns Writer
*/
public static encodeDelimited(message: ITerrainMap, writer?: $protobuf.Writer): $protobuf.Writer;
/**
* Decodes a TerrainMap message from the specified reader or buffer.
* @param reader Reader or buffer to decode from
* @param [length] Message length if known beforehand
* @returns TerrainMap
* @throws {Error} If the payload is not a reader or valid buffer
* @throws {$protobuf.util.ProtocolError} If required fields are missing
*/
public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): TerrainMap;
/**
* Decodes a TerrainMap message from the specified reader or buffer, length delimited.
* @param reader Reader or buffer to decode from
* @returns TerrainMap
* @throws {Error} If the payload is not a reader or valid buffer
* @throws {$protobuf.util.ProtocolError} If required fields are missing
*/
public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): TerrainMap;
/**
* Verifies a TerrainMap message.
* @param message Plain object to verify
* @returns `null` if valid, otherwise the reason why it is not
*/
public static verify(message: { [k: string]: any }): (string|null);
/**
* Creates a TerrainMap message from a plain object. Also converts values to their respective internal types.
* @param object Plain object
* @returns TerrainMap
*/
public static fromObject(object: { [k: string]: any }): TerrainMap;
/**
* Creates a plain object from a TerrainMap message. Also converts values to other types if specified.
* @param message TerrainMap
* @param [options] Conversion options
* @returns Plain object
*/
public static toObject(message: TerrainMap, options?: $protobuf.IConversionOptions): { [k: string]: any };
/**
* Converts this TerrainMap to JSON.
* @returns JSON object
*/
public toJSON(): { [k: string]: any };
/**
* Gets the default type url for TerrainMap
* @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
* @returns The default type url
*/
public static getTypeUrl(typeUrlPrefix?: string): string;
}
/** Properties of a TerrainTile. */
export interface ITerrainTile {
/** TerrainTile name */
name?: (string|null);
/** TerrainTile age */
age?: (number|null);
/** TerrainTile email */
email?: (string|null);
}
/** Represents a TerrainTile. */
export class TerrainTile implements ITerrainTile {
/**
* Constructs a new TerrainTile.
* @param [properties] Properties to set
*/
constructor(properties?: ITerrainTile);
/** TerrainTile name. */
public name: string;
/** TerrainTile age. */
public age: number;
/** TerrainTile email. */
public email: string;
/**
* Creates a new TerrainTile instance using the specified properties.
* @param [properties] Properties to set
* @returns TerrainTile instance
*/
public static create(properties?: ITerrainTile): TerrainTile;
/**
* Encodes the specified TerrainTile message. Does not implicitly {@link TerrainTile.verify|verify} messages.
* @param message TerrainTile message or plain object to encode
* @param [writer] Writer to encode to
* @returns Writer
*/
public static encode(message: ITerrainTile, writer?: $protobuf.Writer): $protobuf.Writer;
/**
* Encodes the specified TerrainTile message, length delimited. Does not implicitly {@link TerrainTile.verify|verify} messages.
* @param message TerrainTile message or plain object to encode
* @param [writer] Writer to encode to
* @returns Writer
*/
public static encodeDelimited(message: ITerrainTile, writer?: $protobuf.Writer): $protobuf.Writer;
/**
* Decodes a TerrainTile message from the specified reader or buffer.
* @param reader Reader or buffer to decode from
* @param [length] Message length if known beforehand
* @returns TerrainTile
* @throws {Error} If the payload is not a reader or valid buffer
* @throws {$protobuf.util.ProtocolError} If required fields are missing
*/
public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): TerrainTile;
/**
* Decodes a TerrainTile message from the specified reader or buffer, length delimited.
* @param reader Reader or buffer to decode from
* @returns TerrainTile
* @throws {Error} If the payload is not a reader or valid buffer
* @throws {$protobuf.util.ProtocolError} If required fields are missing
*/
public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): TerrainTile;
/**
* Verifies a TerrainTile message.
* @param message Plain object to verify
* @returns `null` if valid, otherwise the reason why it is not
*/
public static verify(message: { [k: string]: any }): (string|null);
/**
* Creates a TerrainTile message from a plain object. Also converts values to their respective internal types.
* @param object Plain object
* @returns TerrainTile
*/
public static fromObject(object: { [k: string]: any }): TerrainTile;
/**
* Creates a plain object from a TerrainTile message. Also converts values to other types if specified.
* @param message TerrainTile
* @param [options] Conversion options
* @returns Plain object
*/
public static toObject(message: TerrainTile, options?: $protobuf.IConversionOptions): { [k: string]: any };
/**
* Converts this TerrainTile to JSON.
* @returns JSON object
*/
public toJSON(): { [k: string]: any };
/**
* Gets the default type url for TerrainTile
* @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
* @returns The default type url
*/
public static getTypeUrl(typeUrlPrefix?: string): string;
}
+532
View File
@@ -0,0 +1,532 @@
/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
import * as $protobuf from "protobufjs/minimal";
// Common aliases
const $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;
// Exported root namespace
const $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {});
export const TerrainMap = $root.TerrainMap = (() => {
/**
* Properties of a TerrainMap.
* @exports ITerrainMap
* @interface ITerrainMap
* @property {number|null} [height] TerrainMap height
* @property {number|null} [width] TerrainMap width
* @property {Array.<ITerrainTile>|null} [terrain] TerrainMap terrain
*/
/**
* Constructs a new TerrainMap.
* @exports TerrainMap
* @classdesc Represents a TerrainMap.
* @implements ITerrainMap
* @constructor
* @param {ITerrainMap=} [properties] Properties to set
*/
function TerrainMap(properties) {
this.terrain = [];
if (properties)
for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
if (properties[keys[i]] != null)
this[keys[i]] = properties[keys[i]];
}
/**
* TerrainMap height.
* @member {number} height
* @memberof TerrainMap
* @instance
*/
TerrainMap.prototype.height = 0;
/**
* TerrainMap width.
* @member {number} width
* @memberof TerrainMap
* @instance
*/
TerrainMap.prototype.width = 0;
/**
* TerrainMap terrain.
* @member {Array.<ITerrainTile>} terrain
* @memberof TerrainMap
* @instance
*/
TerrainMap.prototype.terrain = $util.emptyArray;
/**
* Creates a new TerrainMap instance using the specified properties.
* @function create
* @memberof TerrainMap
* @static
* @param {ITerrainMap=} [properties] Properties to set
* @returns {TerrainMap} TerrainMap instance
*/
TerrainMap.create = function create(properties) {
return new TerrainMap(properties);
};
/**
* Encodes the specified TerrainMap message. Does not implicitly {@link TerrainMap.verify|verify} messages.
* @function encode
* @memberof TerrainMap
* @static
* @param {ITerrainMap} message TerrainMap message or plain object to encode
* @param {$protobuf.Writer} [writer] Writer to encode to
* @returns {$protobuf.Writer} Writer
*/
TerrainMap.encode = function encode(message, writer) {
if (!writer)
writer = $Writer.create();
if (message.height != null && Object.hasOwnProperty.call(message, "height"))
writer.uint32(/* id 1, wireType 0 =*/8).int32(message.height);
if (message.width != null && Object.hasOwnProperty.call(message, "width"))
writer.uint32(/* id 2, wireType 0 =*/16).int32(message.width);
if (message.terrain != null && message.terrain.length)
for (let i = 0; i < message.terrain.length; ++i)
$root.TerrainTile.encode(message.terrain[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
return writer;
};
/**
* Encodes the specified TerrainMap message, length delimited. Does not implicitly {@link TerrainMap.verify|verify} messages.
* @function encodeDelimited
* @memberof TerrainMap
* @static
* @param {ITerrainMap} message TerrainMap message or plain object to encode
* @param {$protobuf.Writer} [writer] Writer to encode to
* @returns {$protobuf.Writer} Writer
*/
TerrainMap.encodeDelimited = function encodeDelimited(message, writer) {
return this.encode(message, writer).ldelim();
};
/**
* Decodes a TerrainMap message from the specified reader or buffer.
* @function decode
* @memberof TerrainMap
* @static
* @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
* @param {number} [length] Message length if known beforehand
* @returns {TerrainMap} TerrainMap
* @throws {Error} If the payload is not a reader or valid buffer
* @throws {$protobuf.util.ProtocolError} If required fields are missing
*/
TerrainMap.decode = function decode(reader, length) {
if (!(reader instanceof $Reader))
reader = $Reader.create(reader);
let end = length === undefined ? reader.len : reader.pos + length, message = new $root.TerrainMap();
while (reader.pos < end) {
let tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
message.height = reader.int32();
break;
}
case 2: {
message.width = reader.int32();
break;
}
case 3: {
if (!(message.terrain && message.terrain.length))
message.terrain = [];
message.terrain.push($root.TerrainTile.decode(reader, reader.uint32()));
break;
}
default:
reader.skipType(tag & 7);
break;
}
}
return message;
};
/**
* Decodes a TerrainMap message from the specified reader or buffer, length delimited.
* @function decodeDelimited
* @memberof TerrainMap
* @static
* @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
* @returns {TerrainMap} TerrainMap
* @throws {Error} If the payload is not a reader or valid buffer
* @throws {$protobuf.util.ProtocolError} If required fields are missing
*/
TerrainMap.decodeDelimited = function decodeDelimited(reader) {
if (!(reader instanceof $Reader))
reader = new $Reader(reader);
return this.decode(reader, reader.uint32());
};
/**
* Verifies a TerrainMap message.
* @function verify
* @memberof TerrainMap
* @static
* @param {Object.<string,*>} message Plain object to verify
* @returns {string|null} `null` if valid, otherwise the reason why it is not
*/
TerrainMap.verify = function verify(message) {
if (typeof message !== "object" || message === null)
return "object expected";
if (message.height != null && message.hasOwnProperty("height"))
if (!$util.isInteger(message.height))
return "height: integer expected";
if (message.width != null && message.hasOwnProperty("width"))
if (!$util.isInteger(message.width))
return "width: integer expected";
if (message.terrain != null && message.hasOwnProperty("terrain")) {
if (!Array.isArray(message.terrain))
return "terrain: array expected";
for (let i = 0; i < message.terrain.length; ++i) {
let error = $root.TerrainTile.verify(message.terrain[i]);
if (error)
return "terrain." + error;
}
}
return null;
};
/**
* Creates a TerrainMap message from a plain object. Also converts values to their respective internal types.
* @function fromObject
* @memberof TerrainMap
* @static
* @param {Object.<string,*>} object Plain object
* @returns {TerrainMap} TerrainMap
*/
TerrainMap.fromObject = function fromObject(object) {
if (object instanceof $root.TerrainMap)
return object;
let message = new $root.TerrainMap();
if (object.height != null)
message.height = object.height | 0;
if (object.width != null)
message.width = object.width | 0;
if (object.terrain) {
if (!Array.isArray(object.terrain))
throw TypeError(".TerrainMap.terrain: array expected");
message.terrain = [];
for (let i = 0; i < object.terrain.length; ++i) {
if (typeof object.terrain[i] !== "object")
throw TypeError(".TerrainMap.terrain: object expected");
message.terrain[i] = $root.TerrainTile.fromObject(object.terrain[i]);
}
}
return message;
};
/**
* Creates a plain object from a TerrainMap message. Also converts values to other types if specified.
* @function toObject
* @memberof TerrainMap
* @static
* @param {TerrainMap} message TerrainMap
* @param {$protobuf.IConversionOptions} [options] Conversion options
* @returns {Object.<string,*>} Plain object
*/
TerrainMap.toObject = function toObject(message, options) {
if (!options)
options = {};
let object = {};
if (options.arrays || options.defaults)
object.terrain = [];
if (options.defaults) {
object.height = 0;
object.width = 0;
}
if (message.height != null && message.hasOwnProperty("height"))
object.height = message.height;
if (message.width != null && message.hasOwnProperty("width"))
object.width = message.width;
if (message.terrain && message.terrain.length) {
object.terrain = [];
for (let j = 0; j < message.terrain.length; ++j)
object.terrain[j] = $root.TerrainTile.toObject(message.terrain[j], options);
}
return object;
};
/**
* Converts this TerrainMap to JSON.
* @function toJSON
* @memberof TerrainMap
* @instance
* @returns {Object.<string,*>} JSON object
*/
TerrainMap.prototype.toJSON = function toJSON() {
return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
};
/**
* Gets the default type url for TerrainMap
* @function getTypeUrl
* @memberof TerrainMap
* @static
* @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
* @returns {string} The default type url
*/
TerrainMap.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
if (typeUrlPrefix === undefined) {
typeUrlPrefix = "type.googleapis.com";
}
return typeUrlPrefix + "/TerrainMap";
};
return TerrainMap;
})();
export const TerrainTile = $root.TerrainTile = (() => {
/**
* Properties of a TerrainTile.
* @exports ITerrainTile
* @interface ITerrainTile
* @property {string|null} [name] TerrainTile name
* @property {number|null} [age] TerrainTile age
* @property {string|null} [email] TerrainTile email
*/
/**
* Constructs a new TerrainTile.
* @exports TerrainTile
* @classdesc Represents a TerrainTile.
* @implements ITerrainTile
* @constructor
* @param {ITerrainTile=} [properties] Properties to set
*/
function TerrainTile(properties) {
if (properties)
for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
if (properties[keys[i]] != null)
this[keys[i]] = properties[keys[i]];
}
/**
* TerrainTile name.
* @member {string} name
* @memberof TerrainTile
* @instance
*/
TerrainTile.prototype.name = "";
/**
* TerrainTile age.
* @member {number} age
* @memberof TerrainTile
* @instance
*/
TerrainTile.prototype.age = 0;
/**
* TerrainTile email.
* @member {string} email
* @memberof TerrainTile
* @instance
*/
TerrainTile.prototype.email = "";
/**
* Creates a new TerrainTile instance using the specified properties.
* @function create
* @memberof TerrainTile
* @static
* @param {ITerrainTile=} [properties] Properties to set
* @returns {TerrainTile} TerrainTile instance
*/
TerrainTile.create = function create(properties) {
return new TerrainTile(properties);
};
/**
* Encodes the specified TerrainTile message. Does not implicitly {@link TerrainTile.verify|verify} messages.
* @function encode
* @memberof TerrainTile
* @static
* @param {ITerrainTile} message TerrainTile message or plain object to encode
* @param {$protobuf.Writer} [writer] Writer to encode to
* @returns {$protobuf.Writer} Writer
*/
TerrainTile.encode = function encode(message, writer) {
if (!writer)
writer = $Writer.create();
if (message.name != null && Object.hasOwnProperty.call(message, "name"))
writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);
if (message.age != null && Object.hasOwnProperty.call(message, "age"))
writer.uint32(/* id 2, wireType 0 =*/16).int32(message.age);
if (message.email != null && Object.hasOwnProperty.call(message, "email"))
writer.uint32(/* id 3, wireType 2 =*/26).string(message.email);
return writer;
};
/**
* Encodes the specified TerrainTile message, length delimited. Does not implicitly {@link TerrainTile.verify|verify} messages.
* @function encodeDelimited
* @memberof TerrainTile
* @static
* @param {ITerrainTile} message TerrainTile message or plain object to encode
* @param {$protobuf.Writer} [writer] Writer to encode to
* @returns {$protobuf.Writer} Writer
*/
TerrainTile.encodeDelimited = function encodeDelimited(message, writer) {
return this.encode(message, writer).ldelim();
};
/**
* Decodes a TerrainTile message from the specified reader or buffer.
* @function decode
* @memberof TerrainTile
* @static
* @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
* @param {number} [length] Message length if known beforehand
* @returns {TerrainTile} TerrainTile
* @throws {Error} If the payload is not a reader or valid buffer
* @throws {$protobuf.util.ProtocolError} If required fields are missing
*/
TerrainTile.decode = function decode(reader, length) {
if (!(reader instanceof $Reader))
reader = $Reader.create(reader);
let end = length === undefined ? reader.len : reader.pos + length, message = new $root.TerrainTile();
while (reader.pos < end) {
let tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
message.name = reader.string();
break;
}
case 2: {
message.age = reader.int32();
break;
}
case 3: {
message.email = reader.string();
break;
}
default:
reader.skipType(tag & 7);
break;
}
}
return message;
};
/**
* Decodes a TerrainTile message from the specified reader or buffer, length delimited.
* @function decodeDelimited
* @memberof TerrainTile
* @static
* @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
* @returns {TerrainTile} TerrainTile
* @throws {Error} If the payload is not a reader or valid buffer
* @throws {$protobuf.util.ProtocolError} If required fields are missing
*/
TerrainTile.decodeDelimited = function decodeDelimited(reader) {
if (!(reader instanceof $Reader))
reader = new $Reader(reader);
return this.decode(reader, reader.uint32());
};
/**
* Verifies a TerrainTile message.
* @function verify
* @memberof TerrainTile
* @static
* @param {Object.<string,*>} message Plain object to verify
* @returns {string|null} `null` if valid, otherwise the reason why it is not
*/
TerrainTile.verify = function verify(message) {
if (typeof message !== "object" || message === null)
return "object expected";
if (message.name != null && message.hasOwnProperty("name"))
if (!$util.isString(message.name))
return "name: string expected";
if (message.age != null && message.hasOwnProperty("age"))
if (!$util.isInteger(message.age))
return "age: integer expected";
if (message.email != null && message.hasOwnProperty("email"))
if (!$util.isString(message.email))
return "email: string expected";
return null;
};
/**
* Creates a TerrainTile message from a plain object. Also converts values to their respective internal types.
* @function fromObject
* @memberof TerrainTile
* @static
* @param {Object.<string,*>} object Plain object
* @returns {TerrainTile} TerrainTile
*/
TerrainTile.fromObject = function fromObject(object) {
if (object instanceof $root.TerrainTile)
return object;
let message = new $root.TerrainTile();
if (object.name != null)
message.name = String(object.name);
if (object.age != null)
message.age = object.age | 0;
if (object.email != null)
message.email = String(object.email);
return message;
};
/**
* Creates a plain object from a TerrainTile message. Also converts values to other types if specified.
* @function toObject
* @memberof TerrainTile
* @static
* @param {TerrainTile} message TerrainTile
* @param {$protobuf.IConversionOptions} [options] Conversion options
* @returns {Object.<string,*>} Plain object
*/
TerrainTile.toObject = function toObject(message, options) {
if (!options)
options = {};
let object = {};
if (options.defaults) {
object.name = "";
object.age = 0;
object.email = "";
}
if (message.name != null && message.hasOwnProperty("name"))
object.name = message.name;
if (message.age != null && message.hasOwnProperty("age"))
object.age = message.age;
if (message.email != null && message.hasOwnProperty("email"))
object.email = message.email;
return object;
};
/**
* Converts this TerrainTile to JSON.
* @function toJSON
* @memberof TerrainTile
* @instance
* @returns {Object.<string,*>} JSON object
*/
TerrainTile.prototype.toJSON = function toJSON() {
return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
};
/**
* Gets the default type url for TerrainTile
* @function getTypeUrl
* @memberof TerrainTile
* @static
* @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
* @returns {string} The default type url
*/
TerrainTile.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
if (typeUrlPrefix === undefined) {
typeUrlPrefix = "type.googleapis.com";
}
return typeUrlPrefix + "/TerrainTile";
};
return TerrainTile;
})();
export {$root as default};
+606 -7
View File
@@ -7,6 +7,7 @@
"name": "warfront-client",
"dependencies": {
"@types/express": "^4.17.21",
"@types/google-protobuf": "^3.15.12",
"@types/jimp": "^0.2.28",
"colord": "^2.9.3",
"crypto": "^1.0.1",
@@ -15,6 +16,7 @@
"node-addon-api": "^8.1.0",
"node-gyp": "^10.2.0",
"priority-queue-typescript": "^1.0.1",
"protobufjs": "^7.3.2",
"typia": "^6.5.2",
"ws": "^8.18.0",
"zod": "^3.23.8"
@@ -26,6 +28,7 @@
"@types/chai": "^4.3.17",
"@types/jest": "^29.5.12",
"@types/mocha": "^10.0.7",
"@types/node": "^22.4.1",
"@types/sinon": "^17.0.3",
"@types/ws": "^8.5.11",
"babel-jest": "^29.7.0",
@@ -46,6 +49,7 @@
"ts-mocha": "^10.0.0",
"ts-node": "^10.9.2",
"tsconfig-paths": "^4.2.0",
"tsx": "^4.17.0",
"typescript": "^5.5.4",
"webpack": "^5.91.0",
"webpack-cli": "^5.1.4",
@@ -2161,6 +2165,414 @@
"node": ">=10.0.0"
}
},
"node_modules/@esbuild/aix-ppc64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz",
"integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==",
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"aix"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-arm": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz",
"integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-arm64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz",
"integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-x64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz",
"integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/darwin-arm64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz",
"integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/darwin-x64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz",
"integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/freebsd-arm64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz",
"integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/freebsd-x64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz",
"integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-arm": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz",
"integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-arm64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz",
"integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-ia32": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz",
"integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-loong64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz",
"integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==",
"cpu": [
"loong64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-mips64el": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz",
"integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==",
"cpu": [
"mips64el"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-ppc64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz",
"integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==",
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-riscv64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz",
"integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==",
"cpu": [
"riscv64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-s390x": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz",
"integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==",
"cpu": [
"s390x"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-x64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz",
"integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/netbsd-x64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz",
"integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openbsd-arm64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz",
"integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openbsd-x64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz",
"integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/sunos-x64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz",
"integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"sunos"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-arm64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz",
"integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-ia32": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz",
"integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-x64": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz",
"integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
@@ -3249,6 +3661,70 @@
"node": ">=14"
}
},
"node_modules/@protobufjs/aspromise": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
"integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/base64": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
"integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/codegen": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
"integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/eventemitter": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
"integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/fetch": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
"integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
"license": "BSD-3-Clause",
"dependencies": {
"@protobufjs/aspromise": "^1.1.1",
"@protobufjs/inquire": "^1.1.0"
}
},
"node_modules/@protobufjs/float": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
"integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/inquire": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
"integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/path": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
"integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/pool": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
"integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/utf8": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
"integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
"license": "BSD-3-Clause"
},
"node_modules/@samchon/openapi": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/@samchon/openapi/-/openapi-0.4.2.tgz",
@@ -3469,6 +3945,12 @@
"@types/send": "*"
}
},
"node_modules/@types/google-protobuf": {
"version": "3.15.12",
"resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.12.tgz",
"integrity": "sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==",
"license": "MIT"
},
"node_modules/@types/graceful-fs": {
"version": "4.1.9",
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
@@ -3571,11 +4053,12 @@
"dev": true
},
"node_modules/@types/node": {
"version": "20.12.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.5.tgz",
"integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==",
"version": "22.4.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.4.1.tgz",
"integrity": "sha512-1tbpb9325+gPnKK0dMm+/LMriX0vKxf6RnB0SZUqfyVkQ4fMgUSySqhxE/y8Jvs4NyF1yHzTfG9KlnkIODxPKg==",
"license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
"undici-types": "~6.19.2"
}
},
"node_modules/@types/node-forge": {
@@ -5740,6 +6223,46 @@
"integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==",
"dev": true
},
"node_modules/esbuild": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz",
"integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"bin": {
"esbuild": "bin/esbuild"
},
"engines": {
"node": ">=18"
},
"optionalDependencies": {
"@esbuild/aix-ppc64": "0.23.1",
"@esbuild/android-arm": "0.23.1",
"@esbuild/android-arm64": "0.23.1",
"@esbuild/android-x64": "0.23.1",
"@esbuild/darwin-arm64": "0.23.1",
"@esbuild/darwin-x64": "0.23.1",
"@esbuild/freebsd-arm64": "0.23.1",
"@esbuild/freebsd-x64": "0.23.1",
"@esbuild/linux-arm": "0.23.1",
"@esbuild/linux-arm64": "0.23.1",
"@esbuild/linux-ia32": "0.23.1",
"@esbuild/linux-loong64": "0.23.1",
"@esbuild/linux-mips64el": "0.23.1",
"@esbuild/linux-ppc64": "0.23.1",
"@esbuild/linux-riscv64": "0.23.1",
"@esbuild/linux-s390x": "0.23.1",
"@esbuild/linux-x64": "0.23.1",
"@esbuild/netbsd-x64": "0.23.1",
"@esbuild/openbsd-arm64": "0.23.1",
"@esbuild/openbsd-x64": "0.23.1",
"@esbuild/sunos-x64": "0.23.1",
"@esbuild/win32-arm64": "0.23.1",
"@esbuild/win32-ia32": "0.23.1",
"@esbuild/win32-x64": "0.23.1"
}
},
"node_modules/escalade": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
@@ -6305,6 +6828,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/get-tsconfig": {
"version": "4.7.6",
"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz",
"integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==",
"dev": true,
"license": "MIT",
"dependencies": {
"resolve-pkg-maps": "^1.0.0"
},
"funding": {
"url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
}
},
"node_modules/gifwrap": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz",
@@ -8372,6 +8908,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/long": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
"integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==",
"license": "Apache-2.0"
},
"node_modules/loupe": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz",
@@ -9829,6 +10371,30 @@
"node": ">= 6"
}
},
"node_modules/protobufjs": {
"version": "7.3.2",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.2.tgz",
"integrity": "sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==",
"hasInstallScript": true,
"license": "BSD-3-Clause",
"dependencies": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
"@protobufjs/codegen": "^2.0.4",
"@protobufjs/eventemitter": "^1.1.0",
"@protobufjs/fetch": "^1.1.0",
"@protobufjs/float": "^1.0.2",
"@protobufjs/inquire": "^1.1.0",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/node": ">=13.7.0",
"long": "^5.0.0"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -10151,6 +10717,16 @@
"node": ">=8"
}
},
"node_modules/resolve-pkg-maps": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
"integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
"dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
}
},
"node_modules/resolve.exports": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
@@ -11427,6 +12003,7 @@
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
"integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
@@ -11484,6 +12061,26 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/tsx": {
"version": "4.17.0",
"resolved": "https://registry.npmjs.org/tsx/-/tsx-4.17.0.tgz",
"integrity": "sha512-eN4mnDA5UMKDt4YZixo9tBioibaMBpoxBkD+rIPAjVmYERSG0/dWEY1CEFuV89CgASlKL499q8AhmkMnnjtOJg==",
"dev": true,
"license": "MIT",
"dependencies": {
"esbuild": "~0.23.0",
"get-tsconfig": "^4.7.5"
},
"bin": {
"tsx": "dist/cli.mjs"
},
"engines": {
"node": ">=18.0.0"
},
"optionalDependencies": {
"fsevents": "~2.3.3"
}
},
"node_modules/type-detect": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
@@ -11520,6 +12117,7 @@
"version": "5.5.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
"integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -11555,9 +12153,10 @@
}
},
"node_modules/undici-types": {
"version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
"version": "6.19.8",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
"license": "MIT"
},
"node_modules/unicode-canonical-property-names-ecmascript": {
"version": "2.0.0",
+7 -2
View File
@@ -1,7 +1,8 @@
{
"name": "warfront-client",
"scripts": {
"prebuild": "tsc --project scripts",
"build-world-terrain-map": "GAME_ENV=prod node --loader ts-node/esm --experimental-specifier-resolution=node src/scripts/TerrainMapGenerator.ts",
"generate-proto": "npx pbjs -t static-module -w es6 -o generated/protos.js proto/**/*.proto && npx pbts -o generated/protos.d.ts generated/protos.js",
"build-dev": "webpack --config webpack.config.js --mode development",
"build-prod": "webpack --config webpack.config.js --mode production",
"start:client": "webpack serve --open --node-env development",
@@ -17,6 +18,7 @@
"@types/chai": "^4.3.17",
"@types/jest": "^29.5.12",
"@types/mocha": "^10.0.7",
"@types/node": "^22.4.1",
"@types/sinon": "^17.0.3",
"@types/ws": "^8.5.11",
"babel-jest": "^29.7.0",
@@ -37,6 +39,7 @@
"ts-mocha": "^10.0.0",
"ts-node": "^10.9.2",
"tsconfig-paths": "^4.2.0",
"tsx": "^4.17.0",
"typescript": "^5.5.4",
"webpack": "^5.91.0",
"webpack-cli": "^5.1.4",
@@ -44,6 +47,7 @@
},
"dependencies": {
"@types/express": "^4.17.21",
"@types/google-protobuf": "^3.15.12",
"@types/jimp": "^0.2.28",
"colord": "^2.9.3",
"crypto": "^1.0.1",
@@ -52,9 +56,10 @@
"node-addon-api": "^8.1.0",
"node-gyp": "^10.2.0",
"priority-queue-typescript": "^1.0.1",
"protobufjs": "^7.3.2",
"typia": "^6.5.2",
"ws": "^8.18.0",
"zod": "^3.23.8"
},
"type": "module"
}
}
+13
View File
@@ -0,0 +1,13 @@
syntax = "proto3";
message TerrainMap {
int32 height = 1;
int32 width = 2;
repeated TerrainTile terrain = 3;
}
message TerrainTile {
string name = 1;
int32 age = 2;
string email = 3;
}
+3
View File
@@ -2,6 +2,8 @@ import {Jimp as JimpType, JimpConstructors} from '@jimp/core';
import 'jimp';
import {TerrainMap, TerrainType, TerrainTypes} from './Game';
import {TerrainMapImpl} from './GameImpl';
import {TerrainTile} from '../../generated/protos';
declare const Jimp: JimpType & JimpConstructors;
@@ -14,6 +16,7 @@ export async function loadTerrainMap(): Promise<TerrainMap> {
const terrain: TerrainType[][] = Array(width).fill(null).map(() => Array(height).fill(TerrainTypes.Water));
image.scan(0, 0, width, height, function (x: number, y: number, idx: number) {
const t: TerrainTile = new TerrainTile()
const red = this.bitmap.data[idx + 0];
if (red > 100) {
+43
View File
@@ -0,0 +1,43 @@
import Jimp from 'jimp';
import * as $protobuf from 'protobufjs/minimal.js';
// import {TerrainTile} from '../generated/protos';
async function generateTerrainMap(imagePath, outputDir) {
const terrain = new TerrainTile()
try {
// const imageModule = await import(imagePath);
// const imageUrl = imageModule.default;
// const image = await Jimp.read(imageUrl);
// const {width, height} = image.bitmap;
// const map = new TerrainMap();
// map.TerrainTile
// image.scan(0, 0, width, height, function (x, y, idx) {
// const terrain = new TerrainTile();
// const red = this.bitmap.data[idx + 0];
// if (red > 100) {
// // terrain[x][y] = TerrainTypes.Land;
// }
// });
// return new TerrainMapImpl(terrain);
console.log('Terrain map generated successfully');
} catch (error) {
console.error('Error generating terrain map:', error);
}
}
// Usage
const imagePath = process.argv[2];
const outputDir = process.argv[3] || 'generated';
if (!imagePath) {
console.error('Usage: node TerrainMapGenerator.js <imagePath> [outputDir]');
process.exit(1);
}
generateTerrainMap(imagePath, outputDir).catch(console.error);
export {generateTerrainMap};
+27
View File
@@ -0,0 +1,27 @@
import {Jimp as JimpType, JimpConstructors} from '@jimp/core';
import 'jimp';
import {TerrainMap, TerrainTile} from '../../generated/protos';
declare const Jimp: JimpType & JimpConstructors;
export async function loadTerrainMap(): Promise<TerrainMap> {
const imageModule = await import(`../../resources/maps/World.png`);
const imageUrl = imageModule.default;
const image = await Jimp.read(imageUrl)
const {width, height} = image.bitmap;
image.scan(0, 0, width, height, function (x: number, y: number, idx: number) {
const t: TerrainTile = new TerrainTile()
const red = this.bitmap.data[idx + 0];
if (red > 100) {
}
})
return new TerrainMap()
}
// loadTerrainMap()
+3 -3
View File
@@ -11,9 +11,9 @@
"include": [
"src/**/*",
"resources/**/*",
"src/**/*.ts",
"src/**/*.css",
"test/core/GameImpl.test.ts"
"generated/**/*",
"test/core/GameImpl.test.ts",
"src/scripts"
],
"exclude": [
"node_modules"
+4 -1
View File
@@ -53,7 +53,10 @@ export default (env, argv) => {
],
},
resolve: {
extensions: ['.ts', '.js'],
extensions: ['.tsx', '.ts', '.js'],
alias: {
'protobufjs/minimal': path.resolve(__dirname, 'node_modules/protobufjs/minimal.js')
}
},
plugins: [
new HtmlWebpackPlugin({