@hazae41/kdbx
Version:
Rust-like KeePass (KDBX 4) file format for TypeScript
1 lines • 38.8 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../../../../../../../src/mods/kdbx/headers/inner/markup/index.ts"],"sourcesContent":["import { Nullable } from \"libs/nullable/index.js\"\nimport { Data } from \"../data/index.js\"\n\nexport class KeePassFile {\n\n constructor(\n readonly document: Document\n ) { }\n\n getMetaOrThrow() {\n const element = this.document.querySelector(\":scope > Meta\")\n\n if (element == null)\n throw new Error()\n\n return new KeePassFile.Meta(element)\n }\n\n getRootOrThrow() {\n const element = this.document.querySelector(\":scope > Root\")\n\n if (element == null)\n throw new Error()\n\n return new KeePassFile.Root(element)\n }\n\n}\n\nexport namespace KeePassFile {\n\n export class Meta {\n\n constructor(\n readonly element: Element\n ) { }\n\n getDatabaseNameOrThrow() {\n const element = this.element.querySelector(\":scope > DatabaseName\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsString(element)\n }\n\n getDatabaseNameChangedOrThrow() {\n const element = this.element.querySelector(\":scope > DatabaseNameChanged\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsDate(element)\n }\n\n getGeneratorOrThrow() {\n const element = this.element.querySelector(\":scope > Generator\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsString(element)\n }\n\n getHistoryMaxItemsOrThrow() {\n const element = this.element.querySelector(\":scope > HistoryMaxItems\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsInteger(element)\n }\n\n getHistoryMaxSizeOrThrow() {\n const element = this.element.querySelector(\":scope > HistoryMaxSize\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsInteger(element)\n }\n\n getRecycleBinEnabledOrThrow() {\n const element = this.element.querySelector(\":scope > RecycleBinEnabled\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsBoolean(element)\n }\n\n getRecycleBinUuidOrThrow() {\n const element = this.element.querySelector(\":scope > RecycleBinUUID\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsString(element)\n }\n\n getRecycleBinChangedOrThrow() {\n const element = this.element.querySelector(\":scope > RecycleBinChanged\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsDate(element)\n }\n\n getSettingsChangedOrThrow() {\n const element = this.element.querySelector(\":scope > SettingsChanged\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsDate(element)\n }\n\n getDatabaseDescriptionOrThrow() {\n const element = this.element.querySelector(\":scope > DatabaseDescription\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsString(element)\n }\n\n getDatabaseDescriptionChangedOrThrow() {\n const element = this.element.querySelector(\":scope > DatabaseDescriptionChanged\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsDate(element)\n }\n\n getDefaultUserNameOrThrow() {\n const element = this.element.querySelector(\":scope > DefaultUserName\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsString(element)\n }\n\n getDefaultUserNameChangedOrThrow() {\n const element = this.element.querySelector(\":scope > DefaultUserNameChanged\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsDate(element)\n }\n\n getColorOrThrow() {\n const element = this.element.querySelector(\":scope > Color\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsString(element)\n }\n\n getDirectEntryTemplatesGroupOrThrow() {\n const element = this.element.querySelector(\":scope > EntryTemplatesGroup\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsString(element)\n }\n\n getDirectEntryTemplatesGroupChangedOrThrow() {\n const element = this.element.querySelector(\":scope > EntryTemplatesGroupChanged\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsDate(element)\n }\n\n }\n\n export class Root {\n\n constructor(\n readonly element: Element\n ) { }\n\n *getGroups() {\n const elements = this.element.querySelectorAll(`Group`);\n\n for (const element of elements)\n yield new Group(element)\n\n return\n }\n\n getGroupByUuidOrThrow(uuid: string) {\n const elements = this.element.querySelectorAll(`Group`);\n\n for (const element of elements) {\n const group = new Group(element);\n\n if (group.getUuidOrThrow().get() === uuid)\n return group;\n\n continue\n }\n\n throw new Error()\n }\n\n getGroupByUuidOrNull(uuid: string) {\n const elements = this.element.querySelectorAll(`Group`);\n\n for (const element of elements) {\n const group = new Group(element);\n\n if (group.getUuidOrThrow().get() === uuid)\n return group;\n\n continue\n }\n\n return\n }\n\n *getDirectGroups() {\n const elements = this.element.querySelectorAll(`:scope > Group`);\n\n for (const element of elements)\n yield new Group(element)\n\n return\n }\n\n getDirectGroupByIndexOrThrow(index: number) {\n const element = this.element.querySelector(`:scope > Group:nth-of-type(${index + 1})`);\n\n if (element == null)\n throw new Error();\n\n return new Group(element);\n }\n\n getDirectGroupByIndexOrNull(index: number) {\n const element = this.element.querySelector(`:scope > Group:nth-of-type(${index + 1})`);\n\n if (element == null)\n return\n\n return new Group(element)\n }\n\n getDirectGroupByUuidOrThrow(uuid: string) {\n const elements = this.element.querySelectorAll(`:scope > Group`);\n\n for (const element of elements) {\n const group = new Group(element);\n\n if (group.getUuidOrThrow().get() === uuid)\n return group;\n\n continue\n }\n\n throw new Error();\n }\n\n getDirectGroupByUuidOrNull(uuid: string) {\n const elements = this.element.querySelectorAll(`:scope > Group`);\n\n for (const element of elements) {\n const group = new Group(element);\n\n if (group.getUuidOrThrow().get() === uuid)\n return group;\n\n continue\n }\n\n return\n }\n\n }\n\n export class Group {\n\n constructor(\n readonly element: Element\n ) { }\n\n moveOrThrow(group: Group) {\n if (this.element.parentNode === group.element)\n return\n\n this.element.parentNode?.removeChild(this.element)\n\n group.element.appendChild(this.element)\n\n this.getTimesOrThrow().getLocationChangedOrThrow().setOrThrow(new Date())\n\n group.getTimesOrThrow().getLastModificationTimeOrThrow().setOrThrow(new Date())\n }\n\n getNameOrThrow() {\n const element = this.element.querySelector(\":scope > Name\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsString(element)\n }\n\n getUuidOrThrow() {\n const element = this.element.querySelector(\":scope > UUID\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsString(element)\n }\n\n getTimesOrThrow() {\n const element = this.element.querySelector(\":scope > Times\")\n\n if (element == null)\n throw new Error()\n\n return new Times(element)\n }\n\n getIconIdOrThrow() {\n const element = this.element.querySelector(\":scope > IconID\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsInteger(element)\n }\n\n getEnableAutoTypeOrThrow() {\n const element = this.element.querySelector(\":scope > EnableAutoType\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsBoolean(element)\n }\n\n getEnableSearchingOrThrow() {\n const element = this.element.querySelector(\":scope > EnableSearching\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsBoolean(element)\n }\n\n *getDirectGroups() {\n const elements = this.element.querySelectorAll(`:scope > Group`);\n\n for (const element of elements)\n yield new Group(element)\n\n return\n }\n\n getDirectGroupByIndexOrThrow(index: number) {\n const element = this.element.querySelector(`:scope > Group:nth-of-type(${index + 1})`);\n\n if (element == null)\n throw new Error();\n\n return new Group(element);\n }\n\n getDirectGroupByIndexOrNull(index: number) {\n const element = this.element.querySelector(`:scope > Group:nth-of-type(${index + 1})`);\n\n if (element == null)\n return\n\n return new Group(element)\n }\n\n getDirectGroupByUuidOrThrow(uuid: string) {\n const elements = this.element.querySelectorAll(`:scope > Group`);\n\n for (const element of elements) {\n const group = new Group(element);\n\n if (group.getUuidOrThrow().get() === uuid)\n return group;\n\n continue\n }\n\n throw new Error();\n }\n\n getDirectGroupByUuidOrNull(uuid: string) {\n const elements = this.element.querySelectorAll(`:scope > Group`);\n\n for (const element of elements) {\n const group = new Group(element);\n\n if (group.getUuidOrThrow().get() === uuid)\n return group;\n\n continue\n }\n\n return\n }\n\n *getDirectEntries() {\n const elements = this.element.querySelectorAll(`:scope > Entry`);\n\n for (const element of elements)\n yield new Entry(element)\n\n return\n }\n\n getDirectEntryByIndexOrThrow(index: number) {\n const element = this.element.querySelector(`:scope > Entry:nth-of-type(${index + 1})`);\n\n if (element == null)\n throw new Error();\n\n return new Entry(element);\n }\n\n getDirectEntryByIndexOrNull(index: number) {\n const element = this.element.querySelector(`:scope > Entry:nth-of-type(${index + 1})`);\n\n if (element == null)\n return\n\n return new Entry(element)\n }\n\n getDirectEntryByUuidOrThrow(uuid: string) {\n const elements = this.element.querySelectorAll(`:scope > Entry`);\n\n for (const element of elements) {\n const entry = new Entry(element);\n\n if (entry.getUuidOrThrow().get() === uuid)\n return entry;\n\n continue\n }\n\n throw new Error();\n }\n\n getDirectEntryByUuidOrNull(uuid: string) {\n const elements = this.element.querySelectorAll(`:scope > Entry`);\n\n for (const element of elements) {\n const entry = new Entry(element);\n\n if (entry.getUuidOrThrow().get() === uuid)\n return entry;\n\n continue\n }\n\n return\n }\n\n }\n\n export class Times {\n\n constructor(\n readonly element: Element\n ) { }\n\n getLastModificationTimeOrThrow() {\n const element = this.element.querySelector(\":scope > LastModificationTime\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsDate(element)\n }\n\n getCreationTimeOrThrow() {\n const element = this.element.querySelector(\":scope > CreationTime\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsDate(element)\n }\n\n getLastAccessTimeOrThrow() {\n const element = this.element.querySelector(\":scope > LastAccessTime\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsDate(element)\n }\n\n getExpiresOrThrow() {\n const element = this.element.querySelector(\":scope > Expires\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsBoolean(element)\n }\n\n getUsageCountOrThrow() {\n const element = this.element.querySelector(\":scope > UsageCount\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsInteger(element)\n }\n\n getLocationChangedOrThrow() {\n const element = this.element.querySelector(\":scope > LocationChanged\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsDate(element)\n }\n\n }\n\n export class Entry {\n\n constructor(\n readonly element: Element\n ) { }\n\n moveOrThrow(group: Group) {\n if (this.element.parentNode === group.element)\n return\n\n this.element.parentNode?.removeChild(this.element)\n\n group.element.appendChild(this.element)\n\n this.getTimesOrThrow().getLocationChangedOrThrow().setOrThrow(new Date())\n\n group.getTimesOrThrow().getLastModificationTimeOrThrow().setOrThrow(new Date())\n }\n\n moveToTrashOrThrow() {\n const file = new KeePassFile(this.element.ownerDocument)\n const meta = file.getMetaOrThrow()\n const root = file.getRootOrThrow()\n\n const recybleBinEnabled = meta.getRecycleBinEnabledOrThrow().get()\n\n if (!recybleBinEnabled)\n throw new Error(\"Recycle bin is not enabled\")\n\n const recycleBinUuid = meta.getRecycleBinUuidOrThrow().get()\n const recycleBinGroup = root.getGroupByUuidOrThrow(recycleBinUuid)\n\n this.moveOrThrow(recycleBinGroup)\n\n meta.getRecycleBinChangedOrThrow().setOrThrow(new Date())\n }\n\n cloneToHistoryOrThrow() {\n return this.getHistoryOrNew().insertAndCleanOrThrow(this)\n }\n\n createStringOrThrow(key: string, value: string) {\n const { ownerDocument } = this.element\n\n const $string = ownerDocument.createElement(\"String\");\n this.element.appendChild($string);\n\n const $key = ownerDocument.createElement(\"Key\");\n $key.innerHTML = key;\n $string.appendChild($key);\n\n const $value = ownerDocument.createElement(\"Value\");\n $value.innerHTML = value;\n $string.appendChild($value);\n\n this.getTimesOrThrow().getLastModificationTimeOrThrow().setOrThrow(new Date())\n\n return new String($string)\n }\n\n getUuidOrThrow() {\n const element = this.element.querySelector(\":scope > UUID\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsString(element)\n }\n\n getTimesOrThrow() {\n const element = this.element.querySelector(\":scope > Times\")\n\n if (element == null)\n throw new Error()\n\n return new Times(element)\n }\n\n getHistoryOrThrow() {\n const element = this.element.querySelector(\":scope > History\")\n\n if (element == null)\n throw new Error()\n\n return new History(element)\n }\n\n getHistoryOrNull() {\n const element = this.element.querySelector(\":scope > History\")\n\n if (element == null)\n return\n\n return new History(element)\n }\n\n getHistoryOrNew() {\n const { ownerDocument } = this.element\n\n const previous = this.element.querySelector(\":scope > History\")\n\n if (previous != null)\n return new History(previous)\n\n const created = ownerDocument.createElement(\"History\");\n\n this.element.appendChild(created);\n\n return new History(created);\n }\n\n *getDirectStrings() {\n const elements = this.element.querySelectorAll(`:scope > String`);\n\n for (const element of elements)\n yield new String(element)\n\n return\n }\n\n getDirectStringByIndexOrThrow(index: number) {\n const element = this.element.querySelector(`:scope > String:nth-of-type(${index + 1})`);\n\n if (element == null)\n throw new Error();\n\n return new String(element);\n }\n\n getDirectStringByIndexOrNull(index: number) {\n const element = this.element.querySelector(`:scope > String:nth-of-type(${index + 1})`);\n\n if (element == null)\n return\n\n return new String(element)\n }\n\n getDirectStringByKeyOrThrow(key: string) {\n const elements = this.element.querySelectorAll(`:scope > String`);\n\n for (const element of elements) {\n const string = new String(element);\n\n if (string.getKeyOrThrow().get() === key)\n return string;\n\n continue\n }\n\n throw new Error();\n }\n\n getDirectStringByKeyOrNull(key: string) {\n const elements = this.element.querySelectorAll(`:scope > String`);\n\n for (const element of elements) {\n const string = new String(element);\n\n if (string.getKeyOrThrow().get() === key)\n return string;\n\n continue\n }\n\n return\n }\n\n }\n\n export class String {\n\n constructor(\n readonly element: Element\n ) { }\n\n getKeyOrThrow() {\n const element = this.element.querySelector(\":scope > Key\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsString(element)\n }\n\n getValueOrThrow() {\n const element = this.element.querySelector(\":scope > Value\")\n\n if (element == null)\n throw new Error()\n\n return new Data.AsString(element)\n }\n\n }\n\n export class Value {\n\n constructor(\n readonly element: Element\n ) { }\n\n get() {\n return this.element.innerHTML\n }\n\n set(value: string) {\n this.element.innerHTML = value\n }\n\n get protected() {\n return this.element.getAttribute(\"Protected\")\n }\n\n set protected(value: Nullable<string>) {\n if (value == null)\n this.element.removeAttribute(\"Protected\")\n else\n this.element.setAttribute(\"Protected\", value)\n }\n\n }\n\n export class History {\n\n constructor(\n readonly element: Element\n ) { }\n\n insertAndCleanOrThrow(entry: Entry) {\n const clone = new Entry(entry.element.cloneNode(true) as Element)\n\n const history = clone.getHistoryOrNull()\n\n if (history != null)\n clone.element.removeChild(history.element)\n\n this.element.prepend(clone.element)\n\n this.cleanOrThrow()\n\n return clone\n }\n\n cleanOrThrow() {\n const file = new KeePassFile(this.element.ownerDocument)\n const meta = file.getMetaOrThrow()\n\n const historyMaxItems = meta.getHistoryMaxItemsOrThrow().getOrThrow()\n\n if (this.element.children.length > historyMaxItems) {\n while (this.element.children.length > historyMaxItems) {\n const last = this.element.lastElementChild;\n\n if (last == null)\n throw new Error();\n\n this.element.removeChild(last);\n }\n }\n\n const historyMaxSize = meta.getHistoryMaxSizeOrThrow().getOrThrow()\n\n for (let bytes = new TextEncoder().encode(new XMLSerializer().serializeToString(this.element)); bytes.length > historyMaxSize; bytes = new TextEncoder().encode(new XMLSerializer().serializeToString(this.element))) {\n const last = this.element.lastElementChild;\n\n if (last == null)\n throw new Error();\n\n this.element.removeChild(last);\n }\n }\n\n *getDirectEntries() {\n const elements = this.element.querySelectorAll(`:scope > Entry`);\n\n for (const element of elements)\n yield new Entry(element)\n\n return\n }\n\n getDirectEntryByIndexOrThrow(index: number) {\n const element = this.element.querySelector(`:scope > Entry:nth-of-type(${index + 1})`);\n\n if (element == null)\n throw new Error();\n\n return new Entry(element);\n }\n\n getDirectEntryByIndexOrNull(index: number) {\n const element = this.element.querySelector(`:scope > Entry:nth-of-type(${index + 1})`);\n\n if (element == null)\n return\n\n return new Entry(element)\n }\n\n }\n}"],"names":["Data"],"mappings":"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"}