data-of-loathing 4.1.0 → 4.3.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 CHANGED
@@ -1,5 +1,5 @@
1
- import { B as BaseClient } from './schema-Ch7wbOTC.js';
2
- export { A as AscensionClass, a as AscensionClassSchema, C as Concoction, b as ConcoctionSchema, c as Consumable, d as ConsumableQuality, e as ConsumableSchema, E as Effect, f as EffectModifiers, g as EffectModifiersSchema, h as EffectQuality, i as EffectSchema, j as Equipment, k as EquipmentSchema, F as Familiar, l as FamiliarCategory, m as FamiliarModifiers, n as FamiliarModifiersSchema, o as FamiliarSchema, p as FoldGroup, q as FoldGroupSchema, I as Ingredient, r as IngredientSchema, s as Item, t as ItemModifiers, u as ItemModifiersSchema, v as ItemSchema, w as ItemUse, L as Location, x as LocationDifficulty, y as LocationEnvironment, z as LocationSchema, M as Meta, D as MetaSchema, G as Modifier, H as Monster, J as MonsterDrop, K as MonsterDropCategory, N as MonsterDropSchema, O as MonsterElement, P as MonsterSchema, Q as NativeMonster, R as NativeMonsterSchema, S as Outfit, T as OutfitSchema, U as OutfitTreat, V as OutfitTreatSchema, W as Path, X as PathSchema, Y as Skill, Z as SkillModifiers, _ as SkillModifiersSchema, $ as SkillSchema, a0 as SkillTag, a1 as ZapGroup, a2 as ZapGroupSchema, a3 as entities, a4 as getModifier, a5 as getModifiers } from './schema-Ch7wbOTC.js';
1
+ import { B as BaseClient } from './schema-DsYkAeY6.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, l as EternityCodpieceModifiers, m as EternityCodpieceModifiersSchema, F as Familiar, n as FamiliarCategory, o as FamiliarModifiers, p as FamiliarModifiersSchema, q as FamiliarSchema, r as FoldGroup, s as FoldGroupSchema, I as Ingredient, t as IngredientSchema, u as Item, v as ItemConfiguration, w as ItemConfigurationSchema, x as ItemModifiers, y as ItemModifiersSchema, z as ItemSchema, D as ItemUse, L as Location, G as LocationDifficulty, H as LocationEnvironment, J as LocationModifiers, K as LocationModifiersSchema, M as LocationSchema, N as Meta, O as MetaSchema, P as Modifier, Q as Monster, R as MonsterDrop, S as MonsterDropCategory, T as MonsterDropSchema, U as MonsterElement, V as MonsterSchema, W as NativeMonster, X as NativeMonsterSchema, Y as Outfit, Z as OutfitModifiers, _ as OutfitModifiersSchema, $ as OutfitSchema, a0 as OutfitTreat, a1 as OutfitTreatSchema, a2 as Path, a3 as PathModifiers, a4 as PathModifiersSchema, a5 as PathSchema, a6 as Skill, a7 as SkillModifiers, a8 as SkillModifiersSchema, a9 as SkillSchema, aa as SkillTag, ab as ThroneModifiers, ac as ThroneModifiersSchema, ad as ZapGroup, ae as ZapGroupSchema, af as Zone, ag as ZoneModifiers, ah as ZoneModifiersSchema, ai as ZoneSchema, aj as entities, ak as getModifier, al as getModifiers } from './schema-DsYkAeY6.js';
3
3
  import '@mikro-orm/core';
4
4
 
5
5
  type Strategy = {
package/dist/browser.js CHANGED
@@ -16,6 +16,8 @@ import {
16
16
  EffectSchema,
17
17
  Equipment,
18
18
  EquipmentSchema,
19
+ EternityCodpieceModifiers,
20
+ EternityCodpieceModifiersSchema,
19
21
  Familiar,
20
22
  FamiliarCategory,
21
23
  FamiliarModifiers,
@@ -26,6 +28,8 @@ import {
26
28
  Ingredient,
27
29
  IngredientSchema,
28
30
  Item,
31
+ ItemConfiguration,
32
+ ItemConfigurationSchema,
29
33
  ItemModifiers,
30
34
  ItemModifiersSchema,
31
35
  ItemSchema,
@@ -33,6 +37,8 @@ import {
33
37
  Location,
34
38
  LocationDifficulty,
35
39
  LocationEnvironment,
40
+ LocationModifiers,
41
+ LocationModifiersSchema,
36
42
  LocationSchema,
37
43
  Meta,
38
44
  MetaSchema,
@@ -45,22 +51,32 @@ import {
45
51
  NativeMonster,
46
52
  NativeMonsterSchema,
47
53
  Outfit,
54
+ OutfitModifiers,
55
+ OutfitModifiersSchema,
48
56
  OutfitSchema,
49
57
  OutfitTreat,
50
58
  OutfitTreatSchema,
51
59
  Path,
60
+ PathModifiers,
61
+ PathModifiersSchema,
52
62
  PathSchema,
53
63
  Skill,
54
64
  SkillModifiers,
55
65
  SkillModifiersSchema,
56
66
  SkillSchema,
57
67
  SkillTag,
68
+ ThroneModifiers,
69
+ ThroneModifiersSchema,
58
70
  ZapGroup,
59
71
  ZapGroupSchema,
72
+ Zone,
73
+ ZoneModifiers,
74
+ ZoneModifiersSchema,
75
+ ZoneSchema,
60
76
  entities,
61
77
  getModifier,
62
78
  getModifiers
63
- } from "./chunk-HSV4SC4N.js";
79
+ } from "./chunk-QSH2ILER.js";
64
80
 
65
81
  // src/browser.ts
66
82
  import { SqlMikroORM, SqliteDriver } from "@mikro-orm/sql";
@@ -261,6 +277,8 @@ export {
261
277
  EffectSchema,
262
278
  Equipment,
263
279
  EquipmentSchema,
280
+ EternityCodpieceModifiers,
281
+ EternityCodpieceModifiersSchema,
264
282
  Familiar,
265
283
  FamiliarCategory,
266
284
  FamiliarModifiers,
@@ -271,6 +289,8 @@ export {
271
289
  Ingredient,
272
290
  IngredientSchema,
273
291
  Item,
292
+ ItemConfiguration,
293
+ ItemConfigurationSchema,
274
294
  ItemModifiers,
275
295
  ItemModifiersSchema,
276
296
  ItemSchema,
@@ -278,6 +298,8 @@ export {
278
298
  Location,
279
299
  LocationDifficulty,
280
300
  LocationEnvironment,
301
+ LocationModifiers,
302
+ LocationModifiersSchema,
281
303
  LocationSchema,
282
304
  Meta,
283
305
  MetaSchema,
@@ -290,18 +312,28 @@ export {
290
312
  NativeMonster,
291
313
  NativeMonsterSchema,
292
314
  Outfit,
315
+ OutfitModifiers,
316
+ OutfitModifiersSchema,
293
317
  OutfitSchema,
294
318
  OutfitTreat,
295
319
  OutfitTreatSchema,
296
320
  Path,
321
+ PathModifiers,
322
+ PathModifiersSchema,
297
323
  PathSchema,
298
324
  Skill,
299
325
  SkillModifiers,
300
326
  SkillModifiersSchema,
301
327
  SkillSchema,
302
328
  SkillTag,
329
+ ThroneModifiers,
330
+ ThroneModifiersSchema,
303
331
  ZapGroup,
304
332
  ZapGroupSchema,
333
+ Zone,
334
+ ZoneModifiers,
335
+ ZoneModifiersSchema,
336
+ ZoneSchema,
305
337
  createClient,
306
338
  entities,
307
339
  getModifier,
@@ -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":[]}
@@ -170,6 +170,8 @@ var Item = class {
170
170
  equipment;
171
171
  consumable;
172
172
  modifiers;
173
+ eternityCodpieceModifiers;
174
+ configurations = new Collection(this);
173
175
  monsterDrops = new Collection(this);
174
176
  outfitEquipment = new Collection(this);
175
177
  outfitTreats = new Collection(this);
@@ -217,6 +219,7 @@ var Familiar = class {
217
219
  hideAndSeek;
218
220
  attributes;
219
221
  modifiers;
222
+ throneModifiers;
220
223
  };
221
224
  var Monster = class {
222
225
  id;
@@ -270,6 +273,19 @@ var Monster = class {
270
273
  drops = new Collection(this);
271
274
  nativeLocations = new Collection(this);
272
275
  };
276
+ var Zone = class {
277
+ zone;
278
+ parent;
279
+ description;
280
+ accessItem;
281
+ children = new Collection(this);
282
+ locations = new Collection(this);
283
+ zoneModifiers;
284
+ };
285
+ var ZoneModifiers = class {
286
+ zone;
287
+ modifiers;
288
+ };
273
289
  var Location = class {
274
290
  name;
275
291
  id;
@@ -284,6 +300,7 @@ var Location = class {
284
300
  combatRate;
285
301
  // relations
286
302
  nativeMonsters = new Collection(this);
303
+ locationModifiers;
287
304
  };
288
305
  var Path = class {
289
306
  id;
@@ -299,6 +316,7 @@ var Path = class {
299
316
  liverCapacity;
300
317
  spleenCapacity;
301
318
  classes = new Collection(this);
319
+ pathModifiers;
302
320
  };
303
321
  var AscensionClass = class {
304
322
  id;
@@ -353,6 +371,7 @@ var Outfit = class {
353
371
  image;
354
372
  equipment = new Collection(this);
355
373
  treats = new Collection(this);
374
+ modifiers;
356
375
  };
357
376
  var FoldGroup = class {
358
377
  id;
@@ -424,6 +443,31 @@ var FamiliarModifiers = class {
424
443
  familiar;
425
444
  modifiers;
426
445
  };
446
+ var ThroneModifiers = class {
447
+ familiar;
448
+ modifiers;
449
+ };
450
+ var OutfitModifiers = class {
451
+ outfit;
452
+ modifiers;
453
+ };
454
+ var EternityCodpieceModifiers = class {
455
+ item;
456
+ modifiers;
457
+ };
458
+ var ItemConfiguration = class {
459
+ item;
460
+ config;
461
+ modifiers;
462
+ };
463
+ var PathModifiers = class {
464
+ path;
465
+ modifiers;
466
+ };
467
+ var LocationModifiers = class {
468
+ location;
469
+ modifiers;
470
+ };
427
471
  var Meta = class {
428
472
  id;
429
473
  lastUpdate;
@@ -463,6 +507,17 @@ var ItemSchema = new EntitySchema({
463
507
  mappedBy: "item",
464
508
  nullable: true
465
509
  },
510
+ eternityCodpieceModifiers: {
511
+ kind: "1:1",
512
+ entity: () => EternityCodpieceModifiers,
513
+ mappedBy: "item",
514
+ nullable: true
515
+ },
516
+ configurations: {
517
+ kind: "1:m",
518
+ entity: () => ItemConfiguration,
519
+ mappedBy: "item"
520
+ },
466
521
  monsterDrops: { kind: "1:m", entity: () => MonsterDrop, mappedBy: "item" },
467
522
  outfitEquipment: {
468
523
  kind: "m:n",
@@ -572,6 +627,12 @@ var FamiliarSchema = new EntitySchema({
572
627
  entity: () => FamiliarModifiers,
573
628
  mappedBy: "familiar",
574
629
  nullable: true
630
+ },
631
+ throneModifiers: {
632
+ kind: "1:1",
633
+ entity: () => ThroneModifiers,
634
+ mappedBy: "familiar",
635
+ nullable: true
575
636
  }
576
637
  }
577
638
  });
@@ -634,13 +695,54 @@ var MonsterSchema = new EntitySchema({
634
695
  }
635
696
  }
636
697
  });
698
+ var ZoneSchema = new EntitySchema({
699
+ class: Zone,
700
+ tableName: "zones",
701
+ properties: {
702
+ zone: { type: "string", primary: true },
703
+ parent: {
704
+ kind: "m:1",
705
+ entity: () => Zone,
706
+ fieldName: "parent",
707
+ nullable: true
708
+ },
709
+ description: { type: "string" },
710
+ accessItem: { type: "string", nullable: true },
711
+ children: { kind: "1:m", entity: () => Zone, mappedBy: "parent" },
712
+ locations: { kind: "1:m", entity: () => Location, mappedBy: "zone" },
713
+ zoneModifiers: {
714
+ kind: "1:1",
715
+ entity: () => ZoneModifiers,
716
+ mappedBy: "zone",
717
+ nullable: true
718
+ }
719
+ }
720
+ });
721
+ var ZoneModifiersSchema = new EntitySchema({
722
+ class: ZoneModifiers,
723
+ tableName: "zoneModifiers",
724
+ properties: {
725
+ zone: {
726
+ kind: "1:1",
727
+ entity: () => Zone,
728
+ primary: true,
729
+ fieldName: "zone",
730
+ inversedBy: "zoneModifiers"
731
+ },
732
+ modifiers: { type: "json" }
733
+ }
734
+ });
637
735
  var LocationSchema = new EntitySchema({
638
736
  class: Location,
639
737
  tableName: "locations",
640
738
  properties: {
641
739
  name: { type: "string", primary: true },
642
740
  id: { type: "integer", nullable: true },
643
- zone: { type: "string" },
741
+ zone: {
742
+ kind: "m:1",
743
+ entity: () => Zone,
744
+ fieldName: "zone"
745
+ },
644
746
  url: { type: "string" },
645
747
  difficulty: { type: "string" },
646
748
  environment: { type: "string" },
@@ -653,6 +755,12 @@ var LocationSchema = new EntitySchema({
653
755
  kind: "1:m",
654
756
  entity: () => NativeMonster,
655
757
  mappedBy: "location"
758
+ },
759
+ locationModifiers: {
760
+ kind: "1:1",
761
+ entity: () => LocationModifiers,
762
+ mappedBy: "location",
763
+ nullable: true
656
764
  }
657
765
  }
658
766
  });
@@ -672,7 +780,13 @@ var PathSchema = new EntitySchema({
672
780
  stomachCapacity: { type: "integer" },
673
781
  liverCapacity: { type: "integer" },
674
782
  spleenCapacity: { type: "integer" },
675
- classes: { kind: "1:m", entity: () => AscensionClass, mappedBy: "path" }
783
+ classes: { kind: "1:m", entity: () => AscensionClass, mappedBy: "path" },
784
+ pathModifiers: {
785
+ kind: "1:1",
786
+ entity: () => PathModifiers,
787
+ mappedBy: "path",
788
+ nullable: true
789
+ }
676
790
  }
677
791
  });
678
792
  var AscensionClassSchema = new EntitySchema({
@@ -771,7 +885,8 @@ var OutfitSchema = new EntitySchema({
771
885
  joinColumn: "outfit",
772
886
  inverseJoinColumn: "equipment"
773
887
  },
774
- treats: { kind: "1:m", entity: () => OutfitTreat, mappedBy: "outfit" }
888
+ treats: { kind: "1:m", entity: () => OutfitTreat, mappedBy: "outfit" },
889
+ modifiers: { kind: "1:1", entity: () => OutfitModifiers, mappedBy: "outfit", nullable: true }
775
890
  }
776
891
  });
777
892
  var FoldGroupSchema = new EntitySchema({
@@ -898,6 +1013,90 @@ var FamiliarModifiersSchema = new EntitySchema({
898
1013
  modifiers: { type: "json" }
899
1014
  }
900
1015
  });
1016
+ var OutfitModifiersSchema = new EntitySchema({
1017
+ class: OutfitModifiers,
1018
+ tableName: "outfitModifiers",
1019
+ properties: {
1020
+ outfit: {
1021
+ kind: "1:1",
1022
+ entity: () => Outfit,
1023
+ primary: true,
1024
+ fieldName: "outfit",
1025
+ inversedBy: "modifiers"
1026
+ },
1027
+ modifiers: { type: "json" }
1028
+ }
1029
+ });
1030
+ var ThroneModifiersSchema = new EntitySchema({
1031
+ class: ThroneModifiers,
1032
+ tableName: "throneModifiers",
1033
+ properties: {
1034
+ familiar: {
1035
+ kind: "1:1",
1036
+ entity: () => Familiar,
1037
+ primary: true,
1038
+ fieldName: "familiar",
1039
+ inversedBy: "throneModifiers"
1040
+ },
1041
+ modifiers: { type: "json" }
1042
+ }
1043
+ });
1044
+ var PathModifiersSchema = new EntitySchema({
1045
+ class: PathModifiers,
1046
+ tableName: "pathModifiers",
1047
+ properties: {
1048
+ path: {
1049
+ kind: "1:1",
1050
+ entity: () => Path,
1051
+ primary: true,
1052
+ fieldName: "path",
1053
+ inversedBy: "pathModifiers"
1054
+ },
1055
+ modifiers: { type: "json" }
1056
+ }
1057
+ });
1058
+ var LocationModifiersSchema = new EntitySchema({
1059
+ class: LocationModifiers,
1060
+ tableName: "locationModifiers",
1061
+ properties: {
1062
+ location: {
1063
+ kind: "1:1",
1064
+ entity: () => Location,
1065
+ primary: true,
1066
+ fieldName: "location",
1067
+ inversedBy: "locationModifiers"
1068
+ },
1069
+ modifiers: { type: "json" }
1070
+ }
1071
+ });
1072
+ var EternityCodpieceModifiersSchema = new EntitySchema({
1073
+ class: EternityCodpieceModifiers,
1074
+ tableName: "eternityCodpieceModifiers",
1075
+ properties: {
1076
+ item: {
1077
+ kind: "1:1",
1078
+ entity: () => Item,
1079
+ primary: true,
1080
+ fieldName: "item",
1081
+ inversedBy: "eternityCodpieceModifiers"
1082
+ },
1083
+ modifiers: { type: "json" }
1084
+ }
1085
+ });
1086
+ var ItemConfigurationSchema = new EntitySchema({
1087
+ class: ItemConfiguration,
1088
+ tableName: "itemConfigurations",
1089
+ properties: {
1090
+ item: {
1091
+ kind: "m:1",
1092
+ entity: () => Item,
1093
+ primary: true,
1094
+ fieldName: "item"
1095
+ },
1096
+ config: { type: "string", primary: true },
1097
+ modifiers: { type: "json" }
1098
+ }
1099
+ });
901
1100
  var MetaSchema = new EntitySchema({
902
1101
  class: Meta,
903
1102
  tableName: "meta",
@@ -913,6 +1112,7 @@ var entities = [
913
1112
  SkillSchema,
914
1113
  FamiliarSchema,
915
1114
  MonsterSchema,
1115
+ ZoneSchema,
916
1116
  LocationSchema,
917
1117
  PathSchema,
918
1118
  AscensionClassSchema,
@@ -930,6 +1130,13 @@ var entities = [
930
1130
  EffectModifiersSchema,
931
1131
  SkillModifiersSchema,
932
1132
  FamiliarModifiersSchema,
1133
+ OutfitModifiersSchema,
1134
+ ThroneModifiersSchema,
1135
+ PathModifiersSchema,
1136
+ LocationModifiersSchema,
1137
+ EternityCodpieceModifiersSchema,
1138
+ ItemConfigurationSchema,
1139
+ ZoneModifiersSchema,
933
1140
  MetaSchema
934
1141
  ];
935
1142
 
@@ -978,6 +1185,8 @@ export {
978
1185
  Skill,
979
1186
  Familiar,
980
1187
  Monster,
1188
+ Zone,
1189
+ ZoneModifiers,
981
1190
  Location,
982
1191
  Path,
983
1192
  AscensionClass,
@@ -997,12 +1206,20 @@ export {
997
1206
  EffectModifiers,
998
1207
  SkillModifiers,
999
1208
  FamiliarModifiers,
1209
+ ThroneModifiers,
1210
+ OutfitModifiers,
1211
+ EternityCodpieceModifiers,
1212
+ ItemConfiguration,
1213
+ PathModifiers,
1214
+ LocationModifiers,
1000
1215
  Meta,
1001
1216
  ItemSchema,
1002
1217
  EffectSchema,
1003
1218
  SkillSchema,
1004
1219
  FamiliarSchema,
1005
1220
  MonsterSchema,
1221
+ ZoneSchema,
1222
+ ZoneModifiersSchema,
1006
1223
  LocationSchema,
1007
1224
  PathSchema,
1008
1225
  AscensionClassSchema,
@@ -1020,10 +1237,16 @@ export {
1020
1237
  EffectModifiersSchema,
1021
1238
  SkillModifiersSchema,
1022
1239
  FamiliarModifiersSchema,
1240
+ OutfitModifiersSchema,
1241
+ ThroneModifiersSchema,
1242
+ PathModifiersSchema,
1243
+ LocationModifiersSchema,
1244
+ EternityCodpieceModifiersSchema,
1245
+ ItemConfigurationSchema,
1023
1246
  MetaSchema,
1024
1247
  entities,
1025
1248
  DEFAULT_URL,
1026
1249
  ETAG_KEY,
1027
1250
  BaseClient
1028
1251
  };
1029
- //# sourceMappingURL=chunk-HSV4SC4N.js.map
1252
+ //# sourceMappingURL=chunk-QSH2ILER.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 eternityCodpieceModifiers?: EternityCodpieceModifiers;\n configurations = new Collection<ItemConfiguration>(this);\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 throneModifiers?: ThroneModifiers;\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 Zone {\n zone!: string;\n parent?: Zone;\n description!: string;\n accessItem?: string;\n children = new Collection<Zone>(this);\n locations = new Collection<Location>(this);\n zoneModifiers?: ZoneModifiers;\n}\n\nexport class ZoneModifiers {\n zone!: Ref<Zone>;\n modifiers!: Modifier[];\n}\n\nexport class Location {\n name!: string;\n id?: number;\n zone!: Zone;\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 locationModifiers?: LocationModifiers;\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 pathModifiers?: PathModifiers;\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 modifiers?: OutfitModifiers;\n}\n\nexport class FoldGroup {\n id!: number;\n damage!: number;\n items = new Collection<Item>(this);\n}\n\nexport class ZapGroup {\n id!: number;\n items = new Collection<Item>(this);\n}\n\n// Junction entities (surrogate autoincrement id)\n\nexport class MonsterDrop {\n id!: number;\n monster!: Monster;\n item!: Item;\n rate!: number;\n category?: MonsterDropCategory;\n}\n\nexport class NativeMonster {\n id!: number;\n location!: Location;\n monster!: Monster;\n weight!: number;\n rejection!: number;\n parity?: number;\n}\n\nexport class Ingredient {\n id!: number;\n concoction!: Concoction;\n item!: Item;\n quantity!: number;\n}\n\nexport class OutfitTreat {\n id!: number;\n outfit!: Outfit;\n item!: Item;\n chance!: number;\n}\n\n// Modifier entities (FK-as-PK)\n\nexport type Modifier = { name: string; value: string };\n\ntype HasModifiers = Item | Effect | Skill | Familiar | Outfit;\n\nfunction resolveModifiers(source: Modifier[] | HasModifiers): Modifier[] {\n if (Array.isArray(source)) return source;\n return source.modifiers?.modifiers ?? [];\n}\n\nexport function getModifier(\n modifiers: Modifier[] | HasModifiers,\n name: string,\n): string | undefined {\n return resolveModifiers(modifiers).find((m) => m.name === name)?.value;\n}\n\nexport function getModifiers(\n modifiers: Modifier[] | HasModifiers,\n name: string,\n): string[];\nexport function getModifiers(\n modifiers: Modifier[] | HasModifiers,\n names: string[],\n): (string | undefined)[][];\nexport function getModifiers(\n modifiers: Modifier[] | HasModifiers,\n nameOrNames: string | string[],\n): string[] | (string | undefined)[][] {\n const mods = resolveModifiers(modifiers);\n if (typeof nameOrNames === \"string\") {\n return mods.filter((m) => m.name === nameOrNames).map((m) => m.value);\n }\n const columns = nameOrNames.map((name) =>\n mods.filter((m) => m.name === name).map((m) => m.value),\n );\n const len = Math.max(0, ...columns.map((c) => c.length));\n return Array.from({ length: len }, (_, i) => columns.map((c) => c[i]));\n}\n\nexport class ItemModifiers {\n item!: Ref<Item>;\n modifiers!: Modifier[];\n}\n\nexport class EffectModifiers {\n effect!: Ref<Effect>;\n modifiers!: Modifier[];\n}\n\nexport class SkillModifiers {\n skill!: Ref<Skill>;\n modifiers!: Modifier[];\n}\n\nexport class FamiliarModifiers {\n familiar!: Ref<Familiar>;\n modifiers!: Modifier[];\n}\n\nexport class ThroneModifiers {\n familiar!: Ref<Familiar>;\n modifiers!: Modifier[];\n}\n\nexport class OutfitModifiers {\n outfit!: Ref<Outfit>;\n modifiers!: Modifier[];\n}\n\nexport class EternityCodpieceModifiers {\n item!: Ref<Item>;\n modifiers!: Modifier[];\n}\n\nexport class ItemConfiguration {\n item!: Ref<Item>;\n config!: string;\n modifiers!: Modifier[];\n}\n\nexport class PathModifiers {\n path!: Ref<Path>;\n modifiers!: Modifier[];\n}\n\nexport class LocationModifiers {\n location!: Ref<Location>;\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 eternityCodpieceModifiers: {\n kind: \"1:1\",\n entity: () => EternityCodpieceModifiers,\n mappedBy: \"item\",\n nullable: true,\n },\n configurations: {\n kind: \"1:m\",\n entity: () => ItemConfiguration,\n mappedBy: \"item\",\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 throneModifiers: {\n kind: \"1:1\",\n entity: () => ThroneModifiers,\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 ZoneSchema = new EntitySchema<Zone>({\n class: Zone,\n tableName: \"zones\",\n properties: {\n zone: { type: \"string\", primary: true },\n parent: {\n kind: \"m:1\",\n entity: () => Zone,\n fieldName: \"parent\",\n nullable: true,\n },\n description: { type: \"string\" },\n accessItem: { type: \"string\", nullable: true },\n children: { kind: \"1:m\", entity: () => Zone, mappedBy: \"parent\" },\n locations: { kind: \"1:m\", entity: () => Location, mappedBy: \"zone\" },\n zoneModifiers: {\n kind: \"1:1\",\n entity: () => ZoneModifiers,\n mappedBy: \"zone\",\n nullable: true,\n },\n },\n});\n\nexport const ZoneModifiersSchema = new EntitySchema<ZoneModifiers>({\n class: ZoneModifiers,\n tableName: \"zoneModifiers\",\n properties: {\n zone: {\n kind: \"1:1\",\n entity: () => Zone,\n primary: true,\n fieldName: \"zone\",\n inversedBy: \"zoneModifiers\",\n },\n modifiers: { type: \"json\" },\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: {\n kind: \"m:1\",\n entity: () => Zone,\n fieldName: \"zone\",\n },\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 locationModifiers: {\n kind: \"1:1\",\n entity: () => LocationModifiers,\n mappedBy: \"location\",\n nullable: true,\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 pathModifiers: {\n kind: \"1:1\",\n entity: () => PathModifiers,\n mappedBy: \"path\",\n nullable: true,\n },\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 modifiers: { kind: \"1:1\", entity: () => OutfitModifiers, mappedBy: \"outfit\", nullable: true },\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 OutfitModifiersSchema = new EntitySchema<OutfitModifiers>({\n class: OutfitModifiers,\n tableName: \"outfitModifiers\",\n properties: {\n outfit: {\n kind: \"1:1\",\n entity: () => Outfit,\n primary: true,\n fieldName: \"outfit\",\n inversedBy: \"modifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const ThroneModifiersSchema = new EntitySchema<ThroneModifiers>({\n class: ThroneModifiers,\n tableName: \"throneModifiers\",\n properties: {\n familiar: {\n kind: \"1:1\",\n entity: () => Familiar,\n primary: true,\n fieldName: \"familiar\",\n inversedBy: \"throneModifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const PathModifiersSchema = new EntitySchema<PathModifiers>({\n class: PathModifiers,\n tableName: \"pathModifiers\",\n properties: {\n path: {\n kind: \"1:1\",\n entity: () => Path,\n primary: true,\n fieldName: \"path\",\n inversedBy: \"pathModifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const LocationModifiersSchema = new EntitySchema<LocationModifiers>({\n class: LocationModifiers,\n tableName: \"locationModifiers\",\n properties: {\n location: {\n kind: \"1:1\",\n entity: () => Location,\n primary: true,\n fieldName: \"location\",\n inversedBy: \"locationModifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const EternityCodpieceModifiersSchema = new EntitySchema<EternityCodpieceModifiers>({\n class: EternityCodpieceModifiers,\n tableName: \"eternityCodpieceModifiers\",\n properties: {\n item: {\n kind: \"1:1\",\n entity: () => Item,\n primary: true,\n fieldName: \"item\",\n inversedBy: \"eternityCodpieceModifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const ItemConfigurationSchema = new EntitySchema<ItemConfiguration>({\n class: ItemConfiguration,\n tableName: \"itemConfigurations\",\n properties: {\n item: {\n kind: \"m:1\",\n entity: () => Item,\n primary: true,\n fieldName: \"item\",\n },\n config: { type: \"string\", primary: true },\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 ZoneSchema,\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 OutfitModifiersSchema,\n ThroneModifiersSchema,\n PathModifiersSchema,\n LocationModifiersSchema,\n EternityCodpieceModifiersSchema,\n ItemConfigurationSchema,\n ZoneModifiersSchema,\n MetaSchema,\n];\n","import { type EntityManager, MikroORM } from \"@mikro-orm/core\";\n\nexport const DEFAULT_URL = \"https://data.loathers.net/dol.sqlite\";\nexport const ETAG_KEY = \"dol-etag\";\n\nexport abstract class BaseClient<S> {\n protected _orm?: MikroORM;\n protected readonly _strategy: S;\n\n constructor(strategy: S) {\n this._strategy = strategy;\n }\n\n get query(): EntityManager {\n if (!this._orm) throw new Error(\"Call await client.load() before querying\");\n return this._orm.em;\n }\n\n abstract load(): Promise<void>;\n\n protected async fetchDb(url: string): Promise<ArrayBuffer> {\n const response = await fetch(url);\n if (!response.ok)\n throw new Error(`Failed to fetch database: ${response.status}`);\n return response.arrayBuffer();\n }\n\n protected abstract getStoredEtag(key: string): Promise<string | null>;\n protected abstract storeEtag(key: string, etag: string): Promise<void>;\n\n protected async syncIfNeeded(\n url: string,\n key: string,\n apply: (data: ArrayBuffer) => Promise<void>,\n force = false,\n ): Promise<void> {\n const storedEtag = force ? null : await this.getStoredEtag(key);\n const head = await fetch(url, { method: \"HEAD\" });\n const remoteEtag = head.headers.get(\"etag\");\n\n if (force || storedEtag !== remoteEtag) {\n await apply(await this.fetchDb(url));\n if (remoteEtag) await this.storeEtag(key, remoteEtag);\n }\n }\n}\n"],"mappings":"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","names":["ItemUse","EffectQuality","SkillTag","FamiliarCategory","MonsterElement","MonsterDropCategory","LocationDifficulty","LocationEnvironment","ConsumableQuality"]}
package/dist/node.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { B as BaseClient } from './schema-Ch7wbOTC.js';
2
- export { A as AscensionClass, a as AscensionClassSchema, C as Concoction, b as ConcoctionSchema, c as Consumable, d as ConsumableQuality, e as ConsumableSchema, E as Effect, f as EffectModifiers, g as EffectModifiersSchema, h as EffectQuality, i as EffectSchema, j as Equipment, k as EquipmentSchema, F as Familiar, l as FamiliarCategory, m as FamiliarModifiers, n as FamiliarModifiersSchema, o as FamiliarSchema, p as FoldGroup, q as FoldGroupSchema, I as Ingredient, r as IngredientSchema, s as Item, t as ItemModifiers, u as ItemModifiersSchema, v as ItemSchema, w as ItemUse, L as Location, x as LocationDifficulty, y as LocationEnvironment, z as LocationSchema, M as Meta, D as MetaSchema, G as Modifier, H as Monster, J as MonsterDrop, K as MonsterDropCategory, N as MonsterDropSchema, O as MonsterElement, P as MonsterSchema, Q as NativeMonster, R as NativeMonsterSchema, S as Outfit, T as OutfitSchema, U as OutfitTreat, V as OutfitTreatSchema, W as Path, X as PathSchema, Y as Skill, Z as SkillModifiers, _ as SkillModifiersSchema, $ as SkillSchema, a0 as SkillTag, a1 as ZapGroup, a2 as ZapGroupSchema, a3 as entities, a4 as getModifier, a5 as getModifiers } from './schema-Ch7wbOTC.js';
1
+ import { B as BaseClient } from './schema-DsYkAeY6.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, l as EternityCodpieceModifiers, m as EternityCodpieceModifiersSchema, F as Familiar, n as FamiliarCategory, o as FamiliarModifiers, p as FamiliarModifiersSchema, q as FamiliarSchema, r as FoldGroup, s as FoldGroupSchema, I as Ingredient, t as IngredientSchema, u as Item, v as ItemConfiguration, w as ItemConfigurationSchema, x as ItemModifiers, y as ItemModifiersSchema, z as ItemSchema, D as ItemUse, L as Location, G as LocationDifficulty, H as LocationEnvironment, J as LocationModifiers, K as LocationModifiersSchema, M as LocationSchema, N as Meta, O as MetaSchema, P as Modifier, Q as Monster, R as MonsterDrop, S as MonsterDropCategory, T as MonsterDropSchema, U as MonsterElement, V as MonsterSchema, W as NativeMonster, X as NativeMonsterSchema, Y as Outfit, Z as OutfitModifiers, _ as OutfitModifiersSchema, $ as OutfitSchema, a0 as OutfitTreat, a1 as OutfitTreatSchema, a2 as Path, a3 as PathModifiers, a4 as PathModifiersSchema, a5 as PathSchema, a6 as Skill, a7 as SkillModifiers, a8 as SkillModifiersSchema, a9 as SkillSchema, aa as SkillTag, ab as ThroneModifiers, ac as ThroneModifiersSchema, ad as ZapGroup, ae as ZapGroupSchema, af as Zone, ag as ZoneModifiers, ah as ZoneModifiersSchema, ai as ZoneSchema, aj as entities, ak as getModifier, al as getModifiers } from './schema-DsYkAeY6.js';
3
3
  import '@mikro-orm/core';
4
4
 
5
5
  type Strategy = {
package/dist/node.js CHANGED
@@ -15,6 +15,8 @@ import {
15
15
  EffectSchema,
16
16
  Equipment,
17
17
  EquipmentSchema,
18
+ EternityCodpieceModifiers,
19
+ EternityCodpieceModifiersSchema,
18
20
  Familiar,
19
21
  FamiliarCategory,
20
22
  FamiliarModifiers,
@@ -25,6 +27,8 @@ import {
25
27
  Ingredient,
26
28
  IngredientSchema,
27
29
  Item,
30
+ ItemConfiguration,
31
+ ItemConfigurationSchema,
28
32
  ItemModifiers,
29
33
  ItemModifiersSchema,
30
34
  ItemSchema,
@@ -32,6 +36,8 @@ import {
32
36
  Location,
33
37
  LocationDifficulty,
34
38
  LocationEnvironment,
39
+ LocationModifiers,
40
+ LocationModifiersSchema,
35
41
  LocationSchema,
36
42
  Meta,
37
43
  MetaSchema,
@@ -44,22 +50,32 @@ import {
44
50
  NativeMonster,
45
51
  NativeMonsterSchema,
46
52
  Outfit,
53
+ OutfitModifiers,
54
+ OutfitModifiersSchema,
47
55
  OutfitSchema,
48
56
  OutfitTreat,
49
57
  OutfitTreatSchema,
50
58
  Path,
59
+ PathModifiers,
60
+ PathModifiersSchema,
51
61
  PathSchema,
52
62
  Skill,
53
63
  SkillModifiers,
54
64
  SkillModifiersSchema,
55
65
  SkillSchema,
56
66
  SkillTag,
67
+ ThroneModifiers,
68
+ ThroneModifiersSchema,
57
69
  ZapGroup,
58
70
  ZapGroupSchema,
71
+ Zone,
72
+ ZoneModifiers,
73
+ ZoneModifiersSchema,
74
+ ZoneSchema,
59
75
  entities,
60
76
  getModifier,
61
77
  getModifiers
62
- } from "./chunk-HSV4SC4N.js";
78
+ } from "./chunk-QSH2ILER.js";
63
79
 
64
80
  // src/node.ts
65
81
  import { existsSync } from "fs";
@@ -132,6 +148,8 @@ export {
132
148
  EffectSchema,
133
149
  Equipment,
134
150
  EquipmentSchema,
151
+ EternityCodpieceModifiers,
152
+ EternityCodpieceModifiersSchema,
135
153
  Familiar,
136
154
  FamiliarCategory,
137
155
  FamiliarModifiers,
@@ -142,6 +160,8 @@ export {
142
160
  Ingredient,
143
161
  IngredientSchema,
144
162
  Item,
163
+ ItemConfiguration,
164
+ ItemConfigurationSchema,
145
165
  ItemModifiers,
146
166
  ItemModifiersSchema,
147
167
  ItemSchema,
@@ -149,6 +169,8 @@ export {
149
169
  Location,
150
170
  LocationDifficulty,
151
171
  LocationEnvironment,
172
+ LocationModifiers,
173
+ LocationModifiersSchema,
152
174
  LocationSchema,
153
175
  Meta,
154
176
  MetaSchema,
@@ -161,18 +183,28 @@ export {
161
183
  NativeMonster,
162
184
  NativeMonsterSchema,
163
185
  Outfit,
186
+ OutfitModifiers,
187
+ OutfitModifiersSchema,
164
188
  OutfitSchema,
165
189
  OutfitTreat,
166
190
  OutfitTreatSchema,
167
191
  Path,
192
+ PathModifiers,
193
+ PathModifiersSchema,
168
194
  PathSchema,
169
195
  Skill,
170
196
  SkillModifiers,
171
197
  SkillModifiersSchema,
172
198
  SkillSchema,
173
199
  SkillTag,
200
+ ThroneModifiers,
201
+ ThroneModifiersSchema,
174
202
  ZapGroup,
175
203
  ZapGroupSchema,
204
+ Zone,
205
+ ZoneModifiers,
206
+ ZoneModifiersSchema,
207
+ ZoneSchema,
176
208
  createClient,
177
209
  entities,
178
210
  getModifier,
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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":[]}
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":[]}
@@ -1,5 +1,5 @@
1
1
  import * as _mikro_orm_core from '@mikro-orm/core';
2
- import { MikroORM, EntityManager, Collection, EntitySchema, Ref } from '@mikro-orm/core';
2
+ import { MikroORM, EntityManager, Collection, Ref, EntitySchema } from '@mikro-orm/core';
3
3
 
4
4
  declare abstract class BaseClient<S> {
5
5
  protected _orm?: MikroORM;
@@ -173,6 +173,8 @@ declare class Item {
173
173
  equipment?: Equipment;
174
174
  consumable?: Consumable;
175
175
  modifiers?: ItemModifiers;
176
+ eternityCodpieceModifiers?: EternityCodpieceModifiers;
177
+ configurations: Collection<ItemConfiguration, object>;
176
178
  monsterDrops: Collection<MonsterDrop, object>;
177
179
  outfitEquipment: Collection<Outfit, object>;
178
180
  outfitTreats: Collection<OutfitTreat, object>;
@@ -220,6 +222,7 @@ declare class Familiar {
220
222
  hideAndSeek: number;
221
223
  attributes: string[];
222
224
  modifiers?: FamiliarModifiers;
225
+ throneModifiers?: ThroneModifiers;
223
226
  }
224
227
  declare class Monster {
225
228
  id: number;
@@ -272,10 +275,23 @@ declare class Monster {
272
275
  drops: Collection<MonsterDrop, object>;
273
276
  nativeLocations: Collection<NativeMonster, object>;
274
277
  }
278
+ declare class Zone {
279
+ zone: string;
280
+ parent?: Zone;
281
+ description: string;
282
+ accessItem?: string;
283
+ children: Collection<Zone, object>;
284
+ locations: Collection<Location, object>;
285
+ zoneModifiers?: ZoneModifiers;
286
+ }
287
+ declare class ZoneModifiers {
288
+ zone: Ref<Zone>;
289
+ modifiers: Modifier[];
290
+ }
275
291
  declare class Location {
276
292
  name: string;
277
293
  id?: number;
278
- zone: string;
294
+ zone: Zone;
279
295
  url: string;
280
296
  difficulty: LocationDifficulty;
281
297
  environment: LocationEnvironment;
@@ -285,6 +301,7 @@ declare class Location {
285
301
  nowander: boolean;
286
302
  combatRate: number;
287
303
  nativeMonsters: Collection<NativeMonster, object>;
304
+ locationModifiers?: LocationModifiers;
288
305
  }
289
306
  declare class Path {
290
307
  id: number;
@@ -300,6 +317,7 @@ declare class Path {
300
317
  liverCapacity: number;
301
318
  spleenCapacity: number;
302
319
  classes: Collection<AscensionClass, object>;
320
+ pathModifiers?: PathModifiers;
303
321
  }
304
322
  declare class AscensionClass {
305
323
  id: number;
@@ -352,6 +370,7 @@ declare class Outfit {
352
370
  image: string;
353
371
  equipment: Collection<Item, object>;
354
372
  treats: Collection<OutfitTreat, object>;
373
+ modifiers?: OutfitModifiers;
355
374
  }
356
375
  declare class FoldGroup {
357
376
  id: number;
@@ -393,7 +412,7 @@ type Modifier = {
393
412
  name: string;
394
413
  value: string;
395
414
  };
396
- type HasModifiers = Item | Effect | Skill | Familiar;
415
+ type HasModifiers = Item | Effect | Skill | Familiar | Outfit;
397
416
  declare function getModifier(modifiers: Modifier[] | HasModifiers, name: string): string | undefined;
398
417
  declare function getModifiers(modifiers: Modifier[] | HasModifiers, name: string): string[];
399
418
  declare function getModifiers(modifiers: Modifier[] | HasModifiers, names: string[]): (string | undefined)[][];
@@ -413,6 +432,31 @@ declare class FamiliarModifiers {
413
432
  familiar: Ref<Familiar>;
414
433
  modifiers: Modifier[];
415
434
  }
435
+ declare class ThroneModifiers {
436
+ familiar: Ref<Familiar>;
437
+ modifiers: Modifier[];
438
+ }
439
+ declare class OutfitModifiers {
440
+ outfit: Ref<Outfit>;
441
+ modifiers: Modifier[];
442
+ }
443
+ declare class EternityCodpieceModifiers {
444
+ item: Ref<Item>;
445
+ modifiers: Modifier[];
446
+ }
447
+ declare class ItemConfiguration {
448
+ item: Ref<Item>;
449
+ config: string;
450
+ modifiers: Modifier[];
451
+ }
452
+ declare class PathModifiers {
453
+ path: Ref<Path>;
454
+ modifiers: Modifier[];
455
+ }
456
+ declare class LocationModifiers {
457
+ location: Ref<Location>;
458
+ modifiers: Modifier[];
459
+ }
416
460
  declare class Meta {
417
461
  id: number;
418
462
  lastUpdate: Date;
@@ -423,6 +467,8 @@ declare const EffectSchema: EntitySchema<Effect, never, _mikro_orm_core.EntityCt
423
467
  declare const SkillSchema: EntitySchema<Skill, never, _mikro_orm_core.EntityCtor<Skill>>;
424
468
  declare const FamiliarSchema: EntitySchema<Familiar, never, _mikro_orm_core.EntityCtor<Familiar>>;
425
469
  declare const MonsterSchema: EntitySchema<Monster, never, _mikro_orm_core.EntityCtor<Monster>>;
470
+ declare const ZoneSchema: EntitySchema<Zone, never, _mikro_orm_core.EntityCtor<Zone>>;
471
+ declare const ZoneModifiersSchema: EntitySchema<ZoneModifiers, never, _mikro_orm_core.EntityCtor<ZoneModifiers>>;
426
472
  declare const LocationSchema: EntitySchema<Location, never, _mikro_orm_core.EntityCtor<Location>>;
427
473
  declare const PathSchema: EntitySchema<Path, never, _mikro_orm_core.EntityCtor<Path>>;
428
474
  declare const AscensionClassSchema: EntitySchema<AscensionClass, never, _mikro_orm_core.EntityCtor<AscensionClass>>;
@@ -440,7 +486,13 @@ declare const ItemModifiersSchema: EntitySchema<ItemModifiers, never, _mikro_orm
440
486
  declare const EffectModifiersSchema: EntitySchema<EffectModifiers, never, _mikro_orm_core.EntityCtor<EffectModifiers>>;
441
487
  declare const SkillModifiersSchema: EntitySchema<SkillModifiers, never, _mikro_orm_core.EntityCtor<SkillModifiers>>;
442
488
  declare const FamiliarModifiersSchema: EntitySchema<FamiliarModifiers, never, _mikro_orm_core.EntityCtor<FamiliarModifiers>>;
489
+ declare const OutfitModifiersSchema: EntitySchema<OutfitModifiers, never, _mikro_orm_core.EntityCtor<OutfitModifiers>>;
490
+ declare const ThroneModifiersSchema: EntitySchema<ThroneModifiers, never, _mikro_orm_core.EntityCtor<ThroneModifiers>>;
491
+ declare const PathModifiersSchema: EntitySchema<PathModifiers, never, _mikro_orm_core.EntityCtor<PathModifiers>>;
492
+ declare const LocationModifiersSchema: EntitySchema<LocationModifiers, never, _mikro_orm_core.EntityCtor<LocationModifiers>>;
493
+ declare const EternityCodpieceModifiersSchema: EntitySchema<EternityCodpieceModifiers, never, _mikro_orm_core.EntityCtor<EternityCodpieceModifiers>>;
494
+ declare const ItemConfigurationSchema: EntitySchema<ItemConfiguration, never, _mikro_orm_core.EntityCtor<ItemConfiguration>>;
443
495
  declare const MetaSchema: EntitySchema<Meta, never, _mikro_orm_core.EntityCtor<Meta>>;
444
- declare const entities: (EntitySchema<Item, never, _mikro_orm_core.EntityCtor<Item>> | EntitySchema<Effect, never, _mikro_orm_core.EntityCtor<Effect>> | EntitySchema<Skill, never, _mikro_orm_core.EntityCtor<Skill>> | EntitySchema<Familiar, never, _mikro_orm_core.EntityCtor<Familiar>> | EntitySchema<Monster, never, _mikro_orm_core.EntityCtor<Monster>> | EntitySchema<Location, never, _mikro_orm_core.EntityCtor<Location>> | EntitySchema<Path, never, _mikro_orm_core.EntityCtor<Path>> | EntitySchema<AscensionClass, never, _mikro_orm_core.EntityCtor<AscensionClass>> | EntitySchema<Equipment, never, _mikro_orm_core.EntityCtor<Equipment>> | EntitySchema<Consumable, never, _mikro_orm_core.EntityCtor<Consumable>> | EntitySchema<Concoction, never, _mikro_orm_core.EntityCtor<Concoction>> | EntitySchema<Outfit, never, _mikro_orm_core.EntityCtor<Outfit>> | EntitySchema<FoldGroup, never, _mikro_orm_core.EntityCtor<FoldGroup>> | EntitySchema<ZapGroup, never, _mikro_orm_core.EntityCtor<ZapGroup>> | EntitySchema<MonsterDrop, never, _mikro_orm_core.EntityCtor<MonsterDrop>> | EntitySchema<NativeMonster, never, _mikro_orm_core.EntityCtor<NativeMonster>> | EntitySchema<Ingredient, never, _mikro_orm_core.EntityCtor<Ingredient>> | EntitySchema<OutfitTreat, never, _mikro_orm_core.EntityCtor<OutfitTreat>> | EntitySchema<ItemModifiers, never, _mikro_orm_core.EntityCtor<ItemModifiers>> | EntitySchema<EffectModifiers, never, _mikro_orm_core.EntityCtor<EffectModifiers>> | EntitySchema<SkillModifiers, never, _mikro_orm_core.EntityCtor<SkillModifiers>> | EntitySchema<FamiliarModifiers, never, _mikro_orm_core.EntityCtor<FamiliarModifiers>> | EntitySchema<Meta, never, _mikro_orm_core.EntityCtor<Meta>>)[];
496
+ 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<Zone, never, _mikro_orm_core.EntityCtor<Zone>> | 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<OutfitModifiers, never, _mikro_orm_core.EntityCtor<OutfitModifiers>> | EntitySchema<PathModifiers, never, _mikro_orm_core.EntityCtor<PathModifiers>> | EntitySchema<LocationModifiers, never, _mikro_orm_core.EntityCtor<LocationModifiers>> | EntitySchema<ItemConfiguration, never, _mikro_orm_core.EntityCtor<ItemConfiguration>> | EntitySchema<ZoneModifiers, never, _mikro_orm_core.EntityCtor<ZoneModifiers>> | EntitySchema<Meta, never, _mikro_orm_core.EntityCtor<Meta>>)[];
445
497
 
446
- export { SkillSchema as $, AscensionClass as A, BaseClient as B, Concoction as C, MetaSchema as D, Effect as E, Familiar as F, type Modifier as G, Monster as H, Ingredient as I, MonsterDrop as J, MonsterDropCategory as K, Location as L, Meta as M, MonsterDropSchema as N, MonsterElement as O, MonsterSchema as P, NativeMonster as Q, NativeMonsterSchema as R, Outfit as S, OutfitSchema as T, OutfitTreat as U, OutfitTreatSchema as V, Path as W, PathSchema as X, Skill as Y, SkillModifiers as Z, SkillModifiersSchema as _, AscensionClassSchema as a, SkillTag as a0, ZapGroup as a1, ZapGroupSchema as a2, entities as a3, getModifier as a4, getModifiers as a5, ConcoctionSchema as b, Consumable as c, ConsumableQuality as d, ConsumableSchema as e, EffectModifiers as f, EffectModifiersSchema as g, EffectQuality as h, EffectSchema as i, Equipment as j, EquipmentSchema as k, FamiliarCategory as l, FamiliarModifiers as m, FamiliarModifiersSchema as n, FamiliarSchema as o, FoldGroup as p, FoldGroupSchema as q, IngredientSchema as r, Item as s, ItemModifiers as t, ItemModifiersSchema as u, ItemSchema as v, ItemUse as w, LocationDifficulty as x, LocationEnvironment as y, LocationSchema as z };
498
+ export { OutfitSchema as $, AscensionClass as A, BaseClient as B, Concoction as C, ItemUse as D, Effect as E, Familiar as F, LocationDifficulty as G, LocationEnvironment as H, Ingredient as I, LocationModifiers as J, LocationModifiersSchema as K, Location as L, LocationSchema as M, Meta as N, MetaSchema as O, type Modifier as P, Monster as Q, MonsterDrop as R, MonsterDropCategory as S, MonsterDropSchema as T, MonsterElement as U, MonsterSchema as V, NativeMonster as W, NativeMonsterSchema as X, Outfit as Y, OutfitModifiers as Z, OutfitModifiersSchema as _, AscensionClassSchema as a, OutfitTreat as a0, OutfitTreatSchema as a1, Path as a2, PathModifiers as a3, PathModifiersSchema as a4, PathSchema as a5, Skill as a6, SkillModifiers as a7, SkillModifiersSchema as a8, SkillSchema as a9, SkillTag as aa, ThroneModifiers as ab, ThroneModifiersSchema as ac, ZapGroup as ad, ZapGroupSchema as ae, Zone as af, ZoneModifiers as ag, ZoneModifiersSchema as ah, ZoneSchema as ai, entities as aj, getModifier as ak, getModifiers as al, 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, EternityCodpieceModifiers as l, EternityCodpieceModifiersSchema as m, FamiliarCategory as n, FamiliarModifiers as o, FamiliarModifiersSchema as p, FamiliarSchema as q, FoldGroup as r, FoldGroupSchema as s, IngredientSchema as t, Item as u, ItemConfiguration as v, ItemConfigurationSchema as w, ItemModifiers as x, ItemModifiersSchema as y, ItemSchema as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "data-of-loathing",
3
- "version": "4.1.0",
3
+ "version": "4.3.0",
4
4
  "type": "module",
5
5
  "packageManager": "yarn@4.6.0",
6
6
  "repository": {
@@ -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 type Modifier = { name: string; value: string };\n\ntype HasModifiers = Item | Effect | Skill | Familiar;\n\nfunction resolveModifiers(source: Modifier[] | HasModifiers): Modifier[] {\n if (Array.isArray(source)) return source;\n return source.modifiers?.modifiers ?? [];\n}\n\nexport function getModifier(\n modifiers: Modifier[] | HasModifiers,\n name: string,\n): string | undefined {\n return resolveModifiers(modifiers).find((m) => m.name === name)?.value;\n}\n\nexport function getModifiers(\n modifiers: Modifier[] | HasModifiers,\n name: string,\n): string[];\nexport function getModifiers(\n modifiers: Modifier[] | HasModifiers,\n names: string[],\n): (string | undefined)[][];\nexport function getModifiers(\n modifiers: Modifier[] | HasModifiers,\n nameOrNames: string | string[],\n): string[] | (string | undefined)[][] {\n const mods = resolveModifiers(modifiers);\n if (typeof nameOrNames === \"string\") {\n return mods.filter((m) => m.name === nameOrNames).map((m) => m.value);\n }\n const columns = nameOrNames.map((name) =>\n mods.filter((m) => m.name === name).map((m) => m.value),\n );\n const len = Math.max(0, ...columns.map((c) => c.length));\n return Array.from({ length: len }, (_, i) => columns.map((c) => c[i]));\n}\n\nexport class ItemModifiers {\n item!: Ref<Item>;\n modifiers!: Modifier[];\n}\n\nexport class EffectModifiers {\n effect!: Ref<Effect>;\n modifiers!: Modifier[];\n}\n\nexport class SkillModifiers {\n skill!: Ref<Skill>;\n modifiers!: Modifier[];\n}\n\nexport class FamiliarModifiers {\n familiar!: Ref<Familiar>;\n modifiers!: Modifier[];\n}\n\nexport class Meta {\n id!: number;\n lastUpdate!: Date;\n lastRevision!: number;\n}\n\n// ---- EntitySchema Definitions ---------------------------------------------\n\nexport const ItemSchema = new EntitySchema<Item>({\n class: Item,\n tableName: \"items\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\", index: true },\n descid: { type: \"integer\", nullable: true, unique: true },\n image: { type: \"string\" },\n uses: { type: \"json\" },\n quest: { type: \"boolean\" },\n gift: { type: \"boolean\" },\n tradeable: { type: \"boolean\" },\n discardable: { type: \"boolean\" },\n autosell: { type: \"integer\" },\n plural: { type: \"string\", nullable: true },\n ambiguous: { type: \"boolean\", default: false },\n equipment: {\n kind: \"1:1\",\n entity: () => Equipment,\n mappedBy: \"item\",\n nullable: true,\n },\n consumable: {\n kind: \"1:1\",\n entity: () => Consumable,\n mappedBy: \"item\",\n nullable: true,\n },\n modifiers: {\n kind: \"1:1\",\n entity: () => ItemModifiers,\n mappedBy: \"item\",\n nullable: true,\n },\n monsterDrops: { kind: \"1:m\", entity: () => MonsterDrop, mappedBy: \"item\" },\n outfitEquipment: {\n kind: \"m:n\",\n entity: () => Outfit,\n pivotTable: \"outfitEquipment\",\n joinColumn: \"equipment\",\n inverseJoinColumn: \"outfit\",\n },\n outfitTreats: {\n kind: \"1:m\",\n entity: () => OutfitTreat,\n mappedBy: \"item\",\n },\n ingredients: {\n kind: \"1:m\",\n entity: () => Ingredient,\n mappedBy: \"item\",\n },\n foldGroups: {\n kind: \"m:n\",\n entity: () => FoldGroup,\n pivotTable: \"foldables\",\n joinColumn: \"item\",\n inverseJoinColumn: \"foldGroup\",\n },\n zapGroups: {\n kind: \"m:n\",\n entity: () => ZapGroup,\n pivotTable: \"zapGroupItems\",\n joinColumn: \"item\",\n inverseJoinColumn: \"zapGroup\",\n },\n },\n});\n\nexport const EffectSchema = new EntitySchema<Effect>({\n class: Effect,\n tableName: \"effects\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n descid: { type: \"string\", nullable: true, unique: true },\n image: { type: \"string\" },\n quality: { type: \"string\" },\n nohookah: { type: \"boolean\" },\n nopvp: { type: \"boolean\" },\n noremove: { type: \"boolean\" },\n song: { type: \"boolean\" },\n actions: { type: \"json\" },\n ambiguous: { type: \"boolean\", default: false },\n modifiers: {\n kind: \"1:1\",\n entity: () => EffectModifiers,\n mappedBy: \"effect\",\n nullable: true,\n },\n },\n});\n\nexport const SkillSchema = new EntitySchema<Skill>({\n class: Skill,\n tableName: \"skills\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n image: { type: \"string\" },\n tags: { type: \"json\" },\n mpCost: { type: \"integer\" },\n duration: { type: \"integer\" },\n guildLevel: { type: \"integer\", nullable: true },\n maxLevel: { type: \"integer\", nullable: true },\n permable: { type: \"boolean\" },\n ambiguous: { type: \"boolean\", default: false },\n modifiers: {\n kind: \"1:1\",\n entity: () => SkillModifiers,\n mappedBy: \"skill\",\n nullable: true,\n },\n },\n});\n\nexport const FamiliarSchema = new EntitySchema<Familiar>({\n class: Familiar,\n tableName: \"familiars\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n image: { type: \"string\" },\n categories: { type: \"json\" },\n larva: {\n kind: \"m:1\",\n entity: () => Item,\n nullable: true,\n fieldName: \"larva\",\n },\n equipment: {\n kind: \"m:1\",\n entity: () => Item,\n nullable: true,\n fieldName: \"equipment\",\n },\n cageMatch: { type: \"integer\" },\n scavengerHunt: { type: \"integer\" },\n obstacleCourse: { type: \"integer\" },\n hideAndSeek: { type: \"integer\" },\n attributes: { type: \"json\" },\n modifiers: {\n kind: \"1:1\",\n entity: () => FamiliarModifiers,\n mappedBy: \"familiar\",\n nullable: true,\n },\n },\n});\n\nexport const MonsterSchema = new EntitySchema<Monster>({\n class: Monster,\n tableName: \"monsters\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n image: { type: \"json\" },\n ambiguous: { type: \"boolean\", default: false },\n article: { type: \"string\" },\n attack: { type: \"string\" },\n boss: { type: \"boolean\" },\n defence: { type: \"string\" },\n drippy: { type: \"boolean\" },\n element: { type: \"string\", nullable: true },\n elementalAttack: { type: \"string\", nullable: true },\n elementalDefence: { type: \"string\", nullable: true },\n elementalResistance: { type: \"string\" },\n experience: { type: \"string\", nullable: true },\n free: { type: \"boolean\" },\n ghost: { type: \"boolean\" },\n groupSize: { type: \"integer\" },\n hp: { type: \"string\" },\n initiative: { type: \"string\" },\n itemBlockChance: { type: \"float\" },\n lucky: { type: \"boolean\" },\n manuel: { type: \"string\", nullable: true },\n meat: { type: \"float\", nullable: true },\n meatExpression: { type: \"string\", nullable: true },\n monsterLevelMultiplier: { type: \"string\" },\n nobanish: { type: \"boolean\" },\n nocopy: { type: \"boolean\" },\n nomanuel: { type: \"boolean\" },\n nowander: { type: \"boolean\" },\n nowish: { type: \"boolean\" },\n phylum: { type: \"string\" },\n physicalResistance: { type: \"string\" },\n poison: { type: \"string\", nullable: true },\n scaling: { type: \"string\" },\n scalingCap: { type: \"string\" },\n scalingFloor: { type: \"string\" },\n skeleton: { type: \"boolean\" },\n skillBlockChance: { type: \"float\" },\n snake: { type: \"boolean\" },\n spellBlockChance: { type: \"float\" },\n sprinkles: { type: \"json\" },\n superlikely: { type: \"boolean\" },\n ultrarare: { type: \"boolean\" },\n wanderer: { type: \"boolean\" },\n wiki: { type: \"string\", nullable: true },\n wish: { type: \"boolean\" },\n zombie: { type: \"boolean\" },\n drops: { kind: \"1:m\", entity: () => MonsterDrop, mappedBy: \"monster\" },\n nativeLocations: {\n kind: \"1:m\",\n entity: () => NativeMonster,\n mappedBy: \"monster\",\n },\n },\n});\n\nexport const LocationSchema = new EntitySchema<Location>({\n class: Location,\n tableName: \"locations\",\n properties: {\n name: { type: \"string\", primary: true },\n id: { type: \"integer\", nullable: true },\n zone: { type: \"string\" },\n url: { type: \"string\" },\n difficulty: { type: \"string\" },\n environment: { type: \"string\" },\n statRequirement: { type: \"integer\" },\n waterLevel: { type: \"integer\", nullable: true },\n overdrunk: { type: \"boolean\" },\n nowander: { type: \"boolean\" },\n combatRate: { type: \"integer\" },\n nativeMonsters: {\n kind: \"1:m\",\n entity: () => NativeMonster,\n mappedBy: \"location\",\n },\n },\n});\n\nexport const PathSchema = new EntitySchema<Path>({\n class: Path,\n tableName: \"paths\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n enumName: { type: \"string\" },\n image: { type: \"string\", nullable: true, unique: true },\n isAvatar: { type: \"boolean\" },\n article: { type: \"string\", nullable: true },\n pointsPreference: { type: \"string\", nullable: true },\n maximumPoints: { type: \"integer\" },\n bucket: { type: \"boolean\" },\n stomachCapacity: { type: \"integer\" },\n liverCapacity: { type: \"integer\" },\n spleenCapacity: { type: \"integer\" },\n classes: { kind: \"1:m\", entity: () => AscensionClass, mappedBy: \"path\" },\n },\n});\n\nexport const AscensionClassSchema = new EntitySchema<AscensionClass>({\n class: AscensionClass,\n tableName: \"classes\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n enumName: { type: \"string\" },\n image: { type: \"string\", nullable: true },\n primeStatIndex: { type: \"integer\" },\n path: {\n kind: \"m:1\",\n entity: () => Path,\n nullable: true,\n fieldName: \"path\",\n },\n stun: { type: \"string\", nullable: true },\n stomachCapacity: { type: \"integer\", nullable: true },\n liverCapacity: { type: \"integer\", nullable: true },\n spleenCapacity: { type: \"integer\", nullable: true },\n },\n});\n\nexport const EquipmentSchema = new EntitySchema<Equipment>({\n class: Equipment,\n tableName: \"equipment\",\n properties: {\n item: {\n kind: \"1:1\",\n entity: () => Item,\n primary: true,\n fieldName: \"id\",\n inversedBy: \"equipment\",\n },\n power: { type: \"integer\" },\n musRequirement: { type: \"integer\" },\n mysRequirement: { type: \"integer\" },\n moxRequirement: { type: \"integer\" },\n type: { type: \"string\", nullable: true },\n hands: { type: \"integer\", nullable: true },\n },\n});\n\nexport const ConsumableSchema = new EntitySchema<Consumable>({\n class: Consumable,\n tableName: \"consumables\",\n properties: {\n item: {\n kind: \"1:1\",\n entity: () => Item,\n primary: true,\n fieldName: \"id\",\n inversedBy: \"consumable\",\n },\n stomach: { type: \"integer\" },\n liver: { type: \"integer\" },\n spleen: { type: \"integer\" },\n levelRequirement: { type: \"integer\" },\n quality: { type: \"string\", nullable: true },\n adventureRange: { type: \"string\" },\n adventures: { type: \"float\" },\n muscle: { type: \"float\" },\n muscleRange: { type: \"string\" },\n mysticality: { type: \"float\" },\n mysticalityRange: { type: \"string\" },\n moxie: { type: \"float\" },\n moxieRange: { type: \"string\" },\n notes: { type: \"string\", nullable: true },\n },\n});\n\nexport const ConcoctionSchema = new EntitySchema<Concoction>({\n class: Concoction,\n tableName: \"concoctions\",\n properties: {\n id: { type: \"integer\", primary: true },\n item: { kind: \"m:1\", entity: () => Item, fieldName: \"item\" },\n methods: { type: \"json\" },\n comment: { type: \"string\", nullable: true },\n ingredients: {\n kind: \"1:m\",\n entity: () => Ingredient,\n mappedBy: \"concoction\",\n },\n },\n});\n\nexport const OutfitSchema = new EntitySchema<Outfit>({\n class: Outfit,\n tableName: \"outfits\",\n properties: {\n id: { type: \"integer\", primary: true },\n name: { type: \"string\" },\n image: { type: \"string\" },\n equipment: {\n kind: \"m:n\",\n entity: () => Item,\n pivotTable: \"outfitEquipment\",\n joinColumn: \"outfit\",\n inverseJoinColumn: \"equipment\",\n },\n treats: { kind: \"1:m\", entity: () => OutfitTreat, mappedBy: \"outfit\" },\n },\n});\n\nexport const FoldGroupSchema = new EntitySchema<FoldGroup>({\n class: FoldGroup,\n tableName: \"foldGroups\",\n properties: {\n id: { type: \"integer\", primary: true },\n damage: { type: \"integer\" },\n items: {\n kind: \"m:n\",\n entity: () => Item,\n mappedBy: \"foldGroups\",\n },\n },\n});\n\nexport const ZapGroupSchema = new EntitySchema<ZapGroup>({\n class: ZapGroup,\n tableName: \"zapGroups\",\n properties: {\n id: { type: \"integer\", primary: true },\n items: {\n kind: \"m:n\",\n entity: () => Item,\n mappedBy: \"zapGroups\",\n },\n },\n});\n\nexport const MonsterDropSchema = new EntitySchema<MonsterDrop>({\n class: MonsterDrop,\n tableName: \"monsterDrops\",\n properties: {\n id: { type: \"integer\", primary: true },\n monster: { kind: \"m:1\", entity: () => Monster },\n item: { kind: \"m:1\", entity: () => Item },\n rate: { type: \"float\" },\n category: { type: \"string\", nullable: true },\n },\n});\n\nexport const NativeMonsterSchema = new EntitySchema<NativeMonster>({\n class: NativeMonster,\n tableName: \"nativeMonsters\",\n properties: {\n id: { type: \"integer\", primary: true },\n location: { kind: \"m:1\", entity: () => Location },\n monster: { kind: \"m:1\", entity: () => Monster },\n weight: { type: \"float\" },\n rejection: { type: \"float\" },\n parity: { type: \"integer\", nullable: true },\n },\n});\n\nexport const IngredientSchema = new EntitySchema<Ingredient>({\n class: Ingredient,\n tableName: \"ingredients\",\n properties: {\n id: { type: \"integer\", primary: true },\n concoction: { kind: \"m:1\", entity: () => Concoction },\n item: { kind: \"m:1\", entity: () => Item },\n quantity: { type: \"integer\" },\n },\n});\n\nexport const OutfitTreatSchema = new EntitySchema<OutfitTreat>({\n class: OutfitTreat,\n tableName: \"outfitTreats\",\n properties: {\n id: { type: \"integer\", primary: true },\n outfit: { kind: \"m:1\", entity: () => Outfit },\n item: { kind: \"m:1\", entity: () => Item },\n chance: { type: \"float\" },\n },\n});\n\nexport const ItemModifiersSchema = new EntitySchema<ItemModifiers>({\n class: ItemModifiers,\n tableName: \"itemModifiers\",\n properties: {\n item: {\n kind: \"1:1\",\n entity: () => Item,\n primary: true,\n fieldName: \"item\",\n inversedBy: \"modifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const EffectModifiersSchema = new EntitySchema<EffectModifiers>({\n class: EffectModifiers,\n tableName: \"effectModifiers\",\n properties: {\n effect: {\n kind: \"1:1\",\n entity: () => Effect,\n primary: true,\n fieldName: \"effect\",\n inversedBy: \"modifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const SkillModifiersSchema = new EntitySchema<SkillModifiers>({\n class: SkillModifiers,\n tableName: \"skillModifiers\",\n properties: {\n skill: {\n kind: \"1:1\",\n entity: () => Skill,\n primary: true,\n fieldName: \"skill\",\n inversedBy: \"modifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const FamiliarModifiersSchema = new EntitySchema<FamiliarModifiers>({\n class: FamiliarModifiers,\n tableName: \"familiarModifiers\",\n properties: {\n familiar: {\n kind: \"1:1\",\n entity: () => Familiar,\n primary: true,\n fieldName: \"familiar\",\n inversedBy: \"modifiers\",\n },\n modifiers: { type: \"json\" },\n },\n});\n\nexport const MetaSchema = new EntitySchema<Meta>({\n class: Meta,\n tableName: \"meta\",\n properties: {\n id: { type: \"integer\", primary: true, default: 1 },\n lastUpdate: { type: \"Date\" },\n lastRevision: { type: \"integer\" },\n },\n});\n\n// All schemas in dependency order for MikroORM.init({ entities })\nexport const entities = [\n ItemSchema,\n EffectSchema,\n SkillSchema,\n FamiliarSchema,\n MonsterSchema,\n LocationSchema,\n PathSchema,\n AscensionClassSchema,\n EquipmentSchema,\n ConsumableSchema,\n ConcoctionSchema,\n OutfitSchema,\n FoldGroupSchema,\n ZapGroupSchema,\n MonsterDropSchema,\n NativeMonsterSchema,\n IngredientSchema,\n OutfitTreatSchema,\n ItemModifiersSchema,\n EffectModifiersSchema,\n SkillModifiersSchema,\n FamiliarModifiersSchema,\n MetaSchema,\n];\n","import { type EntityManager, MikroORM } from \"@mikro-orm/core\";\n\nexport const DEFAULT_URL = \"https://data.loathers.net/dol.sqlite\";\nexport const ETAG_KEY = \"dol-etag\";\n\nexport abstract class BaseClient<S> {\n protected _orm?: MikroORM;\n protected readonly _strategy: S;\n\n constructor(strategy: S) {\n this._strategy = strategy;\n }\n\n get query(): EntityManager {\n if (!this._orm) throw new Error(\"Call await client.load() before querying\");\n return this._orm.em;\n }\n\n abstract load(): Promise<void>;\n\n protected async fetchDb(url: string): Promise<ArrayBuffer> {\n const response = await fetch(url);\n if (!response.ok)\n throw new Error(`Failed to fetch database: ${response.status}`);\n return response.arrayBuffer();\n }\n\n protected abstract getStoredEtag(key: string): Promise<string | null>;\n protected abstract storeEtag(key: string, etag: string): Promise<void>;\n\n protected async syncIfNeeded(\n url: string,\n key: string,\n apply: (data: ArrayBuffer) => Promise<void>,\n force = false,\n ): Promise<void> {\n const storedEtag = force ? null : await this.getStoredEtag(key);\n const head = await fetch(url, { method: \"HEAD\" });\n const remoteEtag = head.headers.get(\"etag\");\n\n if (force || storedEtag !== remoteEtag) {\n await apply(await this.fetchDb(url));\n if (remoteEtag) await this.storeEtag(key, remoteEtag);\n }\n }\n}\n"],"mappings":"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","names":["ItemUse","EffectQuality","SkillTag","FamiliarCategory","MonsterElement","MonsterDropCategory","LocationDifficulty","LocationEnvironment","ConsumableQuality"]}