data-of-loathing 3.2.2 → 4.1.0
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/dist/browser.d.ts +2 -2
- package/dist/browser.js +7 -3
- package/dist/browser.js.map +1 -1
- package/dist/{chunk-CGQXM66N.js → chunk-HSV4SC4N.js} +21 -1
- package/dist/chunk-HSV4SC4N.js.map +1 -0
- package/dist/node.d.ts +2 -2
- package/dist/node.js +7 -3
- package/dist/node.js.map +1 -1
- package/dist/{schema-BIjWJRph.d.ts → schema-Ch7wbOTC.d.ts} +13 -5
- package/package.json +5 -3
- package/dist/chunk-CGQXM66N.js.map +0 -1
package/dist/browser.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { B as BaseClient } from './schema-
|
|
2
|
-
export { A as AscensionClass, a as AscensionClassSchema, C as Concoction, b as ConcoctionSchema, c as Consumable, d as ConsumableQuality, e as ConsumableSchema, E as Effect, f as EffectModifiers, g as EffectModifiersSchema, h as EffectQuality, i as EffectSchema, j as Equipment, k as EquipmentSchema, F as Familiar, l as FamiliarCategory, m as FamiliarModifiers, n as FamiliarModifiersSchema, o as FamiliarSchema, p as FoldGroup, q as FoldGroupSchema, I as Ingredient, r as IngredientSchema, s as Item, t as ItemModifiers, u as ItemModifiersSchema, v as ItemSchema, w as ItemUse, L as Location, x as LocationDifficulty, y as LocationEnvironment, z as LocationSchema, M as Meta, D as MetaSchema, G as
|
|
1
|
+
import { B as BaseClient } from './schema-Ch7wbOTC.js';
|
|
2
|
+
export { A as AscensionClass, a as AscensionClassSchema, C as Concoction, b as ConcoctionSchema, c as Consumable, d as ConsumableQuality, e as ConsumableSchema, E as Effect, f as EffectModifiers, g as EffectModifiersSchema, h as EffectQuality, i as EffectSchema, j as Equipment, k as EquipmentSchema, F as Familiar, l as FamiliarCategory, m as FamiliarModifiers, n as FamiliarModifiersSchema, o as FamiliarSchema, p as FoldGroup, q as FoldGroupSchema, I as Ingredient, r as IngredientSchema, s as Item, t as ItemModifiers, u as ItemModifiersSchema, v as ItemSchema, w as ItemUse, L as Location, x as LocationDifficulty, y as LocationEnvironment, z as LocationSchema, M as Meta, D as MetaSchema, G as Modifier, H as Monster, J as MonsterDrop, K as MonsterDropCategory, N as MonsterDropSchema, O as MonsterElement, P as MonsterSchema, Q as NativeMonster, R as NativeMonsterSchema, S as Outfit, T as OutfitSchema, U as OutfitTreat, V as OutfitTreatSchema, W as Path, X as PathSchema, Y as Skill, Z as SkillModifiers, _ as SkillModifiersSchema, $ as SkillSchema, a0 as SkillTag, a1 as ZapGroup, a2 as ZapGroupSchema, a3 as entities, a4 as getModifier, a5 as getModifiers } from './schema-Ch7wbOTC.js';
|
|
3
3
|
import '@mikro-orm/core';
|
|
4
4
|
|
|
5
5
|
type Strategy = {
|
package/dist/browser.js
CHANGED
|
@@ -57,8 +57,10 @@ import {
|
|
|
57
57
|
SkillTag,
|
|
58
58
|
ZapGroup,
|
|
59
59
|
ZapGroupSchema,
|
|
60
|
-
entities
|
|
61
|
-
|
|
60
|
+
entities,
|
|
61
|
+
getModifier,
|
|
62
|
+
getModifiers
|
|
63
|
+
} from "./chunk-HSV4SC4N.js";
|
|
62
64
|
|
|
63
65
|
// src/browser.ts
|
|
64
66
|
import { SqlMikroORM, SqliteDriver } from "@mikro-orm/sql";
|
|
@@ -301,6 +303,8 @@ export {
|
|
|
301
303
|
ZapGroup,
|
|
302
304
|
ZapGroupSchema,
|
|
303
305
|
createClient,
|
|
304
|
-
entities
|
|
306
|
+
entities,
|
|
307
|
+
getModifier,
|
|
308
|
+
getModifiers
|
|
305
309
|
};
|
|
306
310
|
//# sourceMappingURL=browser.js.map
|
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/browser.ts","../src/SqliteWorkerDialect.ts"],"sourcesContent":["import { SqlMikroORM, SqliteDriver } from \"@mikro-orm/sql\";\nimport { entities } from \"./schema.js\";\nimport { SqliteWorkerDialect } from \"./SqliteWorkerDialect.js\";\nimport { BaseClient, DEFAULT_URL, ETAG_KEY } from \"./BaseClient.js\";\n\nexport type Strategy =\n | { strategy?: \"memory\"; url?: string; force?: boolean }\n | { strategy: \"opfs\"; url?: string; force?: boolean }\n | { strategy: \"ranged\"; url?: string };\n\nasync function getOpfsEtag(): Promise<string | null> {\n try {\n const root = await navigator.storage.getDirectory();\n const handle = await root.getFileHandle(\".dol-etag\");\n return (await handle.getFile()).text();\n } catch {\n return null;\n }\n}\n\nasync function setOpfsEtag(etag: string): Promise<void> {\n const root = await navigator.storage.getDirectory();\n const handle = await root.getFileHandle(\".dol-etag\", { create: true });\n const writable = await handle.createWritable();\n await writable.write(etag);\n await writable.close();\n}\n\nasync function writeToOpfs(\n filename: string,\n buffer: ArrayBuffer,\n): Promise<void> {\n const root = await navigator.storage.getDirectory();\n const handle = await root.getFileHandle(filename, { create: true });\n const writable = await handle.createWritable();\n await writable.write(buffer);\n await writable.close();\n}\n\nexport class Client extends BaseClient<Strategy> {\n #dialect?: SqliteWorkerDialect;\n\n constructor(strategy: Strategy = {}) {\n super(strategy);\n }\n\n protected async getStoredEtag(_key: string): Promise<string | null> {\n return localStorage.getItem(ETAG_KEY);\n }\n\n protected async storeEtag(_key: string, etag: string): Promise<void> {\n localStorage.setItem(ETAG_KEY, etag);\n }\n\n async load(): Promise<void> {\n await this._orm?.close();\n this.#dialect?.createDriver().destroy();\n\n const strategy = this._strategy;\n const url = this._strategy.url ?? DEFAULT_URL;\n\n switch (strategy.strategy) {\n case \"ranged\": {\n this.#dialect = new SqliteWorkerDialect(\n new Worker(new URL(\"./workers/ranged.js\", import.meta.url), {\n type: \"module\",\n }),\n );\n await this.#dialect.loadRanged(url);\n break;\n }\n case \"opfs\": {\n this.#dialect = new SqliteWorkerDialect(\n new Worker(new URL(\"./workers/opfs.js\", import.meta.url), {\n type: \"module\",\n }),\n );\n const { force = false } = strategy;\n const remoteEtag = (await fetch(url, { method: \"HEAD\" })).headers.get(\n \"etag\",\n );\n const storedEtag = force ? null : await getOpfsEtag();\n\n if (force || storedEtag !== remoteEtag) {\n const buffer = await this.fetchDb(url);\n await writeToOpfs(\"dol.sqlite\", buffer);\n if (remoteEtag) await setOpfsEtag(remoteEtag);\n }\n\n await this.#dialect.loadOpfs(\"/dol.sqlite\");\n break;\n }\n case \"memory\":\n default: {\n this.#dialect = new SqliteWorkerDialect(\n new Worker(new URL(\"./workers/memory.js\", import.meta.url), {\n type: \"module\",\n }),\n );\n const { force = false } = strategy;\n const response = await fetch(url, {\n cache: force ? \"reload\" : \"default\",\n });\n if (!response.ok)\n throw new Error(`Failed to fetch database: ${response.status}`);\n const buffer = await response.arrayBuffer();\n await this.#dialect.loadMemory(buffer);\n }\n }\n\n this._orm = await SqlMikroORM.init({\n driver: SqliteDriver,\n driverOptions: this.#dialect,\n dbName: \"dol.sqlite\",\n entities,\n allowGlobalContext: true,\n });\n }\n}\n\nexport function createClient(strategy: Strategy = {}): Client {\n return new Client(strategy);\n}\n\nexport * from \"./schema.js\";\n","import { type SqlValue } from \"@sqlite.org/sqlite-wasm\";\nimport {\n SqliteAdapter,\n SqliteIntrospector,\n SqliteQueryCompiler,\n type CompiledQuery,\n type DatabaseConnection,\n type DatabaseIntrospector,\n type Dialect,\n type DialectAdapter,\n type Driver,\n type Kysely,\n type QueryCompiler,\n type QueryResult,\n} from \"kysely\";\n\ntype WorkerResponse =\n | { id: string; type: \"loaded\" }\n | { id: string; type: \"exec\"; rows: Record<string, SqlValue>[] }\n | { id: string; type: \"error\"; error: string };\n\nexport class SqliteWorkerDialect implements Dialect {\n readonly #worker: Worker;\n readonly #pending = new Map<\n string,\n {\n resolve: (value: Record<string, SqlValue>[] | undefined) => void;\n reject: (err: Error) => void;\n }\n >();\n #nextId = 0;\n\n constructor(worker: Worker) {\n this.#worker = worker;\n this.#worker.onmessage = (event: MessageEvent<WorkerResponse>) => {\n const pending = this.#pending.get(event.data.id);\n if (!pending) return;\n this.#pending.delete(event.data.id);\n if (event.data.type === \"error\") {\n pending.reject(new Error(event.data.error));\n } else if (event.data.type === \"exec\") {\n pending.resolve(event.data.rows);\n } else {\n pending.resolve(undefined);\n }\n };\n }\n\n #send<T>(message: object, transfer?: Transferable[]): Promise<T> {\n const id = String(++this.#nextId);\n const promise = new Promise<T>((resolve, reject) => {\n this.#pending.set(id, { resolve: (v) => resolve(v as T), reject });\n });\n this.#worker.postMessage({ ...message, id }, transfer ?? []);\n return promise;\n }\n\n loadMemory(buffer: ArrayBuffer): Promise<void> {\n return this.#send<void>({ type: \"load\", buffer }, [buffer]);\n }\n\n loadOpfs(filename: string): Promise<void> {\n return this.#send<void>({ type: \"load\", filename });\n }\n\n loadRanged(url: string): Promise<void> {\n return this.#send<void>({ type: \"load\", url });\n }\n\n createDriver(): Driver {\n const dialect = this;\n const connection: DatabaseConnection = {\n executeQuery<O>(query: CompiledQuery): Promise<QueryResult<O>> {\n return dialect\n .#send<\n O[]\n >({ type: \"exec\", sql: query.sql, bind: [...query.parameters] })\n .then((rows) => ({ rows }));\n },\n async *streamQuery() {\n throw new Error(\"Streaming not supported\");\n },\n };\n return {\n async init() {},\n async acquireConnection() {\n return connection;\n },\n async beginTransaction() {},\n async commitTransaction() {},\n async rollbackTransaction() {},\n async releaseConnection() {},\n async destroy() {\n dialect.#worker.terminate();\n },\n };\n }\n\n createQueryCompiler(): QueryCompiler {\n return new SqliteQueryCompiler();\n }\n\n createAdapter(): DialectAdapter {\n return new SqliteAdapter();\n }\n\n createIntrospector(db: Kysely<any>): DatabaseIntrospector {\n return new SqliteIntrospector(db);\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/browser.ts","../src/SqliteWorkerDialect.ts"],"sourcesContent":["import { SqlMikroORM, SqliteDriver } from \"@mikro-orm/sql\";\nimport { entities } from \"./schema.js\";\nimport { SqliteWorkerDialect } from \"./SqliteWorkerDialect.js\";\nimport { BaseClient, DEFAULT_URL, ETAG_KEY } from \"./BaseClient.js\";\n\nexport type Strategy =\n | { strategy?: \"memory\"; url?: string; force?: boolean }\n | { strategy: \"opfs\"; url?: string; force?: boolean }\n | { strategy: \"ranged\"; url?: string };\n\nasync function getOpfsEtag(): Promise<string | null> {\n try {\n const root = await navigator.storage.getDirectory();\n const handle = await root.getFileHandle(\".dol-etag\");\n return (await handle.getFile()).text();\n } catch {\n return null;\n }\n}\n\nasync function setOpfsEtag(etag: string): Promise<void> {\n const root = await navigator.storage.getDirectory();\n const handle = await root.getFileHandle(\".dol-etag\", { create: true });\n const writable = await handle.createWritable();\n await writable.write(etag);\n await writable.close();\n}\n\nasync function writeToOpfs(\n filename: string,\n buffer: ArrayBuffer,\n): Promise<void> {\n const root = await navigator.storage.getDirectory();\n const handle = await root.getFileHandle(filename, { create: true });\n const writable = await handle.createWritable();\n await writable.write(buffer);\n await writable.close();\n}\n\nexport class Client extends BaseClient<Strategy> {\n #dialect?: SqliteWorkerDialect;\n\n constructor(strategy: Strategy = {}) {\n super(strategy);\n }\n\n protected async getStoredEtag(_key: string): Promise<string | null> {\n return localStorage.getItem(ETAG_KEY);\n }\n\n protected async storeEtag(_key: string, etag: string): Promise<void> {\n localStorage.setItem(ETAG_KEY, etag);\n }\n\n async load(): Promise<void> {\n await this._orm?.close();\n this.#dialect?.createDriver().destroy();\n\n const strategy = this._strategy;\n const url = this._strategy.url ?? DEFAULT_URL;\n\n switch (strategy.strategy) {\n case \"ranged\": {\n this.#dialect = new SqliteWorkerDialect(\n new Worker(new URL(\"./workers/ranged.js\", import.meta.url), {\n type: \"module\",\n }),\n );\n await this.#dialect.loadRanged(url);\n break;\n }\n case \"opfs\": {\n this.#dialect = new SqliteWorkerDialect(\n new Worker(new URL(\"./workers/opfs.js\", import.meta.url), {\n type: \"module\",\n }),\n );\n const { force = false } = strategy;\n const remoteEtag = (await fetch(url, { method: \"HEAD\" })).headers.get(\n \"etag\",\n );\n const storedEtag = force ? null : await getOpfsEtag();\n\n if (force || storedEtag !== remoteEtag) {\n const buffer = await this.fetchDb(url);\n await writeToOpfs(\"dol.sqlite\", buffer);\n if (remoteEtag) await setOpfsEtag(remoteEtag);\n }\n\n await this.#dialect.loadOpfs(\"/dol.sqlite\");\n break;\n }\n case \"memory\":\n default: {\n this.#dialect = new SqliteWorkerDialect(\n new Worker(new URL(\"./workers/memory.js\", import.meta.url), {\n type: \"module\",\n }),\n );\n const { force = false } = strategy;\n const response = await fetch(url, {\n cache: force ? \"reload\" : \"default\",\n });\n if (!response.ok)\n throw new Error(`Failed to fetch database: ${response.status}`);\n const buffer = await response.arrayBuffer();\n await this.#dialect.loadMemory(buffer);\n }\n }\n\n this._orm = await SqlMikroORM.init({\n driver: SqliteDriver,\n driverOptions: this.#dialect,\n dbName: \"dol.sqlite\",\n entities,\n allowGlobalContext: true,\n });\n }\n}\n\nexport function createClient(strategy: Strategy = {}): Client {\n return new Client(strategy);\n}\n\nexport * from \"./schema.js\";\n","import { type SqlValue } from \"@sqlite.org/sqlite-wasm\";\nimport {\n SqliteAdapter,\n SqliteIntrospector,\n SqliteQueryCompiler,\n type CompiledQuery,\n type DatabaseConnection,\n type DatabaseIntrospector,\n type Dialect,\n type DialectAdapter,\n type Driver,\n type Kysely,\n type QueryCompiler,\n type QueryResult,\n} from \"kysely\";\n\ntype WorkerResponse =\n | { id: string; type: \"loaded\" }\n | { id: string; type: \"exec\"; rows: Record<string, SqlValue>[] }\n | { id: string; type: \"error\"; error: string };\n\nexport class SqliteWorkerDialect implements Dialect {\n readonly #worker: Worker;\n readonly #pending = new Map<\n string,\n {\n resolve: (value: Record<string, SqlValue>[] | undefined) => void;\n reject: (err: Error) => void;\n }\n >();\n #nextId = 0;\n\n constructor(worker: Worker) {\n this.#worker = worker;\n this.#worker.onmessage = (event: MessageEvent<WorkerResponse>) => {\n const pending = this.#pending.get(event.data.id);\n if (!pending) return;\n this.#pending.delete(event.data.id);\n if (event.data.type === \"error\") {\n pending.reject(new Error(event.data.error));\n } else if (event.data.type === \"exec\") {\n pending.resolve(event.data.rows);\n } else {\n pending.resolve(undefined);\n }\n };\n }\n\n #send<T>(message: object, transfer?: Transferable[]): Promise<T> {\n const id = String(++this.#nextId);\n const promise = new Promise<T>((resolve, reject) => {\n this.#pending.set(id, { resolve: (v) => resolve(v as T), reject });\n });\n this.#worker.postMessage({ ...message, id }, transfer ?? []);\n return promise;\n }\n\n loadMemory(buffer: ArrayBuffer): Promise<void> {\n return this.#send<void>({ type: \"load\", buffer }, [buffer]);\n }\n\n loadOpfs(filename: string): Promise<void> {\n return this.#send<void>({ type: \"load\", filename });\n }\n\n loadRanged(url: string): Promise<void> {\n return this.#send<void>({ type: \"load\", url });\n }\n\n createDriver(): Driver {\n const dialect = this;\n const connection: DatabaseConnection = {\n executeQuery<O>(query: CompiledQuery): Promise<QueryResult<O>> {\n return dialect\n .#send<\n O[]\n >({ type: \"exec\", sql: query.sql, bind: [...query.parameters] })\n .then((rows) => ({ rows }));\n },\n async *streamQuery() {\n throw new Error(\"Streaming not supported\");\n },\n };\n return {\n async init() {},\n async acquireConnection() {\n return connection;\n },\n async beginTransaction() {},\n async commitTransaction() {},\n async rollbackTransaction() {},\n async releaseConnection() {},\n async destroy() {\n dialect.#worker.terminate();\n },\n };\n }\n\n createQueryCompiler(): QueryCompiler {\n return new SqliteQueryCompiler();\n }\n\n createAdapter(): DialectAdapter {\n return new SqliteAdapter();\n }\n\n createIntrospector(db: Kysely<any>): DatabaseIntrospector {\n return new SqliteIntrospector(db);\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -390,6 +390,24 @@ var OutfitTreat = class {
|
|
|
390
390
|
item;
|
|
391
391
|
chance;
|
|
392
392
|
};
|
|
393
|
+
function resolveModifiers(source) {
|
|
394
|
+
if (Array.isArray(source)) return source;
|
|
395
|
+
return source.modifiers?.modifiers ?? [];
|
|
396
|
+
}
|
|
397
|
+
function getModifier(modifiers, name) {
|
|
398
|
+
return resolveModifiers(modifiers).find((m) => m.name === name)?.value;
|
|
399
|
+
}
|
|
400
|
+
function getModifiers(modifiers, nameOrNames) {
|
|
401
|
+
const mods = resolveModifiers(modifiers);
|
|
402
|
+
if (typeof nameOrNames === "string") {
|
|
403
|
+
return mods.filter((m) => m.name === nameOrNames).map((m) => m.value);
|
|
404
|
+
}
|
|
405
|
+
const columns = nameOrNames.map(
|
|
406
|
+
(name) => mods.filter((m) => m.name === name).map((m) => m.value)
|
|
407
|
+
);
|
|
408
|
+
const len = Math.max(0, ...columns.map((c) => c.length));
|
|
409
|
+
return Array.from({ length: len }, (_, i) => columns.map((c) => c[i]));
|
|
410
|
+
}
|
|
393
411
|
var ItemModifiers = class {
|
|
394
412
|
item;
|
|
395
413
|
modifiers;
|
|
@@ -973,6 +991,8 @@ export {
|
|
|
973
991
|
NativeMonster,
|
|
974
992
|
Ingredient,
|
|
975
993
|
OutfitTreat,
|
|
994
|
+
getModifier,
|
|
995
|
+
getModifiers,
|
|
976
996
|
ItemModifiers,
|
|
977
997
|
EffectModifiers,
|
|
978
998
|
SkillModifiers,
|
|
@@ -1006,4 +1026,4 @@ export {
|
|
|
1006
1026
|
ETAG_KEY,
|
|
1007
1027
|
BaseClient
|
|
1008
1028
|
};
|
|
1009
|
-
//# sourceMappingURL=chunk-
|
|
1029
|
+
//# sourceMappingURL=chunk-HSV4SC4N.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schema.ts","../src/BaseClient.ts"],"sourcesContent":["import { Collection, EntitySchema, type Ref } from \"@mikro-orm/core\";\n\n// ---- Enums ----------------------------------------------------------------\n\nexport enum ItemUse {\n Food = \"food\",\n Drink = \"drink\",\n Spleen = \"spleen\",\n Potion = \"potion\",\n Avatar = \"avatar\",\n Usable = \"usable\",\n Multiple = \"multiple\",\n Reusable = \"reusable\",\n Message = \"message\",\n Grow = \"grow\",\n PokePill = \"pokepill\",\n Hat = \"hat\",\n Weapon = \"weapon\",\n Sixgun = \"sixgun\",\n Offhand = \"offhand\",\n Container = \"container\",\n Shirt = \"shirt\",\n Pants = \"pants\",\n Accessory = \"accessory\",\n Familiar = \"familiar\",\n Sticker = \"sticker\",\n Card = \"card\",\n Folder = \"folder\",\n Bootspur = \"bootspur\",\n Bootskin = \"bootskin\",\n FoodHelper = \"food helper\",\n DrinkHelper = \"drink helper\",\n Zap = \"zap\",\n Sphere = \"sphere\",\n Guardian = \"guardian\",\n Combat = \"combat\",\n CombatReusable = \"combat reusable\",\n Single = \"single\",\n Solo = \"solo\",\n Curse = \"curse\",\n Bounty = \"bounty\",\n Package = \"package\",\n Candy = \"candy\",\n Candy1 = \"candy1\",\n Candy2 = \"candy2\",\n Chocolate = \"chocolate\",\n Fancy = \"fancy\",\n Paste = \"paste\",\n Smith = \"smith\",\n Cook = \"cook\",\n Mix = \"mix\",\n Matchable = \"matchable\",\n}\n\nexport enum EffectQuality {\n Good = \"good\",\n Neutral = \"neutral\",\n Bad = \"bad\",\n}\n\nexport enum SkillTag {\n Passive = \"passive\",\n Combat = \"combat\",\n NonCombat = \"nc\",\n Heal = \"heal\",\n ItemSummon = \"item\",\n Effect = \"effect\",\n Self = \"self\",\n Other = \"other\",\n Song = \"song\",\n Expression = \"expression\",\n Walk = \"walk\",\n}\n\nexport enum FamiliarCategory {\n Stat0 = \"stat0\",\n Stat1 = \"stat1\",\n Item0 = \"item0\",\n Item1 = \"item1\",\n Item2 = \"item2\",\n Item3 = \"item3\",\n Meat0 = \"meat0\",\n Combat0 = \"combat0\",\n Combat1 = \"combat1\",\n Drop = \"drop\",\n Block = \"block\",\n Delevel0 = \"delevel0\",\n Delevel1 = \"delevel1\",\n Hp0 = \"hp0\",\n Mp0 = \"mp0\",\n Meat1 = \"meat1\",\n Stat2 = \"stat2\",\n Other0 = \"other0\",\n Hp1 = \"hp1\",\n Mp1 = \"mp1\",\n Stat3 = \"stat3\",\n Other1 = \"other1\",\n Passive = \"passive\",\n Underwater = \"underwater\",\n Pokefam = \"pokefam\",\n Variable = \"variable\",\n}\n\nexport enum MonsterElement {\n BadSpelling = \"bad spelling\",\n Cold = \"cold\",\n Cute = \"cute\",\n Hot = \"hot\",\n Shadow = \"shadow\",\n Spooky = \"spooky\",\n Sleaze = \"sleaze\",\n Slime = \"slime\",\n Supercold = \"supercold\",\n Stench = \"stench\",\n}\n\nexport enum MonsterDropCategory {\n PickpocketOnly = \"p\",\n NoPickpocket = \"n\",\n Conditional = \"c\",\n Fixed = \"f\",\n Accordion = \"a\",\n Multi = \"m\",\n}\n\nexport enum LocationDifficulty {\n None = \"none\",\n Unknown = \"unknown\",\n Low = \"low\",\n Medium = \"medium\",\n High = \"high\",\n}\n\nexport enum LocationEnvironment {\n None = \"none\",\n Indoor = \"indoor\",\n Outdoor = \"outdoor\",\n Underground = \"underground\",\n Underwater = \"underwater\",\n}\n\nexport enum ConsumableQuality {\n None = \"none\",\n Crappy = \"crappy\",\n Decent = \"decent\",\n Good = \"good\",\n Awesome = \"awesome\",\n EPIC = \"EPIC\",\n SuperEPIC = \"super_EPIC\",\n SuperUltraEPIC = \"super_ultra_EPIC\",\n SuperUltraMegaEPIC = \"super_ultra_mega_EPIC\",\n SuperUltraMegaTurboEPIC = \"super_ultra_mega_turbo_EPIC\",\n Quest = \"quest\",\n Changing = \"changing\",\n Drippy = \"drippy\",\n}\n\n// ---- Entity Classes -------------------------------------------------------\n\nexport class Item {\n id!: number;\n name!: string;\n descid?: number;\n image!: string;\n uses!: ItemUse[];\n quest!: boolean;\n gift!: boolean;\n tradeable!: boolean;\n discardable!: boolean;\n autosell!: number;\n plural?: string;\n ambiguous!: boolean;\n // relations\n equipment?: Equipment;\n consumable?: Consumable;\n modifiers?: ItemModifiers;\n monsterDrops = new Collection<MonsterDrop>(this);\n outfitEquipment = new Collection<Outfit>(this);\n outfitTreats = new Collection<OutfitTreat>(this);\n ingredients = new Collection<Ingredient>(this);\n foldGroups = new Collection<FoldGroup>(this);\n zapGroups = new Collection<ZapGroup>(this);\n}\n\nexport class Effect {\n id!: number;\n name!: string;\n descid?: string;\n image!: string;\n quality!: EffectQuality;\n nohookah!: boolean;\n nopvp!: boolean;\n noremove!: boolean;\n song!: boolean;\n actions!: string[];\n ambiguous!: boolean;\n modifiers?: EffectModifiers;\n}\n\nexport class Skill {\n id!: number;\n name!: string;\n image!: string;\n tags!: SkillTag[];\n mpCost!: number;\n duration!: number;\n guildLevel?: number;\n maxLevel?: number;\n permable!: boolean;\n ambiguous!: boolean;\n modifiers?: SkillModifiers;\n}\n\nexport class Familiar {\n id!: number;\n name!: string;\n image!: string;\n categories!: FamiliarCategory[];\n larva?: Item;\n equipment?: Item;\n cageMatch!: number;\n scavengerHunt!: number;\n obstacleCourse!: number;\n hideAndSeek!: number;\n attributes!: string[];\n modifiers?: FamiliarModifiers;\n}\n\nexport class Monster {\n id!: number;\n name!: string;\n image!: string[];\n ambiguous!: boolean;\n article!: string;\n attack!: string;\n boss!: boolean;\n defence!: string;\n drippy!: boolean;\n element?: MonsterElement;\n elementalAttack?: MonsterElement;\n elementalDefence?: MonsterElement;\n elementalResistance!: string;\n experience?: string;\n free!: boolean;\n ghost!: boolean;\n groupSize!: number;\n hp!: string;\n initiative!: string;\n itemBlockChance!: number;\n lucky!: boolean;\n manuel?: string;\n meat?: number;\n meatExpression?: string;\n monsterLevelMultiplier!: string;\n nobanish!: boolean;\n nocopy!: boolean;\n nomanuel!: boolean;\n nowander!: boolean;\n nowish!: boolean;\n phylum!: string;\n physicalResistance!: string;\n poison?: string;\n scaling!: string;\n scalingCap!: string;\n scalingFloor!: string;\n skeleton!: boolean;\n skillBlockChance!: number;\n snake!: boolean;\n spellBlockChance!: number;\n sprinkles!: [number | string, number | string];\n superlikely!: boolean;\n ultrarare!: boolean;\n wanderer!: boolean;\n wiki?: string;\n wish!: boolean;\n zombie!: boolean;\n // relations\n drops = new Collection<MonsterDrop>(this);\n nativeLocations = new Collection<NativeMonster>(this);\n}\n\nexport class Location {\n name!: string;\n id?: number;\n zone!: string;\n url!: string;\n difficulty!: LocationDifficulty;\n environment!: LocationEnvironment;\n statRequirement!: number;\n waterLevel?: number;\n overdrunk!: boolean;\n nowander!: boolean;\n combatRate!: number;\n // relations\n nativeMonsters = new Collection<NativeMonster>(this);\n}\n\nexport class Path {\n id!: number;\n name!: string;\n enumName!: string;\n image?: string;\n isAvatar!: boolean;\n article?: string;\n pointsPreference?: string;\n maximumPoints!: number;\n bucket!: boolean;\n stomachCapacity!: number;\n liverCapacity!: number;\n spleenCapacity!: number;\n classes = new Collection<AscensionClass>(this);\n}\n\nexport class AscensionClass {\n id!: number;\n name!: string;\n enumName!: string;\n image?: string;\n primeStatIndex!: number;\n path?: Path;\n stun?: string;\n stomachCapacity?: number;\n liverCapacity?: number;\n spleenCapacity?: number;\n}\n\nexport class Equipment {\n // PK is a FK to Item. Access the id via equipment.item.id\n item!: Ref<Item>;\n power!: number;\n musRequirement!: number;\n mysRequirement!: number;\n moxRequirement!: number;\n type?: string;\n hands?: number;\n}\n\nexport class Consumable {\n // PK is a FK to Item. Access the id via consumable.item.id\n item!: Ref<Item>;\n stomach!: number;\n liver!: number;\n spleen!: number;\n levelRequirement!: number;\n quality?: ConsumableQuality;\n adventureRange!: string;\n adventures!: number;\n muscle!: number;\n muscleRange!: string;\n mysticality!: number;\n mysticalityRange!: string;\n moxie!: number;\n moxieRange!: string;\n notes?: string;\n}\n\nexport class Concoction {\n id!: number;\n item!: Item;\n methods!: string[];\n comment?: string;\n ingredients = new Collection<Ingredient>(this);\n}\n\nexport class Outfit {\n id!: number;\n name!: string;\n image!: string;\n equipment = new Collection<Item>(this);\n treats = new Collection<OutfitTreat>(this);\n}\n\nexport class FoldGroup {\n id!: number;\n damage!: number;\n items = new Collection<Item>(this);\n}\n\nexport class ZapGroup {\n id!: number;\n items = new Collection<Item>(this);\n}\n\n// Junction entities (surrogate autoincrement id)\n\nexport class MonsterDrop {\n id!: number;\n monster!: Monster;\n item!: Item;\n rate!: number;\n category?: MonsterDropCategory;\n}\n\nexport class NativeMonster {\n id!: number;\n location!: Location;\n monster!: Monster;\n weight!: number;\n rejection!: number;\n parity?: number;\n}\n\nexport class Ingredient {\n id!: number;\n concoction!: Concoction;\n item!: Item;\n quantity!: number;\n}\n\nexport class OutfitTreat {\n id!: number;\n outfit!: Outfit;\n item!: Item;\n chance!: number;\n}\n\n// Modifier entities (FK-as-PK)\n\nexport type Modifier = { name: string; value: string };\n\ntype HasModifiers = Item | Effect | Skill | Familiar;\n\nfunction resolveModifiers(source: Modifier[] | HasModifiers): Modifier[] {\n if (Array.isArray(source)) return source;\n return source.modifiers?.modifiers ?? [];\n}\n\nexport function getModifier(\n modifiers: Modifier[] | HasModifiers,\n name: string,\n): string | undefined {\n return resolveModifiers(modifiers).find((m) => m.name === name)?.value;\n}\n\nexport function getModifiers(\n modifiers: Modifier[] | HasModifiers,\n name: string,\n): string[];\nexport function getModifiers(\n modifiers: Modifier[] | HasModifiers,\n names: string[],\n): (string | undefined)[][];\nexport function getModifiers(\n modifiers: Modifier[] | HasModifiers,\n nameOrNames: string | string[],\n): string[] | (string | undefined)[][] {\n const mods = resolveModifiers(modifiers);\n if (typeof nameOrNames === \"string\") {\n return mods.filter((m) => m.name === nameOrNames).map((m) => m.value);\n }\n const columns = nameOrNames.map((name) =>\n mods.filter((m) => m.name === name).map((m) => m.value),\n );\n const len = Math.max(0, ...columns.map((c) => c.length));\n return Array.from({ length: len }, (_, i) => columns.map((c) => c[i]));\n}\n\nexport class ItemModifiers {\n item!: Ref<Item>;\n modifiers!: Modifier[];\n}\n\nexport class EffectModifiers {\n effect!: Ref<Effect>;\n modifiers!: Modifier[];\n}\n\nexport class SkillModifiers {\n skill!: Ref<Skill>;\n modifiers!: Modifier[];\n}\n\nexport class FamiliarModifiers {\n familiar!: Ref<Familiar>;\n modifiers!: Modifier[];\n}\n\nexport class Meta {\n id!: number;\n lastUpdate!: Date;\n lastRevision!: number;\n}\n\n// ---- EntitySchema Definitions ---------------------------------------------\n\nexport const ItemSchema = new EntitySchema<Item>({\n class: Item,\n tableName: \"items\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\", index: true },\n descid: { type: \"integer\", nullable: true, unique: true },\n image: { type: \"string\" },\n uses: { type: \"json\" },\n quest: { type: \"boolean\" },\n gift: { type: \"boolean\" },\n tradeable: { type: \"boolean\" },\n discardable: { type: \"boolean\" },\n autosell: { type: \"integer\" },\n plural: { type: \"string\", nullable: true },\n ambiguous: { type: \"boolean\", default: false },\n equipment: {\n kind: \"1:1\",\n entity: () => Equipment,\n mappedBy: \"item\",\n nullable: true,\n },\n consumable: {\n kind: \"1:1\",\n entity: () => Consumable,\n mappedBy: \"item\",\n nullable: true,\n },\n modifiers: {\n kind: \"1:1\",\n entity: () => ItemModifiers,\n mappedBy: \"item\",\n nullable: true,\n },\n monsterDrops: { kind: \"1:m\", entity: () => MonsterDrop, mappedBy: \"item\" },\n outfitEquipment: {\n kind: \"m:n\",\n entity: () => Outfit,\n pivotTable: \"outfitEquipment\",\n joinColumn: \"equipment\",\n inverseJoinColumn: \"outfit\",\n },\n outfitTreats: {\n kind: \"1:m\",\n entity: () => OutfitTreat,\n mappedBy: \"item\",\n },\n ingredients: {\n kind: \"1:m\",\n entity: () => Ingredient,\n mappedBy: \"item\",\n },\n foldGroups: {\n kind: \"m:n\",\n entity: () => FoldGroup,\n pivotTable: \"foldables\",\n joinColumn: \"item\",\n inverseJoinColumn: \"foldGroup\",\n },\n zapGroups: {\n kind: \"m:n\",\n entity: () => ZapGroup,\n pivotTable: \"zapGroupItems\",\n joinColumn: \"item\",\n inverseJoinColumn: \"zapGroup\",\n },\n },\n});\n\nexport const EffectSchema = new EntitySchema<Effect>({\n class: Effect,\n tableName: \"effects\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n descid: { type: \"string\", nullable: true, unique: true },\n image: { type: \"string\" },\n quality: { type: \"string\" },\n nohookah: { type: \"boolean\" },\n nopvp: { type: \"boolean\" },\n noremove: { type: \"boolean\" },\n song: { type: \"boolean\" },\n actions: { type: \"json\" },\n ambiguous: { type: \"boolean\", default: false },\n modifiers: {\n kind: \"1:1\",\n entity: () => EffectModifiers,\n mappedBy: \"effect\",\n nullable: true,\n },\n },\n});\n\nexport const SkillSchema = new EntitySchema<Skill>({\n class: Skill,\n tableName: \"skills\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n image: { type: \"string\" },\n tags: { type: \"json\" },\n mpCost: { type: \"integer\" },\n duration: { type: \"integer\" },\n guildLevel: { type: \"integer\", nullable: true },\n maxLevel: { type: \"integer\", nullable: true },\n permable: { type: \"boolean\" },\n ambiguous: { type: \"boolean\", default: false },\n modifiers: {\n kind: \"1:1\",\n entity: () => SkillModifiers,\n mappedBy: \"skill\",\n nullable: true,\n },\n },\n});\n\nexport const FamiliarSchema = new EntitySchema<Familiar>({\n class: Familiar,\n tableName: \"familiars\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n image: { type: \"string\" },\n categories: { type: \"json\" },\n larva: {\n kind: \"m:1\",\n entity: () => Item,\n nullable: true,\n fieldName: \"larva\",\n },\n equipment: {\n kind: \"m:1\",\n entity: () => Item,\n nullable: true,\n fieldName: \"equipment\",\n },\n cageMatch: { type: \"integer\" },\n scavengerHunt: { type: \"integer\" },\n obstacleCourse: { type: \"integer\" },\n hideAndSeek: { type: \"integer\" },\n attributes: { type: \"json\" },\n modifiers: {\n kind: \"1:1\",\n entity: () => FamiliarModifiers,\n mappedBy: \"familiar\",\n nullable: true,\n },\n },\n});\n\nexport const MonsterSchema = new EntitySchema<Monster>({\n class: Monster,\n tableName: \"monsters\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n image: { type: \"json\" },\n ambiguous: { type: \"boolean\", default: false },\n article: { type: \"string\" },\n attack: { type: \"string\" },\n boss: { type: \"boolean\" },\n defence: { type: \"string\" },\n drippy: { type: \"boolean\" },\n element: { type: \"string\", nullable: true },\n elementalAttack: { type: \"string\", nullable: true },\n elementalDefence: { type: \"string\", nullable: true },\n elementalResistance: { type: \"string\" },\n experience: { type: \"string\", nullable: true },\n free: { type: \"boolean\" },\n ghost: { type: \"boolean\" },\n groupSize: { type: \"integer\" },\n hp: { type: \"string\" },\n initiative: { type: \"string\" },\n itemBlockChance: { type: \"float\" },\n lucky: { type: \"boolean\" },\n manuel: { type: \"string\", nullable: true },\n meat: { type: \"float\", nullable: true },\n meatExpression: { type: \"string\", nullable: true },\n monsterLevelMultiplier: { type: \"string\" },\n nobanish: { type: \"boolean\" },\n nocopy: { type: \"boolean\" },\n nomanuel: { type: \"boolean\" },\n nowander: { type: \"boolean\" },\n nowish: { type: \"boolean\" },\n phylum: { type: \"string\" },\n physicalResistance: { type: \"string\" },\n poison: { type: \"string\", nullable: true },\n scaling: { type: \"string\" },\n scalingCap: { type: \"string\" },\n scalingFloor: { type: \"string\" },\n skeleton: { type: \"boolean\" },\n skillBlockChance: { type: \"float\" },\n snake: { type: \"boolean\" },\n spellBlockChance: { type: \"float\" },\n sprinkles: { type: \"json\" },\n superlikely: { type: \"boolean\" },\n ultrarare: { type: \"boolean\" },\n wanderer: { type: \"boolean\" },\n wiki: { type: \"string\", nullable: true },\n wish: { type: \"boolean\" },\n zombie: { type: \"boolean\" },\n drops: { kind: \"1:m\", entity: () => MonsterDrop, mappedBy: \"monster\" },\n nativeLocations: {\n kind: \"1:m\",\n entity: () => NativeMonster,\n mappedBy: \"monster\",\n },\n },\n});\n\nexport const LocationSchema = new EntitySchema<Location>({\n class: Location,\n tableName: \"locations\",\n properties: {\n name: { type: \"string\", primary: true },\n id: { type: \"integer\", nullable: true },\n zone: { type: \"string\" },\n url: { type: \"string\" },\n difficulty: { type: \"string\" },\n environment: { type: \"string\" },\n statRequirement: { type: \"integer\" },\n waterLevel: { type: \"integer\", nullable: true },\n overdrunk: { type: \"boolean\" },\n nowander: { type: \"boolean\" },\n combatRate: { type: \"integer\" },\n nativeMonsters: {\n kind: \"1:m\",\n entity: () => NativeMonster,\n mappedBy: \"location\",\n },\n },\n});\n\nexport const PathSchema = new EntitySchema<Path>({\n class: Path,\n tableName: \"paths\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n enumName: { type: \"string\" },\n image: { type: \"string\", nullable: true, unique: true },\n isAvatar: { type: \"boolean\" },\n article: { type: \"string\", nullable: true },\n pointsPreference: { type: \"string\", nullable: true },\n maximumPoints: { type: \"integer\" },\n bucket: { type: \"boolean\" },\n stomachCapacity: { type: \"integer\" },\n liverCapacity: { type: \"integer\" },\n spleenCapacity: { type: \"integer\" },\n classes: { kind: \"1:m\", entity: () => AscensionClass, mappedBy: \"path\" },\n },\n});\n\nexport const AscensionClassSchema = new EntitySchema<AscensionClass>({\n class: AscensionClass,\n tableName: \"classes\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n enumName: { type: \"string\" },\n image: { type: \"string\", nullable: true },\n primeStatIndex: { type: \"integer\" },\n path: {\n kind: \"m:1\",\n entity: () => Path,\n nullable: true,\n fieldName: \"path\",\n },\n stun: { type: \"string\", nullable: true },\n stomachCapacity: { type: \"integer\", nullable: true },\n liverCapacity: { type: \"integer\", nullable: true },\n spleenCapacity: { type: \"integer\", nullable: true },\n },\n});\n\nexport const EquipmentSchema = new EntitySchema<Equipment>({\n class: Equipment,\n tableName: \"equipment\",\n properties: {\n item: {\n kind: \"1:1\",\n entity: () => Item,\n primary: true,\n fieldName: \"id\",\n inversedBy: \"equipment\",\n },\n power: { type: \"integer\" },\n musRequirement: { type: \"integer\" },\n mysRequirement: { type: \"integer\" },\n moxRequirement: { type: \"integer\" },\n type: { type: \"string\", nullable: true },\n hands: { type: \"integer\", nullable: true },\n },\n});\n\nexport const ConsumableSchema = new EntitySchema<Consumable>({\n class: Consumable,\n tableName: \"consumables\",\n properties: {\n item: {\n kind: \"1:1\",\n entity: () => Item,\n primary: true,\n fieldName: \"id\",\n inversedBy: \"consumable\",\n },\n stomach: { type: \"integer\" },\n liver: { type: \"integer\" },\n spleen: { type: \"integer\" },\n levelRequirement: { type: \"integer\" },\n quality: { type: \"string\", nullable: true },\n adventureRange: { type: \"string\" },\n adventures: { type: \"float\" },\n muscle: { type: \"float\" },\n muscleRange: { type: \"string\" },\n mysticality: { type: \"float\" },\n mysticalityRange: { type: \"string\" },\n moxie: { type: \"float\" },\n moxieRange: { type: \"string\" },\n notes: { type: \"string\", nullable: true },\n },\n});\n\nexport const ConcoctionSchema = new EntitySchema<Concoction>({\n class: Concoction,\n tableName: \"concoctions\",\n properties: {\n id: { type: \"integer\", primary: true },\n item: { kind: \"m:1\", entity: () => Item, fieldName: \"item\" },\n methods: { type: \"json\" },\n comment: { type: \"string\", nullable: true },\n ingredients: {\n kind: \"1:m\",\n entity: () => Ingredient,\n mappedBy: \"concoction\",\n },\n },\n});\n\nexport const OutfitSchema = new EntitySchema<Outfit>({\n class: Outfit,\n tableName: \"outfits\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n image: { type: \"string\" },\n equipment: {\n kind: \"m:n\",\n entity: () => Item,\n pivotTable: \"outfitEquipment\",\n joinColumn: \"outfit\",\n inverseJoinColumn: \"equipment\",\n },\n treats: { kind: \"1:m\", entity: () => OutfitTreat, mappedBy: \"outfit\" },\n },\n});\n\nexport const FoldGroupSchema = new EntitySchema<FoldGroup>({\n class: FoldGroup,\n tableName: \"foldGroups\",\n properties: {\n id: { type: \"integer\", primary: true },\n damage: { type: \"integer\" },\n items: {\n kind: \"m:n\",\n entity: () => Item,\n mappedBy: \"foldGroups\",\n },\n },\n});\n\nexport const ZapGroupSchema = new EntitySchema<ZapGroup>({\n class: ZapGroup,\n tableName: \"zapGroups\",\n properties: {\n id: { type: \"integer\", primary: true },\n items: {\n kind: \"m:n\",\n entity: () => Item,\n mappedBy: \"zapGroups\",\n },\n },\n});\n\nexport const MonsterDropSchema = new EntitySchema<MonsterDrop>({\n class: MonsterDrop,\n tableName: \"monsterDrops\",\n properties: {\n id: { type: \"integer\", primary: true },\n monster: { kind: \"m:1\", entity: () => Monster },\n item: { kind: \"m:1\", entity: () => Item },\n rate: { type: \"float\" },\n category: { type: \"string\", nullable: true },\n },\n});\n\nexport const NativeMonsterSchema = new EntitySchema<NativeMonster>({\n class: NativeMonster,\n tableName: \"nativeMonsters\",\n properties: {\n id: { type: \"integer\", primary: true },\n location: { kind: \"m:1\", entity: () => Location },\n monster: { kind: \"m:1\", entity: () => Monster },\n weight: { type: \"float\" },\n rejection: { type: \"float\" },\n parity: { type: \"integer\", nullable: true },\n },\n});\n\nexport const IngredientSchema = new EntitySchema<Ingredient>({\n class: Ingredient,\n tableName: \"ingredients\",\n properties: {\n id: { type: \"integer\", primary: true },\n concoction: { kind: \"m:1\", entity: () => Concoction },\n item: { kind: \"m:1\", entity: () => Item },\n quantity: { type: \"integer\" },\n },\n});\n\nexport const OutfitTreatSchema = new EntitySchema<OutfitTreat>({\n class: OutfitTreat,\n tableName: \"outfitTreats\",\n properties: {\n id: { type: \"integer\", primary: true },\n outfit: { kind: \"m:1\", entity: () => Outfit },\n item: { kind: \"m:1\", entity: () => Item },\n chance: { type: \"float\" },\n },\n});\n\nexport const ItemModifiersSchema = new EntitySchema<ItemModifiers>({\n class: ItemModifiers,\n tableName: \"itemModifiers\",\n properties: {\n item: {\n kind: \"1:1\",\n entity: () => Item,\n primary: true,\n fieldName: \"item\",\n inversedBy: \"modifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const EffectModifiersSchema = new EntitySchema<EffectModifiers>({\n class: EffectModifiers,\n tableName: \"effectModifiers\",\n properties: {\n effect: {\n kind: \"1:1\",\n entity: () => Effect,\n primary: true,\n fieldName: \"effect\",\n inversedBy: \"modifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const SkillModifiersSchema = new EntitySchema<SkillModifiers>({\n class: SkillModifiers,\n tableName: \"skillModifiers\",\n properties: {\n skill: {\n kind: \"1:1\",\n entity: () => Skill,\n primary: true,\n fieldName: \"skill\",\n inversedBy: \"modifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const FamiliarModifiersSchema = new EntitySchema<FamiliarModifiers>({\n class: FamiliarModifiers,\n tableName: \"familiarModifiers\",\n properties: {\n familiar: {\n kind: \"1:1\",\n entity: () => Familiar,\n primary: true,\n fieldName: \"familiar\",\n inversedBy: \"modifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const MetaSchema = new EntitySchema<Meta>({\n class: Meta,\n tableName: \"meta\",\n properties: {\n id: { type: \"integer\", primary: true, default: 1 },\n lastUpdate: { type: \"Date\" },\n lastRevision: { type: \"integer\" },\n },\n});\n\n// All schemas in dependency order for MikroORM.init({ entities })\nexport const entities = [\n ItemSchema,\n EffectSchema,\n SkillSchema,\n FamiliarSchema,\n MonsterSchema,\n LocationSchema,\n PathSchema,\n AscensionClassSchema,\n EquipmentSchema,\n ConsumableSchema,\n ConcoctionSchema,\n OutfitSchema,\n FoldGroupSchema,\n ZapGroupSchema,\n MonsterDropSchema,\n NativeMonsterSchema,\n IngredientSchema,\n OutfitTreatSchema,\n ItemModifiersSchema,\n EffectModifiersSchema,\n SkillModifiersSchema,\n FamiliarModifiersSchema,\n MetaSchema,\n];\n","import { type EntityManager, MikroORM } from \"@mikro-orm/core\";\n\nexport const DEFAULT_URL = \"https://data.loathers.net/dol.sqlite\";\nexport const ETAG_KEY = \"dol-etag\";\n\nexport abstract class BaseClient<S> {\n protected _orm?: MikroORM;\n protected readonly _strategy: S;\n\n constructor(strategy: S) {\n this._strategy = strategy;\n }\n\n get query(): EntityManager {\n if (!this._orm) throw new Error(\"Call await client.load() before querying\");\n return this._orm.em;\n }\n\n abstract load(): Promise<void>;\n\n protected async fetchDb(url: string): Promise<ArrayBuffer> {\n const response = await fetch(url);\n if (!response.ok)\n throw new Error(`Failed to fetch database: ${response.status}`);\n return response.arrayBuffer();\n }\n\n protected abstract getStoredEtag(key: string): Promise<string | null>;\n protected abstract storeEtag(key: string, etag: string): Promise<void>;\n\n protected async syncIfNeeded(\n url: string,\n key: string,\n apply: (data: ArrayBuffer) => Promise<void>,\n force = false,\n ): Promise<void> {\n const storedEtag = force ? null : await this.getStoredEtag(key);\n const head = await fetch(url, { method: \"HEAD\" });\n const remoteEtag = head.headers.get(\"etag\");\n\n if (force || storedEtag !== remoteEtag) {\n await apply(await this.fetchDb(url));\n if (remoteEtag) await this.storeEtag(key, remoteEtag);\n }\n }\n}\n"],"mappings":"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","names":["ItemUse","EffectQuality","SkillTag","FamiliarCategory","MonsterElement","MonsterDropCategory","LocationDifficulty","LocationEnvironment","ConsumableQuality"]}
|
package/dist/node.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { B as BaseClient } from './schema-
|
|
2
|
-
export { A as AscensionClass, a as AscensionClassSchema, C as Concoction, b as ConcoctionSchema, c as Consumable, d as ConsumableQuality, e as ConsumableSchema, E as Effect, f as EffectModifiers, g as EffectModifiersSchema, h as EffectQuality, i as EffectSchema, j as Equipment, k as EquipmentSchema, F as Familiar, l as FamiliarCategory, m as FamiliarModifiers, n as FamiliarModifiersSchema, o as FamiliarSchema, p as FoldGroup, q as FoldGroupSchema, I as Ingredient, r as IngredientSchema, s as Item, t as ItemModifiers, u as ItemModifiersSchema, v as ItemSchema, w as ItemUse, L as Location, x as LocationDifficulty, y as LocationEnvironment, z as LocationSchema, M as Meta, D as MetaSchema, G as
|
|
1
|
+
import { B as BaseClient } from './schema-Ch7wbOTC.js';
|
|
2
|
+
export { A as AscensionClass, a as AscensionClassSchema, C as Concoction, b as ConcoctionSchema, c as Consumable, d as ConsumableQuality, e as ConsumableSchema, E as Effect, f as EffectModifiers, g as EffectModifiersSchema, h as EffectQuality, i as EffectSchema, j as Equipment, k as EquipmentSchema, F as Familiar, l as FamiliarCategory, m as FamiliarModifiers, n as FamiliarModifiersSchema, o as FamiliarSchema, p as FoldGroup, q as FoldGroupSchema, I as Ingredient, r as IngredientSchema, s as Item, t as ItemModifiers, u as ItemModifiersSchema, v as ItemSchema, w as ItemUse, L as Location, x as LocationDifficulty, y as LocationEnvironment, z as LocationSchema, M as Meta, D as MetaSchema, G as Modifier, H as Monster, J as MonsterDrop, K as MonsterDropCategory, N as MonsterDropSchema, O as MonsterElement, P as MonsterSchema, Q as NativeMonster, R as NativeMonsterSchema, S as Outfit, T as OutfitSchema, U as OutfitTreat, V as OutfitTreatSchema, W as Path, X as PathSchema, Y as Skill, Z as SkillModifiers, _ as SkillModifiersSchema, $ as SkillSchema, a0 as SkillTag, a1 as ZapGroup, a2 as ZapGroupSchema, a3 as entities, a4 as getModifier, a5 as getModifiers } from './schema-Ch7wbOTC.js';
|
|
3
3
|
import '@mikro-orm/core';
|
|
4
4
|
|
|
5
5
|
type Strategy = {
|
package/dist/node.js
CHANGED
|
@@ -56,8 +56,10 @@ import {
|
|
|
56
56
|
SkillTag,
|
|
57
57
|
ZapGroup,
|
|
58
58
|
ZapGroupSchema,
|
|
59
|
-
entities
|
|
60
|
-
|
|
59
|
+
entities,
|
|
60
|
+
getModifier,
|
|
61
|
+
getModifiers
|
|
62
|
+
} from "./chunk-HSV4SC4N.js";
|
|
61
63
|
|
|
62
64
|
// src/node.ts
|
|
63
65
|
import { existsSync } from "fs";
|
|
@@ -172,6 +174,8 @@ export {
|
|
|
172
174
|
ZapGroup,
|
|
173
175
|
ZapGroupSchema,
|
|
174
176
|
createClient,
|
|
175
|
-
entities
|
|
177
|
+
entities,
|
|
178
|
+
getModifier,
|
|
179
|
+
getModifiers
|
|
176
180
|
};
|
|
177
181
|
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/node.ts"],"sourcesContent":["import { existsSync } from \"node:fs\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport envPaths from \"env-paths\";\nimport { SqlMikroORM, SqliteDriver, NodeSqliteDialect } from \"@mikro-orm/sql\";\nimport { entities } from \"./schema.js\";\nimport { BaseClient, DEFAULT_URL } from \"./BaseClient.js\";\n\nexport type Strategy =\n | { strategy?: \"url\"; url?: string; force?: boolean }\n | { strategy: \"local\"; path: string };\n\nexport class Client extends BaseClient<Strategy> {\n constructor(strategy: Strategy = {}) {\n super(strategy);\n }\n\n protected async getStoredEtag(key: string): Promise<string | null> {\n return existsSync(key) ? readFile(key, \"utf-8\") : null;\n }\n\n protected async storeEtag(key: string, etag: string): Promise<void> {\n await writeFile(key, etag, \"utf-8\");\n }\n\n private async resolveDbPath(): Promise<string> {\n const strategy = this._strategy;\n switch (strategy.strategy) {\n case \"local\":\n return strategy.path;\n\n default:\n case \"url\": {\n const { url = DEFAULT_URL, force = false } = strategy;\n\n const cacheDir = envPaths(\"data-of-loathing\").cache;\n const dbPath = join(cacheDir, \"dol.sqlite\");\n const etagPath = join(cacheDir, \"etag\");\n await mkdir(cacheDir, { recursive: true });\n\n await this.syncIfNeeded(\n url,\n etagPath,\n async (data) => {\n await writeFile(dbPath, Buffer.from(data));\n },\n force,\n );\n\n return dbPath;\n }\n }\n }\n\n async load(): Promise<void> {\n await this._orm?.close();\n const path = await this.resolveDbPath();\n this._orm = await SqlMikroORM.init({\n driver: SqliteDriver,\n driverOptions: new NodeSqliteDialect(path),\n dbName: path,\n entities,\n allowGlobalContext: true,\n });\n }\n}\n\nexport function createClient(strategy: Strategy = {}): Client {\n return new Client(strategy);\n}\n\nexport * from \"./schema.js\";\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/node.ts"],"sourcesContent":["import { existsSync } from \"node:fs\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport envPaths from \"env-paths\";\nimport { SqlMikroORM, SqliteDriver, NodeSqliteDialect } from \"@mikro-orm/sql\";\nimport { entities } from \"./schema.js\";\nimport { BaseClient, DEFAULT_URL } from \"./BaseClient.js\";\n\nexport type Strategy =\n | { strategy?: \"url\"; url?: string; force?: boolean }\n | { strategy: \"local\"; path: string };\n\nexport class Client extends BaseClient<Strategy> {\n constructor(strategy: Strategy = {}) {\n super(strategy);\n }\n\n protected async getStoredEtag(key: string): Promise<string | null> {\n return existsSync(key) ? readFile(key, \"utf-8\") : null;\n }\n\n protected async storeEtag(key: string, etag: string): Promise<void> {\n await writeFile(key, etag, \"utf-8\");\n }\n\n private async resolveDbPath(): Promise<string> {\n const strategy = this._strategy;\n switch (strategy.strategy) {\n case \"local\":\n return strategy.path;\n\n default:\n case \"url\": {\n const { url = DEFAULT_URL, force = false } = strategy;\n\n const cacheDir = envPaths(\"data-of-loathing\").cache;\n const dbPath = join(cacheDir, \"dol.sqlite\");\n const etagPath = join(cacheDir, \"etag\");\n await mkdir(cacheDir, { recursive: true });\n\n await this.syncIfNeeded(\n url,\n etagPath,\n async (data) => {\n await writeFile(dbPath, Buffer.from(data));\n },\n force,\n );\n\n return dbPath;\n }\n }\n }\n\n async load(): Promise<void> {\n await this._orm?.close();\n const path = await this.resolveDbPath();\n this._orm = await SqlMikroORM.init({\n driver: SqliteDriver,\n driverOptions: new NodeSqliteDialect(path),\n dbName: path,\n entities,\n allowGlobalContext: true,\n });\n }\n}\n\nexport function createClient(strategy: Strategy = {}): Client {\n return new Client(strategy);\n}\n\nexport * from \"./schema.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,kBAAkB;AAC3B,SAAS,OAAO,UAAU,iBAAiB;AAC3C,SAAS,YAAY;AACrB,OAAO,cAAc;AACrB,SAAS,aAAa,cAAc,yBAAyB;AAQtD,IAAM,SAAN,cAAqB,WAAqB;AAAA,EAC/C,YAAY,WAAqB,CAAC,GAAG;AACnC,UAAM,QAAQ;AAAA,EAChB;AAAA,EAEA,MAAgB,cAAc,KAAqC;AACjE,WAAO,WAAW,GAAG,IAAI,SAAS,KAAK,OAAO,IAAI;AAAA,EACpD;AAAA,EAEA,MAAgB,UAAU,KAAa,MAA6B;AAClE,UAAM,UAAU,KAAK,MAAM,OAAO;AAAA,EACpC;AAAA,EAEA,MAAc,gBAAiC;AAC7C,UAAM,WAAW,KAAK;AACtB,YAAQ,SAAS,UAAU;AAAA,MACzB,KAAK;AACH,eAAO,SAAS;AAAA,MAElB;AAAA,MACA,KAAK,OAAO;AACV,cAAM,EAAE,MAAM,aAAa,QAAQ,MAAM,IAAI;AAE7C,cAAM,WAAW,SAAS,kBAAkB,EAAE;AAC9C,cAAM,SAAS,KAAK,UAAU,YAAY;AAC1C,cAAM,WAAW,KAAK,UAAU,MAAM;AACtC,cAAM,MAAM,UAAU,EAAE,WAAW,KAAK,CAAC;AAEzC,cAAM,KAAK;AAAA,UACT;AAAA,UACA;AAAA,UACA,OAAO,SAAS;AACd,kBAAM,UAAU,QAAQ,OAAO,KAAK,IAAI,CAAC;AAAA,UAC3C;AAAA,UACA;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,OAAsB;AAC1B,UAAM,KAAK,MAAM,MAAM;AACvB,UAAM,OAAO,MAAM,KAAK,cAAc;AACtC,SAAK,OAAO,MAAM,YAAY,KAAK;AAAA,MACjC,QAAQ;AAAA,MACR,eAAe,IAAI,kBAAkB,IAAI;AAAA,MACzC,QAAQ;AAAA,MACR;AAAA,MACA,oBAAoB;AAAA,IACtB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,aAAa,WAAqB,CAAC,GAAW;AAC5D,SAAO,IAAI,OAAO,QAAQ;AAC5B;","names":[]}
|
|
@@ -389,21 +389,29 @@ declare class OutfitTreat {
|
|
|
389
389
|
item: Item;
|
|
390
390
|
chance: number;
|
|
391
391
|
}
|
|
392
|
+
type Modifier = {
|
|
393
|
+
name: string;
|
|
394
|
+
value: string;
|
|
395
|
+
};
|
|
396
|
+
type HasModifiers = Item | Effect | Skill | Familiar;
|
|
397
|
+
declare function getModifier(modifiers: Modifier[] | HasModifiers, name: string): string | undefined;
|
|
398
|
+
declare function getModifiers(modifiers: Modifier[] | HasModifiers, name: string): string[];
|
|
399
|
+
declare function getModifiers(modifiers: Modifier[] | HasModifiers, names: string[]): (string | undefined)[][];
|
|
392
400
|
declare class ItemModifiers {
|
|
393
401
|
item: Ref<Item>;
|
|
394
|
-
modifiers:
|
|
402
|
+
modifiers: Modifier[];
|
|
395
403
|
}
|
|
396
404
|
declare class EffectModifiers {
|
|
397
405
|
effect: Ref<Effect>;
|
|
398
|
-
modifiers:
|
|
406
|
+
modifiers: Modifier[];
|
|
399
407
|
}
|
|
400
408
|
declare class SkillModifiers {
|
|
401
409
|
skill: Ref<Skill>;
|
|
402
|
-
modifiers:
|
|
410
|
+
modifiers: Modifier[];
|
|
403
411
|
}
|
|
404
412
|
declare class FamiliarModifiers {
|
|
405
413
|
familiar: Ref<Familiar>;
|
|
406
|
-
modifiers:
|
|
414
|
+
modifiers: Modifier[];
|
|
407
415
|
}
|
|
408
416
|
declare class Meta {
|
|
409
417
|
id: number;
|
|
@@ -435,4 +443,4 @@ declare const FamiliarModifiersSchema: EntitySchema<FamiliarModifiers, never, _m
|
|
|
435
443
|
declare const MetaSchema: EntitySchema<Meta, never, _mikro_orm_core.EntityCtor<Meta>>;
|
|
436
444
|
declare const entities: (EntitySchema<Item, never, _mikro_orm_core.EntityCtor<Item>> | EntitySchema<Effect, never, _mikro_orm_core.EntityCtor<Effect>> | EntitySchema<Skill, never, _mikro_orm_core.EntityCtor<Skill>> | EntitySchema<Familiar, never, _mikro_orm_core.EntityCtor<Familiar>> | EntitySchema<Monster, never, _mikro_orm_core.EntityCtor<Monster>> | EntitySchema<Location, never, _mikro_orm_core.EntityCtor<Location>> | EntitySchema<Path, never, _mikro_orm_core.EntityCtor<Path>> | EntitySchema<AscensionClass, never, _mikro_orm_core.EntityCtor<AscensionClass>> | EntitySchema<Equipment, never, _mikro_orm_core.EntityCtor<Equipment>> | EntitySchema<Consumable, never, _mikro_orm_core.EntityCtor<Consumable>> | EntitySchema<Concoction, never, _mikro_orm_core.EntityCtor<Concoction>> | EntitySchema<Outfit, never, _mikro_orm_core.EntityCtor<Outfit>> | EntitySchema<FoldGroup, never, _mikro_orm_core.EntityCtor<FoldGroup>> | EntitySchema<ZapGroup, never, _mikro_orm_core.EntityCtor<ZapGroup>> | EntitySchema<MonsterDrop, never, _mikro_orm_core.EntityCtor<MonsterDrop>> | EntitySchema<NativeMonster, never, _mikro_orm_core.EntityCtor<NativeMonster>> | EntitySchema<Ingredient, never, _mikro_orm_core.EntityCtor<Ingredient>> | EntitySchema<OutfitTreat, never, _mikro_orm_core.EntityCtor<OutfitTreat>> | EntitySchema<ItemModifiers, never, _mikro_orm_core.EntityCtor<ItemModifiers>> | EntitySchema<EffectModifiers, never, _mikro_orm_core.EntityCtor<EffectModifiers>> | EntitySchema<SkillModifiers, never, _mikro_orm_core.EntityCtor<SkillModifiers>> | EntitySchema<FamiliarModifiers, never, _mikro_orm_core.EntityCtor<FamiliarModifiers>> | EntitySchema<Meta, never, _mikro_orm_core.EntityCtor<Meta>>)[];
|
|
437
445
|
|
|
438
|
-
export {
|
|
446
|
+
export { SkillSchema as $, AscensionClass as A, BaseClient as B, Concoction as C, MetaSchema as D, Effect as E, Familiar as F, type Modifier as G, Monster as H, Ingredient as I, MonsterDrop as J, MonsterDropCategory as K, Location as L, Meta as M, MonsterDropSchema as N, MonsterElement as O, MonsterSchema as P, NativeMonster as Q, NativeMonsterSchema as R, Outfit as S, OutfitSchema as T, OutfitTreat as U, OutfitTreatSchema as V, Path as W, PathSchema as X, Skill as Y, SkillModifiers as Z, SkillModifiersSchema as _, AscensionClassSchema as a, SkillTag as a0, ZapGroup as a1, ZapGroupSchema as a2, entities as a3, getModifier as a4, getModifiers as a5, ConcoctionSchema as b, Consumable as c, ConsumableQuality as d, ConsumableSchema as e, EffectModifiers as f, EffectModifiersSchema as g, EffectQuality as h, EffectSchema as i, Equipment as j, EquipmentSchema as k, FamiliarCategory as l, FamiliarModifiers as m, FamiliarModifiersSchema as n, FamiliarSchema as o, FoldGroup as p, FoldGroupSchema as q, IngredientSchema as r, Item as s, ItemModifiers as t, ItemModifiersSchema as u, ItemSchema as v, ItemUse as w, LocationDifficulty as x, LocationEnvironment as y, LocationSchema as z };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "data-of-loathing",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"packageManager": "yarn@4.6.0",
|
|
6
6
|
"repository": {
|
|
@@ -33,7 +33,8 @@
|
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "rm -rf dist && tsup",
|
|
35
35
|
"format": "prettier --write .",
|
|
36
|
-
"prepublishOnly": "yarn build"
|
|
36
|
+
"prepublishOnly": "yarn build",
|
|
37
|
+
"test": "vitest run"
|
|
37
38
|
},
|
|
38
39
|
"dependencies": {
|
|
39
40
|
"@mikro-orm/core": "^7.0.14",
|
|
@@ -48,7 +49,8 @@
|
|
|
48
49
|
"tsup": "^8.5.1",
|
|
49
50
|
"typescript": "^5.9.3",
|
|
50
51
|
"vite": "^6.0.0",
|
|
51
|
-
"vite-plugin-node-polyfills": "^0.26.0"
|
|
52
|
+
"vite-plugin-node-polyfills": "^0.26.0",
|
|
53
|
+
"vitest": "^4.1.6"
|
|
52
54
|
},
|
|
53
55
|
"peerDependencies": {
|
|
54
56
|
"vite": ">=5.0.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schema.ts","../src/BaseClient.ts"],"sourcesContent":["import { Collection, EntitySchema, type Ref } from \"@mikro-orm/core\";\n\n// ---- Enums ----------------------------------------------------------------\n\nexport enum ItemUse {\n Food = \"food\",\n Drink = \"drink\",\n Spleen = \"spleen\",\n Potion = \"potion\",\n Avatar = \"avatar\",\n Usable = \"usable\",\n Multiple = \"multiple\",\n Reusable = \"reusable\",\n Message = \"message\",\n Grow = \"grow\",\n PokePill = \"pokepill\",\n Hat = \"hat\",\n Weapon = \"weapon\",\n Sixgun = \"sixgun\",\n Offhand = \"offhand\",\n Container = \"container\",\n Shirt = \"shirt\",\n Pants = \"pants\",\n Accessory = \"accessory\",\n Familiar = \"familiar\",\n Sticker = \"sticker\",\n Card = \"card\",\n Folder = \"folder\",\n Bootspur = \"bootspur\",\n Bootskin = \"bootskin\",\n FoodHelper = \"food helper\",\n DrinkHelper = \"drink helper\",\n Zap = \"zap\",\n Sphere = \"sphere\",\n Guardian = \"guardian\",\n Combat = \"combat\",\n CombatReusable = \"combat reusable\",\n Single = \"single\",\n Solo = \"solo\",\n Curse = \"curse\",\n Bounty = \"bounty\",\n Package = \"package\",\n Candy = \"candy\",\n Candy1 = \"candy1\",\n Candy2 = \"candy2\",\n Chocolate = \"chocolate\",\n Fancy = \"fancy\",\n Paste = \"paste\",\n Smith = \"smith\",\n Cook = \"cook\",\n Mix = \"mix\",\n Matchable = \"matchable\",\n}\n\nexport enum EffectQuality {\n Good = \"good\",\n Neutral = \"neutral\",\n Bad = \"bad\",\n}\n\nexport enum SkillTag {\n Passive = \"passive\",\n Combat = \"combat\",\n NonCombat = \"nc\",\n Heal = \"heal\",\n ItemSummon = \"item\",\n Effect = \"effect\",\n Self = \"self\",\n Other = \"other\",\n Song = \"song\",\n Expression = \"expression\",\n Walk = \"walk\",\n}\n\nexport enum FamiliarCategory {\n Stat0 = \"stat0\",\n Stat1 = \"stat1\",\n Item0 = \"item0\",\n Item1 = \"item1\",\n Item2 = \"item2\",\n Item3 = \"item3\",\n Meat0 = \"meat0\",\n Combat0 = \"combat0\",\n Combat1 = \"combat1\",\n Drop = \"drop\",\n Block = \"block\",\n Delevel0 = \"delevel0\",\n Delevel1 = \"delevel1\",\n Hp0 = \"hp0\",\n Mp0 = \"mp0\",\n Meat1 = \"meat1\",\n Stat2 = \"stat2\",\n Other0 = \"other0\",\n Hp1 = \"hp1\",\n Mp1 = \"mp1\",\n Stat3 = \"stat3\",\n Other1 = \"other1\",\n Passive = \"passive\",\n Underwater = \"underwater\",\n Pokefam = \"pokefam\",\n Variable = \"variable\",\n}\n\nexport enum MonsterElement {\n BadSpelling = \"bad spelling\",\n Cold = \"cold\",\n Cute = \"cute\",\n Hot = \"hot\",\n Shadow = \"shadow\",\n Spooky = \"spooky\",\n Sleaze = \"sleaze\",\n Slime = \"slime\",\n Supercold = \"supercold\",\n Stench = \"stench\",\n}\n\nexport enum MonsterDropCategory {\n PickpocketOnly = \"p\",\n NoPickpocket = \"n\",\n Conditional = \"c\",\n Fixed = \"f\",\n Accordion = \"a\",\n Multi = \"m\",\n}\n\nexport enum LocationDifficulty {\n None = \"none\",\n Unknown = \"unknown\",\n Low = \"low\",\n Medium = \"medium\",\n High = \"high\",\n}\n\nexport enum LocationEnvironment {\n None = \"none\",\n Indoor = \"indoor\",\n Outdoor = \"outdoor\",\n Underground = \"underground\",\n Underwater = \"underwater\",\n}\n\nexport enum ConsumableQuality {\n None = \"none\",\n Crappy = \"crappy\",\n Decent = \"decent\",\n Good = \"good\",\n Awesome = \"awesome\",\n EPIC = \"EPIC\",\n SuperEPIC = \"super_EPIC\",\n SuperUltraEPIC = \"super_ultra_EPIC\",\n SuperUltraMegaEPIC = \"super_ultra_mega_EPIC\",\n SuperUltraMegaTurboEPIC = \"super_ultra_mega_turbo_EPIC\",\n Quest = \"quest\",\n Changing = \"changing\",\n Drippy = \"drippy\",\n}\n\n// ---- Entity Classes -------------------------------------------------------\n\nexport class Item {\n id!: number;\n name!: string;\n descid?: number;\n image!: string;\n uses!: ItemUse[];\n quest!: boolean;\n gift!: boolean;\n tradeable!: boolean;\n discardable!: boolean;\n autosell!: number;\n plural?: string;\n ambiguous!: boolean;\n // relations\n equipment?: Equipment;\n consumable?: Consumable;\n modifiers?: ItemModifiers;\n monsterDrops = new Collection<MonsterDrop>(this);\n outfitEquipment = new Collection<Outfit>(this);\n outfitTreats = new Collection<OutfitTreat>(this);\n ingredients = new Collection<Ingredient>(this);\n foldGroups = new Collection<FoldGroup>(this);\n zapGroups = new Collection<ZapGroup>(this);\n}\n\nexport class Effect {\n id!: number;\n name!: string;\n descid?: string;\n image!: string;\n quality!: EffectQuality;\n nohookah!: boolean;\n nopvp!: boolean;\n noremove!: boolean;\n song!: boolean;\n actions!: string[];\n ambiguous!: boolean;\n modifiers?: EffectModifiers;\n}\n\nexport class Skill {\n id!: number;\n name!: string;\n image!: string;\n tags!: SkillTag[];\n mpCost!: number;\n duration!: number;\n guildLevel?: number;\n maxLevel?: number;\n permable!: boolean;\n ambiguous!: boolean;\n modifiers?: SkillModifiers;\n}\n\nexport class Familiar {\n id!: number;\n name!: string;\n image!: string;\n categories!: FamiliarCategory[];\n larva?: Item;\n equipment?: Item;\n cageMatch!: number;\n scavengerHunt!: number;\n obstacleCourse!: number;\n hideAndSeek!: number;\n attributes!: string[];\n modifiers?: FamiliarModifiers;\n}\n\nexport class Monster {\n id!: number;\n name!: string;\n image!: string[];\n ambiguous!: boolean;\n article!: string;\n attack!: string;\n boss!: boolean;\n defence!: string;\n drippy!: boolean;\n element?: MonsterElement;\n elementalAttack?: MonsterElement;\n elementalDefence?: MonsterElement;\n elementalResistance!: string;\n experience?: string;\n free!: boolean;\n ghost!: boolean;\n groupSize!: number;\n hp!: string;\n initiative!: string;\n itemBlockChance!: number;\n lucky!: boolean;\n manuel?: string;\n meat?: number;\n meatExpression?: string;\n monsterLevelMultiplier!: string;\n nobanish!: boolean;\n nocopy!: boolean;\n nomanuel!: boolean;\n nowander!: boolean;\n nowish!: boolean;\n phylum!: string;\n physicalResistance!: string;\n poison?: string;\n scaling!: string;\n scalingCap!: string;\n scalingFloor!: string;\n skeleton!: boolean;\n skillBlockChance!: number;\n snake!: boolean;\n spellBlockChance!: number;\n sprinkles!: [number | string, number | string];\n superlikely!: boolean;\n ultrarare!: boolean;\n wanderer!: boolean;\n wiki?: string;\n wish!: boolean;\n zombie!: boolean;\n // relations\n drops = new Collection<MonsterDrop>(this);\n nativeLocations = new Collection<NativeMonster>(this);\n}\n\nexport class Location {\n name!: string;\n id?: number;\n zone!: string;\n url!: string;\n difficulty!: LocationDifficulty;\n environment!: LocationEnvironment;\n statRequirement!: number;\n waterLevel?: number;\n overdrunk!: boolean;\n nowander!: boolean;\n combatRate!: number;\n // relations\n nativeMonsters = new Collection<NativeMonster>(this);\n}\n\nexport class Path {\n id!: number;\n name!: string;\n enumName!: string;\n image?: string;\n isAvatar!: boolean;\n article?: string;\n pointsPreference?: string;\n maximumPoints!: number;\n bucket!: boolean;\n stomachCapacity!: number;\n liverCapacity!: number;\n spleenCapacity!: number;\n classes = new Collection<AscensionClass>(this);\n}\n\nexport class AscensionClass {\n id!: number;\n name!: string;\n enumName!: string;\n image?: string;\n primeStatIndex!: number;\n path?: Path;\n stun?: string;\n stomachCapacity?: number;\n liverCapacity?: number;\n spleenCapacity?: number;\n}\n\nexport class Equipment {\n // PK is a FK to Item. Access the id via equipment.item.id\n item!: Ref<Item>;\n power!: number;\n musRequirement!: number;\n mysRequirement!: number;\n moxRequirement!: number;\n type?: string;\n hands?: number;\n}\n\nexport class Consumable {\n // PK is a FK to Item. Access the id via consumable.item.id\n item!: Ref<Item>;\n stomach!: number;\n liver!: number;\n spleen!: number;\n levelRequirement!: number;\n quality?: ConsumableQuality;\n adventureRange!: string;\n adventures!: number;\n muscle!: number;\n muscleRange!: string;\n mysticality!: number;\n mysticalityRange!: string;\n moxie!: number;\n moxieRange!: string;\n notes?: string;\n}\n\nexport class Concoction {\n id!: number;\n item!: Item;\n methods!: string[];\n comment?: string;\n ingredients = new Collection<Ingredient>(this);\n}\n\nexport class Outfit {\n id!: number;\n name!: string;\n image!: string;\n equipment = new Collection<Item>(this);\n treats = new Collection<OutfitTreat>(this);\n}\n\nexport class FoldGroup {\n id!: number;\n damage!: number;\n items = new Collection<Item>(this);\n}\n\nexport class ZapGroup {\n id!: number;\n items = new Collection<Item>(this);\n}\n\n// Junction entities (surrogate autoincrement id)\n\nexport class MonsterDrop {\n id!: number;\n monster!: Monster;\n item!: Item;\n rate!: number;\n category?: MonsterDropCategory;\n}\n\nexport class NativeMonster {\n id!: number;\n location!: Location;\n monster!: Monster;\n weight!: number;\n rejection!: number;\n parity?: number;\n}\n\nexport class Ingredient {\n id!: number;\n concoction!: Concoction;\n item!: Item;\n quantity!: number;\n}\n\nexport class OutfitTreat {\n id!: number;\n outfit!: Outfit;\n item!: Item;\n chance!: number;\n}\n\n// Modifier entities (FK-as-PK)\n\nexport class ItemModifiers {\n item!: Ref<Item>;\n modifiers!: Record<string, string>;\n}\n\nexport class EffectModifiers {\n effect!: Ref<Effect>;\n modifiers!: Record<string, string>;\n}\n\nexport class SkillModifiers {\n skill!: Ref<Skill>;\n modifiers!: Record<string, string>;\n}\n\nexport class FamiliarModifiers {\n familiar!: Ref<Familiar>;\n modifiers!: Record<string, string>;\n}\n\nexport class Meta {\n id!: number;\n lastUpdate!: Date;\n lastRevision!: number;\n}\n\n// ---- EntitySchema Definitions ---------------------------------------------\n\nexport const ItemSchema = new EntitySchema<Item>({\n class: Item,\n tableName: \"items\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\", index: true },\n descid: { type: \"integer\", nullable: true, unique: true },\n image: { type: \"string\" },\n uses: { type: \"json\" },\n quest: { type: \"boolean\" },\n gift: { type: \"boolean\" },\n tradeable: { type: \"boolean\" },\n discardable: { type: \"boolean\" },\n autosell: { type: \"integer\" },\n plural: { type: \"string\", nullable: true },\n ambiguous: { type: \"boolean\", default: false },\n equipment: {\n kind: \"1:1\",\n entity: () => Equipment,\n mappedBy: \"item\",\n nullable: true,\n },\n consumable: {\n kind: \"1:1\",\n entity: () => Consumable,\n mappedBy: \"item\",\n nullable: true,\n },\n modifiers: {\n kind: \"1:1\",\n entity: () => ItemModifiers,\n mappedBy: \"item\",\n nullable: true,\n },\n monsterDrops: { kind: \"1:m\", entity: () => MonsterDrop, mappedBy: \"item\" },\n outfitEquipment: {\n kind: \"m:n\",\n entity: () => Outfit,\n pivotTable: \"outfitEquipment\",\n joinColumn: \"equipment\",\n inverseJoinColumn: \"outfit\",\n },\n outfitTreats: {\n kind: \"1:m\",\n entity: () => OutfitTreat,\n mappedBy: \"item\",\n },\n ingredients: {\n kind: \"1:m\",\n entity: () => Ingredient,\n mappedBy: \"item\",\n },\n foldGroups: {\n kind: \"m:n\",\n entity: () => FoldGroup,\n pivotTable: \"foldables\",\n joinColumn: \"item\",\n inverseJoinColumn: \"foldGroup\",\n },\n zapGroups: {\n kind: \"m:n\",\n entity: () => ZapGroup,\n pivotTable: \"zapGroupItems\",\n joinColumn: \"item\",\n inverseJoinColumn: \"zapGroup\",\n },\n },\n});\n\nexport const EffectSchema = new EntitySchema<Effect>({\n class: Effect,\n tableName: \"effects\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n descid: { type: \"string\", nullable: true, unique: true },\n image: { type: \"string\" },\n quality: { type: \"string\" },\n nohookah: { type: \"boolean\" },\n nopvp: { type: \"boolean\" },\n noremove: { type: \"boolean\" },\n song: { type: \"boolean\" },\n actions: { type: \"json\" },\n ambiguous: { type: \"boolean\", default: false },\n modifiers: {\n kind: \"1:1\",\n entity: () => EffectModifiers,\n mappedBy: \"effect\",\n nullable: true,\n },\n },\n});\n\nexport const SkillSchema = new EntitySchema<Skill>({\n class: Skill,\n tableName: \"skills\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n image: { type: \"string\" },\n tags: { type: \"json\" },\n mpCost: { type: \"integer\" },\n duration: { type: \"integer\" },\n guildLevel: { type: \"integer\", nullable: true },\n maxLevel: { type: \"integer\", nullable: true },\n permable: { type: \"boolean\" },\n ambiguous: { type: \"boolean\", default: false },\n modifiers: {\n kind: \"1:1\",\n entity: () => SkillModifiers,\n mappedBy: \"skill\",\n nullable: true,\n },\n },\n});\n\nexport const FamiliarSchema = new EntitySchema<Familiar>({\n class: Familiar,\n tableName: \"familiars\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n image: { type: \"string\" },\n categories: { type: \"json\" },\n larva: {\n kind: \"m:1\",\n entity: () => Item,\n nullable: true,\n fieldName: \"larva\",\n },\n equipment: {\n kind: \"m:1\",\n entity: () => Item,\n nullable: true,\n fieldName: \"equipment\",\n },\n cageMatch: { type: \"integer\" },\n scavengerHunt: { type: \"integer\" },\n obstacleCourse: { type: \"integer\" },\n hideAndSeek: { type: \"integer\" },\n attributes: { type: \"json\" },\n modifiers: {\n kind: \"1:1\",\n entity: () => FamiliarModifiers,\n mappedBy: \"familiar\",\n nullable: true,\n },\n },\n});\n\nexport const MonsterSchema = new EntitySchema<Monster>({\n class: Monster,\n tableName: \"monsters\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n image: { type: \"json\" },\n ambiguous: { type: \"boolean\", default: false },\n article: { type: \"string\" },\n attack: { type: \"string\" },\n boss: { type: \"boolean\" },\n defence: { type: \"string\" },\n drippy: { type: \"boolean\" },\n element: { type: \"string\", nullable: true },\n elementalAttack: { type: \"string\", nullable: true },\n elementalDefence: { type: \"string\", nullable: true },\n elementalResistance: { type: \"string\" },\n experience: { type: \"string\", nullable: true },\n free: { type: \"boolean\" },\n ghost: { type: \"boolean\" },\n groupSize: { type: \"integer\" },\n hp: { type: \"string\" },\n initiative: { type: \"string\" },\n itemBlockChance: { type: \"float\" },\n lucky: { type: \"boolean\" },\n manuel: { type: \"string\", nullable: true },\n meat: { type: \"float\", nullable: true },\n meatExpression: { type: \"string\", nullable: true },\n monsterLevelMultiplier: { type: \"string\" },\n nobanish: { type: \"boolean\" },\n nocopy: { type: \"boolean\" },\n nomanuel: { type: \"boolean\" },\n nowander: { type: \"boolean\" },\n nowish: { type: \"boolean\" },\n phylum: { type: \"string\" },\n physicalResistance: { type: \"string\" },\n poison: { type: \"string\", nullable: true },\n scaling: { type: \"string\" },\n scalingCap: { type: \"string\" },\n scalingFloor: { type: \"string\" },\n skeleton: { type: \"boolean\" },\n skillBlockChance: { type: \"float\" },\n snake: { type: \"boolean\" },\n spellBlockChance: { type: \"float\" },\n sprinkles: { type: \"json\" },\n superlikely: { type: \"boolean\" },\n ultrarare: { type: \"boolean\" },\n wanderer: { type: \"boolean\" },\n wiki: { type: \"string\", nullable: true },\n wish: { type: \"boolean\" },\n zombie: { type: \"boolean\" },\n drops: { kind: \"1:m\", entity: () => MonsterDrop, mappedBy: \"monster\" },\n nativeLocations: {\n kind: \"1:m\",\n entity: () => NativeMonster,\n mappedBy: \"monster\",\n },\n },\n});\n\nexport const LocationSchema = new EntitySchema<Location>({\n class: Location,\n tableName: \"locations\",\n properties: {\n name: { type: \"string\", primary: true },\n id: { type: \"integer\", nullable: true },\n zone: { type: \"string\" },\n url: { type: \"string\" },\n difficulty: { type: \"string\" },\n environment: { type: \"string\" },\n statRequirement: { type: \"integer\" },\n waterLevel: { type: \"integer\", nullable: true },\n overdrunk: { type: \"boolean\" },\n nowander: { type: \"boolean\" },\n combatRate: { type: \"integer\" },\n nativeMonsters: {\n kind: \"1:m\",\n entity: () => NativeMonster,\n mappedBy: \"location\",\n },\n },\n});\n\nexport const PathSchema = new EntitySchema<Path>({\n class: Path,\n tableName: \"paths\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n enumName: { type: \"string\" },\n image: { type: \"string\", nullable: true, unique: true },\n isAvatar: { type: \"boolean\" },\n article: { type: \"string\", nullable: true },\n pointsPreference: { type: \"string\", nullable: true },\n maximumPoints: { type: \"integer\" },\n bucket: { type: \"boolean\" },\n stomachCapacity: { type: \"integer\" },\n liverCapacity: { type: \"integer\" },\n spleenCapacity: { type: \"integer\" },\n classes: { kind: \"1:m\", entity: () => AscensionClass, mappedBy: \"path\" },\n },\n});\n\nexport const AscensionClassSchema = new EntitySchema<AscensionClass>({\n class: AscensionClass,\n tableName: \"classes\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n enumName: { type: \"string\" },\n image: { type: \"string\", nullable: true },\n primeStatIndex: { type: \"integer\" },\n path: {\n kind: \"m:1\",\n entity: () => Path,\n nullable: true,\n fieldName: \"path\",\n },\n stun: { type: \"string\", nullable: true },\n stomachCapacity: { type: \"integer\", nullable: true },\n liverCapacity: { type: \"integer\", nullable: true },\n spleenCapacity: { type: \"integer\", nullable: true },\n },\n});\n\nexport const EquipmentSchema = new EntitySchema<Equipment>({\n class: Equipment,\n tableName: \"equipment\",\n properties: {\n item: {\n kind: \"1:1\",\n entity: () => Item,\n primary: true,\n fieldName: \"id\",\n inversedBy: \"equipment\",\n },\n power: { type: \"integer\" },\n musRequirement: { type: \"integer\" },\n mysRequirement: { type: \"integer\" },\n moxRequirement: { type: \"integer\" },\n type: { type: \"string\", nullable: true },\n hands: { type: \"integer\", nullable: true },\n },\n});\n\nexport const ConsumableSchema = new EntitySchema<Consumable>({\n class: Consumable,\n tableName: \"consumables\",\n properties: {\n item: {\n kind: \"1:1\",\n entity: () => Item,\n primary: true,\n fieldName: \"id\",\n inversedBy: \"consumable\",\n },\n stomach: { type: \"integer\" },\n liver: { type: \"integer\" },\n spleen: { type: \"integer\" },\n levelRequirement: { type: \"integer\" },\n quality: { type: \"string\", nullable: true },\n adventureRange: { type: \"string\" },\n adventures: { type: \"float\" },\n muscle: { type: \"float\" },\n muscleRange: { type: \"string\" },\n mysticality: { type: \"float\" },\n mysticalityRange: { type: \"string\" },\n moxie: { type: \"float\" },\n moxieRange: { type: \"string\" },\n notes: { type: \"string\", nullable: true },\n },\n});\n\nexport const ConcoctionSchema = new EntitySchema<Concoction>({\n class: Concoction,\n tableName: \"concoctions\",\n properties: {\n id: { type: \"integer\", primary: true },\n item: { kind: \"m:1\", entity: () => Item, fieldName: \"item\" },\n methods: { type: \"json\" },\n comment: { type: \"string\", nullable: true },\n ingredients: {\n kind: \"1:m\",\n entity: () => Ingredient,\n mappedBy: \"concoction\",\n },\n },\n});\n\nexport const OutfitSchema = new EntitySchema<Outfit>({\n class: Outfit,\n tableName: \"outfits\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n image: { type: \"string\" },\n equipment: {\n kind: \"m:n\",\n entity: () => Item,\n pivotTable: \"outfitEquipment\",\n joinColumn: \"outfit\",\n inverseJoinColumn: \"equipment\",\n },\n treats: { kind: \"1:m\", entity: () => OutfitTreat, mappedBy: \"outfit\" },\n },\n});\n\nexport const FoldGroupSchema = new EntitySchema<FoldGroup>({\n class: FoldGroup,\n tableName: \"foldGroups\",\n properties: {\n id: { type: \"integer\", primary: true },\n damage: { type: \"integer\" },\n items: {\n kind: \"m:n\",\n entity: () => Item,\n mappedBy: \"foldGroups\",\n },\n },\n});\n\nexport const ZapGroupSchema = new EntitySchema<ZapGroup>({\n class: ZapGroup,\n tableName: \"zapGroups\",\n properties: {\n id: { type: \"integer\", primary: true },\n items: {\n kind: \"m:n\",\n entity: () => Item,\n mappedBy: \"zapGroups\",\n },\n },\n});\n\nexport const MonsterDropSchema = new EntitySchema<MonsterDrop>({\n class: MonsterDrop,\n tableName: \"monsterDrops\",\n properties: {\n id: { type: \"integer\", primary: true },\n monster: { kind: \"m:1\", entity: () => Monster },\n item: { kind: \"m:1\", entity: () => Item },\n rate: { type: \"float\" },\n category: { type: \"string\", nullable: true },\n },\n});\n\nexport const NativeMonsterSchema = new EntitySchema<NativeMonster>({\n class: NativeMonster,\n tableName: \"nativeMonsters\",\n properties: {\n id: { type: \"integer\", primary: true },\n location: { kind: \"m:1\", entity: () => Location },\n monster: { kind: \"m:1\", entity: () => Monster },\n weight: { type: \"float\" },\n rejection: { type: \"float\" },\n parity: { type: \"integer\", nullable: true },\n },\n});\n\nexport const IngredientSchema = new EntitySchema<Ingredient>({\n class: Ingredient,\n tableName: \"ingredients\",\n properties: {\n id: { type: \"integer\", primary: true },\n concoction: { kind: \"m:1\", entity: () => Concoction },\n item: { kind: \"m:1\", entity: () => Item },\n quantity: { type: \"integer\" },\n },\n});\n\nexport const OutfitTreatSchema = new EntitySchema<OutfitTreat>({\n class: OutfitTreat,\n tableName: \"outfitTreats\",\n properties: {\n id: { type: \"integer\", primary: true },\n outfit: { kind: \"m:1\", entity: () => Outfit },\n item: { kind: \"m:1\", entity: () => Item },\n chance: { type: \"float\" },\n },\n});\n\nexport const ItemModifiersSchema = new EntitySchema<ItemModifiers>({\n class: ItemModifiers,\n tableName: \"itemModifiers\",\n properties: {\n item: {\n kind: \"1:1\",\n entity: () => Item,\n primary: true,\n fieldName: \"item\",\n inversedBy: \"modifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const EffectModifiersSchema = new EntitySchema<EffectModifiers>({\n class: EffectModifiers,\n tableName: \"effectModifiers\",\n properties: {\n effect: {\n kind: \"1:1\",\n entity: () => Effect,\n primary: true,\n fieldName: \"effect\",\n inversedBy: \"modifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const SkillModifiersSchema = new EntitySchema<SkillModifiers>({\n class: SkillModifiers,\n tableName: \"skillModifiers\",\n properties: {\n skill: {\n kind: \"1:1\",\n entity: () => Skill,\n primary: true,\n fieldName: \"skill\",\n inversedBy: \"modifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const FamiliarModifiersSchema = new EntitySchema<FamiliarModifiers>({\n class: FamiliarModifiers,\n tableName: \"familiarModifiers\",\n properties: {\n familiar: {\n kind: \"1:1\",\n entity: () => Familiar,\n primary: true,\n fieldName: \"familiar\",\n inversedBy: \"modifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const MetaSchema = new EntitySchema<Meta>({\n class: Meta,\n tableName: \"meta\",\n properties: {\n id: { type: \"integer\", primary: true, default: 1 },\n lastUpdate: { type: \"Date\" },\n lastRevision: { type: \"integer\" },\n },\n});\n\n// All schemas in dependency order for MikroORM.init({ entities })\nexport const entities = [\n ItemSchema,\n EffectSchema,\n SkillSchema,\n FamiliarSchema,\n MonsterSchema,\n LocationSchema,\n PathSchema,\n AscensionClassSchema,\n EquipmentSchema,\n ConsumableSchema,\n ConcoctionSchema,\n OutfitSchema,\n FoldGroupSchema,\n ZapGroupSchema,\n MonsterDropSchema,\n NativeMonsterSchema,\n IngredientSchema,\n OutfitTreatSchema,\n ItemModifiersSchema,\n EffectModifiersSchema,\n SkillModifiersSchema,\n FamiliarModifiersSchema,\n MetaSchema,\n];\n","import { type EntityManager, MikroORM } from \"@mikro-orm/core\";\n\nexport const DEFAULT_URL = \"https://data.loathers.net/dol.sqlite\";\nexport const ETAG_KEY = \"dol-etag\";\n\nexport abstract class BaseClient<S> {\n protected _orm?: MikroORM;\n protected readonly _strategy: S;\n\n constructor(strategy: S) {\n this._strategy = strategy;\n }\n\n get query(): EntityManager {\n if (!this._orm) throw new Error(\"Call await client.load() before querying\");\n return this._orm.em;\n }\n\n abstract load(): Promise<void>;\n\n protected async fetchDb(url: string): Promise<ArrayBuffer> {\n const response = await fetch(url);\n if (!response.ok)\n throw new Error(`Failed to fetch database: ${response.status}`);\n return response.arrayBuffer();\n }\n\n protected abstract getStoredEtag(key: string): Promise<string | null>;\n protected abstract storeEtag(key: string, etag: string): Promise<void>;\n\n protected async syncIfNeeded(\n url: string,\n key: string,\n apply: (data: ArrayBuffer) => Promise<void>,\n force = false,\n ): Promise<void> {\n const storedEtag = force ? null : await this.getStoredEtag(key);\n const head = await fetch(url, { method: \"HEAD\" });\n const remoteEtag = head.headers.get(\"etag\");\n\n if (force || storedEtag !== remoteEtag) {\n await apply(await this.fetchDb(url));\n if (remoteEtag) await this.storeEtag(key, remoteEtag);\n }\n }\n}\n"],"mappings":"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","names":["ItemUse","EffectQuality","SkillTag","FamiliarCategory","MonsterElement","MonsterDropCategory","LocationDifficulty","LocationEnvironment","ConsumableQuality"]}
|