data-of-loathing 3.2.1 → 4.0.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-VCGZTY2F.js} +16 -1
- package/dist/chunk-VCGZTY2F.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-DAQl_kGo.d.ts} +12 -5
- package/dist/vite.js +4 -1
- package/dist/vite.js.map +1 -1
- package/package.json +3 -2
- 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-DAQl_kGo.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-DAQl_kGo.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-VCGZTY2F.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,19 @@ var OutfitTreat = class {
|
|
|
390
390
|
item;
|
|
391
391
|
chance;
|
|
392
392
|
};
|
|
393
|
+
function getModifier(modifiers, name) {
|
|
394
|
+
return modifiers.find((m) => m.name === name)?.value;
|
|
395
|
+
}
|
|
396
|
+
function getModifiers(modifiers, nameOrNames) {
|
|
397
|
+
if (typeof nameOrNames === "string") {
|
|
398
|
+
return modifiers.filter((m) => m.name === nameOrNames).map((m) => m.value);
|
|
399
|
+
}
|
|
400
|
+
const columns = nameOrNames.map(
|
|
401
|
+
(name) => modifiers.filter((m) => m.name === name).map((m) => m.value)
|
|
402
|
+
);
|
|
403
|
+
const len = Math.max(0, ...columns.map((c) => c.length));
|
|
404
|
+
return Array.from({ length: len }, (_, i) => columns.map((c) => c[i]));
|
|
405
|
+
}
|
|
393
406
|
var ItemModifiers = class {
|
|
394
407
|
item;
|
|
395
408
|
modifiers;
|
|
@@ -973,6 +986,8 @@ export {
|
|
|
973
986
|
NativeMonster,
|
|
974
987
|
Ingredient,
|
|
975
988
|
OutfitTreat,
|
|
989
|
+
getModifier,
|
|
990
|
+
getModifiers,
|
|
976
991
|
ItemModifiers,
|
|
977
992
|
EffectModifiers,
|
|
978
993
|
SkillModifiers,
|
|
@@ -1006,4 +1021,4 @@ export {
|
|
|
1006
1021
|
ETAG_KEY,
|
|
1007
1022
|
BaseClient
|
|
1008
1023
|
};
|
|
1009
|
-
//# sourceMappingURL=chunk-
|
|
1024
|
+
//# sourceMappingURL=chunk-VCGZTY2F.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\nexport function getModifier(\n modifiers: Modifier[],\n name: string,\n): string | undefined {\n return modifiers.find((m) => m.name === name)?.value;\n}\n\nexport function getModifiers(\n modifiers: Modifier[],\n name: string,\n): string[];\nexport function getModifiers(\n modifiers: Modifier[],\n names: string[],\n): (string | undefined)[][];\nexport function getModifiers(\n modifiers: Modifier[],\n nameOrNames: string | string[],\n): string[] | (string | undefined)[][] {\n if (typeof nameOrNames === \"string\") {\n return modifiers.filter((m) => m.name === nameOrNames).map((m) => m.value);\n }\n const columns = nameOrNames.map((name) =>\n modifiers.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":";AAAA,SAAS,YAAY,oBAA8B;AAI5C,IAAK,UAAL,kBAAKA,aAAL;AACL,EAAAA,SAAA,UAAO;AACP,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,UAAO;AACP,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,SAAM;AACN,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,eAAY;AACZ,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,eAAY;AACZ,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,UAAO;AACP,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,gBAAa;AACb,EAAAA,SAAA,iBAAc;AACd,EAAAA,SAAA,SAAM;AACN,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,oBAAiB;AACjB,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,UAAO;AACP,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,eAAY;AACZ,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,UAAO;AACP,EAAAA,SAAA,SAAM;AACN,EAAAA,SAAA,eAAY;AA/CF,SAAAA;AAAA,GAAA;AAkDL,IAAK,gBAAL,kBAAKC,mBAAL;AACL,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,SAAM;AAHI,SAAAA;AAAA,GAAA;AAML,IAAK,WAAL,kBAAKC,cAAL;AACL,EAAAA,UAAA,aAAU;AACV,EAAAA,UAAA,YAAS;AACT,EAAAA,UAAA,eAAY;AACZ,EAAAA,UAAA,UAAO;AACP,EAAAA,UAAA,gBAAa;AACb,EAAAA,UAAA,YAAS;AACT,EAAAA,UAAA,UAAO;AACP,EAAAA,UAAA,WAAQ;AACR,EAAAA,UAAA,UAAO;AACP,EAAAA,UAAA,gBAAa;AACb,EAAAA,UAAA,UAAO;AAXG,SAAAA;AAAA,GAAA;AAcL,IAAK,mBAAL,kBAAKC,sBAAL;AACL,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,aAAU;AACV,EAAAA,kBAAA,aAAU;AACV,EAAAA,kBAAA,UAAO;AACP,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,cAAW;AACX,EAAAA,kBAAA,cAAW;AACX,EAAAA,kBAAA,SAAM;AACN,EAAAA,kBAAA,SAAM;AACN,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,YAAS;AACT,EAAAA,kBAAA,SAAM;AACN,EAAAA,kBAAA,SAAM;AACN,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,YAAS;AACT,EAAAA,kBAAA,aAAU;AACV,EAAAA,kBAAA,gBAAa;AACb,EAAAA,kBAAA,aAAU;AACV,EAAAA,kBAAA,cAAW;AA1BD,SAAAA;AAAA,GAAA;AA6BL,IAAK,iBAAL,kBAAKC,oBAAL;AACL,EAAAA,gBAAA,iBAAc;AACd,EAAAA,gBAAA,UAAO;AACP,EAAAA,gBAAA,UAAO;AACP,EAAAA,gBAAA,SAAM;AACN,EAAAA,gBAAA,YAAS;AACT,EAAAA,gBAAA,YAAS;AACT,EAAAA,gBAAA,YAAS;AACT,EAAAA,gBAAA,WAAQ;AACR,EAAAA,gBAAA,eAAY;AACZ,EAAAA,gBAAA,YAAS;AAVC,SAAAA;AAAA,GAAA;AAaL,IAAK,sBAAL,kBAAKC,yBAAL;AACL,EAAAA,qBAAA,oBAAiB;AACjB,EAAAA,qBAAA,kBAAe;AACf,EAAAA,qBAAA,iBAAc;AACd,EAAAA,qBAAA,WAAQ;AACR,EAAAA,qBAAA,eAAY;AACZ,EAAAA,qBAAA,WAAQ;AANE,SAAAA;AAAA,GAAA;AASL,IAAK,qBAAL,kBAAKC,wBAAL;AACL,EAAAA,oBAAA,UAAO;AACP,EAAAA,oBAAA,aAAU;AACV,EAAAA,oBAAA,SAAM;AACN,EAAAA,oBAAA,YAAS;AACT,EAAAA,oBAAA,UAAO;AALG,SAAAA;AAAA,GAAA;AAQL,IAAK,sBAAL,kBAAKC,yBAAL;AACL,EAAAA,qBAAA,UAAO;AACP,EAAAA,qBAAA,YAAS;AACT,EAAAA,qBAAA,aAAU;AACV,EAAAA,qBAAA,iBAAc;AACd,EAAAA,qBAAA,gBAAa;AALH,SAAAA;AAAA,GAAA;AAQL,IAAK,oBAAL,kBAAKC,uBAAL;AACL,EAAAA,mBAAA,UAAO;AACP,EAAAA,mBAAA,YAAS;AACT,EAAAA,mBAAA,YAAS;AACT,EAAAA,mBAAA,UAAO;AACP,EAAAA,mBAAA,aAAU;AACV,EAAAA,mBAAA,UAAO;AACP,EAAAA,mBAAA,eAAY;AACZ,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,wBAAqB;AACrB,EAAAA,mBAAA,6BAA0B;AAC1B,EAAAA,mBAAA,WAAQ;AACR,EAAAA,mBAAA,cAAW;AACX,EAAAA,mBAAA,YAAS;AAbC,SAAAA;AAAA,GAAA;AAkBL,IAAM,OAAN,MAAW;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe,IAAI,WAAwB,IAAI;AAAA,EAC/C,kBAAkB,IAAI,WAAmB,IAAI;AAAA,EAC7C,eAAe,IAAI,WAAwB,IAAI;AAAA,EAC/C,cAAc,IAAI,WAAuB,IAAI;AAAA,EAC7C,aAAa,IAAI,WAAsB,IAAI;AAAA,EAC3C,YAAY,IAAI,WAAqB,IAAI;AAC3C;AAEO,IAAM,SAAN,MAAa;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,QAAN,MAAY;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,WAAN,MAAe;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,UAAN,MAAc;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA,QAAQ,IAAI,WAAwB,IAAI;AAAA,EACxC,kBAAkB,IAAI,WAA0B,IAAI;AACtD;AAEO,IAAM,WAAN,MAAe;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA,iBAAiB,IAAI,WAA0B,IAAI;AACrD;AAEO,IAAM,OAAN,MAAW;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU,IAAI,WAA2B,IAAI;AAC/C;AAEO,IAAM,iBAAN,MAAqB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,YAAN,MAAgB;AAAA;AAAA,EAErB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,aAAN,MAAiB;AAAA;AAAA,EAEtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,aAAN,MAAiB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc,IAAI,WAAuB,IAAI;AAC/C;AAEO,IAAM,SAAN,MAAa;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,IAAI,WAAiB,IAAI;AAAA,EACrC,SAAS,IAAI,WAAwB,IAAI;AAC3C;AAEO,IAAM,YAAN,MAAgB;AAAA,EACrB;AAAA,EACA;AAAA,EACA,QAAQ,IAAI,WAAiB,IAAI;AACnC;AAEO,IAAM,WAAN,MAAe;AAAA,EACpB;AAAA,EACA,QAAQ,IAAI,WAAiB,IAAI;AACnC;AAIO,IAAM,cAAN,MAAkB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,gBAAN,MAAoB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,aAAN,MAAiB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,cAAN,MAAkB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAMO,SAAS,YACd,WACA,MACoB;AACpB,SAAO,UAAU,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI,GAAG;AACjD;AAUO,SAAS,aACd,WACA,aACqC;AACrC,MAAI,OAAO,gBAAgB,UAAU;AACnC,WAAO,UAAU,OAAO,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK;AAAA,EAC3E;AACA,QAAM,UAAU,YAAY;AAAA,IAAI,CAAC,SAC/B,UAAU,OAAO,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK;AAAA,EAC7D;AACA,QAAM,MAAM,KAAK,IAAI,GAAG,GAAG,QAAQ,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;AACvD,SAAO,MAAM,KAAK,EAAE,QAAQ,IAAI,GAAG,CAAC,GAAG,MAAM,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACvE;AAEO,IAAM,gBAAN,MAAoB;AAAA,EACzB;AAAA,EACA;AACF;AAEO,IAAM,kBAAN,MAAsB;AAAA,EAC3B;AAAA,EACA;AACF;AAEO,IAAM,iBAAN,MAAqB;AAAA,EAC1B;AAAA,EACA;AACF;AAEO,IAAM,oBAAN,MAAwB;AAAA,EAC7B;AAAA,EACA;AACF;AAEO,IAAM,OAAN,MAAW;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AACF;AAIO,IAAM,aAAa,IAAI,aAAmB;AAAA,EAC/C,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,IAAI,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,IACrC,MAAM,EAAE,MAAM,UAAU,OAAO,KAAK;AAAA,IACpC,QAAQ,EAAE,MAAM,WAAW,UAAU,MAAM,QAAQ,KAAK;AAAA,IACxD,OAAO,EAAE,MAAM,SAAS;AAAA,IACxB,MAAM,EAAE,MAAM,OAAO;AAAA,IACrB,OAAO,EAAE,MAAM,UAAU;AAAA,IACzB,MAAM,EAAE,MAAM,UAAU;AAAA,IACxB,WAAW,EAAE,MAAM,UAAU;AAAA,IAC7B,aAAa,EAAE,MAAM,UAAU;AAAA,IAC/B,UAAU,EAAE,MAAM,UAAU;AAAA,IAC5B,QAAQ,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,IACzC,WAAW,EAAE,MAAM,WAAW,SAAS,MAAM;AAAA,IAC7C,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,UAAU;AAAA,MACV,UAAU;AAAA,IACZ;AAAA,IACA,YAAY;AAAA,MACV,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,UAAU;AAAA,MACV,UAAU;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,UAAU;AAAA,MACV,UAAU;AAAA,IACZ;AAAA,IACA,cAAc,EAAE,MAAM,OAAO,QAAQ,MAAM,aAAa,UAAU,OAAO;AAAA,IACzE,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,mBAAmB;AAAA,IACrB;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,UAAU;AAAA,IACZ;AAAA,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,UAAU;AAAA,IACZ;AAAA,IACA,YAAY;AAAA,MACV,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,mBAAmB;AAAA,IACrB;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,mBAAmB;AAAA,IACrB;AAAA,EACF;AACF,CAAC;AAEM,IAAM,eAAe,IAAI,aAAqB;AAAA,EACnD,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,IAAI,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,IACrC,MAAM,EAAE,MAAM,SAAS;AAAA,IACvB,QAAQ,EAAE,MAAM,UAAU,UAAU,MAAM,QAAQ,KAAK;AAAA,IACvD,OAAO,EAAE,MAAM,SAAS;AAAA,IACxB,SAAS,EAAE,MAAM,SAAS;AAAA,IAC1B,UAAU,EAAE,MAAM,UAAU;AAAA,IAC5B,OAAO,EAAE,MAAM,UAAU;AAAA,IACzB,UAAU,EAAE,MAAM,UAAU;AAAA,IAC5B,MAAM,EAAE,MAAM,UAAU;AAAA,IACxB,SAAS,EAAE,MAAM,OAAO;AAAA,IACxB,WAAW,EAAE,MAAM,WAAW,SAAS,MAAM;AAAA,IAC7C,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,UAAU;AAAA,MACV,UAAU;AAAA,IACZ;AAAA,EACF;AACF,CAAC;AAEM,IAAM,cAAc,IAAI,aAAoB;AAAA,EACjD,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,IAAI,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,IACrC,MAAM,EAAE,MAAM,SAAS;AAAA,IACvB,OAAO,EAAE,MAAM,SAAS;AAAA,IACxB,MAAM,EAAE,MAAM,OAAO;AAAA,IACrB,QAAQ,EAAE,MAAM,UAAU;AAAA,IAC1B,UAAU,EAAE,MAAM,UAAU;AAAA,IAC5B,YAAY,EAAE,MAAM,WAAW,UAAU,KAAK;AAAA,IAC9C,UAAU,EAAE,MAAM,WAAW,UAAU,KAAK;AAAA,IAC5C,UAAU,EAAE,MAAM,UAAU;AAAA,IAC5B,WAAW,EAAE,MAAM,WAAW,SAAS,MAAM;AAAA,IAC7C,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,UAAU;AAAA,MACV,UAAU;AAAA,IACZ;AAAA,EACF;AACF,CAAC;AAEM,IAAM,iBAAiB,IAAI,aAAuB;AAAA,EACvD,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,IAAI,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,IACrC,MAAM,EAAE,MAAM,SAAS;AAAA,IACvB,OAAO,EAAE,MAAM,SAAS;AAAA,IACxB,YAAY,EAAE,MAAM,OAAO;AAAA,IAC3B,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,UAAU;AAAA,MACV,WAAW;AAAA,IACb;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,UAAU;AAAA,MACV,WAAW;AAAA,IACb;AAAA,IACA,WAAW,EAAE,MAAM,UAAU;AAAA,IAC7B,eAAe,EAAE,MAAM,UAAU;AAAA,IACjC,gBAAgB,EAAE,MAAM,UAAU;AAAA,IAClC,aAAa,EAAE,MAAM,UAAU;AAAA,IAC/B,YAAY,EAAE,MAAM,OAAO;AAAA,IAC3B,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,UAAU;AAAA,MACV,UAAU;AAAA,IACZ;AAAA,EACF;AACF,CAAC;AAEM,IAAM,gBAAgB,IAAI,aAAsB;AAAA,EACrD,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,IAAI,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,IACrC,MAAM,EAAE,MAAM,SAAS;AAAA,IACvB,OAAO,EAAE,MAAM,OAAO;AAAA,IACtB,WAAW,EAAE,MAAM,WAAW,SAAS,MAAM;AAAA,IAC7C,SAAS,EAAE,MAAM,SAAS;AAAA,IAC1B,QAAQ,EAAE,MAAM,SAAS;AAAA,IACzB,MAAM,EAAE,MAAM,UAAU;AAAA,IACxB,SAAS,EAAE,MAAM,SAAS;AAAA,IAC1B,QAAQ,EAAE,MAAM,UAAU;AAAA,IAC1B,SAAS,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,IAC1C,iBAAiB,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,IAClD,kBAAkB,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,IACnD,qBAAqB,EAAE,MAAM,SAAS;AAAA,IACtC,YAAY,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,IAC7C,MAAM,EAAE,MAAM,UAAU;AAAA,IACxB,OAAO,EAAE,MAAM,UAAU;AAAA,IACzB,WAAW,EAAE,MAAM,UAAU;AAAA,IAC7B,IAAI,EAAE,MAAM,SAAS;AAAA,IACrB,YAAY,EAAE,MAAM,SAAS;AAAA,IAC7B,iBAAiB,EAAE,MAAM,QAAQ;AAAA,IACjC,OAAO,EAAE,MAAM,UAAU;AAAA,IACzB,QAAQ,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,IACzC,MAAM,EAAE,MAAM,SAAS,UAAU,KAAK;AAAA,IACtC,gBAAgB,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,IACjD,wBAAwB,EAAE,MAAM,SAAS;AAAA,IACzC,UAAU,EAAE,MAAM,UAAU;AAAA,IAC5B,QAAQ,EAAE,MAAM,UAAU;AAAA,IAC1B,UAAU,EAAE,MAAM,UAAU;AAAA,IAC5B,UAAU,EAAE,MAAM,UAAU;AAAA,IAC5B,QAAQ,EAAE,MAAM,UAAU;AAAA,IAC1B,QAAQ,EAAE,MAAM,SAAS;AAAA,IACzB,oBAAoB,EAAE,MAAM,SAAS;AAAA,IACrC,QAAQ,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,IACzC,SAAS,EAAE,MAAM,SAAS;AAAA,IAC1B,YAAY,EAAE,MAAM,SAAS;AAAA,IAC7B,cAAc,EAAE,MAAM,SAAS;AAAA,IAC/B,UAAU,EAAE,MAAM,UAAU;AAAA,IAC5B,kBAAkB,EAAE,MAAM,QAAQ;AAAA,IAClC,OAAO,EAAE,MAAM,UAAU;AAAA,IACzB,kBAAkB,EAAE,MAAM,QAAQ;AAAA,IAClC,WAAW,EAAE,MAAM,OAAO;AAAA,IAC1B,aAAa,EAAE,MAAM,UAAU;AAAA,IAC/B,WAAW,EAAE,MAAM,UAAU;AAAA,IAC7B,UAAU,EAAE,MAAM,UAAU;AAAA,IAC5B,MAAM,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,IACvC,MAAM,EAAE,MAAM,UAAU;AAAA,IACxB,QAAQ,EAAE,MAAM,UAAU;AAAA,IAC1B,OAAO,EAAE,MAAM,OAAO,QAAQ,MAAM,aAAa,UAAU,UAAU;AAAA,IACrE,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,UAAU;AAAA,IACZ;AAAA,EACF;AACF,CAAC;AAEM,IAAM,iBAAiB,IAAI,aAAuB;AAAA,EACvD,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,MAAM,EAAE,MAAM,UAAU,SAAS,KAAK;AAAA,IACtC,IAAI,EAAE,MAAM,WAAW,UAAU,KAAK;AAAA,IACtC,MAAM,EAAE,MAAM,SAAS;AAAA,IACvB,KAAK,EAAE,MAAM,SAAS;AAAA,IACtB,YAAY,EAAE,MAAM,SAAS;AAAA,IAC7B,aAAa,EAAE,MAAM,SAAS;AAAA,IAC9B,iBAAiB,EAAE,MAAM,UAAU;AAAA,IACnC,YAAY,EAAE,MAAM,WAAW,UAAU,KAAK;AAAA,IAC9C,WAAW,EAAE,MAAM,UAAU;AAAA,IAC7B,UAAU,EAAE,MAAM,UAAU;AAAA,IAC5B,YAAY,EAAE,MAAM,UAAU;AAAA,IAC9B,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,UAAU;AAAA,IACZ;AAAA,EACF;AACF,CAAC;AAEM,IAAM,aAAa,IAAI,aAAmB;AAAA,EAC/C,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,IAAI,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,IACrC,MAAM,EAAE,MAAM,SAAS;AAAA,IACvB,UAAU,EAAE,MAAM,SAAS;AAAA,IAC3B,OAAO,EAAE,MAAM,UAAU,UAAU,MAAM,QAAQ,KAAK;AAAA,IACtD,UAAU,EAAE,MAAM,UAAU;AAAA,IAC5B,SAAS,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,IAC1C,kBAAkB,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,IACnD,eAAe,EAAE,MAAM,UAAU;AAAA,IACjC,QAAQ,EAAE,MAAM,UAAU;AAAA,IAC1B,iBAAiB,EAAE,MAAM,UAAU;AAAA,IACnC,eAAe,EAAE,MAAM,UAAU;AAAA,IACjC,gBAAgB,EAAE,MAAM,UAAU;AAAA,IAClC,SAAS,EAAE,MAAM,OAAO,QAAQ,MAAM,gBAAgB,UAAU,OAAO;AAAA,EACzE;AACF,CAAC;AAEM,IAAM,uBAAuB,IAAI,aAA6B;AAAA,EACnE,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,IAAI,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,IACrC,MAAM,EAAE,MAAM,SAAS;AAAA,IACvB,UAAU,EAAE,MAAM,SAAS;AAAA,IAC3B,OAAO,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,IACxC,gBAAgB,EAAE,MAAM,UAAU;AAAA,IAClC,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,UAAU;AAAA,MACV,WAAW;AAAA,IACb;AAAA,IACA,MAAM,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,IACvC,iBAAiB,EAAE,MAAM,WAAW,UAAU,KAAK;AAAA,IACnD,eAAe,EAAE,MAAM,WAAW,UAAU,KAAK;AAAA,IACjD,gBAAgB,EAAE,MAAM,WAAW,UAAU,KAAK;AAAA,EACpD;AACF,CAAC;AAEM,IAAM,kBAAkB,IAAI,aAAwB;AAAA,EACzD,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,IACA,OAAO,EAAE,MAAM,UAAU;AAAA,IACzB,gBAAgB,EAAE,MAAM,UAAU;AAAA,IAClC,gBAAgB,EAAE,MAAM,UAAU;AAAA,IAClC,gBAAgB,EAAE,MAAM,UAAU;AAAA,IAClC,MAAM,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,IACvC,OAAO,EAAE,MAAM,WAAW,UAAU,KAAK;AAAA,EAC3C;AACF,CAAC;AAEM,IAAM,mBAAmB,IAAI,aAAyB;AAAA,EAC3D,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,IACA,SAAS,EAAE,MAAM,UAAU;AAAA,IAC3B,OAAO,EAAE,MAAM,UAAU;AAAA,IACzB,QAAQ,EAAE,MAAM,UAAU;AAAA,IAC1B,kBAAkB,EAAE,MAAM,UAAU;AAAA,IACpC,SAAS,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,IAC1C,gBAAgB,EAAE,MAAM,SAAS;AAAA,IACjC,YAAY,EAAE,MAAM,QAAQ;AAAA,IAC5B,QAAQ,EAAE,MAAM,QAAQ;AAAA,IACxB,aAAa,EAAE,MAAM,SAAS;AAAA,IAC9B,aAAa,EAAE,MAAM,QAAQ;AAAA,IAC7B,kBAAkB,EAAE,MAAM,SAAS;AAAA,IACnC,OAAO,EAAE,MAAM,QAAQ;AAAA,IACvB,YAAY,EAAE,MAAM,SAAS;AAAA,IAC7B,OAAO,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,EAC1C;AACF,CAAC;AAEM,IAAM,mBAAmB,IAAI,aAAyB;AAAA,EAC3D,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,IAAI,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,IACrC,MAAM,EAAE,MAAM,OAAO,QAAQ,MAAM,MAAM,WAAW,OAAO;AAAA,IAC3D,SAAS,EAAE,MAAM,OAAO;AAAA,IACxB,SAAS,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,IAC1C,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,UAAU;AAAA,IACZ;AAAA,EACF;AACF,CAAC;AAEM,IAAM,eAAe,IAAI,aAAqB;AAAA,EACnD,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,IAAI,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,IACrC,MAAM,EAAE,MAAM,SAAS;AAAA,IACvB,OAAO,EAAE,MAAM,SAAS;AAAA,IACxB,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,mBAAmB;AAAA,IACrB;AAAA,IACA,QAAQ,EAAE,MAAM,OAAO,QAAQ,MAAM,aAAa,UAAU,SAAS;AAAA,EACvE;AACF,CAAC;AAEM,IAAM,kBAAkB,IAAI,aAAwB;AAAA,EACzD,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,IAAI,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,IACrC,QAAQ,EAAE,MAAM,UAAU;AAAA,IAC1B,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,UAAU;AAAA,IACZ;AAAA,EACF;AACF,CAAC;AAEM,IAAM,iBAAiB,IAAI,aAAuB;AAAA,EACvD,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,IAAI,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,IACrC,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,UAAU;AAAA,IACZ;AAAA,EACF;AACF,CAAC;AAEM,IAAM,oBAAoB,IAAI,aAA0B;AAAA,EAC7D,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,IAAI,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,IACrC,SAAS,EAAE,MAAM,OAAO,QAAQ,MAAM,QAAQ;AAAA,IAC9C,MAAM,EAAE,MAAM,OAAO,QAAQ,MAAM,KAAK;AAAA,IACxC,MAAM,EAAE,MAAM,QAAQ;AAAA,IACtB,UAAU,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,EAC7C;AACF,CAAC;AAEM,IAAM,sBAAsB,IAAI,aAA4B;AAAA,EACjE,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,IAAI,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,IACrC,UAAU,EAAE,MAAM,OAAO,QAAQ,MAAM,SAAS;AAAA,IAChD,SAAS,EAAE,MAAM,OAAO,QAAQ,MAAM,QAAQ;AAAA,IAC9C,QAAQ,EAAE,MAAM,QAAQ;AAAA,IACxB,WAAW,EAAE,MAAM,QAAQ;AAAA,IAC3B,QAAQ,EAAE,MAAM,WAAW,UAAU,KAAK;AAAA,EAC5C;AACF,CAAC;AAEM,IAAM,mBAAmB,IAAI,aAAyB;AAAA,EAC3D,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,IAAI,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,IACrC,YAAY,EAAE,MAAM,OAAO,QAAQ,MAAM,WAAW;AAAA,IACpD,MAAM,EAAE,MAAM,OAAO,QAAQ,MAAM,KAAK;AAAA,IACxC,UAAU,EAAE,MAAM,UAAU;AAAA,EAC9B;AACF,CAAC;AAEM,IAAM,oBAAoB,IAAI,aAA0B;AAAA,EAC7D,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,IAAI,EAAE,MAAM,WAAW,SAAS,KAAK;AAAA,IACrC,QAAQ,EAAE,MAAM,OAAO,QAAQ,MAAM,OAAO;AAAA,IAC5C,MAAM,EAAE,MAAM,OAAO,QAAQ,MAAM,KAAK;AAAA,IACxC,QAAQ,EAAE,MAAM,QAAQ;AAAA,EAC1B;AACF,CAAC;AAEM,IAAM,sBAAsB,IAAI,aAA4B;AAAA,EACjE,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,IACA,WAAW,EAAE,MAAM,OAAO;AAAA,EAC5B;AACF,CAAC;AAEM,IAAM,wBAAwB,IAAI,aAA8B;AAAA,EACrE,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,IACA,WAAW,EAAE,MAAM,OAAO;AAAA,EAC5B;AACF,CAAC;AAEM,IAAM,uBAAuB,IAAI,aAA6B;AAAA,EACnE,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,IACA,WAAW,EAAE,MAAM,OAAO;AAAA,EAC5B;AACF,CAAC;AAEM,IAAM,0BAA0B,IAAI,aAAgC;AAAA,EACzE,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,UAAU;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,MACd,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,IACA,WAAW,EAAE,MAAM,OAAO;AAAA,EAC5B;AACF,CAAC;AAEM,IAAM,aAAa,IAAI,aAAmB;AAAA,EAC/C,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACV,IAAI,EAAE,MAAM,WAAW,SAAS,MAAM,SAAS,EAAE;AAAA,IACjD,YAAY,EAAE,MAAM,OAAO;AAAA,IAC3B,cAAc,EAAE,MAAM,UAAU;AAAA,EAClC;AACF,CAAC;AAGM,IAAM,WAAW;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACz+BO,IAAM,cAAc;AACpB,IAAM,WAAW;AAEjB,IAAe,aAAf,MAA6B;AAAA,EACxB;AAAA,EACS;AAAA,EAEnB,YAAY,UAAa;AACvB,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,IAAI,QAAuB;AACzB,QAAI,CAAC,KAAK,KAAM,OAAM,IAAI,MAAM,0CAA0C;AAC1E,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAIA,MAAgB,QAAQ,KAAmC;AACzD,UAAM,WAAW,MAAM,MAAM,GAAG;AAChC,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,6BAA6B,SAAS,MAAM,EAAE;AAChE,WAAO,SAAS,YAAY;AAAA,EAC9B;AAAA,EAKA,MAAgB,aACd,KACA,KACA,OACA,QAAQ,OACO;AACf,UAAM,aAAa,QAAQ,OAAO,MAAM,KAAK,cAAc,GAAG;AAC9D,UAAM,OAAO,MAAM,MAAM,KAAK,EAAE,QAAQ,OAAO,CAAC;AAChD,UAAM,aAAa,KAAK,QAAQ,IAAI,MAAM;AAE1C,QAAI,SAAS,eAAe,YAAY;AACtC,YAAM,MAAM,MAAM,KAAK,QAAQ,GAAG,CAAC;AACnC,UAAI,WAAY,OAAM,KAAK,UAAU,KAAK,UAAU;AAAA,IACtD;AAAA,EACF;AACF;","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-DAQl_kGo.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-DAQl_kGo.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-VCGZTY2F.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,28 @@ declare class OutfitTreat {
|
|
|
389
389
|
item: Item;
|
|
390
390
|
chance: number;
|
|
391
391
|
}
|
|
392
|
+
type Modifier = {
|
|
393
|
+
name: string;
|
|
394
|
+
value: string;
|
|
395
|
+
};
|
|
396
|
+
declare function getModifier(modifiers: Modifier[], name: string): string | undefined;
|
|
397
|
+
declare function getModifiers(modifiers: Modifier[], name: string): string[];
|
|
398
|
+
declare function getModifiers(modifiers: Modifier[], names: string[]): (string | undefined)[][];
|
|
392
399
|
declare class ItemModifiers {
|
|
393
400
|
item: Ref<Item>;
|
|
394
|
-
modifiers:
|
|
401
|
+
modifiers: Modifier[];
|
|
395
402
|
}
|
|
396
403
|
declare class EffectModifiers {
|
|
397
404
|
effect: Ref<Effect>;
|
|
398
|
-
modifiers:
|
|
405
|
+
modifiers: Modifier[];
|
|
399
406
|
}
|
|
400
407
|
declare class SkillModifiers {
|
|
401
408
|
skill: Ref<Skill>;
|
|
402
|
-
modifiers:
|
|
409
|
+
modifiers: Modifier[];
|
|
403
410
|
}
|
|
404
411
|
declare class FamiliarModifiers {
|
|
405
412
|
familiar: Ref<Familiar>;
|
|
406
|
-
modifiers:
|
|
413
|
+
modifiers: Modifier[];
|
|
407
414
|
}
|
|
408
415
|
declare class Meta {
|
|
409
416
|
id: number;
|
|
@@ -435,4 +442,4 @@ declare const FamiliarModifiersSchema: EntitySchema<FamiliarModifiers, never, _m
|
|
|
435
442
|
declare const MetaSchema: EntitySchema<Meta, never, _mikro_orm_core.EntityCtor<Meta>>;
|
|
436
443
|
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
444
|
|
|
438
|
-
export {
|
|
445
|
+
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/dist/vite.js
CHANGED
package/dist/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/vite.ts"],"sourcesContent":["import { nodePolyfills } from \"vite-plugin-node-polyfills\";\nimport type { Plugin, PluginOption } from \"vite\";\n\nexport default function dol({\n coi = false,\n}: { coi?: boolean } = {}): PluginOption[] {\n const plugin: Plugin = {\n name: \"data-of-loathing\",\n config() {\n return {\n optimizeDeps: {\n exclude: [\"data-of-loathing\", \"@sqlite.org/sqlite-wasm\"],\n },\n };\n },\n };\n\n if (coi) {\n plugin.configureServer = (server) => {\n server.middlewares.use((_, res, next) => {\n res.setHeader(\"Cross-Origin-Embedder-Policy\", \"credentialless\");\n res.setHeader(\"Cross-Origin-Opener-Policy\", \"same-origin\");\n next();\n });\n };\n }\n\n return [nodePolyfills({ include: [\"buffer\"] })
|
|
1
|
+
{"version":3,"sources":["../src/vite.ts"],"sourcesContent":["import { nodePolyfills } from \"vite-plugin-node-polyfills\";\nimport type { Plugin, PluginOption } from \"vite\";\n\nexport default function dol({\n coi = false,\n}: { coi?: boolean } = {}): PluginOption[] {\n const plugin: Plugin = {\n name: \"data-of-loathing\",\n config() {\n return {\n optimizeDeps: {\n exclude: [\"data-of-loathing\", \"@sqlite.org/sqlite-wasm\"],\n },\n };\n },\n };\n\n if (coi) {\n plugin.configureServer = (server) => {\n server.middlewares.use((_, res, next) => {\n res.setHeader(\"Cross-Origin-Embedder-Policy\", \"credentialless\");\n res.setHeader(\"Cross-Origin-Opener-Policy\", \"same-origin\");\n next();\n });\n };\n }\n\n return [\n nodePolyfills({ include: [\"buffer\"], globals: { process: false } }),\n plugin,\n ];\n}\n"],"mappings":";AAAA,SAAS,qBAAqB;AAGf,SAAR,IAAqB;AAAA,EAC1B,MAAM;AACR,IAAuB,CAAC,GAAmB;AACzC,QAAM,SAAiB;AAAA,IACrB,MAAM;AAAA,IACN,SAAS;AACP,aAAO;AAAA,QACL,cAAc;AAAA,UACZ,SAAS,CAAC,oBAAoB,yBAAyB;AAAA,QACzD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,KAAK;AACP,WAAO,kBAAkB,CAAC,WAAW;AACnC,aAAO,YAAY,IAAI,CAAC,GAAG,KAAK,SAAS;AACvC,YAAI,UAAU,gCAAgC,gBAAgB;AAC9D,YAAI,UAAU,8BAA8B,aAAa;AACzD,aAAK;AAAA,MACP,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AAAA,IACL,cAAc,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;AAAA,IAClE;AAAA,EACF;AACF;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "data-of-loathing",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"packageManager": "yarn@4.6.0",
|
|
6
6
|
"repository": {
|
|
@@ -32,7 +32,8 @@
|
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "rm -rf dist && tsup",
|
|
35
|
-
"format": "prettier --write ."
|
|
35
|
+
"format": "prettier --write .",
|
|
36
|
+
"prepublishOnly": "yarn build"
|
|
36
37
|
},
|
|
37
38
|
"dependencies": {
|
|
38
39
|
"@mikro-orm/core": "^7.0.14",
|
|
@@ -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"]}
|