data-of-loathing 4.1.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.d.ts +2 -2
- package/dist/browser.js +5 -1
- package/dist/browser.js.map +1 -1
- package/dist/{chunk-HSV4SC4N.js → chunk-7PJW4ZFH.js} +25 -2
- package/dist/chunk-7PJW4ZFH.js.map +1 -0
- package/dist/node.d.ts +2 -2
- package/dist/node.js +5 -1
- package/dist/node.js.map +1 -1
- package/dist/{schema-Ch7wbOTC.d.ts → schema-2LnHMFWq.d.ts} +9 -3
- package/package.json +1 -1
- package/dist/chunk-HSV4SC4N.js.map +0 -1
package/dist/browser.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { B as BaseClient } from './schema-
|
|
2
|
-
export { A as AscensionClass, a as AscensionClassSchema, C as Concoction, b as ConcoctionSchema, c as Consumable, d as ConsumableQuality, e as ConsumableSchema, E as Effect, f as EffectModifiers, g as EffectModifiersSchema, h as EffectQuality, i as EffectSchema, j as Equipment, k as EquipmentSchema, F as Familiar, l as FamiliarCategory, m as FamiliarModifiers, n as FamiliarModifiersSchema, o as FamiliarSchema, p as FoldGroup, q as FoldGroupSchema, I as Ingredient, r as IngredientSchema, s as Item, t as ItemModifiers, u as ItemModifiersSchema, v as ItemSchema, w as ItemUse, L as Location, x as LocationDifficulty, y as LocationEnvironment, z as LocationSchema, M as Meta, D as MetaSchema, G as 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
|
|
1
|
+
import { B as BaseClient } from './schema-2LnHMFWq.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 OutfitModifiers, U as OutfitModifiersSchema, V as OutfitSchema, W as OutfitTreat, X as OutfitTreatSchema, Y as Path, Z as PathSchema, _ as Skill, $ as SkillModifiers, a0 as SkillModifiersSchema, a1 as SkillSchema, a2 as SkillTag, a3 as ZapGroup, a4 as ZapGroupSchema, a5 as entities, a6 as getModifier, a7 as getModifiers } from './schema-2LnHMFWq.js';
|
|
3
3
|
import '@mikro-orm/core';
|
|
4
4
|
|
|
5
5
|
type Strategy = {
|
package/dist/browser.js
CHANGED
|
@@ -45,6 +45,8 @@ import {
|
|
|
45
45
|
NativeMonster,
|
|
46
46
|
NativeMonsterSchema,
|
|
47
47
|
Outfit,
|
|
48
|
+
OutfitModifiers,
|
|
49
|
+
OutfitModifiersSchema,
|
|
48
50
|
OutfitSchema,
|
|
49
51
|
OutfitTreat,
|
|
50
52
|
OutfitTreatSchema,
|
|
@@ -60,7 +62,7 @@ import {
|
|
|
60
62
|
entities,
|
|
61
63
|
getModifier,
|
|
62
64
|
getModifiers
|
|
63
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-7PJW4ZFH.js";
|
|
64
66
|
|
|
65
67
|
// src/browser.ts
|
|
66
68
|
import { SqlMikroORM, SqliteDriver } from "@mikro-orm/sql";
|
|
@@ -290,6 +292,8 @@ export {
|
|
|
290
292
|
NativeMonster,
|
|
291
293
|
NativeMonsterSchema,
|
|
292
294
|
Outfit,
|
|
295
|
+
OutfitModifiers,
|
|
296
|
+
OutfitModifiersSchema,
|
|
293
297
|
OutfitSchema,
|
|
294
298
|
OutfitTreat,
|
|
295
299
|
OutfitTreatSchema,
|
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/browser.ts","../src/SqliteWorkerDialect.ts"],"sourcesContent":["import { SqlMikroORM, SqliteDriver } from \"@mikro-orm/sql\";\nimport { entities } from \"./schema.js\";\nimport { SqliteWorkerDialect } from \"./SqliteWorkerDialect.js\";\nimport { BaseClient, DEFAULT_URL, ETAG_KEY } from \"./BaseClient.js\";\n\nexport type Strategy =\n | { strategy?: \"memory\"; url?: string; force?: boolean }\n | { strategy: \"opfs\"; url?: string; force?: boolean }\n | { strategy: \"ranged\"; url?: string };\n\nasync function getOpfsEtag(): Promise<string | null> {\n try {\n const root = await navigator.storage.getDirectory();\n const handle = await root.getFileHandle(\".dol-etag\");\n return (await handle.getFile()).text();\n } catch {\n return null;\n }\n}\n\nasync function setOpfsEtag(etag: string): Promise<void> {\n const root = await navigator.storage.getDirectory();\n const handle = await root.getFileHandle(\".dol-etag\", { create: true });\n const writable = await handle.createWritable();\n await writable.write(etag);\n await writable.close();\n}\n\nasync function writeToOpfs(\n filename: string,\n buffer: ArrayBuffer,\n): Promise<void> {\n const root = await navigator.storage.getDirectory();\n const handle = await root.getFileHandle(filename, { create: true });\n const writable = await handle.createWritable();\n await writable.write(buffer);\n await writable.close();\n}\n\nexport class Client extends BaseClient<Strategy> {\n #dialect?: SqliteWorkerDialect;\n\n constructor(strategy: Strategy = {}) {\n super(strategy);\n }\n\n protected async getStoredEtag(_key: string): Promise<string | null> {\n return localStorage.getItem(ETAG_KEY);\n }\n\n protected async storeEtag(_key: string, etag: string): Promise<void> {\n localStorage.setItem(ETAG_KEY, etag);\n }\n\n async load(): Promise<void> {\n await this._orm?.close();\n this.#dialect?.createDriver().destroy();\n\n const strategy = this._strategy;\n const url = this._strategy.url ?? DEFAULT_URL;\n\n switch (strategy.strategy) {\n case \"ranged\": {\n this.#dialect = new SqliteWorkerDialect(\n new Worker(new URL(\"./workers/ranged.js\", import.meta.url), {\n type: \"module\",\n }),\n );\n await this.#dialect.loadRanged(url);\n break;\n }\n case \"opfs\": {\n this.#dialect = new SqliteWorkerDialect(\n new Worker(new URL(\"./workers/opfs.js\", import.meta.url), {\n type: \"module\",\n }),\n );\n const { force = false } = strategy;\n const remoteEtag = (await fetch(url, { method: \"HEAD\" })).headers.get(\n \"etag\",\n );\n const storedEtag = force ? null : await getOpfsEtag();\n\n if (force || storedEtag !== remoteEtag) {\n const buffer = await this.fetchDb(url);\n await writeToOpfs(\"dol.sqlite\", buffer);\n if (remoteEtag) await setOpfsEtag(remoteEtag);\n }\n\n await this.#dialect.loadOpfs(\"/dol.sqlite\");\n break;\n }\n case \"memory\":\n default: {\n this.#dialect = new SqliteWorkerDialect(\n new Worker(new URL(\"./workers/memory.js\", import.meta.url), {\n type: \"module\",\n }),\n );\n const { force = false } = strategy;\n const response = await fetch(url, {\n cache: force ? \"reload\" : \"default\",\n });\n if (!response.ok)\n throw new Error(`Failed to fetch database: ${response.status}`);\n const buffer = await response.arrayBuffer();\n await this.#dialect.loadMemory(buffer);\n }\n }\n\n this._orm = await SqlMikroORM.init({\n driver: SqliteDriver,\n driverOptions: this.#dialect,\n dbName: \"dol.sqlite\",\n entities,\n allowGlobalContext: true,\n });\n }\n}\n\nexport function createClient(strategy: Strategy = {}): Client {\n return new Client(strategy);\n}\n\nexport * from \"./schema.js\";\n","import { type SqlValue } from \"@sqlite.org/sqlite-wasm\";\nimport {\n SqliteAdapter,\n SqliteIntrospector,\n SqliteQueryCompiler,\n type CompiledQuery,\n type DatabaseConnection,\n type DatabaseIntrospector,\n type Dialect,\n type DialectAdapter,\n type Driver,\n type Kysely,\n type QueryCompiler,\n type QueryResult,\n} from \"kysely\";\n\ntype WorkerResponse =\n | { id: string; type: \"loaded\" }\n | { id: string; type: \"exec\"; rows: Record<string, SqlValue>[] }\n | { id: string; type: \"error\"; error: string };\n\nexport class SqliteWorkerDialect implements Dialect {\n readonly #worker: Worker;\n readonly #pending = new Map<\n string,\n {\n resolve: (value: Record<string, SqlValue>[] | undefined) => void;\n reject: (err: Error) => void;\n }\n >();\n #nextId = 0;\n\n constructor(worker: Worker) {\n this.#worker = worker;\n this.#worker.onmessage = (event: MessageEvent<WorkerResponse>) => {\n const pending = this.#pending.get(event.data.id);\n if (!pending) return;\n this.#pending.delete(event.data.id);\n if (event.data.type === \"error\") {\n pending.reject(new Error(event.data.error));\n } else if (event.data.type === \"exec\") {\n pending.resolve(event.data.rows);\n } else {\n pending.resolve(undefined);\n }\n };\n }\n\n #send<T>(message: object, transfer?: Transferable[]): Promise<T> {\n const id = String(++this.#nextId);\n const promise = new Promise<T>((resolve, reject) => {\n this.#pending.set(id, { resolve: (v) => resolve(v as T), reject });\n });\n this.#worker.postMessage({ ...message, id }, transfer ?? []);\n return promise;\n }\n\n loadMemory(buffer: ArrayBuffer): Promise<void> {\n return this.#send<void>({ type: \"load\", buffer }, [buffer]);\n }\n\n loadOpfs(filename: string): Promise<void> {\n return this.#send<void>({ type: \"load\", filename });\n }\n\n loadRanged(url: string): Promise<void> {\n return this.#send<void>({ type: \"load\", url });\n }\n\n createDriver(): Driver {\n const dialect = this;\n const connection: DatabaseConnection = {\n executeQuery<O>(query: CompiledQuery): Promise<QueryResult<O>> {\n return dialect\n .#send<\n O[]\n >({ type: \"exec\", sql: query.sql, bind: [...query.parameters] })\n .then((rows) => ({ rows }));\n },\n async *streamQuery() {\n throw new Error(\"Streaming not supported\");\n },\n };\n return {\n async init() {},\n async acquireConnection() {\n return connection;\n },\n async beginTransaction() {},\n async commitTransaction() {},\n async rollbackTransaction() {},\n async releaseConnection() {},\n async destroy() {\n dialect.#worker.terminate();\n },\n };\n }\n\n createQueryCompiler(): QueryCompiler {\n return new SqliteQueryCompiler();\n }\n\n createAdapter(): DialectAdapter {\n return new SqliteAdapter();\n }\n\n createIntrospector(db: Kysely<any>): DatabaseIntrospector {\n return new SqliteIntrospector(db);\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/browser.ts","../src/SqliteWorkerDialect.ts"],"sourcesContent":["import { SqlMikroORM, SqliteDriver } from \"@mikro-orm/sql\";\nimport { entities } from \"./schema.js\";\nimport { SqliteWorkerDialect } from \"./SqliteWorkerDialect.js\";\nimport { BaseClient, DEFAULT_URL, ETAG_KEY } from \"./BaseClient.js\";\n\nexport type Strategy =\n | { strategy?: \"memory\"; url?: string; force?: boolean }\n | { strategy: \"opfs\"; url?: string; force?: boolean }\n | { strategy: \"ranged\"; url?: string };\n\nasync function getOpfsEtag(): Promise<string | null> {\n try {\n const root = await navigator.storage.getDirectory();\n const handle = await root.getFileHandle(\".dol-etag\");\n return (await handle.getFile()).text();\n } catch {\n return null;\n }\n}\n\nasync function setOpfsEtag(etag: string): Promise<void> {\n const root = await navigator.storage.getDirectory();\n const handle = await root.getFileHandle(\".dol-etag\", { create: true });\n const writable = await handle.createWritable();\n await writable.write(etag);\n await writable.close();\n}\n\nasync function writeToOpfs(\n filename: string,\n buffer: ArrayBuffer,\n): Promise<void> {\n const root = await navigator.storage.getDirectory();\n const handle = await root.getFileHandle(filename, { create: true });\n const writable = await handle.createWritable();\n await writable.write(buffer);\n await writable.close();\n}\n\nexport class Client extends BaseClient<Strategy> {\n #dialect?: SqliteWorkerDialect;\n\n constructor(strategy: Strategy = {}) {\n super(strategy);\n }\n\n protected async getStoredEtag(_key: string): Promise<string | null> {\n return localStorage.getItem(ETAG_KEY);\n }\n\n protected async storeEtag(_key: string, etag: string): Promise<void> {\n localStorage.setItem(ETAG_KEY, etag);\n }\n\n async load(): Promise<void> {\n await this._orm?.close();\n this.#dialect?.createDriver().destroy();\n\n const strategy = this._strategy;\n const url = this._strategy.url ?? DEFAULT_URL;\n\n switch (strategy.strategy) {\n case \"ranged\": {\n this.#dialect = new SqliteWorkerDialect(\n new Worker(new URL(\"./workers/ranged.js\", import.meta.url), {\n type: \"module\",\n }),\n );\n await this.#dialect.loadRanged(url);\n break;\n }\n case \"opfs\": {\n this.#dialect = new SqliteWorkerDialect(\n new Worker(new URL(\"./workers/opfs.js\", import.meta.url), {\n type: \"module\",\n }),\n );\n const { force = false } = strategy;\n const remoteEtag = (await fetch(url, { method: \"HEAD\" })).headers.get(\n \"etag\",\n );\n const storedEtag = force ? null : await getOpfsEtag();\n\n if (force || storedEtag !== remoteEtag) {\n const buffer = await this.fetchDb(url);\n await writeToOpfs(\"dol.sqlite\", buffer);\n if (remoteEtag) await setOpfsEtag(remoteEtag);\n }\n\n await this.#dialect.loadOpfs(\"/dol.sqlite\");\n break;\n }\n case \"memory\":\n default: {\n this.#dialect = new SqliteWorkerDialect(\n new Worker(new URL(\"./workers/memory.js\", import.meta.url), {\n type: \"module\",\n }),\n );\n const { force = false } = strategy;\n const response = await fetch(url, {\n cache: force ? \"reload\" : \"default\",\n });\n if (!response.ok)\n throw new Error(`Failed to fetch database: ${response.status}`);\n const buffer = await response.arrayBuffer();\n await this.#dialect.loadMemory(buffer);\n }\n }\n\n this._orm = await SqlMikroORM.init({\n driver: SqliteDriver,\n driverOptions: this.#dialect,\n dbName: \"dol.sqlite\",\n entities,\n allowGlobalContext: true,\n });\n }\n}\n\nexport function createClient(strategy: Strategy = {}): Client {\n return new Client(strategy);\n}\n\nexport * from \"./schema.js\";\n","import { type SqlValue } from \"@sqlite.org/sqlite-wasm\";\nimport {\n SqliteAdapter,\n SqliteIntrospector,\n SqliteQueryCompiler,\n type CompiledQuery,\n type DatabaseConnection,\n type DatabaseIntrospector,\n type Dialect,\n type DialectAdapter,\n type Driver,\n type Kysely,\n type QueryCompiler,\n type QueryResult,\n} from \"kysely\";\n\ntype WorkerResponse =\n | { id: string; type: \"loaded\" }\n | { id: string; type: \"exec\"; rows: Record<string, SqlValue>[] }\n | { id: string; type: \"error\"; error: string };\n\nexport class SqliteWorkerDialect implements Dialect {\n readonly #worker: Worker;\n readonly #pending = new Map<\n string,\n {\n resolve: (value: Record<string, SqlValue>[] | undefined) => void;\n reject: (err: Error) => void;\n }\n >();\n #nextId = 0;\n\n constructor(worker: Worker) {\n this.#worker = worker;\n this.#worker.onmessage = (event: MessageEvent<WorkerResponse>) => {\n const pending = this.#pending.get(event.data.id);\n if (!pending) return;\n this.#pending.delete(event.data.id);\n if (event.data.type === \"error\") {\n pending.reject(new Error(event.data.error));\n } else if (event.data.type === \"exec\") {\n pending.resolve(event.data.rows);\n } else {\n pending.resolve(undefined);\n }\n };\n }\n\n #send<T>(message: object, transfer?: Transferable[]): Promise<T> {\n const id = String(++this.#nextId);\n const promise = new Promise<T>((resolve, reject) => {\n this.#pending.set(id, { resolve: (v) => resolve(v as T), reject });\n });\n this.#worker.postMessage({ ...message, id }, transfer ?? []);\n return promise;\n }\n\n loadMemory(buffer: ArrayBuffer): Promise<void> {\n return this.#send<void>({ type: \"load\", buffer }, [buffer]);\n }\n\n loadOpfs(filename: string): Promise<void> {\n return this.#send<void>({ type: \"load\", filename });\n }\n\n loadRanged(url: string): Promise<void> {\n return this.#send<void>({ type: \"load\", url });\n }\n\n createDriver(): Driver {\n const dialect = this;\n const connection: DatabaseConnection = {\n executeQuery<O>(query: CompiledQuery): Promise<QueryResult<O>> {\n return dialect\n .#send<\n O[]\n >({ type: \"exec\", sql: query.sql, bind: [...query.parameters] })\n .then((rows) => ({ rows }));\n },\n async *streamQuery() {\n throw new Error(\"Streaming not supported\");\n },\n };\n return {\n async init() {},\n async acquireConnection() {\n return connection;\n },\n async beginTransaction() {},\n async commitTransaction() {},\n async rollbackTransaction() {},\n async releaseConnection() {},\n async destroy() {\n dialect.#worker.terminate();\n },\n };\n }\n\n createQueryCompiler(): QueryCompiler {\n return new SqliteQueryCompiler();\n }\n\n createAdapter(): DialectAdapter {\n return new SqliteAdapter();\n }\n\n createIntrospector(db: Kysely<any>): DatabaseIntrospector {\n return new SqliteIntrospector(db);\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -353,6 +353,7 @@ var Outfit = class {
|
|
|
353
353
|
image;
|
|
354
354
|
equipment = new Collection(this);
|
|
355
355
|
treats = new Collection(this);
|
|
356
|
+
modifiers;
|
|
356
357
|
};
|
|
357
358
|
var FoldGroup = class {
|
|
358
359
|
id;
|
|
@@ -424,6 +425,10 @@ var FamiliarModifiers = class {
|
|
|
424
425
|
familiar;
|
|
425
426
|
modifiers;
|
|
426
427
|
};
|
|
428
|
+
var OutfitModifiers = class {
|
|
429
|
+
outfit;
|
|
430
|
+
modifiers;
|
|
431
|
+
};
|
|
427
432
|
var Meta = class {
|
|
428
433
|
id;
|
|
429
434
|
lastUpdate;
|
|
@@ -771,7 +776,8 @@ var OutfitSchema = new EntitySchema({
|
|
|
771
776
|
joinColumn: "outfit",
|
|
772
777
|
inverseJoinColumn: "equipment"
|
|
773
778
|
},
|
|
774
|
-
treats: { kind: "1:m", entity: () => OutfitTreat, mappedBy: "outfit" }
|
|
779
|
+
treats: { kind: "1:m", entity: () => OutfitTreat, mappedBy: "outfit" },
|
|
780
|
+
modifiers: { kind: "1:1", entity: () => OutfitModifiers, mappedBy: "outfit", nullable: true }
|
|
775
781
|
}
|
|
776
782
|
});
|
|
777
783
|
var FoldGroupSchema = new EntitySchema({
|
|
@@ -898,6 +904,20 @@ var FamiliarModifiersSchema = new EntitySchema({
|
|
|
898
904
|
modifiers: { type: "json" }
|
|
899
905
|
}
|
|
900
906
|
});
|
|
907
|
+
var OutfitModifiersSchema = new EntitySchema({
|
|
908
|
+
class: OutfitModifiers,
|
|
909
|
+
tableName: "outfitModifiers",
|
|
910
|
+
properties: {
|
|
911
|
+
outfit: {
|
|
912
|
+
kind: "1:1",
|
|
913
|
+
entity: () => Outfit,
|
|
914
|
+
primary: true,
|
|
915
|
+
fieldName: "outfit",
|
|
916
|
+
inversedBy: "modifiers"
|
|
917
|
+
},
|
|
918
|
+
modifiers: { type: "json" }
|
|
919
|
+
}
|
|
920
|
+
});
|
|
901
921
|
var MetaSchema = new EntitySchema({
|
|
902
922
|
class: Meta,
|
|
903
923
|
tableName: "meta",
|
|
@@ -930,6 +950,7 @@ var entities = [
|
|
|
930
950
|
EffectModifiersSchema,
|
|
931
951
|
SkillModifiersSchema,
|
|
932
952
|
FamiliarModifiersSchema,
|
|
953
|
+
OutfitModifiersSchema,
|
|
933
954
|
MetaSchema
|
|
934
955
|
];
|
|
935
956
|
|
|
@@ -997,6 +1018,7 @@ export {
|
|
|
997
1018
|
EffectModifiers,
|
|
998
1019
|
SkillModifiers,
|
|
999
1020
|
FamiliarModifiers,
|
|
1021
|
+
OutfitModifiers,
|
|
1000
1022
|
Meta,
|
|
1001
1023
|
ItemSchema,
|
|
1002
1024
|
EffectSchema,
|
|
@@ -1020,10 +1042,11 @@ export {
|
|
|
1020
1042
|
EffectModifiersSchema,
|
|
1021
1043
|
SkillModifiersSchema,
|
|
1022
1044
|
FamiliarModifiersSchema,
|
|
1045
|
+
OutfitModifiersSchema,
|
|
1023
1046
|
MetaSchema,
|
|
1024
1047
|
entities,
|
|
1025
1048
|
DEFAULT_URL,
|
|
1026
1049
|
ETAG_KEY,
|
|
1027
1050
|
BaseClient
|
|
1028
1051
|
};
|
|
1029
|
-
//# sourceMappingURL=chunk-
|
|
1052
|
+
//# sourceMappingURL=chunk-7PJW4ZFH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schema.ts","../src/BaseClient.ts"],"sourcesContent":["import { Collection, EntitySchema, type Ref } from \"@mikro-orm/core\";\n\n// ---- Enums ----------------------------------------------------------------\n\nexport enum ItemUse {\n Food = \"food\",\n Drink = \"drink\",\n Spleen = \"spleen\",\n Potion = \"potion\",\n Avatar = \"avatar\",\n Usable = \"usable\",\n Multiple = \"multiple\",\n Reusable = \"reusable\",\n Message = \"message\",\n Grow = \"grow\",\n PokePill = \"pokepill\",\n Hat = \"hat\",\n Weapon = \"weapon\",\n Sixgun = \"sixgun\",\n Offhand = \"offhand\",\n Container = \"container\",\n Shirt = \"shirt\",\n Pants = \"pants\",\n Accessory = \"accessory\",\n Familiar = \"familiar\",\n Sticker = \"sticker\",\n Card = \"card\",\n Folder = \"folder\",\n Bootspur = \"bootspur\",\n Bootskin = \"bootskin\",\n FoodHelper = \"food helper\",\n DrinkHelper = \"drink helper\",\n Zap = \"zap\",\n Sphere = \"sphere\",\n Guardian = \"guardian\",\n Combat = \"combat\",\n CombatReusable = \"combat reusable\",\n Single = \"single\",\n Solo = \"solo\",\n Curse = \"curse\",\n Bounty = \"bounty\",\n Package = \"package\",\n Candy = \"candy\",\n Candy1 = \"candy1\",\n Candy2 = \"candy2\",\n Chocolate = \"chocolate\",\n Fancy = \"fancy\",\n Paste = \"paste\",\n Smith = \"smith\",\n Cook = \"cook\",\n Mix = \"mix\",\n Matchable = \"matchable\",\n}\n\nexport enum EffectQuality {\n Good = \"good\",\n Neutral = \"neutral\",\n Bad = \"bad\",\n}\n\nexport enum SkillTag {\n Passive = \"passive\",\n Combat = \"combat\",\n NonCombat = \"nc\",\n Heal = \"heal\",\n ItemSummon = \"item\",\n Effect = \"effect\",\n Self = \"self\",\n Other = \"other\",\n Song = \"song\",\n Expression = \"expression\",\n Walk = \"walk\",\n}\n\nexport enum FamiliarCategory {\n Stat0 = \"stat0\",\n Stat1 = \"stat1\",\n Item0 = \"item0\",\n Item1 = \"item1\",\n Item2 = \"item2\",\n Item3 = \"item3\",\n Meat0 = \"meat0\",\n Combat0 = \"combat0\",\n Combat1 = \"combat1\",\n Drop = \"drop\",\n Block = \"block\",\n Delevel0 = \"delevel0\",\n Delevel1 = \"delevel1\",\n Hp0 = \"hp0\",\n Mp0 = \"mp0\",\n Meat1 = \"meat1\",\n Stat2 = \"stat2\",\n Other0 = \"other0\",\n Hp1 = \"hp1\",\n Mp1 = \"mp1\",\n Stat3 = \"stat3\",\n Other1 = \"other1\",\n Passive = \"passive\",\n Underwater = \"underwater\",\n Pokefam = \"pokefam\",\n Variable = \"variable\",\n}\n\nexport enum MonsterElement {\n BadSpelling = \"bad spelling\",\n Cold = \"cold\",\n Cute = \"cute\",\n Hot = \"hot\",\n Shadow = \"shadow\",\n Spooky = \"spooky\",\n Sleaze = \"sleaze\",\n Slime = \"slime\",\n Supercold = \"supercold\",\n Stench = \"stench\",\n}\n\nexport enum MonsterDropCategory {\n PickpocketOnly = \"p\",\n NoPickpocket = \"n\",\n Conditional = \"c\",\n Fixed = \"f\",\n Accordion = \"a\",\n Multi = \"m\",\n}\n\nexport enum LocationDifficulty {\n None = \"none\",\n Unknown = \"unknown\",\n Low = \"low\",\n Medium = \"medium\",\n High = \"high\",\n}\n\nexport enum LocationEnvironment {\n None = \"none\",\n Indoor = \"indoor\",\n Outdoor = \"outdoor\",\n Underground = \"underground\",\n Underwater = \"underwater\",\n}\n\nexport enum ConsumableQuality {\n None = \"none\",\n Crappy = \"crappy\",\n Decent = \"decent\",\n Good = \"good\",\n Awesome = \"awesome\",\n EPIC = \"EPIC\",\n SuperEPIC = \"super_EPIC\",\n SuperUltraEPIC = \"super_ultra_EPIC\",\n SuperUltraMegaEPIC = \"super_ultra_mega_EPIC\",\n SuperUltraMegaTurboEPIC = \"super_ultra_mega_turbo_EPIC\",\n Quest = \"quest\",\n Changing = \"changing\",\n Drippy = \"drippy\",\n}\n\n// ---- Entity Classes -------------------------------------------------------\n\nexport class Item {\n id!: number;\n name!: string;\n descid?: number;\n image!: string;\n uses!: ItemUse[];\n quest!: boolean;\n gift!: boolean;\n tradeable!: boolean;\n discardable!: boolean;\n autosell!: number;\n plural?: string;\n ambiguous!: boolean;\n // relations\n equipment?: Equipment;\n consumable?: Consumable;\n modifiers?: ItemModifiers;\n monsterDrops = new Collection<MonsterDrop>(this);\n outfitEquipment = new Collection<Outfit>(this);\n outfitTreats = new Collection<OutfitTreat>(this);\n ingredients = new Collection<Ingredient>(this);\n foldGroups = new Collection<FoldGroup>(this);\n zapGroups = new Collection<ZapGroup>(this);\n}\n\nexport class Effect {\n id!: number;\n name!: string;\n descid?: string;\n image!: string;\n quality!: EffectQuality;\n nohookah!: boolean;\n nopvp!: boolean;\n noremove!: boolean;\n song!: boolean;\n actions!: string[];\n ambiguous!: boolean;\n modifiers?: EffectModifiers;\n}\n\nexport class Skill {\n id!: number;\n name!: string;\n image!: string;\n tags!: SkillTag[];\n mpCost!: number;\n duration!: number;\n guildLevel?: number;\n maxLevel?: number;\n permable!: boolean;\n ambiguous!: boolean;\n modifiers?: SkillModifiers;\n}\n\nexport class Familiar {\n id!: number;\n name!: string;\n image!: string;\n categories!: FamiliarCategory[];\n larva?: Item;\n equipment?: Item;\n cageMatch!: number;\n scavengerHunt!: number;\n obstacleCourse!: number;\n hideAndSeek!: number;\n attributes!: string[];\n modifiers?: FamiliarModifiers;\n}\n\nexport class Monster {\n id!: number;\n name!: string;\n image!: string[];\n ambiguous!: boolean;\n article!: string;\n attack!: string;\n boss!: boolean;\n defence!: string;\n drippy!: boolean;\n element?: MonsterElement;\n elementalAttack?: MonsterElement;\n elementalDefence?: MonsterElement;\n elementalResistance!: string;\n experience?: string;\n free!: boolean;\n ghost!: boolean;\n groupSize!: number;\n hp!: string;\n initiative!: string;\n itemBlockChance!: number;\n lucky!: boolean;\n manuel?: string;\n meat?: number;\n meatExpression?: string;\n monsterLevelMultiplier!: string;\n nobanish!: boolean;\n nocopy!: boolean;\n nomanuel!: boolean;\n nowander!: boolean;\n nowish!: boolean;\n phylum!: string;\n physicalResistance!: string;\n poison?: string;\n scaling!: string;\n scalingCap!: string;\n scalingFloor!: string;\n skeleton!: boolean;\n skillBlockChance!: number;\n snake!: boolean;\n spellBlockChance!: number;\n sprinkles!: [number | string, number | string];\n superlikely!: boolean;\n ultrarare!: boolean;\n wanderer!: boolean;\n wiki?: string;\n wish!: boolean;\n zombie!: boolean;\n // relations\n drops = new Collection<MonsterDrop>(this);\n nativeLocations = new Collection<NativeMonster>(this);\n}\n\nexport class Location {\n name!: string;\n id?: number;\n zone!: string;\n url!: string;\n difficulty!: LocationDifficulty;\n environment!: LocationEnvironment;\n statRequirement!: number;\n waterLevel?: number;\n overdrunk!: boolean;\n nowander!: boolean;\n combatRate!: number;\n // relations\n nativeMonsters = new Collection<NativeMonster>(this);\n}\n\nexport class Path {\n id!: number;\n name!: string;\n enumName!: string;\n image?: string;\n isAvatar!: boolean;\n article?: string;\n pointsPreference?: string;\n maximumPoints!: number;\n bucket!: boolean;\n stomachCapacity!: number;\n liverCapacity!: number;\n spleenCapacity!: number;\n classes = new Collection<AscensionClass>(this);\n}\n\nexport class AscensionClass {\n id!: number;\n name!: string;\n enumName!: string;\n image?: string;\n primeStatIndex!: number;\n path?: Path;\n stun?: string;\n stomachCapacity?: number;\n liverCapacity?: number;\n spleenCapacity?: number;\n}\n\nexport class Equipment {\n // PK is a FK to Item. Access the id via equipment.item.id\n item!: Ref<Item>;\n power!: number;\n musRequirement!: number;\n mysRequirement!: number;\n moxRequirement!: number;\n type?: string;\n hands?: number;\n}\n\nexport class Consumable {\n // PK is a FK to Item. Access the id via consumable.item.id\n item!: Ref<Item>;\n stomach!: number;\n liver!: number;\n spleen!: number;\n levelRequirement!: number;\n quality?: ConsumableQuality;\n adventureRange!: string;\n adventures!: number;\n muscle!: number;\n muscleRange!: string;\n mysticality!: number;\n mysticalityRange!: string;\n moxie!: number;\n moxieRange!: string;\n notes?: string;\n}\n\nexport class Concoction {\n id!: number;\n item!: Item;\n methods!: string[];\n comment?: string;\n ingredients = new Collection<Ingredient>(this);\n}\n\nexport class Outfit {\n id!: number;\n name!: string;\n image!: string;\n equipment = new Collection<Item>(this);\n treats = new Collection<OutfitTreat>(this);\n 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 OutfitModifiers {\n outfit!: Ref<Outfit>;\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 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 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 OutfitModifiersSchema,\n MetaSchema,\n];\n","import { type EntityManager, MikroORM } from \"@mikro-orm/core\";\n\nexport const DEFAULT_URL = \"https://data.loathers.net/dol.sqlite\";\nexport const ETAG_KEY = \"dol-etag\";\n\nexport abstract class BaseClient<S> {\n protected _orm?: MikroORM;\n protected readonly _strategy: S;\n\n constructor(strategy: S) {\n this._strategy = strategy;\n }\n\n get query(): EntityManager {\n if (!this._orm) throw new Error(\"Call await client.load() before querying\");\n return this._orm.em;\n }\n\n abstract load(): Promise<void>;\n\n protected async fetchDb(url: string): Promise<ArrayBuffer> {\n const response = await fetch(url);\n if (!response.ok)\n throw new Error(`Failed to fetch database: ${response.status}`);\n return response.arrayBuffer();\n }\n\n protected abstract getStoredEtag(key: string): Promise<string | null>;\n protected abstract storeEtag(key: string, etag: string): Promise<void>;\n\n protected async syncIfNeeded(\n url: string,\n key: string,\n apply: (data: ArrayBuffer) => Promise<void>,\n force = false,\n ): Promise<void> {\n const storedEtag = force ? null : await this.getStoredEtag(key);\n const head = await fetch(url, { method: \"HEAD\" });\n const remoteEtag = head.headers.get(\"etag\");\n\n if (force || storedEtag !== remoteEtag) {\n await apply(await this.fetchDb(url));\n if (remoteEtag) await this.storeEtag(key, remoteEtag);\n }\n }\n}\n"],"mappings":"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","names":["ItemUse","EffectQuality","SkillTag","FamiliarCategory","MonsterElement","MonsterDropCategory","LocationDifficulty","LocationEnvironment","ConsumableQuality"]}
|
package/dist/node.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { B as BaseClient } from './schema-
|
|
2
|
-
export { A as AscensionClass, a as AscensionClassSchema, C as Concoction, b as ConcoctionSchema, c as Consumable, d as ConsumableQuality, e as ConsumableSchema, E as Effect, f as EffectModifiers, g as EffectModifiersSchema, h as EffectQuality, i as EffectSchema, j as Equipment, k as EquipmentSchema, F as Familiar, l as FamiliarCategory, m as FamiliarModifiers, n as FamiliarModifiersSchema, o as FamiliarSchema, p as FoldGroup, q as FoldGroupSchema, I as Ingredient, r as IngredientSchema, s as Item, t as ItemModifiers, u as ItemModifiersSchema, v as ItemSchema, w as ItemUse, L as Location, x as LocationDifficulty, y as LocationEnvironment, z as LocationSchema, M as Meta, D as MetaSchema, G as 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
|
|
1
|
+
import { B as BaseClient } from './schema-2LnHMFWq.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 OutfitModifiers, U as OutfitModifiersSchema, V as OutfitSchema, W as OutfitTreat, X as OutfitTreatSchema, Y as Path, Z as PathSchema, _ as Skill, $ as SkillModifiers, a0 as SkillModifiersSchema, a1 as SkillSchema, a2 as SkillTag, a3 as ZapGroup, a4 as ZapGroupSchema, a5 as entities, a6 as getModifier, a7 as getModifiers } from './schema-2LnHMFWq.js';
|
|
3
3
|
import '@mikro-orm/core';
|
|
4
4
|
|
|
5
5
|
type Strategy = {
|
package/dist/node.js
CHANGED
|
@@ -44,6 +44,8 @@ import {
|
|
|
44
44
|
NativeMonster,
|
|
45
45
|
NativeMonsterSchema,
|
|
46
46
|
Outfit,
|
|
47
|
+
OutfitModifiers,
|
|
48
|
+
OutfitModifiersSchema,
|
|
47
49
|
OutfitSchema,
|
|
48
50
|
OutfitTreat,
|
|
49
51
|
OutfitTreatSchema,
|
|
@@ -59,7 +61,7 @@ import {
|
|
|
59
61
|
entities,
|
|
60
62
|
getModifier,
|
|
61
63
|
getModifiers
|
|
62
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-7PJW4ZFH.js";
|
|
63
65
|
|
|
64
66
|
// src/node.ts
|
|
65
67
|
import { existsSync } from "fs";
|
|
@@ -161,6 +163,8 @@ export {
|
|
|
161
163
|
NativeMonster,
|
|
162
164
|
NativeMonsterSchema,
|
|
163
165
|
Outfit,
|
|
166
|
+
OutfitModifiers,
|
|
167
|
+
OutfitModifiersSchema,
|
|
164
168
|
OutfitSchema,
|
|
165
169
|
OutfitTreat,
|
|
166
170
|
OutfitTreatSchema,
|
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/node.ts"],"sourcesContent":["import { existsSync } from \"node:fs\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport envPaths from \"env-paths\";\nimport { SqlMikroORM, SqliteDriver, NodeSqliteDialect } from \"@mikro-orm/sql\";\nimport { entities } from \"./schema.js\";\nimport { BaseClient, DEFAULT_URL } from \"./BaseClient.js\";\n\nexport type Strategy =\n | { strategy?: \"url\"; url?: string; force?: boolean }\n | { strategy: \"local\"; path: string };\n\nexport class Client extends BaseClient<Strategy> {\n constructor(strategy: Strategy = {}) {\n super(strategy);\n }\n\n protected async getStoredEtag(key: string): Promise<string | null> {\n return existsSync(key) ? readFile(key, \"utf-8\") : null;\n }\n\n protected async storeEtag(key: string, etag: string): Promise<void> {\n await writeFile(key, etag, \"utf-8\");\n }\n\n private async resolveDbPath(): Promise<string> {\n const strategy = this._strategy;\n switch (strategy.strategy) {\n case \"local\":\n return strategy.path;\n\n default:\n case \"url\": {\n const { url = DEFAULT_URL, force = false } = strategy;\n\n const cacheDir = envPaths(\"data-of-loathing\").cache;\n const dbPath = join(cacheDir, \"dol.sqlite\");\n const etagPath = join(cacheDir, \"etag\");\n await mkdir(cacheDir, { recursive: true });\n\n await this.syncIfNeeded(\n url,\n etagPath,\n async (data) => {\n await writeFile(dbPath, Buffer.from(data));\n },\n force,\n );\n\n return dbPath;\n }\n }\n }\n\n async load(): Promise<void> {\n await this._orm?.close();\n const path = await this.resolveDbPath();\n this._orm = await SqlMikroORM.init({\n driver: SqliteDriver,\n driverOptions: new NodeSqliteDialect(path),\n dbName: path,\n entities,\n allowGlobalContext: true,\n });\n }\n}\n\nexport function createClient(strategy: Strategy = {}): Client {\n return new Client(strategy);\n}\n\nexport * from \"./schema.js\";\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/node.ts"],"sourcesContent":["import { existsSync } from \"node:fs\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport envPaths from \"env-paths\";\nimport { SqlMikroORM, SqliteDriver, NodeSqliteDialect } from \"@mikro-orm/sql\";\nimport { entities } from \"./schema.js\";\nimport { BaseClient, DEFAULT_URL } from \"./BaseClient.js\";\n\nexport type Strategy =\n | { strategy?: \"url\"; url?: string; force?: boolean }\n | { strategy: \"local\"; path: string };\n\nexport class Client extends BaseClient<Strategy> {\n constructor(strategy: Strategy = {}) {\n super(strategy);\n }\n\n protected async getStoredEtag(key: string): Promise<string | null> {\n return existsSync(key) ? readFile(key, \"utf-8\") : null;\n }\n\n protected async storeEtag(key: string, etag: string): Promise<void> {\n await writeFile(key, etag, \"utf-8\");\n }\n\n private async resolveDbPath(): Promise<string> {\n const strategy = this._strategy;\n switch (strategy.strategy) {\n case \"local\":\n return strategy.path;\n\n default:\n case \"url\": {\n const { url = DEFAULT_URL, force = false } = strategy;\n\n const cacheDir = envPaths(\"data-of-loathing\").cache;\n const dbPath = join(cacheDir, \"dol.sqlite\");\n const etagPath = join(cacheDir, \"etag\");\n await mkdir(cacheDir, { recursive: true });\n\n await this.syncIfNeeded(\n url,\n etagPath,\n async (data) => {\n await writeFile(dbPath, Buffer.from(data));\n },\n force,\n );\n\n return dbPath;\n }\n }\n }\n\n async load(): Promise<void> {\n await this._orm?.close();\n const path = await this.resolveDbPath();\n this._orm = await SqlMikroORM.init({\n driver: SqliteDriver,\n driverOptions: new NodeSqliteDialect(path),\n dbName: path,\n entities,\n allowGlobalContext: true,\n });\n }\n}\n\nexport function createClient(strategy: Strategy = {}): Client {\n return new Client(strategy);\n}\n\nexport * from \"./schema.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,kBAAkB;AAC3B,SAAS,OAAO,UAAU,iBAAiB;AAC3C,SAAS,YAAY;AACrB,OAAO,cAAc;AACrB,SAAS,aAAa,cAAc,yBAAyB;AAQtD,IAAM,SAAN,cAAqB,WAAqB;AAAA,EAC/C,YAAY,WAAqB,CAAC,GAAG;AACnC,UAAM,QAAQ;AAAA,EAChB;AAAA,EAEA,MAAgB,cAAc,KAAqC;AACjE,WAAO,WAAW,GAAG,IAAI,SAAS,KAAK,OAAO,IAAI;AAAA,EACpD;AAAA,EAEA,MAAgB,UAAU,KAAa,MAA6B;AAClE,UAAM,UAAU,KAAK,MAAM,OAAO;AAAA,EACpC;AAAA,EAEA,MAAc,gBAAiC;AAC7C,UAAM,WAAW,KAAK;AACtB,YAAQ,SAAS,UAAU;AAAA,MACzB,KAAK;AACH,eAAO,SAAS;AAAA,MAElB;AAAA,MACA,KAAK,OAAO;AACV,cAAM,EAAE,MAAM,aAAa,QAAQ,MAAM,IAAI;AAE7C,cAAM,WAAW,SAAS,kBAAkB,EAAE;AAC9C,cAAM,SAAS,KAAK,UAAU,YAAY;AAC1C,cAAM,WAAW,KAAK,UAAU,MAAM;AACtC,cAAM,MAAM,UAAU,EAAE,WAAW,KAAK,CAAC;AAEzC,cAAM,KAAK;AAAA,UACT;AAAA,UACA;AAAA,UACA,OAAO,SAAS;AACd,kBAAM,UAAU,QAAQ,OAAO,KAAK,IAAI,CAAC;AAAA,UAC3C;AAAA,UACA;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,OAAsB;AAC1B,UAAM,KAAK,MAAM,MAAM;AACvB,UAAM,OAAO,MAAM,KAAK,cAAc;AACtC,SAAK,OAAO,MAAM,YAAY,KAAK;AAAA,MACjC,QAAQ;AAAA,MACR,eAAe,IAAI,kBAAkB,IAAI;AAAA,MACzC,QAAQ;AAAA,MACR;AAAA,MACA,oBAAoB;AAAA,IACtB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,aAAa,WAAqB,CAAC,GAAW;AAC5D,SAAO,IAAI,OAAO,QAAQ;AAC5B;","names":[]}
|
|
@@ -352,6 +352,7 @@ declare class Outfit {
|
|
|
352
352
|
image: string;
|
|
353
353
|
equipment: Collection<Item, object>;
|
|
354
354
|
treats: Collection<OutfitTreat, object>;
|
|
355
|
+
modifiers?: OutfitModifiers;
|
|
355
356
|
}
|
|
356
357
|
declare class FoldGroup {
|
|
357
358
|
id: number;
|
|
@@ -393,7 +394,7 @@ type Modifier = {
|
|
|
393
394
|
name: string;
|
|
394
395
|
value: string;
|
|
395
396
|
};
|
|
396
|
-
type HasModifiers = Item | Effect | Skill | Familiar;
|
|
397
|
+
type HasModifiers = Item | Effect | Skill | Familiar | Outfit;
|
|
397
398
|
declare function getModifier(modifiers: Modifier[] | HasModifiers, name: string): string | undefined;
|
|
398
399
|
declare function getModifiers(modifiers: Modifier[] | HasModifiers, name: string): string[];
|
|
399
400
|
declare function getModifiers(modifiers: Modifier[] | HasModifiers, names: string[]): (string | undefined)[][];
|
|
@@ -413,6 +414,10 @@ declare class FamiliarModifiers {
|
|
|
413
414
|
familiar: Ref<Familiar>;
|
|
414
415
|
modifiers: Modifier[];
|
|
415
416
|
}
|
|
417
|
+
declare class OutfitModifiers {
|
|
418
|
+
outfit: Ref<Outfit>;
|
|
419
|
+
modifiers: Modifier[];
|
|
420
|
+
}
|
|
416
421
|
declare class Meta {
|
|
417
422
|
id: number;
|
|
418
423
|
lastUpdate: Date;
|
|
@@ -440,7 +445,8 @@ declare const ItemModifiersSchema: EntitySchema<ItemModifiers, never, _mikro_orm
|
|
|
440
445
|
declare const EffectModifiersSchema: EntitySchema<EffectModifiers, never, _mikro_orm_core.EntityCtor<EffectModifiers>>;
|
|
441
446
|
declare const SkillModifiersSchema: EntitySchema<SkillModifiers, never, _mikro_orm_core.EntityCtor<SkillModifiers>>;
|
|
442
447
|
declare const FamiliarModifiersSchema: EntitySchema<FamiliarModifiers, never, _mikro_orm_core.EntityCtor<FamiliarModifiers>>;
|
|
448
|
+
declare const OutfitModifiersSchema: EntitySchema<OutfitModifiers, never, _mikro_orm_core.EntityCtor<OutfitModifiers>>;
|
|
443
449
|
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>>)[];
|
|
450
|
+
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<OutfitModifiers, never, _mikro_orm_core.EntityCtor<OutfitModifiers>> | EntitySchema<Meta, never, _mikro_orm_core.EntityCtor<Meta>>)[];
|
|
445
451
|
|
|
446
|
-
export {
|
|
452
|
+
export { SkillModifiers 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, OutfitModifiers as T, OutfitModifiersSchema as U, OutfitSchema as V, OutfitTreat as W, OutfitTreatSchema as X, Path as Y, PathSchema as Z, Skill as _, AscensionClassSchema as a, SkillModifiersSchema as a0, SkillSchema as a1, SkillTag as a2, ZapGroup as a3, ZapGroupSchema as a4, entities as a5, getModifier as a6, getModifiers as a7, ConcoctionSchema as b, Consumable as c, ConsumableQuality as d, ConsumableSchema as e, EffectModifiers as f, EffectModifiersSchema as g, EffectQuality as h, EffectSchema as i, Equipment as j, EquipmentSchema as k, FamiliarCategory as l, FamiliarModifiers as m, FamiliarModifiersSchema as n, FamiliarSchema as o, FoldGroup as p, FoldGroupSchema as q, IngredientSchema as r, Item as s, ItemModifiers as t, ItemModifiersSchema as u, ItemSchema as v, ItemUse as w, LocationDifficulty as x, LocationEnvironment as y, LocationSchema as z };
|
package/package.json
CHANGED
|
@@ -1 +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"]}
|