@tiddlywiki/mws 0.0.12 → 0.0.13
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/README.md +3 -1
- package/dist/server.d.ts +923 -0
- package/dist/server.js +1763 -1415
- package/dist/server.js.map +1 -1
- package/editions/mws-docs/tiddlers/$__StoryList.tid +3 -3
- package/editions/mws-docs/tiddlers/MWS and SQLite.md +11 -0
- package/editions/mws-docs/tiddlers/Request Server.md +20 -0
- package/editions/mws-docs/tiddlers/Request Server.md.meta +5 -0
- package/package.json +16 -10
- package/prisma/schema.prisma +1 -0
- package/react-user-mgmt/package-lock.json +76 -321
- package/react-user-mgmt/package.json +2 -5
- package/react-user-mgmt/public/chunk-YALWN5OT.js +2 -0
- package/react-user-mgmt/public/chunk-YALWN5OT.js.map +7 -0
- package/react-user-mgmt/public/esm-QKDFEP3B.js +3 -0
- package/react-user-mgmt/public/esm-QKDFEP3B.js.map +7 -0
- package/react-user-mgmt/public/index.html +1 -26
- package/react-user-mgmt/public/main.js +68 -109
- package/react-user-mgmt/public/main.js.map +4 -4
- package/react-user-mgmt/public/stats.css +597 -0
- package/react-user-mgmt/public/stats.html +59 -0
- package/react-user-mgmt/public/stats.js +2013 -0
- package/react-user-mgmt/public/stats.json +1 -0
- package/react-user-mgmt/public/stats.svg +4 -0
- package/react-user-mgmt/tsconfig.json +3 -0
- package/dist/server.cjs +0 -16677
- package/dist/server.cjs.map +0 -1
- package/src/StateObject.ts +0 -316
- package/src/commander.ts +0 -417
- package/src/commands/divider.ts +0 -20
- package/src/commands/index.ts +0 -24
- package/src/commands/mws-init-store.ts +0 -77
- package/src/commands/mws-listen.ts +0 -136
- package/src/commands/mws-load-archive.ts +0 -281
- package/src/commands/mws-load-plugin-bags.ts +0 -151
- package/src/commands/mws-load-tiddlers.ts +0 -37
- package/src/commands/mws-load-wiki-folder.ts +0 -124
- package/src/commands/mws-render-tiddlywiki5.ts +0 -55
- package/src/commands/mws-save-archive.ts +0 -111
- package/src/commands/mws-save-tiddler-text.ts +0 -33
- package/src/commands/tests-complete.ts +0 -21
- package/src/global.ts +0 -247
- package/src/routes/TiddlerStore.ts +0 -722
- package/src/routes/bag-file-server.ts +0 -340
- package/src/routes/cache.ts +0 -25
- package/src/routes/index.ts +0 -138
- package/src/routes/managers/index.ts +0 -17
- package/src/routes/managers/manager-recipes.ts +0 -438
- package/src/routes/managers/manager-users.ts +0 -201
- package/src/routes/managers/router-tiddlers.ts +0 -313
- package/src/routes/router.ts +0 -429
- package/src/routes/services/PasswordService.ts +0 -178
- package/src/routes/services/attachments.ts +0 -259
- package/src/routes/services/sessions.ts +0 -166
- package/src/routes/tw-test.ts +0 -65
- package/src/server.ts +0 -151
- package/src/setupDevServer.ts +0 -71
- package/src/streamer.ts +0 -430
- package/src/tiddlywiki.ts +0 -94
- package/src/utils/data-checks.ts +0 -172
- package/src/utils/index.ts +0 -4
- package/src/utils/rootRoute.ts +0 -237
- package/src/utils/utils.ts +0 -403
- package/src/utils/zodAssert.ts +0 -269
- /package/prisma/{migrations/notes.md → notes.md} +0 -0
package/dist/server.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/global.ts","../node_modules/depd/index.js","../node_modules/setprototypeof/index.js","../node_modules/statuses/codes.json","../node_modules/statuses/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/inherits/inherits.js","../node_modules/toidentifier/index.js","../node_modules/http-errors/index.js","../node_modules/ms/index.js","../node_modules/debug/src/common.js","../node_modules/debug/src/browser.js","../node_modules/debug/src/node.js","../node_modules/debug/src/index.js","../node_modules/destroy/index.js","../node_modules/encodeurl/index.js","../node_modules/escape-html/index.js","../node_modules/etag/index.js","../node_modules/fresh/index.js","../node_modules/mime-db/db.json","../node_modules/mime-db/index.js","../node_modules/mime-types/index.js","../node_modules/ee-first/index.js","../node_modules/on-finished/index.js","../node_modules/range-parser/index.js","../node_modules/send/index.js","../src/utils/utils.ts","../src/utils/rootRoute.ts","../src/utils/data-checks.ts","../src/utils/zodAssert.ts","../src/utils/index.ts","../src/streamer.ts","../src/StateObject.ts","../src/routes/managers/manager-recipes.ts","../src/routes/managers/manager-users.ts","../src/routes/managers/index.ts","../src/routes/TiddlerStore.ts","../node_modules/sjcl/sjcl.js","../src/routes/bag-file-server.ts","../src/routes/managers/router-tiddlers.ts","../src/routes/services/PasswordService.ts","../src/routes/services/attachments.ts","../src/routes/services/sessions.ts","../src/routes/index.ts","../src/setupDevServer.ts","../src/routes/cache.ts","../src/routes/router.ts","../src/server.ts","../src/tiddlywiki.ts","../src/commander.ts","../src/commands/mws-load-plugin-bags.ts","../src/commands/mws-render-tiddlywiki5.ts","../src/commands/mws-load-wiki-folder.ts","../src/commands/mws-save-archive.ts","../src/commands/mws-load-archive.ts","../src/commands/mws-init-store.ts","../src/commands/mws-listen.ts","../src/commands/divider.ts","../src/commands/tests-complete.ts","../src/commands/index.ts"],"sourcesContent":["import type { rootRoute as _rootRoute, Router } from \"./routes/router\";\nimport * as path from \"path\";\nimport * as fs from \"fs\";\nimport type { Prisma } from \"@prisma/client\";\nimport type { ZodAssert } from \"./utils\";\nimport { Tiddler, Wiki } from \"tiddlywiki\";\nimport { Commander } from \"./commander\";\nimport { createRequire } from \"node:module\";\nimport { dirname, resolve } from \"node:path\";\n\n\ndeclare global {\n type PrismaTxnClient = Omit<Commander[\"engine\"], \"$connect\" | \"$disconnect\" | \"$on\" | \"$transaction\" | \"$use\" | \"$extends\">\n type ART<T extends (...args: any) => any> = Awaited<ReturnType<T>>\n /** \n * This primarily makes sure that positional arguments are used correctly\n * (so you can't switch a title and bag_name around).\n * \n * If you assign the wrong value (like `5 as PrismaField<\"Bags\", \"bag_name\">`), \n * this will result in a type error on the as keyword, allowing you to catch incorrect types quickly.\n */\n type PrismaField<T extends Prisma.ModelName, K extends keyof PrismaPayloadScalars<T>> =\n // manually map foriegn keys to their corresponding primary key so comparisons work\n // this should remove the need for any global helper functions to convert between types\n (\n // [T, K] extends [\"Acl\", \"role_id\"] ? PrismaField<\"Roles\", \"role_id\"> :\n // [T, K] extends [\"\", \"role_id\"] ? PrismaField<\"Roles\", \"role_id\"> :\n [T, K] extends [\"Tiddlers\", \"bag_id\"] ? PrismaField<\"Bags\", \"bag_id\"> :\n [T, K] extends [\"Sessions\", \"user_id\"] ? PrismaField<\"Users\", \"user_id\"> :\n [T, K] extends [\"Recipe_bags\", \"bag_id\"] ? PrismaField<\"Bags\", \"bag_id\"> :\n [T, K] extends [\"Recipe_bags\", \"recipe_id\"] ? PrismaField<\"Recipes\", \"recipe_id\"> :\n [T, K] extends [\"Recipes\", \"owner_id\"] ? PrismaField<\"Users\", \"user_id\"> :\n [T, K] extends [\"Bags\", \"owner_id\"] ? PrismaField<\"Users\", \"user_id\"> :\n (PrismaPayloadScalars<T>[K] & { __prisma_table: T, __prisma_field: K })\n ) | (null extends PrismaPayloadScalars<T>[K] ? null : never);\n\n type PrismaPayloadScalars<T extends Prisma.ModelName>\n = Prisma.TypeMap[\"model\"][T][\"payload\"][\"scalars\"]\n\n type EntityName<T extends EntityType> =\n T extends \"bag\" ? PrismaField<\"Bags\", \"bag_name\"> :\n T extends \"recipe\" ? PrismaField<\"Recipes\", \"recipe_name\"> :\n never;\n\n type EntityType = \"recipe\" | \"bag\";\n\n type ACLPermissionName = \"READ\" | \"WRITE\" | \"ADMIN\";\n\n type rootRoute = _rootRoute;\n type ZodAssert = typeof ZodAssert;\n\n}\n\n\n// declare global { const ok: typeof assert.ok; }\n// (global as any).ok = assert.ok;\n\n// these are some $tw.utils functions that seemed important enough to just copy across\ndeclare global {\n function hop(object: any, property: any): boolean;\n function each<T>(object: T[], callback: (value: T, index: number, object: T[]) => void): void;\n function each<T>(object: Record<string, T>, callback: (value: T, key: string, object: Record<string, T>) => void): void;\n function eachAsync<T>(object: T[], callback: (value: T, index: number, object: T[]) => void): Promise<void>;\n function eachAsync<T>(object: Record<string, T>, callback: (value: T, key: string, object: Record<string, T>) => void): Promise<void>;\n function createDirectory(dirPath: string): void;\n function deleteDirectory(dirPath: string): void;\n function encodeURIComponentExtended(s: string): string;\n}\n\n(global as any).hop = function (object: any, property: any) {\n return object ? Object.prototype.hasOwnProperty.call(object, property) : false;\n};\n\n(global as any).eachAsync = async function (object: any, callback: any) {\n var next, f, length;\n if (object) {\n if (Object.prototype.toString.call(object) == \"[object Array]\") {\n for (f = 0, length = object.length; f < length; f++) {\n next = await callback(object[f], f, object);\n if (next === false) {\n break;\n }\n }\n } else {\n var keys = Object.keys(object);\n for (f = 0, length = keys.length; f < length; f++) {\n var key = keys[f];\n next = await callback(object[key as string], key, object);\n if (next === false) {\n break;\n }\n }\n }\n }\n};\n\n(global as any).each = function (object: any, callback: any) {\n var next, f, length;\n if (object) {\n if (Object.prototype.toString.call(object) == \"[object Array]\") {\n for (f = 0, length = object.length; f < length; f++) {\n next = callback(object[f], f, object);\n if (next === false) {\n break;\n }\n }\n } else {\n var keys = Object.keys(object);\n for (f = 0, length = keys.length; f < length; f++) {\n var key = keys[f];\n next = callback(object[key as string], key, object);\n if (next === false) {\n break;\n }\n }\n }\n }\n};\n\n(global as any).createDirectory = function (dirPath: string) {\n if (dirPath.substr(dirPath.length - 1, 1) !== path.sep) {\n dirPath = dirPath + path.sep;\n }\n var pos = 1;\n pos = dirPath.indexOf(path.sep, pos);\n while (pos !== -1) {\n var subDirPath = dirPath.substr(0, pos);\n if (!(fs.existsSync(subDirPath) && fs.statSync(subDirPath).isDirectory())) {\n try {\n fs.mkdirSync(subDirPath);\n } catch (e) {\n return \"Error creating directory '\" + subDirPath + \"'\";\n }\n }\n pos = dirPath.indexOf(path.sep, pos + 1);\n }\n return null;\n};\n\n(global as any).deleteDirectory = function deleteDirectory(dirPath: string) {\n if (fs.existsSync(dirPath)) {\n var entries = fs.readdirSync(dirPath);\n for (var entryIndex = 0; entryIndex < entries.length; entryIndex++) {\n var currPath = dirPath + path.sep + entries[entryIndex];\n if (fs.lstatSync(currPath).isDirectory()) {\n deleteDirectory(currPath);\n } else {\n fs.unlinkSync(currPath);\n }\n }\n fs.rmdirSync(dirPath);\n }\n return null;\n};\n\n(global as any).encodeURIComponentExtended = function (s: string) {\n return encodeURIComponent(s).replace(/[!'()*]/g, function (c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n};\n\n\nclass _Result<OK extends boolean, T> {\n constructor(\n public ok: OK,\n public error: OK extends true ? undefined : unknown,\n public value: OK extends true ? T : undefined\n ) { }\n get [Symbol.iterator]() { return [this.ok, this.error, this.value] }\n static ok<T>(value: T) {\n return new _Result(true, undefined, value)\n }\n static error(error: unknown) {\n return new _Result(false, error, undefined)\n }\n\n /**\n * @example\n * // const result = try something();\n * const result = Result.try_(() => {\n * something();\n * });\n */\n static try_<T, This>(callback: (this: This) => T, thisarg: This) {\n try {\n return _Result.ok(callback.apply(thisarg));\n } catch (e) {\n return _Result.error(e);\n }\n }\n\n}\n//https://github.com/arthurfiorette/proposal-try-operator\ndeclare global {\n const TryResult: typeof _Result;\n interface Promise<T> {\n try: () => Promise<_Result<true, T> | _Result<false, T>>;\n }\n}\n(global as any).Result = _Result;\nPromise.prototype.try = function <T>(this: Promise<T>) {\n return this.then(_Result.ok, _Result.error);\n}\n\ninterface $TW {\n loadTiddlersFromPath: any;\n loadPluginFolder: any;\n getLibraryItemSearchPaths: any;\n wiki: never;\n utils: {\n // [x: string]: any;\n /** Use Object.assign instead */\n extend: never\n /** Use Array.isArray instead */\n isArray: never\n /** use prismaField with a parse- option or z.uriComponent if possible */\n decodeURIComponentSafe: never;\n /**\n * \n ```js\n $tw.utils.stringifyDate = function(value) {\n return value.getUTCFullYear() +\n $tw.utils.pad(value.getUTCMonth() + 1) +\n $tw.utils.pad(value.getUTCDate()) +\n $tw.utils.pad(value.getUTCHours()) +\n $tw.utils.pad(value.getUTCMinutes()) +\n $tw.utils.pad(value.getUTCSeconds()) +\n $tw.utils.pad(value.getUTCMilliseconds(),3);\n };\n ```\n */\n stringifyDate: never;\n // parseJSONSafe(str: string, defaultJSON?: any): any;\n // /** `return parseFloat(str) || 0;` */\n // parseNumber(string: string): number;\n // /** `return parseFloat(str) || 0;` */\n // parseNumber(string: string | null): number;\n };\n boot: any;\n config: any;\n node: any;\n hooks: any;\n sjcl: any;\n Wiki: { new(): Wiki };\n Tiddler: { new(fields: Record<string, any>): Tiddler };\n\n}\n","/*!\n * depd\n * Copyright(c) 2014-2018 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\n\nvar relative = require('path').relative\n\n/**\n * Module exports.\n */\n\nmodule.exports = depd\n\n/**\n * Get the path to base files on.\n */\n\nvar basePath = process.cwd()\n\n/**\n * Determine if namespace is contained in the string.\n */\n\nfunction containsNamespace (str, namespace) {\n var vals = str.split(/[ ,]+/)\n var ns = String(namespace).toLowerCase()\n\n for (var i = 0; i < vals.length; i++) {\n var val = vals[i]\n\n // namespace contained\n if (val && (val === '*' || val.toLowerCase() === ns)) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Convert a data descriptor to accessor descriptor.\n */\n\nfunction convertDataDescriptorToAccessor (obj, prop, message) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n var value = descriptor.value\n\n descriptor.get = function getter () { return value }\n\n if (descriptor.writable) {\n descriptor.set = function setter (val) { return (value = val) }\n }\n\n delete descriptor.value\n delete descriptor.writable\n\n Object.defineProperty(obj, prop, descriptor)\n\n return descriptor\n}\n\n/**\n * Create arguments string to keep arity.\n */\n\nfunction createArgumentsString (arity) {\n var str = ''\n\n for (var i = 0; i < arity; i++) {\n str += ', arg' + i\n }\n\n return str.substr(2)\n}\n\n/**\n * Create stack string from stack.\n */\n\nfunction createStackString (stack) {\n var str = this.name + ': ' + this.namespace\n\n if (this.message) {\n str += ' deprecated ' + this.message\n }\n\n for (var i = 0; i < stack.length; i++) {\n str += '\\n at ' + stack[i].toString()\n }\n\n return str\n}\n\n/**\n * Create deprecate for namespace in caller.\n */\n\nfunction depd (namespace) {\n if (!namespace) {\n throw new TypeError('argument namespace is required')\n }\n\n var stack = getStack()\n var site = callSiteLocation(stack[1])\n var file = site[0]\n\n function deprecate (message) {\n // call to self as log\n log.call(deprecate, message)\n }\n\n deprecate._file = file\n deprecate._ignored = isignored(namespace)\n deprecate._namespace = namespace\n deprecate._traced = istraced(namespace)\n deprecate._warned = Object.create(null)\n\n deprecate.function = wrapfunction\n deprecate.property = wrapproperty\n\n return deprecate\n}\n\n/**\n * Determine if event emitter has listeners of a given type.\n *\n * The way to do this check is done three different ways in Node.js >= 0.8\n * so this consolidates them into a minimal set using instance methods.\n *\n * @param {EventEmitter} emitter\n * @param {string} type\n * @returns {boolean}\n * @private\n */\n\nfunction eehaslisteners (emitter, type) {\n var count = typeof emitter.listenerCount !== 'function'\n ? emitter.listeners(type).length\n : emitter.listenerCount(type)\n\n return count > 0\n}\n\n/**\n * Determine if namespace is ignored.\n */\n\nfunction isignored (namespace) {\n if (process.noDeprecation) {\n // --no-deprecation support\n return true\n }\n\n var str = process.env.NO_DEPRECATION || ''\n\n // namespace ignored\n return containsNamespace(str, namespace)\n}\n\n/**\n * Determine if namespace is traced.\n */\n\nfunction istraced (namespace) {\n if (process.traceDeprecation) {\n // --trace-deprecation support\n return true\n }\n\n var str = process.env.TRACE_DEPRECATION || ''\n\n // namespace traced\n return containsNamespace(str, namespace)\n}\n\n/**\n * Display deprecation message.\n */\n\nfunction log (message, site) {\n var haslisteners = eehaslisteners(process, 'deprecation')\n\n // abort early if no destination\n if (!haslisteners && this._ignored) {\n return\n }\n\n var caller\n var callFile\n var callSite\n var depSite\n var i = 0\n var seen = false\n var stack = getStack()\n var file = this._file\n\n if (site) {\n // provided site\n depSite = site\n callSite = callSiteLocation(stack[1])\n callSite.name = depSite.name\n file = callSite[0]\n } else {\n // get call site\n i = 2\n depSite = callSiteLocation(stack[i])\n callSite = depSite\n }\n\n // get caller of deprecated thing in relation to file\n for (; i < stack.length; i++) {\n caller = callSiteLocation(stack[i])\n callFile = caller[0]\n\n if (callFile === file) {\n seen = true\n } else if (callFile === this._file) {\n file = this._file\n } else if (seen) {\n break\n }\n }\n\n var key = caller\n ? depSite.join(':') + '__' + caller.join(':')\n : undefined\n\n if (key !== undefined && key in this._warned) {\n // already warned\n return\n }\n\n this._warned[key] = true\n\n // generate automatic message from call site\n var msg = message\n if (!msg) {\n msg = callSite === depSite || !callSite.name\n ? defaultMessage(depSite)\n : defaultMessage(callSite)\n }\n\n // emit deprecation if listeners exist\n if (haslisteners) {\n var err = DeprecationError(this._namespace, msg, stack.slice(i))\n process.emit('deprecation', err)\n return\n }\n\n // format and write message\n var format = process.stderr.isTTY\n ? formatColor\n : formatPlain\n var output = format.call(this, msg, caller, stack.slice(i))\n process.stderr.write(output + '\\n', 'utf8')\n}\n\n/**\n * Get call site location as array.\n */\n\nfunction callSiteLocation (callSite) {\n var file = callSite.getFileName() || '<anonymous>'\n var line = callSite.getLineNumber()\n var colm = callSite.getColumnNumber()\n\n if (callSite.isEval()) {\n file = callSite.getEvalOrigin() + ', ' + file\n }\n\n var site = [file, line, colm]\n\n site.callSite = callSite\n site.name = callSite.getFunctionName()\n\n return site\n}\n\n/**\n * Generate a default message from the site.\n */\n\nfunction defaultMessage (site) {\n var callSite = site.callSite\n var funcName = site.name\n\n // make useful anonymous name\n if (!funcName) {\n funcName = '<anonymous@' + formatLocation(site) + '>'\n }\n\n var context = callSite.getThis()\n var typeName = context && callSite.getTypeName()\n\n // ignore useless type name\n if (typeName === 'Object') {\n typeName = undefined\n }\n\n // make useful type name\n if (typeName === 'Function') {\n typeName = context.name || typeName\n }\n\n return typeName && callSite.getMethodName()\n ? typeName + '.' + funcName\n : funcName\n}\n\n/**\n * Format deprecation message without color.\n */\n\nfunction formatPlain (msg, caller, stack) {\n var timestamp = new Date().toUTCString()\n\n var formatted = timestamp +\n ' ' + this._namespace +\n ' deprecated ' + msg\n\n // add stack trace\n if (this._traced) {\n for (var i = 0; i < stack.length; i++) {\n formatted += '\\n at ' + stack[i].toString()\n }\n\n return formatted\n }\n\n if (caller) {\n formatted += ' at ' + formatLocation(caller)\n }\n\n return formatted\n}\n\n/**\n * Format deprecation message with color.\n */\n\nfunction formatColor (msg, caller, stack) {\n var formatted = '\\x1b[36;1m' + this._namespace + '\\x1b[22;39m' + // bold cyan\n ' \\x1b[33;1mdeprecated\\x1b[22;39m' + // bold yellow\n ' \\x1b[0m' + msg + '\\x1b[39m' // reset\n\n // add stack trace\n if (this._traced) {\n for (var i = 0; i < stack.length; i++) {\n formatted += '\\n \\x1b[36mat ' + stack[i].toString() + '\\x1b[39m' // cyan\n }\n\n return formatted\n }\n\n if (caller) {\n formatted += ' \\x1b[36m' + formatLocation(caller) + '\\x1b[39m' // cyan\n }\n\n return formatted\n}\n\n/**\n * Format call site location.\n */\n\nfunction formatLocation (callSite) {\n return relative(basePath, callSite[0]) +\n ':' + callSite[1] +\n ':' + callSite[2]\n}\n\n/**\n * Get the stack as array of call sites.\n */\n\nfunction getStack () {\n var limit = Error.stackTraceLimit\n var obj = {}\n var prep = Error.prepareStackTrace\n\n Error.prepareStackTrace = prepareObjectStackTrace\n Error.stackTraceLimit = Math.max(10, limit)\n\n // capture the stack\n Error.captureStackTrace(obj)\n\n // slice this function off the top\n var stack = obj.stack.slice(1)\n\n Error.prepareStackTrace = prep\n Error.stackTraceLimit = limit\n\n return stack\n}\n\n/**\n * Capture call site stack from v8.\n */\n\nfunction prepareObjectStackTrace (obj, stack) {\n return stack\n}\n\n/**\n * Return a wrapped function in a deprecation message.\n */\n\nfunction wrapfunction (fn, message) {\n if (typeof fn !== 'function') {\n throw new TypeError('argument fn must be a function')\n }\n\n var args = createArgumentsString(fn.length)\n var stack = getStack()\n var site = callSiteLocation(stack[1])\n\n site.name = fn.name\n\n // eslint-disable-next-line no-new-func\n var deprecatedfn = new Function('fn', 'log', 'deprecate', 'message', 'site',\n '\"use strict\"\\n' +\n 'return function (' + args + ') {' +\n 'log.call(deprecate, message, site)\\n' +\n 'return fn.apply(this, arguments)\\n' +\n '}')(fn, log, this, message, site)\n\n return deprecatedfn\n}\n\n/**\n * Wrap property in a deprecation message.\n */\n\nfunction wrapproperty (obj, prop, message) {\n if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new TypeError('argument obj must be object')\n }\n\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n\n if (!descriptor) {\n throw new TypeError('must call property on owner object')\n }\n\n if (!descriptor.configurable) {\n throw new TypeError('property must be configurable')\n }\n\n var deprecate = this\n var stack = getStack()\n var site = callSiteLocation(stack[1])\n\n // set site name\n site.name = prop\n\n // convert data descriptor\n if ('value' in descriptor) {\n descriptor = convertDataDescriptorToAccessor(obj, prop, message)\n }\n\n var get = descriptor.get\n var set = descriptor.set\n\n // wrap getter\n if (typeof get === 'function') {\n descriptor.get = function getter () {\n log.call(deprecate, message, site)\n return get.apply(this, arguments)\n }\n }\n\n // wrap setter\n if (typeof set === 'function') {\n descriptor.set = function setter () {\n log.call(deprecate, message, site)\n return set.apply(this, arguments)\n }\n }\n\n Object.defineProperty(obj, prop, descriptor)\n}\n\n/**\n * Create DeprecationError for deprecation\n */\n\nfunction DeprecationError (namespace, message, stack) {\n var error = new Error()\n var stackString\n\n Object.defineProperty(error, 'constructor', {\n value: DeprecationError\n })\n\n Object.defineProperty(error, 'message', {\n configurable: true,\n enumerable: false,\n value: message,\n writable: true\n })\n\n Object.defineProperty(error, 'name', {\n enumerable: false,\n configurable: true,\n value: 'DeprecationError',\n writable: true\n })\n\n Object.defineProperty(error, 'namespace', {\n configurable: true,\n enumerable: false,\n value: namespace,\n writable: true\n })\n\n Object.defineProperty(error, 'stack', {\n configurable: true,\n enumerable: false,\n get: function () {\n if (stackString !== undefined) {\n return stackString\n }\n\n // prepare stack trace\n return (stackString = createStackString.call(this, stack))\n },\n set: function setter (val) {\n stackString = val\n }\n })\n\n return error\n}\n","'use strict'\n/* eslint no-proto: 0 */\nmodule.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties)\n\nfunction setProtoOf (obj, proto) {\n obj.__proto__ = proto\n return obj\n}\n\nfunction mixinProperties (obj, proto) {\n for (var prop in proto) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) {\n obj[prop] = proto[prop]\n }\n }\n return obj\n}\n","{\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"103\": \"Early Hints\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a Teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Too Early\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","/*!\n * statuses\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar codes = require('./codes.json')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = status\n\n// status code to message map\nstatus.message = codes\n\n// status message (lower-case) to code map\nstatus.code = createMessageToStatusCodeMap(codes)\n\n// array of status codes\nstatus.codes = createStatusCodeList(codes)\n\n// status codes for redirects\nstatus.redirect = {\n 300: true,\n 301: true,\n 302: true,\n 303: true,\n 305: true,\n 307: true,\n 308: true\n}\n\n// status codes for empty bodies\nstatus.empty = {\n 204: true,\n 205: true,\n 304: true\n}\n\n// status codes for when you should retry the request\nstatus.retry = {\n 502: true,\n 503: true,\n 504: true\n}\n\n/**\n * Create a map of message to status code.\n * @private\n */\n\nfunction createMessageToStatusCodeMap (codes) {\n var map = {}\n\n Object.keys(codes).forEach(function forEachCode (code) {\n var message = codes[code]\n var status = Number(code)\n\n // populate map\n map[message.toLowerCase()] = status\n })\n\n return map\n}\n\n/**\n * Create a list of all status codes.\n * @private\n */\n\nfunction createStatusCodeList (codes) {\n return Object.keys(codes).map(function mapCode (code) {\n return Number(code)\n })\n}\n\n/**\n * Get the status code for given message.\n * @private\n */\n\nfunction getStatusCode (message) {\n var msg = message.toLowerCase()\n\n if (!Object.prototype.hasOwnProperty.call(status.code, msg)) {\n throw new Error('invalid status message: \"' + message + '\"')\n }\n\n return status.code[msg]\n}\n\n/**\n * Get the status message for given code.\n * @private\n */\n\nfunction getStatusMessage (code) {\n if (!Object.prototype.hasOwnProperty.call(status.message, code)) {\n throw new Error('invalid status code: ' + code)\n }\n\n return status.message[code]\n}\n\n/**\n * Get the status code.\n *\n * Given a number, this will throw if it is not a known status\n * code, otherwise the code will be returned. Given a string,\n * the string will be parsed for a number and return the code\n * if valid, otherwise will lookup the code assuming this is\n * the status message.\n *\n * @param {string|number} code\n * @returns {number}\n * @public\n */\n\nfunction status (code) {\n if (typeof code === 'number') {\n return getStatusMessage(code)\n }\n\n if (typeof code !== 'string') {\n throw new TypeError('code must be a number or string')\n }\n\n // '403'\n var n = parseInt(code, 10)\n if (!isNaN(n)) {\n return getStatusMessage(n)\n }\n\n return getStatusCode(code)\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n","/*!\n * toidentifier\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = toIdentifier\n\n/**\n * Trasform the given string into a JavaScript identifier\n *\n * @param {string} str\n * @returns {string}\n * @public\n */\n\nfunction toIdentifier (str) {\n return str\n .split(' ')\n .map(function (token) {\n return token.slice(0, 1).toUpperCase() + token.slice(1)\n })\n .join('')\n .replace(/[^ _0-9a-z]/gi, '')\n}\n","/*!\n * http-errors\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar deprecate = require('depd')('http-errors')\nvar setPrototypeOf = require('setprototypeof')\nvar statuses = require('statuses')\nvar inherits = require('inherits')\nvar toIdentifier = require('toidentifier')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = createError\nmodule.exports.HttpError = createHttpErrorConstructor()\nmodule.exports.isHttpError = createIsHttpErrorFunction(module.exports.HttpError)\n\n// Populate exports for all constructors\npopulateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)\n\n/**\n * Get the code class of a status code.\n * @private\n */\n\nfunction codeClass (status) {\n return Number(String(status).charAt(0) + '00')\n}\n\n/**\n * Create a new HTTP Error.\n *\n * @returns {Error}\n * @public\n */\n\nfunction createError () {\n // so much arity going on ~_~\n var err\n var msg\n var status = 500\n var props = {}\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i]\n var type = typeof arg\n if (type === 'object' && arg instanceof Error) {\n err = arg\n status = err.status || err.statusCode || status\n } else if (type === 'number' && i === 0) {\n status = arg\n } else if (type === 'string') {\n msg = arg\n } else if (type === 'object') {\n props = arg\n } else {\n throw new TypeError('argument #' + (i + 1) + ' unsupported type ' + type)\n }\n }\n\n if (typeof status === 'number' && (status < 400 || status >= 600)) {\n deprecate('non-error status code; use only 4xx or 5xx status codes')\n }\n\n if (typeof status !== 'number' ||\n (!statuses.message[status] && (status < 400 || status >= 600))) {\n status = 500\n }\n\n // constructor\n var HttpError = createError[status] || createError[codeClass(status)]\n\n if (!err) {\n // create error\n err = HttpError\n ? new HttpError(msg)\n : new Error(msg || statuses.message[status])\n Error.captureStackTrace(err, createError)\n }\n\n if (!HttpError || !(err instanceof HttpError) || err.status !== status) {\n // add properties to generic error\n err.expose = status < 500\n err.status = err.statusCode = status\n }\n\n for (var key in props) {\n if (key !== 'status' && key !== 'statusCode') {\n err[key] = props[key]\n }\n }\n\n return err\n}\n\n/**\n * Create HTTP error abstract base class.\n * @private\n */\n\nfunction createHttpErrorConstructor () {\n function HttpError () {\n throw new TypeError('cannot construct abstract class')\n }\n\n inherits(HttpError, Error)\n\n return HttpError\n}\n\n/**\n * Create a constructor for a client error.\n * @private\n */\n\nfunction createClientErrorConstructor (HttpError, name, code) {\n var className = toClassName(name)\n\n function ClientError (message) {\n // create the error object\n var msg = message != null ? message : statuses.message[code]\n var err = new Error(msg)\n\n // capture a stack trace to the construction point\n Error.captureStackTrace(err, ClientError)\n\n // adjust the [[Prototype]]\n setPrototypeOf(err, ClientError.prototype)\n\n // redefine the error message\n Object.defineProperty(err, 'message', {\n enumerable: true,\n configurable: true,\n value: msg,\n writable: true\n })\n\n // redefine the error name\n Object.defineProperty(err, 'name', {\n enumerable: false,\n configurable: true,\n value: className,\n writable: true\n })\n\n return err\n }\n\n inherits(ClientError, HttpError)\n nameFunc(ClientError, className)\n\n ClientError.prototype.status = code\n ClientError.prototype.statusCode = code\n ClientError.prototype.expose = true\n\n return ClientError\n}\n\n/**\n * Create function to test is a value is a HttpError.\n * @private\n */\n\nfunction createIsHttpErrorFunction (HttpError) {\n return function isHttpError (val) {\n if (!val || typeof val !== 'object') {\n return false\n }\n\n if (val instanceof HttpError) {\n return true\n }\n\n return val instanceof Error &&\n typeof val.expose === 'boolean' &&\n typeof val.statusCode === 'number' && val.status === val.statusCode\n }\n}\n\n/**\n * Create a constructor for a server error.\n * @private\n */\n\nfunction createServerErrorConstructor (HttpError, name, code) {\n var className = toClassName(name)\n\n function ServerError (message) {\n // create the error object\n var msg = message != null ? message : statuses.message[code]\n var err = new Error(msg)\n\n // capture a stack trace to the construction point\n Error.captureStackTrace(err, ServerError)\n\n // adjust the [[Prototype]]\n setPrototypeOf(err, ServerError.prototype)\n\n // redefine the error message\n Object.defineProperty(err, 'message', {\n enumerable: true,\n configurable: true,\n value: msg,\n writable: true\n })\n\n // redefine the error name\n Object.defineProperty(err, 'name', {\n enumerable: false,\n configurable: true,\n value: className,\n writable: true\n })\n\n return err\n }\n\n inherits(ServerError, HttpError)\n nameFunc(ServerError, className)\n\n ServerError.prototype.status = code\n ServerError.prototype.statusCode = code\n ServerError.prototype.expose = false\n\n return ServerError\n}\n\n/**\n * Set the name of a function, if possible.\n * @private\n */\n\nfunction nameFunc (func, name) {\n var desc = Object.getOwnPropertyDescriptor(func, 'name')\n\n if (desc && desc.configurable) {\n desc.value = name\n Object.defineProperty(func, 'name', desc)\n }\n}\n\n/**\n * Populate the exports object with constructors for every error class.\n * @private\n */\n\nfunction populateConstructorExports (exports, codes, HttpError) {\n codes.forEach(function forEachCode (code) {\n var CodeError\n var name = toIdentifier(statuses.message[code])\n\n switch (codeClass(code)) {\n case 400:\n CodeError = createClientErrorConstructor(HttpError, name, code)\n break\n case 500:\n CodeError = createServerErrorConstructor(HttpError, name, code)\n break\n }\n\n if (CodeError) {\n // export the constructor\n exports[code] = CodeError\n exports[name] = CodeError\n }\n })\n}\n\n/**\n * Get a class name from a name identifier.\n * @private\n */\n\nfunction toClassName (name) {\n return name.substr(-5) !== 'Error'\n ? name + 'Error'\n : name\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(' ', ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","/*!\n * destroy\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar EventEmitter = require('events').EventEmitter\nvar ReadStream = require('fs').ReadStream\nvar Stream = require('stream')\nvar Zlib = require('zlib')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = destroy\n\n/**\n * Destroy the given stream, and optionally suppress any future `error` events.\n *\n * @param {object} stream\n * @param {boolean} suppress\n * @public\n */\n\nfunction destroy (stream, suppress) {\n if (isFsReadStream(stream)) {\n destroyReadStream(stream)\n } else if (isZlibStream(stream)) {\n destroyZlibStream(stream)\n } else if (hasDestroy(stream)) {\n stream.destroy()\n }\n\n if (isEventEmitter(stream) && suppress) {\n stream.removeAllListeners('error')\n stream.addListener('error', noop)\n }\n\n return stream\n}\n\n/**\n * Destroy a ReadStream.\n *\n * @param {object} stream\n * @private\n */\n\nfunction destroyReadStream (stream) {\n stream.destroy()\n\n if (typeof stream.close === 'function') {\n // node.js core bug work-around\n stream.on('open', onOpenClose)\n }\n}\n\n/**\n * Close a Zlib stream.\n *\n * Zlib streams below Node.js 4.5.5 have a buggy implementation\n * of .close() when zlib encountered an error.\n *\n * @param {object} stream\n * @private\n */\n\nfunction closeZlibStream (stream) {\n if (stream._hadError === true) {\n var prop = stream._binding === null\n ? '_binding'\n : '_handle'\n\n stream[prop] = {\n close: function () { this[prop] = null }\n }\n }\n\n stream.close()\n}\n\n/**\n * Destroy a Zlib stream.\n *\n * Zlib streams don't have a destroy function in Node.js 6. On top of that\n * simply calling destroy on a zlib stream in Node.js 8+ will result in a\n * memory leak. So until that is fixed, we need to call both close AND destroy.\n *\n * PR to fix memory leak: https://github.com/nodejs/node/pull/23734\n *\n * In Node.js 6+8, it's important that destroy is called before close as the\n * stream would otherwise emit the error 'zlib binding closed'.\n *\n * @param {object} stream\n * @private\n */\n\nfunction destroyZlibStream (stream) {\n if (typeof stream.destroy === 'function') {\n // node.js core bug work-around\n // istanbul ignore if: node.js 0.8\n if (stream._binding) {\n // node.js < 0.10.0\n stream.destroy()\n if (stream._processing) {\n stream._needDrain = true\n stream.once('drain', onDrainClearBinding)\n } else {\n stream._binding.clear()\n }\n } else if (stream._destroy && stream._destroy !== Stream.Transform.prototype._destroy) {\n // node.js >= 12, ^11.1.0, ^10.15.1\n stream.destroy()\n } else if (stream._destroy && typeof stream.close === 'function') {\n // node.js 7, 8\n stream.destroyed = true\n stream.close()\n } else {\n // fallback\n // istanbul ignore next\n stream.destroy()\n }\n } else if (typeof stream.close === 'function') {\n // node.js < 8 fallback\n closeZlibStream(stream)\n }\n}\n\n/**\n * Determine if stream has destroy.\n * @private\n */\n\nfunction hasDestroy (stream) {\n return stream instanceof Stream &&\n typeof stream.destroy === 'function'\n}\n\n/**\n * Determine if val is EventEmitter.\n * @private\n */\n\nfunction isEventEmitter (val) {\n return val instanceof EventEmitter\n}\n\n/**\n * Determine if stream is fs.ReadStream stream.\n * @private\n */\n\nfunction isFsReadStream (stream) {\n return stream instanceof ReadStream\n}\n\n/**\n * Determine if stream is Zlib stream.\n * @private\n */\n\nfunction isZlibStream (stream) {\n return stream instanceof Zlib.Gzip ||\n stream instanceof Zlib.Gunzip ||\n stream instanceof Zlib.Deflate ||\n stream instanceof Zlib.DeflateRaw ||\n stream instanceof Zlib.Inflate ||\n stream instanceof Zlib.InflateRaw ||\n stream instanceof Zlib.Unzip\n}\n\n/**\n * No-op function.\n * @private\n */\n\nfunction noop () {}\n\n/**\n * On drain handler to clear binding.\n * @private\n */\n\n// istanbul ignore next: node.js 0.8\nfunction onDrainClearBinding () {\n this._binding.clear()\n}\n\n/**\n * On open handler to close stream.\n * @private\n */\n\nfunction onOpenClose () {\n if (typeof this.fd === 'number') {\n // actually close down the fd\n this.close()\n }\n}\n","/*!\n * encodeurl\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = encodeUrl\n\n/**\n * RegExp to match non-URL code points, *after* encoding (i.e. not including \"%\")\n * and including invalid escape sequences.\n * @private\n */\n\nvar ENCODE_CHARS_REGEXP = /(?:[^\\x21\\x23-\\x3B\\x3D\\x3F-\\x5F\\x61-\\x7A\\x7C\\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g\n\n/**\n * RegExp to match unmatched surrogate pair.\n * @private\n */\n\nvar UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\\uD800-\\uDBFF])[\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF]([^\\uDC00-\\uDFFF]|$)/g\n\n/**\n * String to replace unmatched surrogate pair with.\n * @private\n */\n\nvar UNMATCHED_SURROGATE_PAIR_REPLACE = '$1\\uFFFD$2'\n\n/**\n * Encode a URL to a percent-encoded form, excluding already-encoded sequences.\n *\n * This function will take an already-encoded URL and encode all the non-URL\n * code points. This function will not encode the \"%\" character unless it is\n * not part of a valid sequence (`%20` will be left as-is, but `%foo` will\n * be encoded as `%25foo`).\n *\n * This encode is meant to be \"safe\" and does not throw errors. It will try as\n * hard as it can to properly encode the given URL, including replacing any raw,\n * unpaired surrogate pairs with the Unicode replacement character prior to\n * encoding.\n *\n * @param {string} url\n * @return {string}\n * @public\n */\n\nfunction encodeUrl (url) {\n return String(url)\n .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE)\n .replace(ENCODE_CHARS_REGEXP, encodeURI)\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","/*!\n * etag\n * Copyright(c) 2014-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = etag\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar crypto = require('crypto')\nvar Stats = require('fs').Stats\n\n/**\n * Module variables.\n * @private\n */\n\nvar toString = Object.prototype.toString\n\n/**\n * Generate an entity tag.\n *\n * @param {Buffer|string} entity\n * @return {string}\n * @private\n */\n\nfunction entitytag (entity) {\n if (entity.length === 0) {\n // fast-path empty\n return '\"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk\"'\n }\n\n // compute hash of entity\n var hash = crypto\n .createHash('sha1')\n .update(entity, 'utf8')\n .digest('base64')\n .substring(0, 27)\n\n // compute length of entity\n var len = typeof entity === 'string'\n ? Buffer.byteLength(entity, 'utf8')\n : entity.length\n\n return '\"' + len.toString(16) + '-' + hash + '\"'\n}\n\n/**\n * Create a simple ETag.\n *\n * @param {string|Buffer|Stats} entity\n * @param {object} [options]\n * @param {boolean} [options.weak]\n * @return {String}\n * @public\n */\n\nfunction etag (entity, options) {\n if (entity == null) {\n throw new TypeError('argument entity is required')\n }\n\n // support fs.Stats object\n var isStats = isstats(entity)\n var weak = options && typeof options.weak === 'boolean'\n ? options.weak\n : isStats\n\n // validate argument\n if (!isStats && typeof entity !== 'string' && !Buffer.isBuffer(entity)) {\n throw new TypeError('argument entity must be string, Buffer, or fs.Stats')\n }\n\n // generate entity tag\n var tag = isStats\n ? stattag(entity)\n : entitytag(entity)\n\n return weak\n ? 'W/' + tag\n : tag\n}\n\n/**\n * Determine if object is a Stats object.\n *\n * @param {object} obj\n * @return {boolean}\n * @api private\n */\n\nfunction isstats (obj) {\n // genuine fs.Stats\n if (typeof Stats === 'function' && obj instanceof Stats) {\n return true\n }\n\n // quack quack\n return obj && typeof obj === 'object' &&\n 'ctime' in obj && toString.call(obj.ctime) === '[object Date]' &&\n 'mtime' in obj && toString.call(obj.mtime) === '[object Date]' &&\n 'ino' in obj && typeof obj.ino === 'number' &&\n 'size' in obj && typeof obj.size === 'number'\n}\n\n/**\n * Generate a tag for a stat.\n *\n * @param {object} stat\n * @return {string}\n * @private\n */\n\nfunction stattag (stat) {\n var mtime = stat.mtime.getTime().toString(16)\n var size = stat.size.toString(16)\n\n return '\"' + size + '-' + mtime + '\"'\n}\n","/*!\n * fresh\n * Copyright(c) 2012 TJ Holowaychuk\n * Copyright(c) 2016-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to check for no-cache token in Cache-Control.\n * @private\n */\n\nvar CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\\s*?no-cache\\s*?(?:,|$)/\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = fresh\n\n/**\n * Check freshness of the response using request and response headers.\n *\n * @param {Object} reqHeaders\n * @param {Object} resHeaders\n * @return {Boolean}\n * @public\n */\n\nfunction fresh (reqHeaders, resHeaders) {\n // fields\n var modifiedSince = reqHeaders['if-modified-since']\n var noneMatch = reqHeaders['if-none-match']\n\n // unconditional request\n if (!modifiedSince && !noneMatch) {\n return false\n }\n\n // Always return stale when Cache-Control: no-cache\n // to support end-to-end reload requests\n // https://tools.ietf.org/html/rfc2616#section-14.9.4\n var cacheControl = reqHeaders['cache-control']\n if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl)) {\n return false\n }\n\n // if-none-match\n if (noneMatch && noneMatch !== '*') {\n var etag = resHeaders['etag']\n\n if (!etag) {\n return false\n }\n\n var etagStale = true\n var matches = parseTokenList(noneMatch)\n for (var i = 0; i < matches.length; i++) {\n var match = matches[i]\n if (match === etag || match === 'W/' + etag || 'W/' + match === etag) {\n etagStale = false\n break\n }\n }\n\n if (etagStale) {\n return false\n }\n }\n\n // if-modified-since\n if (modifiedSince) {\n var lastModified = resHeaders['last-modified']\n var modifiedStale = !lastModified || !(parseHttpDate(lastModified) <= parseHttpDate(modifiedSince))\n\n if (modifiedStale) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Parse an HTTP Date into a number.\n *\n * @param {string} date\n * @private\n */\n\nfunction parseHttpDate (date) {\n var timestamp = date && Date.parse(date)\n\n // istanbul ignore next: guard against date.js Date.parse patching\n return typeof timestamp === 'number'\n ? timestamp\n : NaN\n}\n\n/**\n * Parse a HTTP token list.\n *\n * @param {string} str\n * @private\n */\n\nfunction parseTokenList (str) {\n var end = 0\n var list = []\n var start = 0\n\n // gather tokens\n for (var i = 0, len = str.length; i < len; i++) {\n switch (str.charCodeAt(i)) {\n case 0x20: /* */\n if (start === end) {\n start = end = i + 1\n }\n break\n case 0x2c: /* , */\n list.push(str.substring(start, end))\n start = end = i + 1\n break\n default:\n end = i + 1\n break\n }\n }\n\n // final token\n list.push(str.substring(start, end))\n\n return list\n}\n","{\n \"application/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"application/3gpdash-qoe-report+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/3gpp-ims+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/3gpphal+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/3gpphalforms+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/a2l\": {\n \"source\": \"iana\"\n },\n \"application/ace+cbor\": {\n \"source\": \"iana\"\n },\n \"application/activemessage\": {\n \"source\": \"iana\"\n },\n \"application/activity+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-costmap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-costmapfilter+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-directory+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointcost+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointcostparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointprop+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointpropparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-error+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-networkmap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-networkmapfilter+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-updatestreamcontrol+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-updatestreamparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/aml\": {\n \"source\": \"iana\"\n },\n \"application/andrew-inset\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez\"]\n },\n \"application/applefile\": {\n \"source\": \"iana\"\n },\n \"application/applixware\": {\n \"source\": \"apache\",\n \"extensions\": [\"aw\"]\n },\n \"application/at+jwt\": {\n \"source\": \"iana\"\n },\n \"application/atf\": {\n \"source\": \"iana\"\n },\n \"application/atfx\": {\n \"source\": \"iana\"\n },\n \"application/atom+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atom\"]\n },\n \"application/atomcat+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomcat\"]\n },\n \"application/atomdeleted+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomdeleted\"]\n },\n \"application/atomicmail\": {\n \"source\": \"iana\"\n },\n \"application/atomsvc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomsvc\"]\n },\n \"application/atsc-dwd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dwd\"]\n },\n \"application/atsc-dynamic-event-message\": {\n \"source\": \"iana\"\n },\n \"application/atsc-held+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"held\"]\n },\n \"application/atsc-rdt+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/atsc-rsat+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rsat\"]\n },\n \"application/atxml\": {\n \"source\": \"iana\"\n },\n \"application/auth-policy+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/bacnet-xdd+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/batch-smtp\": {\n \"source\": \"iana\"\n },\n \"application/bdoc\": {\n \"compressible\": false,\n \"extensions\": [\"bdoc\"]\n },\n \"application/beep+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/calendar+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/calendar+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xcs\"]\n },\n \"application/call-completion\": {\n \"source\": \"iana\"\n },\n \"application/cals-1840\": {\n \"source\": \"iana\"\n },\n \"application/captive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cbor\": {\n \"source\": \"iana\"\n },\n \"application/cbor-seq\": {\n \"source\": \"iana\"\n },\n \"application/cccex\": {\n \"source\": \"iana\"\n },\n \"application/ccmp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ccxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ccxml\"]\n },\n \"application/cdfx+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cdfx\"]\n },\n \"application/cdmi-capability\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmia\"]\n },\n \"application/cdmi-container\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmic\"]\n },\n \"application/cdmi-domain\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmid\"]\n },\n \"application/cdmi-object\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmio\"]\n },\n \"application/cdmi-queue\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmiq\"]\n },\n \"application/cdni\": {\n \"source\": \"iana\"\n },\n \"application/cea\": {\n \"source\": \"iana\"\n },\n \"application/cea-2018+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cellml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cfw\": {\n \"source\": \"iana\"\n },\n \"application/city+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/clr\": {\n \"source\": \"iana\"\n },\n \"application/clue+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/clue_info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cms\": {\n \"source\": \"iana\"\n },\n \"application/cnrp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/coap-group+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/coap-payload\": {\n \"source\": \"iana\"\n },\n \"application/commonground\": {\n \"source\": \"iana\"\n },\n \"application/conference-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cose\": {\n \"source\": \"iana\"\n },\n \"application/cose-key\": {\n \"source\": \"iana\"\n },\n \"application/cose-key-set\": {\n \"source\": \"iana\"\n },\n \"application/cpl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cpl\"]\n },\n \"application/csrattrs\": {\n \"source\": \"iana\"\n },\n \"application/csta+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cstadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/csvm+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cu-seeme\": {\n \"source\": \"apache\",\n \"extensions\": [\"cu\"]\n },\n \"application/cwt\": {\n \"source\": \"iana\"\n },\n \"application/cybercash\": {\n \"source\": \"iana\"\n },\n \"application/dart\": {\n \"compressible\": true\n },\n \"application/dash+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpd\"]\n },\n \"application/dash-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpp\"]\n },\n \"application/dashdelta\": {\n \"source\": \"iana\"\n },\n \"application/davmount+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"davmount\"]\n },\n \"application/dca-rft\": {\n \"source\": \"iana\"\n },\n \"application/dcd\": {\n \"source\": \"iana\"\n },\n \"application/dec-dx\": {\n \"source\": \"iana\"\n },\n \"application/dialog-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dicom\": {\n \"source\": \"iana\"\n },\n \"application/dicom+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dicom+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dii\": {\n \"source\": \"iana\"\n },\n \"application/dit\": {\n \"source\": \"iana\"\n },\n \"application/dns\": {\n \"source\": \"iana\"\n },\n \"application/dns+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dns-message\": {\n \"source\": \"iana\"\n },\n \"application/docbook+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"dbk\"]\n },\n \"application/dots+cbor\": {\n \"source\": \"iana\"\n },\n \"application/dskpp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dssc+der\": {\n \"source\": \"iana\",\n \"extensions\": [\"dssc\"]\n },\n \"application/dssc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdssc\"]\n },\n \"application/dvcs\": {\n \"source\": \"iana\"\n },\n \"application/ecmascript\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"es\",\"ecma\"]\n },\n \"application/edi-consent\": {\n \"source\": \"iana\"\n },\n \"application/edi-x12\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/edifact\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/efi\": {\n \"source\": \"iana\"\n },\n \"application/elm+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/elm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.cap+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/emergencycalldata.comment+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.deviceinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.ecall.msd\": {\n \"source\": \"iana\"\n },\n \"application/emergencycalldata.providerinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.serviceinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.subscriberinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.veds+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emma+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"emma\"]\n },\n \"application/emotionml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"emotionml\"]\n },\n \"application/encaprtp\": {\n \"source\": \"iana\"\n },\n \"application/epp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/epub+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"epub\"]\n },\n \"application/eshop\": {\n \"source\": \"iana\"\n },\n \"application/exi\": {\n \"source\": \"iana\",\n \"extensions\": [\"exi\"]\n },\n \"application/expect-ct-report+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/express\": {\n \"source\": \"iana\",\n \"extensions\": [\"exp\"]\n },\n \"application/fastinfoset\": {\n \"source\": \"iana\"\n },\n \"application/fastsoap\": {\n \"source\": \"iana\"\n },\n \"application/fdt+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"fdt\"]\n },\n \"application/fhir+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/fhir+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/fido.trusted-apps+json\": {\n \"compressible\": true\n },\n \"application/fits\": {\n \"source\": \"iana\"\n },\n \"application/flexfec\": {\n \"source\": \"iana\"\n },\n \"application/font-sfnt\": {\n \"source\": \"iana\"\n },\n \"application/font-tdpfr\": {\n \"source\": \"iana\",\n \"extensions\": [\"pfr\"]\n },\n \"application/font-woff\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/framework-attributes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/geo+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"geojson\"]\n },\n \"application/geo+json-seq\": {\n \"source\": \"iana\"\n },\n \"application/geopackage+sqlite3\": {\n \"source\": \"iana\"\n },\n \"application/geoxacml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/gltf-buffer\": {\n \"source\": \"iana\"\n },\n \"application/gml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"gml\"]\n },\n \"application/gpx+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"gpx\"]\n },\n \"application/gxf\": {\n \"source\": \"apache\",\n \"extensions\": [\"gxf\"]\n },\n \"application/gzip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"gz\"]\n },\n \"application/h224\": {\n \"source\": \"iana\"\n },\n \"application/held+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/hjson\": {\n \"extensions\": [\"hjson\"]\n },\n \"application/http\": {\n \"source\": \"iana\"\n },\n \"application/hyperstudio\": {\n \"source\": \"iana\",\n \"extensions\": [\"stk\"]\n },\n \"application/ibe-key-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ibe-pkg-reply+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ibe-pp-data\": {\n \"source\": \"iana\"\n },\n \"application/iges\": {\n \"source\": \"iana\"\n },\n \"application/im-iscomposing+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/index\": {\n \"source\": \"iana\"\n },\n \"application/index.cmd\": {\n \"source\": \"iana\"\n },\n \"application/index.obj\": {\n \"source\": \"iana\"\n },\n \"application/index.response\": {\n \"source\": \"iana\"\n },\n \"application/index.vnd\": {\n \"source\": \"iana\"\n },\n \"application/inkml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ink\",\"inkml\"]\n },\n \"application/iotp\": {\n \"source\": \"iana\"\n },\n \"application/ipfix\": {\n \"source\": \"iana\",\n \"extensions\": [\"ipfix\"]\n },\n \"application/ipp\": {\n \"source\": \"iana\"\n },\n \"application/isup\": {\n \"source\": \"iana\"\n },\n \"application/its+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"its\"]\n },\n \"application/java-archive\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"jar\",\"war\",\"ear\"]\n },\n \"application/java-serialized-object\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"ser\"]\n },\n \"application/java-vm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"class\"]\n },\n \"application/javascript\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"js\",\"mjs\"]\n },\n \"application/jf2feed+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jose\": {\n \"source\": \"iana\"\n },\n \"application/jose+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jrd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jscalendar+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"json\",\"map\"]\n },\n \"application/json-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/json-seq\": {\n \"source\": \"iana\"\n },\n \"application/json5\": {\n \"extensions\": [\"json5\"]\n },\n \"application/jsonml+json\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"jsonml\"]\n },\n \"application/jwk+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jwk-set+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jwt\": {\n \"source\": \"iana\"\n },\n \"application/kpml-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/kpml-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ld+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"jsonld\"]\n },\n \"application/lgr+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lgr\"]\n },\n \"application/link-format\": {\n \"source\": \"iana\"\n },\n \"application/load-control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/lost+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lostxml\"]\n },\n \"application/lostsync+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/lpf+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/lxf\": {\n \"source\": \"iana\"\n },\n \"application/mac-binhex40\": {\n \"source\": \"iana\",\n \"extensions\": [\"hqx\"]\n },\n \"application/mac-compactpro\": {\n \"source\": \"apache\",\n \"extensions\": [\"cpt\"]\n },\n \"application/macwriteii\": {\n \"source\": \"iana\"\n },\n \"application/mads+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mads\"]\n },\n \"application/manifest+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"webmanifest\"]\n },\n \"application/marc\": {\n \"source\": \"iana\",\n \"extensions\": [\"mrc\"]\n },\n \"application/marcxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mrcx\"]\n },\n \"application/mathematica\": {\n \"source\": \"iana\",\n \"extensions\": [\"ma\",\"nb\",\"mb\"]\n },\n \"application/mathml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mathml\"]\n },\n \"application/mathml-content+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mathml-presentation+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-associated-procedure-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-deregister+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-envelope+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-msk+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-msk-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-protection-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-reception-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-register+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-register-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-schedule+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-user-service-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbox\": {\n \"source\": \"iana\",\n \"extensions\": [\"mbox\"]\n },\n \"application/media-policy-dataset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpf\"]\n },\n \"application/media_control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mediaservercontrol+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mscml\"]\n },\n \"application/merge-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/metalink+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"metalink\"]\n },\n \"application/metalink4+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"meta4\"]\n },\n \"application/mets+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mets\"]\n },\n \"application/mf4\": {\n \"source\": \"iana\"\n },\n \"application/mikey\": {\n \"source\": \"iana\"\n },\n \"application/mipc\": {\n \"source\": \"iana\"\n },\n \"application/missing-blocks+cbor-seq\": {\n \"source\": \"iana\"\n },\n \"application/mmt-aei+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"maei\"]\n },\n \"application/mmt-usd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"musd\"]\n },\n \"application/mods+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mods\"]\n },\n \"application/moss-keys\": {\n \"source\": \"iana\"\n },\n \"application/moss-signature\": {\n \"source\": \"iana\"\n },\n \"application/mosskey-data\": {\n \"source\": \"iana\"\n },\n \"application/mosskey-request\": {\n \"source\": \"iana\"\n },\n \"application/mp21\": {\n \"source\": \"iana\",\n \"extensions\": [\"m21\",\"mp21\"]\n },\n \"application/mp4\": {\n \"source\": \"iana\",\n \"extensions\": [\"mp4s\",\"m4p\"]\n },\n \"application/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"application/mpeg4-iod\": {\n \"source\": \"iana\"\n },\n \"application/mpeg4-iod-xmt\": {\n \"source\": \"iana\"\n },\n \"application/mrb-consumer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mrb-publish+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/msc-ivr+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/msc-mixer+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/msword\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"doc\",\"dot\"]\n },\n \"application/mud+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/multipart-core\": {\n \"source\": \"iana\"\n },\n \"application/mxf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxf\"]\n },\n \"application/n-quads\": {\n \"source\": \"iana\",\n \"extensions\": [\"nq\"]\n },\n \"application/n-triples\": {\n \"source\": \"iana\",\n \"extensions\": [\"nt\"]\n },\n \"application/nasdata\": {\n \"source\": \"iana\"\n },\n \"application/news-checkgroups\": {\n \"source\": \"iana\",\n \"charset\": \"US-ASCII\"\n },\n \"application/news-groupinfo\": {\n \"source\": \"iana\",\n \"charset\": \"US-ASCII\"\n },\n \"application/news-transmission\": {\n \"source\": \"iana\"\n },\n \"application/nlsml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/node\": {\n \"source\": \"iana\",\n \"extensions\": [\"cjs\"]\n },\n \"application/nss\": {\n \"source\": \"iana\"\n },\n \"application/oauth-authz-req+jwt\": {\n \"source\": \"iana\"\n },\n \"application/oblivious-dns-message\": {\n \"source\": \"iana\"\n },\n \"application/ocsp-request\": {\n \"source\": \"iana\"\n },\n \"application/ocsp-response\": {\n \"source\": \"iana\"\n },\n \"application/octet-stream\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"]\n },\n \"application/oda\": {\n \"source\": \"iana\",\n \"extensions\": [\"oda\"]\n },\n \"application/odm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/odx\": {\n \"source\": \"iana\"\n },\n \"application/oebps-package+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"opf\"]\n },\n \"application/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ogx\"]\n },\n \"application/omdoc+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"omdoc\"]\n },\n \"application/onenote\": {\n \"source\": \"apache\",\n \"extensions\": [\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"]\n },\n \"application/opc-nodeset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/oscore\": {\n \"source\": \"iana\"\n },\n \"application/oxps\": {\n \"source\": \"iana\",\n \"extensions\": [\"oxps\"]\n },\n \"application/p21\": {\n \"source\": \"iana\"\n },\n \"application/p21+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/p2p-overlay+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"relo\"]\n },\n \"application/parityfec\": {\n \"source\": \"iana\"\n },\n \"application/passport\": {\n \"source\": \"iana\"\n },\n \"application/patch-ops-error+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xer\"]\n },\n \"application/pdf\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pdf\"]\n },\n \"application/pdx\": {\n \"source\": \"iana\"\n },\n \"application/pem-certificate-chain\": {\n \"source\": \"iana\"\n },\n \"application/pgp-encrypted\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pgp\"]\n },\n \"application/pgp-keys\": {\n \"source\": \"iana\",\n \"extensions\": [\"asc\"]\n },\n \"application/pgp-signature\": {\n \"source\": \"iana\",\n \"extensions\": [\"asc\",\"sig\"]\n },\n \"application/pics-rules\": {\n \"source\": \"apache\",\n \"extensions\": [\"prf\"]\n },\n \"application/pidf+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/pidf-diff+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/pkcs10\": {\n \"source\": \"iana\",\n \"extensions\": [\"p10\"]\n },\n \"application/pkcs12\": {\n \"source\": \"iana\"\n },\n \"application/pkcs7-mime\": {\n \"source\": \"iana\",\n \"extensions\": [\"p7m\",\"p7c\"]\n },\n \"application/pkcs7-signature\": {\n \"source\": \"iana\",\n \"extensions\": [\"p7s\"]\n },\n \"application/pkcs8\": {\n \"source\": \"iana\",\n \"extensions\": [\"p8\"]\n },\n \"application/pkcs8-encrypted\": {\n \"source\": \"iana\"\n },\n \"application/pkix-attr-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"ac\"]\n },\n \"application/pkix-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"cer\"]\n },\n \"application/pkix-crl\": {\n \"source\": \"iana\",\n \"extensions\": [\"crl\"]\n },\n \"application/pkix-pkipath\": {\n \"source\": \"iana\",\n \"extensions\": [\"pkipath\"]\n },\n \"application/pkixcmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"pki\"]\n },\n \"application/pls+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"pls\"]\n },\n \"application/poc-settings+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/postscript\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ai\",\"eps\",\"ps\"]\n },\n \"application/ppsp-tracker+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/problem+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/problem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/provenance+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"provx\"]\n },\n \"application/prs.alvestrand.titrax-sheet\": {\n \"source\": \"iana\"\n },\n \"application/prs.cww\": {\n \"source\": \"iana\",\n \"extensions\": [\"cww\"]\n },\n \"application/prs.cyn\": {\n \"source\": \"iana\",\n \"charset\": \"7-BIT\"\n },\n \"application/prs.hpub+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/prs.nprend\": {\n \"source\": \"iana\"\n },\n \"application/prs.plucker\": {\n \"source\": \"iana\"\n },\n \"application/prs.rdf-xml-crypt\": {\n \"source\": \"iana\"\n },\n \"application/prs.xsf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/pskc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"pskcxml\"]\n },\n \"application/pvd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/qsig\": {\n \"source\": \"iana\"\n },\n \"application/raml+yaml\": {\n \"compressible\": true,\n \"extensions\": [\"raml\"]\n },\n \"application/raptorfec\": {\n \"source\": \"iana\"\n },\n \"application/rdap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/rdf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rdf\",\"owl\"]\n },\n \"application/reginfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rif\"]\n },\n \"application/relax-ng-compact-syntax\": {\n \"source\": \"iana\",\n \"extensions\": [\"rnc\"]\n },\n \"application/remote-printing\": {\n \"source\": \"iana\"\n },\n \"application/reputon+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/resource-lists+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rl\"]\n },\n \"application/resource-lists-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rld\"]\n },\n \"application/rfc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/riscos\": {\n \"source\": \"iana\"\n },\n \"application/rlmi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/rls-services+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rs\"]\n },\n \"application/route-apd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rapd\"]\n },\n \"application/route-s-tsid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sls\"]\n },\n \"application/route-usd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rusd\"]\n },\n \"application/rpki-ghostbusters\": {\n \"source\": \"iana\",\n \"extensions\": [\"gbr\"]\n },\n \"application/rpki-manifest\": {\n \"source\": \"iana\",\n \"extensions\": [\"mft\"]\n },\n \"application/rpki-publication\": {\n \"source\": \"iana\"\n },\n \"application/rpki-roa\": {\n \"source\": \"iana\",\n \"extensions\": [\"roa\"]\n },\n \"application/rpki-updown\": {\n \"source\": \"iana\"\n },\n \"application/rsd+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"rsd\"]\n },\n \"application/rss+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"rss\"]\n },\n \"application/rtf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtf\"]\n },\n \"application/rtploopback\": {\n \"source\": \"iana\"\n },\n \"application/rtx\": {\n \"source\": \"iana\"\n },\n \"application/samlassertion+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/samlmetadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sarif+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sarif-external-properties+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sbe\": {\n \"source\": \"iana\"\n },\n \"application/sbml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sbml\"]\n },\n \"application/scaip+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/scim+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/scvp-cv-request\": {\n \"source\": \"iana\",\n \"extensions\": [\"scq\"]\n },\n \"application/scvp-cv-response\": {\n \"source\": \"iana\",\n \"extensions\": [\"scs\"]\n },\n \"application/scvp-vp-request\": {\n \"source\": \"iana\",\n \"extensions\": [\"spq\"]\n },\n \"application/scvp-vp-response\": {\n \"source\": \"iana\",\n \"extensions\": [\"spp\"]\n },\n \"application/sdp\": {\n \"source\": \"iana\",\n \"extensions\": [\"sdp\"]\n },\n \"application/secevent+jwt\": {\n \"source\": \"iana\"\n },\n \"application/senml+cbor\": {\n \"source\": \"iana\"\n },\n \"application/senml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/senml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"senmlx\"]\n },\n \"application/senml-etch+cbor\": {\n \"source\": \"iana\"\n },\n \"application/senml-etch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/senml-exi\": {\n \"source\": \"iana\"\n },\n \"application/sensml+cbor\": {\n \"source\": \"iana\"\n },\n \"application/sensml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sensml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sensmlx\"]\n },\n \"application/sensml-exi\": {\n \"source\": \"iana\"\n },\n \"application/sep+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sep-exi\": {\n \"source\": \"iana\"\n },\n \"application/session-info\": {\n \"source\": \"iana\"\n },\n \"application/set-payment\": {\n \"source\": \"iana\"\n },\n \"application/set-payment-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"setpay\"]\n },\n \"application/set-registration\": {\n \"source\": \"iana\"\n },\n \"application/set-registration-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"setreg\"]\n },\n \"application/sgml\": {\n \"source\": \"iana\"\n },\n \"application/sgml-open-catalog\": {\n \"source\": \"iana\"\n },\n \"application/shf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"shf\"]\n },\n \"application/sieve\": {\n \"source\": \"iana\",\n \"extensions\": [\"siv\",\"sieve\"]\n },\n \"application/simple-filter+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/simple-message-summary\": {\n \"source\": \"iana\"\n },\n \"application/simplesymbolcontainer\": {\n \"source\": \"iana\"\n },\n \"application/sipc\": {\n \"source\": \"iana\"\n },\n \"application/slate\": {\n \"source\": \"iana\"\n },\n \"application/smil\": {\n \"source\": \"iana\"\n },\n \"application/smil+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"smi\",\"smil\"]\n },\n \"application/smpte336m\": {\n \"source\": \"iana\"\n },\n \"application/soap+fastinfoset\": {\n \"source\": \"iana\"\n },\n \"application/soap+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sparql-query\": {\n \"source\": \"iana\",\n \"extensions\": [\"rq\"]\n },\n \"application/sparql-results+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"srx\"]\n },\n \"application/spdx+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/spirits-event+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sql\": {\n \"source\": \"iana\"\n },\n \"application/srgs\": {\n \"source\": \"iana\",\n \"extensions\": [\"gram\"]\n },\n \"application/srgs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"grxml\"]\n },\n \"application/sru+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sru\"]\n },\n \"application/ssdl+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ssdl\"]\n },\n \"application/ssml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ssml\"]\n },\n \"application/stix+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/swid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"swidtag\"]\n },\n \"application/tamp-apex-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-apex-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-community-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-community-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-error\": {\n \"source\": \"iana\"\n },\n \"application/tamp-sequence-adjust\": {\n \"source\": \"iana\"\n },\n \"application/tamp-sequence-adjust-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-status-query\": {\n \"source\": \"iana\"\n },\n \"application/tamp-status-response\": {\n \"source\": \"iana\"\n },\n \"application/tamp-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tar\": {\n \"compressible\": true\n },\n \"application/taxii+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/td+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/tei+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tei\",\"teicorpus\"]\n },\n \"application/tetra_isi\": {\n \"source\": \"iana\"\n },\n \"application/thraud+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tfi\"]\n },\n \"application/timestamp-query\": {\n \"source\": \"iana\"\n },\n \"application/timestamp-reply\": {\n \"source\": \"iana\"\n },\n \"application/timestamped-data\": {\n \"source\": \"iana\",\n \"extensions\": [\"tsd\"]\n },\n \"application/tlsrpt+gzip\": {\n \"source\": \"iana\"\n },\n \"application/tlsrpt+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/tnauthlist\": {\n \"source\": \"iana\"\n },\n \"application/token-introspection+jwt\": {\n \"source\": \"iana\"\n },\n \"application/toml\": {\n \"compressible\": true,\n \"extensions\": [\"toml\"]\n },\n \"application/trickle-ice-sdpfrag\": {\n \"source\": \"iana\"\n },\n \"application/trig\": {\n \"source\": \"iana\",\n \"extensions\": [\"trig\"]\n },\n \"application/ttml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ttml\"]\n },\n \"application/tve-trigger\": {\n \"source\": \"iana\"\n },\n \"application/tzif\": {\n \"source\": \"iana\"\n },\n \"application/tzif-leap\": {\n \"source\": \"iana\"\n },\n \"application/ubjson\": {\n \"compressible\": false,\n \"extensions\": [\"ubj\"]\n },\n \"application/ulpfec\": {\n \"source\": \"iana\"\n },\n \"application/urc-grpsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/urc-ressheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rsheet\"]\n },\n \"application/urc-targetdesc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"td\"]\n },\n \"application/urc-uisocketdesc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vcard+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vcard+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vemmi\": {\n \"source\": \"iana\"\n },\n \"application/vividence.scriptfile\": {\n \"source\": \"apache\"\n },\n \"application/vnd.1000minds.decision-model+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"1km\"]\n },\n \"application/vnd.3gpp-prose+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp-prose-pc3ch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp-v2x-local-service-information\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.5gnas\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.access-transfer-events+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.bsf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.gmop+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.gtpc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.interworking-data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.lpp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mc-signalling-ear\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-payload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-signalling\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-floor-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-location-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-mbms-usage-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-signed+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-ue-init-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-affiliation-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-location-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-mbms-usage-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-transmission-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mid-call+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.ngap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.pfcp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.pic-bw-large\": {\n \"source\": \"iana\",\n \"extensions\": [\"plb\"]\n },\n \"application/vnd.3gpp.pic-bw-small\": {\n \"source\": \"iana\",\n \"extensions\": [\"psb\"]\n },\n \"application/vnd.3gpp.pic-bw-var\": {\n \"source\": \"iana\",\n \"extensions\": [\"pvb\"]\n },\n \"application/vnd.3gpp.s1ap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.sms+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.srvcc-ext+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.srvcc-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.state-and-event-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.ussd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp2.bcmcsinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp2.sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp2.tcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"tcap\"]\n },\n \"application/vnd.3lightssoftware.imagescal\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3m.post-it-notes\": {\n \"source\": \"iana\",\n \"extensions\": [\"pwn\"]\n },\n \"application/vnd.accpac.simply.aso\": {\n \"source\": \"iana\",\n \"extensions\": [\"aso\"]\n },\n \"application/vnd.accpac.simply.imp\": {\n \"source\": \"iana\",\n \"extensions\": [\"imp\"]\n },\n \"application/vnd.acucobol\": {\n \"source\": \"iana\",\n \"extensions\": [\"acu\"]\n },\n \"application/vnd.acucorp\": {\n \"source\": \"iana\",\n \"extensions\": [\"atc\",\"acutc\"]\n },\n \"application/vnd.adobe.air-application-installer-package+zip\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"air\"]\n },\n \"application/vnd.adobe.flash.movie\": {\n \"source\": \"iana\"\n },\n \"application/vnd.adobe.formscentral.fcdt\": {\n \"source\": \"iana\",\n \"extensions\": [\"fcdt\"]\n },\n \"application/vnd.adobe.fxp\": {\n \"source\": \"iana\",\n \"extensions\": [\"fxp\",\"fxpl\"]\n },\n \"application/vnd.adobe.partial-upload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.adobe.xdp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdp\"]\n },\n \"application/vnd.adobe.xfdf\": {\n \"source\": \"iana\",\n \"extensions\": [\"xfdf\"]\n },\n \"application/vnd.aether.imp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.afplinedata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.afplinedata-pagedef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.cmoca-cmresource\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-charset\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-codedfont\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-codepage\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-cmtable\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-formdef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-mediummap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-objectcontainer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-overlay\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-pagesegment\": {\n \"source\": \"iana\"\n },\n \"application/vnd.age\": {\n \"source\": \"iana\",\n \"extensions\": [\"age\"]\n },\n \"application/vnd.ah-barcode\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ahead.space\": {\n \"source\": \"iana\",\n \"extensions\": [\"ahead\"]\n },\n \"application/vnd.airzip.filesecure.azf\": {\n \"source\": \"iana\",\n \"extensions\": [\"azf\"]\n },\n \"application/vnd.airzip.filesecure.azs\": {\n \"source\": \"iana\",\n \"extensions\": [\"azs\"]\n },\n \"application/vnd.amadeus+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.amazon.ebook\": {\n \"source\": \"apache\",\n \"extensions\": [\"azw\"]\n },\n \"application/vnd.amazon.mobi8-ebook\": {\n \"source\": \"iana\"\n },\n \"application/vnd.americandynamics.acc\": {\n \"source\": \"iana\",\n \"extensions\": [\"acc\"]\n },\n \"application/vnd.amiga.ami\": {\n \"source\": \"iana\",\n \"extensions\": [\"ami\"]\n },\n \"application/vnd.amundsen.maze+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.android.ota\": {\n \"source\": \"iana\"\n },\n \"application/vnd.android.package-archive\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"apk\"]\n },\n \"application/vnd.anki\": {\n \"source\": \"iana\"\n },\n \"application/vnd.anser-web-certificate-issue-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"cii\"]\n },\n \"application/vnd.anser-web-funds-transfer-initiation\": {\n \"source\": \"apache\",\n \"extensions\": [\"fti\"]\n },\n \"application/vnd.antix.game-component\": {\n \"source\": \"iana\",\n \"extensions\": [\"atx\"]\n },\n \"application/vnd.apache.arrow.file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.arrow.stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.binary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.compact\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.json\": {\n \"source\": \"iana\"\n },\n \"application/vnd.api+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.aplextor.warrp+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.apothekende.reservation+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.apple.installer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpkg\"]\n },\n \"application/vnd.apple.keynote\": {\n \"source\": \"iana\",\n \"extensions\": [\"key\"]\n },\n \"application/vnd.apple.mpegurl\": {\n \"source\": \"iana\",\n \"extensions\": [\"m3u8\"]\n },\n \"application/vnd.apple.numbers\": {\n \"source\": \"iana\",\n \"extensions\": [\"numbers\"]\n },\n \"application/vnd.apple.pages\": {\n \"source\": \"iana\",\n \"extensions\": [\"pages\"]\n },\n \"application/vnd.apple.pkpass\": {\n \"compressible\": false,\n \"extensions\": [\"pkpass\"]\n },\n \"application/vnd.arastra.swi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.aristanetworks.swi\": {\n \"source\": \"iana\",\n \"extensions\": [\"swi\"]\n },\n \"application/vnd.artisan+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.artsquare\": {\n \"source\": \"iana\"\n },\n \"application/vnd.astraea-software.iota\": {\n \"source\": \"iana\",\n \"extensions\": [\"iota\"]\n },\n \"application/vnd.audiograph\": {\n \"source\": \"iana\",\n \"extensions\": [\"aep\"]\n },\n \"application/vnd.autopackage\": {\n \"source\": \"iana\"\n },\n \"application/vnd.avalon+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.avistar+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.balsamiq.bmml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"bmml\"]\n },\n \"application/vnd.balsamiq.bmpr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.banana-accounting\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.error\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.msg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.msg+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.bekitzur-stech+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.bint.med-content\": {\n \"source\": \"iana\"\n },\n \"application/vnd.biopax.rdf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.blink-idb-value-wrapper\": {\n \"source\": \"iana\"\n },\n \"application/vnd.blueice.multipass\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpm\"]\n },\n \"application/vnd.bluetooth.ep.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bluetooth.le.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bmi\": {\n \"source\": \"iana\",\n \"extensions\": [\"bmi\"]\n },\n \"application/vnd.bpf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bpf3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.businessobjects\": {\n \"source\": \"iana\",\n \"extensions\": [\"rep\"]\n },\n \"application/vnd.byu.uapi+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cab-jscript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.canon-cpdl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.canon-lips\": {\n \"source\": \"iana\"\n },\n \"application/vnd.capasystems-pg+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cendio.thinlinc.clientconf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.century-systems.tcp_stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.chemdraw+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cdxml\"]\n },\n \"application/vnd.chess-pgn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.chipnuts.karaoke-mmd\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmd\"]\n },\n \"application/vnd.ciedi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cinderella\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdy\"]\n },\n \"application/vnd.cirpack.isdn-ext\": {\n \"source\": \"iana\"\n },\n \"application/vnd.citationstyles.style+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"csl\"]\n },\n \"application/vnd.claymore\": {\n \"source\": \"iana\",\n \"extensions\": [\"cla\"]\n },\n \"application/vnd.cloanto.rp9\": {\n \"source\": \"iana\",\n \"extensions\": [\"rp9\"]\n },\n \"application/vnd.clonk.c4group\": {\n \"source\": \"iana\",\n \"extensions\": [\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"]\n },\n \"application/vnd.cluetrust.cartomobile-config\": {\n \"source\": \"iana\",\n \"extensions\": [\"c11amc\"]\n },\n \"application/vnd.cluetrust.cartomobile-config-pkg\": {\n \"source\": \"iana\",\n \"extensions\": [\"c11amz\"]\n },\n \"application/vnd.coffeescript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.document\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.document-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.presentation\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.presentation-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.spreadsheet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.spreadsheet-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collection+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.collection.doc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.collection.next+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.comicbook+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.comicbook-rar\": {\n \"source\": \"iana\"\n },\n \"application/vnd.commerce-battelle\": {\n \"source\": \"iana\"\n },\n \"application/vnd.commonspace\": {\n \"source\": \"iana\",\n \"extensions\": [\"csp\"]\n },\n \"application/vnd.contact.cmsg\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdbcmsg\"]\n },\n \"application/vnd.coreos.ignition+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cosmocaller\": {\n \"source\": \"iana\",\n \"extensions\": [\"cmc\"]\n },\n \"application/vnd.crick.clicker\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkx\"]\n },\n \"application/vnd.crick.clicker.keyboard\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkk\"]\n },\n \"application/vnd.crick.clicker.palette\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkp\"]\n },\n \"application/vnd.crick.clicker.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkt\"]\n },\n \"application/vnd.crick.clicker.wordbank\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkw\"]\n },\n \"application/vnd.criticaltools.wbs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wbs\"]\n },\n \"application/vnd.cryptii.pipe+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.crypto-shade-file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cryptomator.encrypted\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cryptomator.vault\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ctc-posml\": {\n \"source\": \"iana\",\n \"extensions\": [\"pml\"]\n },\n \"application/vnd.ctct.ws+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cups-pdf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-postscript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-ppd\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppd\"]\n },\n \"application/vnd.cups-raster\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-raw\": {\n \"source\": \"iana\"\n },\n \"application/vnd.curl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.curl.car\": {\n \"source\": \"apache\",\n \"extensions\": [\"car\"]\n },\n \"application/vnd.curl.pcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcurl\"]\n },\n \"application/vnd.cyan.dean.root+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cybank\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cyclonedx+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cyclonedx+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.d2l.coursepackage1p0+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.d3m-dataset\": {\n \"source\": \"iana\"\n },\n \"application/vnd.d3m-problem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dart\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dart\"]\n },\n \"application/vnd.data-vision.rdz\": {\n \"source\": \"iana\",\n \"extensions\": [\"rdz\"]\n },\n \"application/vnd.datapackage+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dataresource+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dbf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dbf\"]\n },\n \"application/vnd.debian.binary-package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dece.data\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"]\n },\n \"application/vnd.dece.ttml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uvt\",\"uvvt\"]\n },\n \"application/vnd.dece.unspecified\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvx\",\"uvvx\"]\n },\n \"application/vnd.dece.zip\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvz\",\"uvvz\"]\n },\n \"application/vnd.denovo.fcselayout-link\": {\n \"source\": \"iana\",\n \"extensions\": [\"fe_launch\"]\n },\n \"application/vnd.desmume.movie\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dir-bi.plate-dl-nosuffix\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dm.delegation+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dna\": {\n \"source\": \"iana\",\n \"extensions\": [\"dna\"]\n },\n \"application/vnd.document+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dolby.mlp\": {\n \"source\": \"apache\",\n \"extensions\": [\"mlp\"]\n },\n \"application/vnd.dolby.mobile.1\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dolby.mobile.2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.doremir.scorecloud-binary-document\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dpgraph\": {\n \"source\": \"iana\",\n \"extensions\": [\"dpg\"]\n },\n \"application/vnd.dreamfactory\": {\n \"source\": \"iana\",\n \"extensions\": [\"dfac\"]\n },\n \"application/vnd.drive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ds-keypoint\": {\n \"source\": \"apache\",\n \"extensions\": [\"kpxx\"]\n },\n \"application/vnd.dtg.local\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dtg.local.flash\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dtg.local.html\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ait\": {\n \"source\": \"iana\",\n \"extensions\": [\"ait\"]\n },\n \"application/vnd.dvb.dvbisl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.dvbj\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.esgcontainer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcdftnotifaccess\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgaccess\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgaccess2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgpdd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcroaming\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.iptv.alfec-base\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.iptv.alfec-enhancement\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.notif-aggregate-root+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-container+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-generic+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-msglist+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-registration-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-registration-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-init+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.pfr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.service\": {\n \"source\": \"iana\",\n \"extensions\": [\"svc\"]\n },\n \"application/vnd.dxr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dynageo\": {\n \"source\": \"iana\",\n \"extensions\": [\"geo\"]\n },\n \"application/vnd.dzr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.easykaraoke.cdgdownload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecdis-update\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecip.rlp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eclipse.ditto+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ecowin.chart\": {\n \"source\": \"iana\",\n \"extensions\": [\"mag\"]\n },\n \"application/vnd.ecowin.filerequest\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.fileupdate\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.series\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.seriesrequest\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.seriesupdate\": {\n \"source\": \"iana\"\n },\n \"application/vnd.efi.img\": {\n \"source\": \"iana\"\n },\n \"application/vnd.efi.iso\": {\n \"source\": \"iana\"\n },\n \"application/vnd.emclient.accessrequest+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.enliven\": {\n \"source\": \"iana\",\n \"extensions\": [\"nml\"]\n },\n \"application/vnd.enphase.envoy\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eprints.data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.epson.esf\": {\n \"source\": \"iana\",\n \"extensions\": [\"esf\"]\n },\n \"application/vnd.epson.msf\": {\n \"source\": \"iana\",\n \"extensions\": [\"msf\"]\n },\n \"application/vnd.epson.quickanime\": {\n \"source\": \"iana\",\n \"extensions\": [\"qam\"]\n },\n \"application/vnd.epson.salt\": {\n \"source\": \"iana\",\n \"extensions\": [\"slt\"]\n },\n \"application/vnd.epson.ssf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ssf\"]\n },\n \"application/vnd.ericsson.quickcall\": {\n \"source\": \"iana\"\n },\n \"application/vnd.espass-espass+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.eszigno3+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"es3\",\"et3\"]\n },\n \"application/vnd.etsi.aoc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.asic-e+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.etsi.asic-s+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.etsi.cug+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvcommand+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvdiscovery+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-bc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-cod+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-npvr+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvservice+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsync+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvueprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.mcid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.mheg5\": {\n \"source\": \"iana\"\n },\n \"application/vnd.etsi.overload-control-policy-dataset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.pstn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.sci+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.simservs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.timestamp-token\": {\n \"source\": \"iana\"\n },\n \"application/vnd.etsi.tsl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.tsl.der\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eu.kasparian.car+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.eudora.data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.profile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.settings\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.theme\": {\n \"source\": \"iana\"\n },\n \"application/vnd.exstream-empower+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.exstream-package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ezpix-album\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez2\"]\n },\n \"application/vnd.ezpix-package\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez3\"]\n },\n \"application/vnd.f-secure.mobile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.familysearch.gedcom+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.fastcopy-disk-image\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fdf\": {\n \"source\": \"iana\",\n \"extensions\": [\"fdf\"]\n },\n \"application/vnd.fdsn.mseed\": {\n \"source\": \"iana\",\n \"extensions\": [\"mseed\"]\n },\n \"application/vnd.fdsn.seed\": {\n \"source\": \"iana\",\n \"extensions\": [\"seed\",\"dataless\"]\n },\n \"application/vnd.ffsns\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ficlab.flb+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.filmit.zfc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fints\": {\n \"source\": \"iana\"\n },\n \"application/vnd.firemonkeys.cloudcell\": {\n \"source\": \"iana\"\n },\n \"application/vnd.flographit\": {\n \"source\": \"iana\",\n \"extensions\": [\"gph\"]\n },\n \"application/vnd.fluxtime.clip\": {\n \"source\": \"iana\",\n \"extensions\": [\"ftc\"]\n },\n \"application/vnd.font-fontforge-sfd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.framemaker\": {\n \"source\": \"iana\",\n \"extensions\": [\"fm\",\"frame\",\"maker\",\"book\"]\n },\n \"application/vnd.frogans.fnc\": {\n \"source\": \"iana\",\n \"extensions\": [\"fnc\"]\n },\n \"application/vnd.frogans.ltf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ltf\"]\n },\n \"application/vnd.fsc.weblaunch\": {\n \"source\": \"iana\",\n \"extensions\": [\"fsc\"]\n },\n \"application/vnd.fujifilm.fb.docuworks\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.docuworks.binder\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.docuworks.container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.jfi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.fujitsu.oasys\": {\n \"source\": \"iana\",\n \"extensions\": [\"oas\"]\n },\n \"application/vnd.fujitsu.oasys2\": {\n \"source\": \"iana\",\n \"extensions\": [\"oa2\"]\n },\n \"application/vnd.fujitsu.oasys3\": {\n \"source\": \"iana\",\n \"extensions\": [\"oa3\"]\n },\n \"application/vnd.fujitsu.oasysgp\": {\n \"source\": \"iana\",\n \"extensions\": [\"fg5\"]\n },\n \"application/vnd.fujitsu.oasysprs\": {\n \"source\": \"iana\",\n \"extensions\": [\"bh2\"]\n },\n \"application/vnd.fujixerox.art-ex\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.art4\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.ddd\": {\n \"source\": \"iana\",\n \"extensions\": [\"ddd\"]\n },\n \"application/vnd.fujixerox.docuworks\": {\n \"source\": \"iana\",\n \"extensions\": [\"xdw\"]\n },\n \"application/vnd.fujixerox.docuworks.binder\": {\n \"source\": \"iana\",\n \"extensions\": [\"xbd\"]\n },\n \"application/vnd.fujixerox.docuworks.container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.hbpl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fut-misnet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.futoin+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.futoin+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.fuzzysheet\": {\n \"source\": \"iana\",\n \"extensions\": [\"fzs\"]\n },\n \"application/vnd.genomatix.tuxedo\": {\n \"source\": \"iana\",\n \"extensions\": [\"txd\"]\n },\n \"application/vnd.gentics.grd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geo+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geocube+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geogebra.file\": {\n \"source\": \"iana\",\n \"extensions\": [\"ggb\"]\n },\n \"application/vnd.geogebra.slides\": {\n \"source\": \"iana\"\n },\n \"application/vnd.geogebra.tool\": {\n \"source\": \"iana\",\n \"extensions\": [\"ggt\"]\n },\n \"application/vnd.geometry-explorer\": {\n \"source\": \"iana\",\n \"extensions\": [\"gex\",\"gre\"]\n },\n \"application/vnd.geonext\": {\n \"source\": \"iana\",\n \"extensions\": [\"gxt\"]\n },\n \"application/vnd.geoplan\": {\n \"source\": \"iana\",\n \"extensions\": [\"g2w\"]\n },\n \"application/vnd.geospace\": {\n \"source\": \"iana\",\n \"extensions\": [\"g3w\"]\n },\n \"application/vnd.gerber\": {\n \"source\": \"iana\"\n },\n \"application/vnd.globalplatform.card-content-mgt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.globalplatform.card-content-mgt-response\": {\n \"source\": \"iana\"\n },\n \"application/vnd.gmx\": {\n \"source\": \"iana\",\n \"extensions\": [\"gmx\"]\n },\n \"application/vnd.google-apps.document\": {\n \"compressible\": false,\n \"extensions\": [\"gdoc\"]\n },\n \"application/vnd.google-apps.presentation\": {\n \"compressible\": false,\n \"extensions\": [\"gslides\"]\n },\n \"application/vnd.google-apps.spreadsheet\": {\n \"compressible\": false,\n \"extensions\": [\"gsheet\"]\n },\n \"application/vnd.google-earth.kml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"kml\"]\n },\n \"application/vnd.google-earth.kmz\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"kmz\"]\n },\n \"application/vnd.gov.sk.e-form+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.gov.sk.e-form+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.gov.sk.xmldatacontainer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.grafeq\": {\n \"source\": \"iana\",\n \"extensions\": [\"gqf\",\"gqs\"]\n },\n \"application/vnd.gridmp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.groove-account\": {\n \"source\": \"iana\",\n \"extensions\": [\"gac\"]\n },\n \"application/vnd.groove-help\": {\n \"source\": \"iana\",\n \"extensions\": [\"ghf\"]\n },\n \"application/vnd.groove-identity-message\": {\n \"source\": \"iana\",\n \"extensions\": [\"gim\"]\n },\n \"application/vnd.groove-injector\": {\n \"source\": \"iana\",\n \"extensions\": [\"grv\"]\n },\n \"application/vnd.groove-tool-message\": {\n \"source\": \"iana\",\n \"extensions\": [\"gtm\"]\n },\n \"application/vnd.groove-tool-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"tpl\"]\n },\n \"application/vnd.groove-vcard\": {\n \"source\": \"iana\",\n \"extensions\": [\"vcg\"]\n },\n \"application/vnd.hal+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hal+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"hal\"]\n },\n \"application/vnd.handheld-entertainment+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"zmm\"]\n },\n \"application/vnd.hbci\": {\n \"source\": \"iana\",\n \"extensions\": [\"hbci\"]\n },\n \"application/vnd.hc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hcl-bireports\": {\n \"source\": \"iana\"\n },\n \"application/vnd.hdt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.heroku+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hhe.lesson-player\": {\n \"source\": \"iana\",\n \"extensions\": [\"les\"]\n },\n \"application/vnd.hl7cda+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.hl7v2+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.hp-hpgl\": {\n \"source\": \"iana\",\n \"extensions\": [\"hpgl\"]\n },\n \"application/vnd.hp-hpid\": {\n \"source\": \"iana\",\n \"extensions\": [\"hpid\"]\n },\n \"application/vnd.hp-hps\": {\n \"source\": \"iana\",\n \"extensions\": [\"hps\"]\n },\n \"application/vnd.hp-jlyt\": {\n \"source\": \"iana\",\n \"extensions\": [\"jlt\"]\n },\n \"application/vnd.hp-pcl\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcl\"]\n },\n \"application/vnd.hp-pclxl\": {\n \"source\": \"iana\",\n \"extensions\": [\"pclxl\"]\n },\n \"application/vnd.httphone\": {\n \"source\": \"iana\"\n },\n \"application/vnd.hydrostatix.sof-data\": {\n \"source\": \"iana\",\n \"extensions\": [\"sfd-hdstx\"]\n },\n \"application/vnd.hyper+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hyper-item+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hyperdrive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hzn-3d-crossword\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.afplinedata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.electronic-media\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.minipay\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpy\"]\n },\n \"application/vnd.ibm.modcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"afp\",\"listafp\",\"list3820\"]\n },\n \"application/vnd.ibm.rights-management\": {\n \"source\": \"iana\",\n \"extensions\": [\"irm\"]\n },\n \"application/vnd.ibm.secure-container\": {\n \"source\": \"iana\",\n \"extensions\": [\"sc\"]\n },\n \"application/vnd.iccprofile\": {\n \"source\": \"iana\",\n \"extensions\": [\"icc\",\"icm\"]\n },\n \"application/vnd.ieee.1905\": {\n \"source\": \"iana\"\n },\n \"application/vnd.igloader\": {\n \"source\": \"iana\",\n \"extensions\": [\"igl\"]\n },\n \"application/vnd.imagemeter.folder+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.imagemeter.image+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.immervision-ivp\": {\n \"source\": \"iana\",\n \"extensions\": [\"ivp\"]\n },\n \"application/vnd.immervision-ivu\": {\n \"source\": \"iana\",\n \"extensions\": [\"ivu\"]\n },\n \"application/vnd.ims.imsccv1p1\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.imsccv1p2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.imsccv1p3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.lis.v2.result+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolconsumerprofile+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolproxy+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolproxy.id+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolsettings+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolsettings.simple+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.informedcontrol.rms+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.informix-visionary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.infotech.project\": {\n \"source\": \"iana\"\n },\n \"application/vnd.infotech.project+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.innopath.wamp.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.insors.igm\": {\n \"source\": \"iana\",\n \"extensions\": [\"igm\"]\n },\n \"application/vnd.intercon.formnet\": {\n \"source\": \"iana\",\n \"extensions\": [\"xpw\",\"xpx\"]\n },\n \"application/vnd.intergeo\": {\n \"source\": \"iana\",\n \"extensions\": [\"i2g\"]\n },\n \"application/vnd.intertrust.digibox\": {\n \"source\": \"iana\"\n },\n \"application/vnd.intertrust.nncp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.intu.qbo\": {\n \"source\": \"iana\",\n \"extensions\": [\"qbo\"]\n },\n \"application/vnd.intu.qfx\": {\n \"source\": \"iana\",\n \"extensions\": [\"qfx\"]\n },\n \"application/vnd.iptc.g2.catalogitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.conceptitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.knowledgeitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.newsitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.newsmessage+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.packageitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.planningitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ipunplugged.rcprofile\": {\n \"source\": \"iana\",\n \"extensions\": [\"rcprofile\"]\n },\n \"application/vnd.irepository.package+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"irp\"]\n },\n \"application/vnd.is-xpr\": {\n \"source\": \"iana\",\n \"extensions\": [\"xpr\"]\n },\n \"application/vnd.isac.fcs\": {\n \"source\": \"iana\",\n \"extensions\": [\"fcs\"]\n },\n \"application/vnd.iso11783-10+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.jam\": {\n \"source\": \"iana\",\n \"extensions\": [\"jam\"]\n },\n \"application/vnd.japannet-directory-service\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-jpnstore-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-payment-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-registration\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-registration-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-setstore-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-verification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-verification-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.jcp.javame.midlet-rms\": {\n \"source\": \"iana\",\n \"extensions\": [\"rms\"]\n },\n \"application/vnd.jisp\": {\n \"source\": \"iana\",\n \"extensions\": [\"jisp\"]\n },\n \"application/vnd.joost.joda-archive\": {\n \"source\": \"iana\",\n \"extensions\": [\"joda\"]\n },\n \"application/vnd.jsk.isdn-ngn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.kahootz\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktz\",\"ktr\"]\n },\n \"application/vnd.kde.karbon\": {\n \"source\": \"iana\",\n \"extensions\": [\"karbon\"]\n },\n \"application/vnd.kde.kchart\": {\n \"source\": \"iana\",\n \"extensions\": [\"chrt\"]\n },\n \"application/vnd.kde.kformula\": {\n \"source\": \"iana\",\n \"extensions\": [\"kfo\"]\n },\n \"application/vnd.kde.kivio\": {\n \"source\": \"iana\",\n \"extensions\": [\"flw\"]\n },\n \"application/vnd.kde.kontour\": {\n \"source\": \"iana\",\n \"extensions\": [\"kon\"]\n },\n \"application/vnd.kde.kpresenter\": {\n \"source\": \"iana\",\n \"extensions\": [\"kpr\",\"kpt\"]\n },\n \"application/vnd.kde.kspread\": {\n \"source\": \"iana\",\n \"extensions\": [\"ksp\"]\n },\n \"application/vnd.kde.kword\": {\n \"source\": \"iana\",\n \"extensions\": [\"kwd\",\"kwt\"]\n },\n \"application/vnd.kenameaapp\": {\n \"source\": \"iana\",\n \"extensions\": [\"htke\"]\n },\n \"application/vnd.kidspiration\": {\n \"source\": \"iana\",\n \"extensions\": [\"kia\"]\n },\n \"application/vnd.kinar\": {\n \"source\": \"iana\",\n \"extensions\": [\"kne\",\"knp\"]\n },\n \"application/vnd.koan\": {\n \"source\": \"iana\",\n \"extensions\": [\"skp\",\"skd\",\"skt\",\"skm\"]\n },\n \"application/vnd.kodak-descriptor\": {\n \"source\": \"iana\",\n \"extensions\": [\"sse\"]\n },\n \"application/vnd.las\": {\n \"source\": \"iana\"\n },\n \"application/vnd.las.las+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.las.las+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lasxml\"]\n },\n \"application/vnd.laszip\": {\n \"source\": \"iana\"\n },\n \"application/vnd.leap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.liberty-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.llamagraphics.life-balance.desktop\": {\n \"source\": \"iana\",\n \"extensions\": [\"lbd\"]\n },\n \"application/vnd.llamagraphics.life-balance.exchange+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lbe\"]\n },\n \"application/vnd.logipipe.circuit+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.loom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.lotus-1-2-3\": {\n \"source\": \"iana\",\n \"extensions\": [\"123\"]\n },\n \"application/vnd.lotus-approach\": {\n \"source\": \"iana\",\n \"extensions\": [\"apr\"]\n },\n \"application/vnd.lotus-freelance\": {\n \"source\": \"iana\",\n \"extensions\": [\"pre\"]\n },\n \"application/vnd.lotus-notes\": {\n \"source\": \"iana\",\n \"extensions\": [\"nsf\"]\n },\n \"application/vnd.lotus-organizer\": {\n \"source\": \"iana\",\n \"extensions\": [\"org\"]\n },\n \"application/vnd.lotus-screencam\": {\n \"source\": \"iana\",\n \"extensions\": [\"scm\"]\n },\n \"application/vnd.lotus-wordpro\": {\n \"source\": \"iana\",\n \"extensions\": [\"lwp\"]\n },\n \"application/vnd.macports.portpkg\": {\n \"source\": \"iana\",\n \"extensions\": [\"portpkg\"]\n },\n \"application/vnd.mapbox-vector-tile\": {\n \"source\": \"iana\",\n \"extensions\": [\"mvt\"]\n },\n \"application/vnd.marlin.drm.actiontoken+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.conftoken+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.license+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.mdcf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mason+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.maxar.archive.3tz+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.maxmind.maxmind-db\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mcd\": {\n \"source\": \"iana\",\n \"extensions\": [\"mcd\"]\n },\n \"application/vnd.medcalcdata\": {\n \"source\": \"iana\",\n \"extensions\": [\"mc1\"]\n },\n \"application/vnd.mediastation.cdkey\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdkey\"]\n },\n \"application/vnd.meridian-slingshot\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mfer\": {\n \"source\": \"iana\",\n \"extensions\": [\"mwf\"]\n },\n \"application/vnd.mfmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"mfm\"]\n },\n \"application/vnd.micro+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.micrografx.flo\": {\n \"source\": \"iana\",\n \"extensions\": [\"flo\"]\n },\n \"application/vnd.micrografx.igx\": {\n \"source\": \"iana\",\n \"extensions\": [\"igx\"]\n },\n \"application/vnd.microsoft.portable-executable\": {\n \"source\": \"iana\"\n },\n \"application/vnd.microsoft.windows.thumbnail-cache\": {\n \"source\": \"iana\"\n },\n \"application/vnd.miele+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.mif\": {\n \"source\": \"iana\",\n \"extensions\": [\"mif\"]\n },\n \"application/vnd.minisoft-hp3000-save\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mitsubishi.misty-guard.trustweb\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mobius.daf\": {\n \"source\": \"iana\",\n \"extensions\": [\"daf\"]\n },\n \"application/vnd.mobius.dis\": {\n \"source\": \"iana\",\n \"extensions\": [\"dis\"]\n },\n \"application/vnd.mobius.mbk\": {\n \"source\": \"iana\",\n \"extensions\": [\"mbk\"]\n },\n \"application/vnd.mobius.mqy\": {\n \"source\": \"iana\",\n \"extensions\": [\"mqy\"]\n },\n \"application/vnd.mobius.msl\": {\n \"source\": \"iana\",\n \"extensions\": [\"msl\"]\n },\n \"application/vnd.mobius.plc\": {\n \"source\": \"iana\",\n \"extensions\": [\"plc\"]\n },\n \"application/vnd.mobius.txf\": {\n \"source\": \"iana\",\n \"extensions\": [\"txf\"]\n },\n \"application/vnd.mophun.application\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpn\"]\n },\n \"application/vnd.mophun.certificate\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpc\"]\n },\n \"application/vnd.motorola.flexsuite\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.adsi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.fis\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.gotap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.kmr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.ttc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.wem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.iprm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mozilla.xul+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xul\"]\n },\n \"application/vnd.ms-3mfdocument\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-artgalry\": {\n \"source\": \"iana\",\n \"extensions\": [\"cil\"]\n },\n \"application/vnd.ms-asf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-cab-compressed\": {\n \"source\": \"iana\",\n \"extensions\": [\"cab\"]\n },\n \"application/vnd.ms-color.iccprofile\": {\n \"source\": \"apache\"\n },\n \"application/vnd.ms-excel\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"]\n },\n \"application/vnd.ms-excel.addin.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlam\"]\n },\n \"application/vnd.ms-excel.sheet.binary.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlsb\"]\n },\n \"application/vnd.ms-excel.sheet.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlsm\"]\n },\n \"application/vnd.ms-excel.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xltm\"]\n },\n \"application/vnd.ms-fontobject\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"eot\"]\n },\n \"application/vnd.ms-htmlhelp\": {\n \"source\": \"iana\",\n \"extensions\": [\"chm\"]\n },\n \"application/vnd.ms-ims\": {\n \"source\": \"iana\",\n \"extensions\": [\"ims\"]\n },\n \"application/vnd.ms-lrm\": {\n \"source\": \"iana\",\n \"extensions\": [\"lrm\"]\n },\n \"application/vnd.ms-office.activex+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-officetheme\": {\n \"source\": \"iana\",\n \"extensions\": [\"thmx\"]\n },\n \"application/vnd.ms-opentype\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/vnd.ms-outlook\": {\n \"compressible\": false,\n \"extensions\": [\"msg\"]\n },\n \"application/vnd.ms-package.obfuscated-opentype\": {\n \"source\": \"apache\"\n },\n \"application/vnd.ms-pki.seccat\": {\n \"source\": \"apache\",\n \"extensions\": [\"cat\"]\n },\n \"application/vnd.ms-pki.stl\": {\n \"source\": \"apache\",\n \"extensions\": [\"stl\"]\n },\n \"application/vnd.ms-playready.initiator+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-powerpoint\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ppt\",\"pps\",\"pot\"]\n },\n \"application/vnd.ms-powerpoint.addin.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppam\"]\n },\n \"application/vnd.ms-powerpoint.presentation.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"pptm\"]\n },\n \"application/vnd.ms-powerpoint.slide.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"sldm\"]\n },\n \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppsm\"]\n },\n \"application/vnd.ms-powerpoint.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"potm\"]\n },\n \"application/vnd.ms-printdevicecapabilities+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-printing.printticket+xml\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/vnd.ms-printschematicket+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-project\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpp\",\"mpt\"]\n },\n \"application/vnd.ms-tnef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.devicepairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.nwprinting.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.printerpairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.wsd.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.lic-chlg-req\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.lic-resp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.meter-chlg-req\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.meter-resp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-word.document.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"docm\"]\n },\n \"application/vnd.ms-word.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"dotm\"]\n },\n \"application/vnd.ms-works\": {\n \"source\": \"iana\",\n \"extensions\": [\"wps\",\"wks\",\"wcm\",\"wdb\"]\n },\n \"application/vnd.ms-wpl\": {\n \"source\": \"iana\",\n \"extensions\": [\"wpl\"]\n },\n \"application/vnd.ms-xpsdocument\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xps\"]\n },\n \"application/vnd.msa-disk-image\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mseq\": {\n \"source\": \"iana\",\n \"extensions\": [\"mseq\"]\n },\n \"application/vnd.msign\": {\n \"source\": \"iana\"\n },\n \"application/vnd.multiad.creator\": {\n \"source\": \"iana\"\n },\n \"application/vnd.multiad.creator.cif\": {\n \"source\": \"iana\"\n },\n \"application/vnd.music-niff\": {\n \"source\": \"iana\"\n },\n \"application/vnd.musician\": {\n \"source\": \"iana\",\n \"extensions\": [\"mus\"]\n },\n \"application/vnd.muvee.style\": {\n \"source\": \"iana\",\n \"extensions\": [\"msty\"]\n },\n \"application/vnd.mynfc\": {\n \"source\": \"iana\",\n \"extensions\": [\"taglet\"]\n },\n \"application/vnd.nacamar.ybrid+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ncd.control\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ncd.reference\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nearst.inv+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nebumind.line\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nervana\": {\n \"source\": \"iana\"\n },\n \"application/vnd.netfpx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.neurolanguage.nlu\": {\n \"source\": \"iana\",\n \"extensions\": [\"nlu\"]\n },\n \"application/vnd.nimn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nintendo.nitro.rom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nintendo.snes.rom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nitf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ntf\",\"nitf\"]\n },\n \"application/vnd.noblenet-directory\": {\n \"source\": \"iana\",\n \"extensions\": [\"nnd\"]\n },\n \"application/vnd.noblenet-sealer\": {\n \"source\": \"iana\",\n \"extensions\": [\"nns\"]\n },\n \"application/vnd.noblenet-web\": {\n \"source\": \"iana\",\n \"extensions\": [\"nnw\"]\n },\n \"application/vnd.nokia.catalogs\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.conml+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.conml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.iptv.config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.isds-radio-presets\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.landmark+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.landmark+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.landmarkcollection+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.n-gage.ac+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ac\"]\n },\n \"application/vnd.nokia.n-gage.data\": {\n \"source\": \"iana\",\n \"extensions\": [\"ngdat\"]\n },\n \"application/vnd.nokia.n-gage.symbian.install\": {\n \"source\": \"iana\",\n \"extensions\": [\"n-gage\"]\n },\n \"application/vnd.nokia.ncd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.pcd+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.pcd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.radio-preset\": {\n \"source\": \"iana\",\n \"extensions\": [\"rpst\"]\n },\n \"application/vnd.nokia.radio-presets\": {\n \"source\": \"iana\",\n \"extensions\": [\"rpss\"]\n },\n \"application/vnd.novadigm.edm\": {\n \"source\": \"iana\",\n \"extensions\": [\"edm\"]\n },\n \"application/vnd.novadigm.edx\": {\n \"source\": \"iana\",\n \"extensions\": [\"edx\"]\n },\n \"application/vnd.novadigm.ext\": {\n \"source\": \"iana\",\n \"extensions\": [\"ext\"]\n },\n \"application/vnd.ntt-local.content-share\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.file-transfer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.ogw_remote-access\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.sip-ta_remote\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.sip-ta_tcp_stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oasis.opendocument.chart\": {\n \"source\": \"iana\",\n \"extensions\": [\"odc\"]\n },\n \"application/vnd.oasis.opendocument.chart-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otc\"]\n },\n \"application/vnd.oasis.opendocument.database\": {\n \"source\": \"iana\",\n \"extensions\": [\"odb\"]\n },\n \"application/vnd.oasis.opendocument.formula\": {\n \"source\": \"iana\",\n \"extensions\": [\"odf\"]\n },\n \"application/vnd.oasis.opendocument.formula-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"odft\"]\n },\n \"application/vnd.oasis.opendocument.graphics\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odg\"]\n },\n \"application/vnd.oasis.opendocument.graphics-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otg\"]\n },\n \"application/vnd.oasis.opendocument.image\": {\n \"source\": \"iana\",\n \"extensions\": [\"odi\"]\n },\n \"application/vnd.oasis.opendocument.image-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"oti\"]\n },\n \"application/vnd.oasis.opendocument.presentation\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odp\"]\n },\n \"application/vnd.oasis.opendocument.presentation-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otp\"]\n },\n \"application/vnd.oasis.opendocument.spreadsheet\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ods\"]\n },\n \"application/vnd.oasis.opendocument.spreadsheet-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"ots\"]\n },\n \"application/vnd.oasis.opendocument.text\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odt\"]\n },\n \"application/vnd.oasis.opendocument.text-master\": {\n \"source\": \"iana\",\n \"extensions\": [\"odm\"]\n },\n \"application/vnd.oasis.opendocument.text-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"ott\"]\n },\n \"application/vnd.oasis.opendocument.text-web\": {\n \"source\": \"iana\",\n \"extensions\": [\"oth\"]\n },\n \"application/vnd.obn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ocf+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oci.image.manifest.v1+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oftn.l10n+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.contentaccessdownload+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.contentaccessstreaming+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.cspg-hexbinary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oipf.dae.svg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.dae.xhtml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.mippvcontrolmessage+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.pae.gem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oipf.spdiscovery+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.spdlist+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.ueprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.userprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.olpc-sugar\": {\n \"source\": \"iana\",\n \"extensions\": [\"xo\"]\n },\n \"application/vnd.oma-scws-config\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma-scws-http-request\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma-scws-http-response\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.associated-procedure-parameter+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.drm-trigger+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.imd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.ltkm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.notification+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.provisioningtrigger\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.sgboot\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.sgdd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.sgdu\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.simple-symbol-container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.smartcard-trigger+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.sprov+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.stkm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.cab-address-book+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-feature-handler+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-pcc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-subs-invite+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-user-prefs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.dcd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.dcdc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.dd2+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dd2\"]\n },\n \"application/vnd.oma.drm.risd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.group-usage-list+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.lwm2m+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.lwm2m+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.lwm2m+tlv\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.pal+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.detailed-progress-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.final-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.groups+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.invocation-descriptor+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.optimized-progress-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.push\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.scidm.messages+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.xcap-directory+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.omads-email+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omads-file+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omads-folder+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omaloc-supl-init\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepager\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertamp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertamx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertat\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertatp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertatx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openblox.game+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"obgx\"]\n },\n \"application/vnd.openblox.game-binary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openeye.oeb\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openofficeorg.extension\": {\n \"source\": \"apache\",\n \"extensions\": [\"oxt\"]\n },\n \"application/vnd.openstreetmap.data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"osm\"]\n },\n \"application/vnd.opentimestamps.ots\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.custom-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.customxmlproperties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawing+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.extended-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pptx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slide\": {\n \"source\": \"iana\",\n \"extensions\": [\"sldx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppsx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.tags+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"potx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xlsx\"]\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"xltx\"]\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.theme+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.themeoverride+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.vmldrawing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"docx\"]\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"dotx\"]\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.core-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.relationships+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oracle.resource+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.orange.indata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osa.netdeploy\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osgeo.mapguide.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"mgp\"]\n },\n \"application/vnd.osgi.bundle\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osgi.dp\": {\n \"source\": \"iana\",\n \"extensions\": [\"dp\"]\n },\n \"application/vnd.osgi.subsystem\": {\n \"source\": \"iana\",\n \"extensions\": [\"esa\"]\n },\n \"application/vnd.otps.ct-kip+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oxli.countgraph\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pagerduty+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.palm\": {\n \"source\": \"iana\",\n \"extensions\": [\"pdb\",\"pqa\",\"oprc\"]\n },\n \"application/vnd.panoply\": {\n \"source\": \"iana\"\n },\n \"application/vnd.paos.xml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.patentdive\": {\n \"source\": \"iana\"\n },\n \"application/vnd.patientecommsdoc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pawaafile\": {\n \"source\": \"iana\",\n \"extensions\": [\"paw\"]\n },\n \"application/vnd.pcos\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pg.format\": {\n \"source\": \"iana\",\n \"extensions\": [\"str\"]\n },\n \"application/vnd.pg.osasli\": {\n \"source\": \"iana\",\n \"extensions\": [\"ei6\"]\n },\n \"application/vnd.piaccess.application-licence\": {\n \"source\": \"iana\"\n },\n \"application/vnd.picsel\": {\n \"source\": \"iana\",\n \"extensions\": [\"efif\"]\n },\n \"application/vnd.pmi.widget\": {\n \"source\": \"iana\",\n \"extensions\": [\"wg\"]\n },\n \"application/vnd.poc.group-advertisement+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.pocketlearn\": {\n \"source\": \"iana\",\n \"extensions\": [\"plf\"]\n },\n \"application/vnd.powerbuilder6\": {\n \"source\": \"iana\",\n \"extensions\": [\"pbd\"]\n },\n \"application/vnd.powerbuilder6-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder7\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder7-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder75\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder75-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.preminet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.previewsystems.box\": {\n \"source\": \"iana\",\n \"extensions\": [\"box\"]\n },\n \"application/vnd.proteus.magazine\": {\n \"source\": \"iana\",\n \"extensions\": [\"mgz\"]\n },\n \"application/vnd.psfs\": {\n \"source\": \"iana\"\n },\n \"application/vnd.publishare-delta-tree\": {\n \"source\": \"iana\",\n \"extensions\": [\"qps\"]\n },\n \"application/vnd.pvi.ptid1\": {\n \"source\": \"iana\",\n \"extensions\": [\"ptid\"]\n },\n \"application/vnd.pwg-multiplexed\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pwg-xhtml-print+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.qualcomm.brew-app-res\": {\n \"source\": \"iana\"\n },\n \"application/vnd.quarantainenet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.quark.quarkxpress\": {\n \"source\": \"iana\",\n \"extensions\": [\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"]\n },\n \"application/vnd.quobject-quoxdocument\": {\n \"source\": \"iana\"\n },\n \"application/vnd.radisys.moml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-conf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-conn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-dialog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-stream+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-conf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-base+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-fax-detect+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-fax-sendrecv+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-group+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-speech+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-transform+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.rainstor.data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.rapid\": {\n \"source\": \"iana\"\n },\n \"application/vnd.rar\": {\n \"source\": \"iana\",\n \"extensions\": [\"rar\"]\n },\n \"application/vnd.realvnc.bed\": {\n \"source\": \"iana\",\n \"extensions\": [\"bed\"]\n },\n \"application/vnd.recordare.musicxml\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxl\"]\n },\n \"application/vnd.recordare.musicxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"musicxml\"]\n },\n \"application/vnd.renlearn.rlprint\": {\n \"source\": \"iana\"\n },\n \"application/vnd.resilient.logic\": {\n \"source\": \"iana\"\n },\n \"application/vnd.restful+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.rig.cryptonote\": {\n \"source\": \"iana\",\n \"extensions\": [\"cryptonote\"]\n },\n \"application/vnd.rim.cod\": {\n \"source\": \"apache\",\n \"extensions\": [\"cod\"]\n },\n \"application/vnd.rn-realmedia\": {\n \"source\": \"apache\",\n \"extensions\": [\"rm\"]\n },\n \"application/vnd.rn-realmedia-vbr\": {\n \"source\": \"apache\",\n \"extensions\": [\"rmvb\"]\n },\n \"application/vnd.route66.link66+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"link66\"]\n },\n \"application/vnd.rs-274x\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ruckus.download\": {\n \"source\": \"iana\"\n },\n \"application/vnd.s3sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sailingtracker.track\": {\n \"source\": \"iana\",\n \"extensions\": [\"st\"]\n },\n \"application/vnd.sar\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sbm.cid\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sbm.mid2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.scribus\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.3df\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.csf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.doc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.eml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.mht\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.net\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.ppt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.tiff\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.xls\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealedmedia.softseal.html\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealedmedia.softseal.pdf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.seemail\": {\n \"source\": \"iana\",\n \"extensions\": [\"see\"]\n },\n \"application/vnd.seis+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.sema\": {\n \"source\": \"iana\",\n \"extensions\": [\"sema\"]\n },\n \"application/vnd.semd\": {\n \"source\": \"iana\",\n \"extensions\": [\"semd\"]\n },\n \"application/vnd.semf\": {\n \"source\": \"iana\",\n \"extensions\": [\"semf\"]\n },\n \"application/vnd.shade-save-file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.shana.informed.formdata\": {\n \"source\": \"iana\",\n \"extensions\": [\"ifm\"]\n },\n \"application/vnd.shana.informed.formtemplate\": {\n \"source\": \"iana\",\n \"extensions\": [\"itp\"]\n },\n \"application/vnd.shana.informed.interchange\": {\n \"source\": \"iana\",\n \"extensions\": [\"iif\"]\n },\n \"application/vnd.shana.informed.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"ipk\"]\n },\n \"application/vnd.shootproof+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.shopkick+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.shp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.shx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sigrok.session\": {\n \"source\": \"iana\"\n },\n \"application/vnd.simtech-mindmapper\": {\n \"source\": \"iana\",\n \"extensions\": [\"twd\",\"twds\"]\n },\n \"application/vnd.siren+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.smaf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmf\"]\n },\n \"application/vnd.smart.notebook\": {\n \"source\": \"iana\"\n },\n \"application/vnd.smart.teacher\": {\n \"source\": \"iana\",\n \"extensions\": [\"teacher\"]\n },\n \"application/vnd.snesdev-page-table\": {\n \"source\": \"iana\"\n },\n \"application/vnd.software602.filler.form+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"fo\"]\n },\n \"application/vnd.software602.filler.form-xml-zip\": {\n \"source\": \"iana\"\n },\n \"application/vnd.solent.sdkm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sdkm\",\"sdkd\"]\n },\n \"application/vnd.spotfire.dxp\": {\n \"source\": \"iana\",\n \"extensions\": [\"dxp\"]\n },\n \"application/vnd.spotfire.sfs\": {\n \"source\": \"iana\",\n \"extensions\": [\"sfs\"]\n },\n \"application/vnd.sqlite3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-cod\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-dtf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-ntf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.stardivision.calc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdc\"]\n },\n \"application/vnd.stardivision.draw\": {\n \"source\": \"apache\",\n \"extensions\": [\"sda\"]\n },\n \"application/vnd.stardivision.impress\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdd\"]\n },\n \"application/vnd.stardivision.math\": {\n \"source\": \"apache\",\n \"extensions\": [\"smf\"]\n },\n \"application/vnd.stardivision.writer\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdw\",\"vor\"]\n },\n \"application/vnd.stardivision.writer-global\": {\n \"source\": \"apache\",\n \"extensions\": [\"sgl\"]\n },\n \"application/vnd.stepmania.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"smzip\"]\n },\n \"application/vnd.stepmania.stepchart\": {\n \"source\": \"iana\",\n \"extensions\": [\"sm\"]\n },\n \"application/vnd.street-stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sun.wadl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wadl\"]\n },\n \"application/vnd.sun.xml.calc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxc\"]\n },\n \"application/vnd.sun.xml.calc.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"stc\"]\n },\n \"application/vnd.sun.xml.draw\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxd\"]\n },\n \"application/vnd.sun.xml.draw.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"std\"]\n },\n \"application/vnd.sun.xml.impress\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxi\"]\n },\n \"application/vnd.sun.xml.impress.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"sti\"]\n },\n \"application/vnd.sun.xml.math\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxm\"]\n },\n \"application/vnd.sun.xml.writer\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxw\"]\n },\n \"application/vnd.sun.xml.writer.global\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxg\"]\n },\n \"application/vnd.sun.xml.writer.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"stw\"]\n },\n \"application/vnd.sus-calendar\": {\n \"source\": \"iana\",\n \"extensions\": [\"sus\",\"susp\"]\n },\n \"application/vnd.svd\": {\n \"source\": \"iana\",\n \"extensions\": [\"svd\"]\n },\n \"application/vnd.swiftview-ics\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sycle+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.syft+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.symbian.install\": {\n \"source\": \"apache\",\n \"extensions\": [\"sis\",\"sisx\"]\n },\n \"application/vnd.syncml+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"xsm\"]\n },\n \"application/vnd.syncml.dm+wbxml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"bdm\"]\n },\n \"application/vnd.syncml.dm+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"xdm\"]\n },\n \"application/vnd.syncml.dm.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmddf+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmddf+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"ddf\"]\n },\n \"application/vnd.syncml.dmtnds+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmtnds+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.syncml.ds.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.tableschema+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tao.intent-module-archive\": {\n \"source\": \"iana\",\n \"extensions\": [\"tao\"]\n },\n \"application/vnd.tcpdump.pcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcap\",\"cap\",\"dmp\"]\n },\n \"application/vnd.think-cell.ppttc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tmd.mediaflex.api+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.tmobile-livetv\": {\n \"source\": \"iana\",\n \"extensions\": [\"tmo\"]\n },\n \"application/vnd.tri.onesource\": {\n \"source\": \"iana\"\n },\n \"application/vnd.trid.tpt\": {\n \"source\": \"iana\",\n \"extensions\": [\"tpt\"]\n },\n \"application/vnd.triscape.mxs\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxs\"]\n },\n \"application/vnd.trueapp\": {\n \"source\": \"iana\",\n \"extensions\": [\"tra\"]\n },\n \"application/vnd.truedoc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ubisoft.webplayer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ufdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"ufd\",\"ufdl\"]\n },\n \"application/vnd.uiq.theme\": {\n \"source\": \"iana\",\n \"extensions\": [\"utz\"]\n },\n \"application/vnd.umajin\": {\n \"source\": \"iana\",\n \"extensions\": [\"umj\"]\n },\n \"application/vnd.unity\": {\n \"source\": \"iana\",\n \"extensions\": [\"unityweb\"]\n },\n \"application/vnd.uoml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uoml\"]\n },\n \"application/vnd.uplanet.alert\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.alert-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.bearer-choice\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.bearer-choice-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.cacheop\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.cacheop-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.channel\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.channel-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.list\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.list-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.listcmd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.listcmd-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.signal\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uri-map\": {\n \"source\": \"iana\"\n },\n \"application/vnd.valve.source.material\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vcx\": {\n \"source\": \"iana\",\n \"extensions\": [\"vcx\"]\n },\n \"application/vnd.vd-study\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vectorworks\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vel+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.verimatrix.vcas\": {\n \"source\": \"iana\"\n },\n \"application/vnd.veritone.aion+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.veryant.thin\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ves.encrypted\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vidsoft.vidconference\": {\n \"source\": \"iana\"\n },\n \"application/vnd.visio\": {\n \"source\": \"iana\",\n \"extensions\": [\"vsd\",\"vst\",\"vss\",\"vsw\"]\n },\n \"application/vnd.visionary\": {\n \"source\": \"iana\",\n \"extensions\": [\"vis\"]\n },\n \"application/vnd.vividence.scriptfile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vsf\": {\n \"source\": \"iana\",\n \"extensions\": [\"vsf\"]\n },\n \"application/vnd.wap.sic\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wap.slc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wap.wbxml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"wbxml\"]\n },\n \"application/vnd.wap.wmlc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmlc\"]\n },\n \"application/vnd.wap.wmlscriptc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmlsc\"]\n },\n \"application/vnd.webturbo\": {\n \"source\": \"iana\",\n \"extensions\": [\"wtb\"]\n },\n \"application/vnd.wfa.dpp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wfa.p2p\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wfa.wsc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.windows.devicepairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wmc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wmf.bootstrap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.mathematica\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.mathematica.package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.player\": {\n \"source\": \"iana\",\n \"extensions\": [\"nbp\"]\n },\n \"application/vnd.wordperfect\": {\n \"source\": \"iana\",\n \"extensions\": [\"wpd\"]\n },\n \"application/vnd.wqd\": {\n \"source\": \"iana\",\n \"extensions\": [\"wqd\"]\n },\n \"application/vnd.wrq-hp3000-labelled\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wt.stf\": {\n \"source\": \"iana\",\n \"extensions\": [\"stf\"]\n },\n \"application/vnd.wv.csp+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wv.csp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.wv.ssp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xacml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xara\": {\n \"source\": \"iana\",\n \"extensions\": [\"xar\"]\n },\n \"application/vnd.xfdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"xfdl\"]\n },\n \"application/vnd.xfdl.webform\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xmpie.cpkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.dpkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.plan\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.ppkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.xlim\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.hv-dic\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvd\"]\n },\n \"application/vnd.yamaha.hv-script\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvs\"]\n },\n \"application/vnd.yamaha.hv-voice\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvp\"]\n },\n \"application/vnd.yamaha.openscoreformat\": {\n \"source\": \"iana\",\n \"extensions\": [\"osf\"]\n },\n \"application/vnd.yamaha.openscoreformat.osfpvg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"osfpvg\"]\n },\n \"application/vnd.yamaha.remote-setup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.smaf-audio\": {\n \"source\": \"iana\",\n \"extensions\": [\"saf\"]\n },\n \"application/vnd.yamaha.smaf-phrase\": {\n \"source\": \"iana\",\n \"extensions\": [\"spf\"]\n },\n \"application/vnd.yamaha.through-ngn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.tunnel-udpencap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yaoweme\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yellowriver-custom-menu\": {\n \"source\": \"iana\",\n \"extensions\": [\"cmp\"]\n },\n \"application/vnd.youtube.yt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.zul\": {\n \"source\": \"iana\",\n \"extensions\": [\"zir\",\"zirz\"]\n },\n \"application/vnd.zzazz.deck+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"zaz\"]\n },\n \"application/voicexml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"vxml\"]\n },\n \"application/voucher-cms+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vq-rtcpxr\": {\n \"source\": \"iana\"\n },\n \"application/wasm\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wasm\"]\n },\n \"application/watcherinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wif\"]\n },\n \"application/webpush-options+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/whoispp-query\": {\n \"source\": \"iana\"\n },\n \"application/whoispp-response\": {\n \"source\": \"iana\"\n },\n \"application/widget\": {\n \"source\": \"iana\",\n \"extensions\": [\"wgt\"]\n },\n \"application/winhlp\": {\n \"source\": \"apache\",\n \"extensions\": [\"hlp\"]\n },\n \"application/wita\": {\n \"source\": \"iana\"\n },\n \"application/wordperfect5.1\": {\n \"source\": \"iana\"\n },\n \"application/wsdl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wsdl\"]\n },\n \"application/wspolicy+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wspolicy\"]\n },\n \"application/x-7z-compressed\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"7z\"]\n },\n \"application/x-abiword\": {\n \"source\": \"apache\",\n \"extensions\": [\"abw\"]\n },\n \"application/x-ace-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"ace\"]\n },\n \"application/x-amf\": {\n \"source\": \"apache\"\n },\n \"application/x-apple-diskimage\": {\n \"source\": \"apache\",\n \"extensions\": [\"dmg\"]\n },\n \"application/x-arj\": {\n \"compressible\": false,\n \"extensions\": [\"arj\"]\n },\n \"application/x-authorware-bin\": {\n \"source\": \"apache\",\n \"extensions\": [\"aab\",\"x32\",\"u32\",\"vox\"]\n },\n \"application/x-authorware-map\": {\n \"source\": \"apache\",\n \"extensions\": [\"aam\"]\n },\n \"application/x-authorware-seg\": {\n \"source\": \"apache\",\n \"extensions\": [\"aas\"]\n },\n \"application/x-bcpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"bcpio\"]\n },\n \"application/x-bdoc\": {\n \"compressible\": false,\n \"extensions\": [\"bdoc\"]\n },\n \"application/x-bittorrent\": {\n \"source\": \"apache\",\n \"extensions\": [\"torrent\"]\n },\n \"application/x-blorb\": {\n \"source\": \"apache\",\n \"extensions\": [\"blb\",\"blorb\"]\n },\n \"application/x-bzip\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"bz\"]\n },\n \"application/x-bzip2\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"bz2\",\"boz\"]\n },\n \"application/x-cbr\": {\n \"source\": \"apache\",\n \"extensions\": [\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"]\n },\n \"application/x-cdlink\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcd\"]\n },\n \"application/x-cfs-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"cfs\"]\n },\n \"application/x-chat\": {\n \"source\": \"apache\",\n \"extensions\": [\"chat\"]\n },\n \"application/x-chess-pgn\": {\n \"source\": \"apache\",\n \"extensions\": [\"pgn\"]\n },\n \"application/x-chrome-extension\": {\n \"extensions\": [\"crx\"]\n },\n \"application/x-cocoa\": {\n \"source\": \"nginx\",\n \"extensions\": [\"cco\"]\n },\n \"application/x-compress\": {\n \"source\": \"apache\"\n },\n \"application/x-conference\": {\n \"source\": \"apache\",\n \"extensions\": [\"nsc\"]\n },\n \"application/x-cpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"cpio\"]\n },\n \"application/x-csh\": {\n \"source\": \"apache\",\n \"extensions\": [\"csh\"]\n },\n \"application/x-deb\": {\n \"compressible\": false\n },\n \"application/x-debian-package\": {\n \"source\": \"apache\",\n \"extensions\": [\"deb\",\"udeb\"]\n },\n \"application/x-dgc-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"dgc\"]\n },\n \"application/x-director\": {\n \"source\": \"apache\",\n \"extensions\": [\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"]\n },\n \"application/x-doom\": {\n \"source\": \"apache\",\n \"extensions\": [\"wad\"]\n },\n \"application/x-dtbncx+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ncx\"]\n },\n \"application/x-dtbook+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"dtb\"]\n },\n \"application/x-dtbresource+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"res\"]\n },\n \"application/x-dvi\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"dvi\"]\n },\n \"application/x-envoy\": {\n \"source\": \"apache\",\n \"extensions\": [\"evy\"]\n },\n \"application/x-eva\": {\n \"source\": \"apache\",\n \"extensions\": [\"eva\"]\n },\n \"application/x-font-bdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"bdf\"]\n },\n \"application/x-font-dos\": {\n \"source\": \"apache\"\n },\n \"application/x-font-framemaker\": {\n \"source\": \"apache\"\n },\n \"application/x-font-ghostscript\": {\n \"source\": \"apache\",\n \"extensions\": [\"gsf\"]\n },\n \"application/x-font-libgrx\": {\n \"source\": \"apache\"\n },\n \"application/x-font-linux-psf\": {\n \"source\": \"apache\",\n \"extensions\": [\"psf\"]\n },\n \"application/x-font-pcf\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcf\"]\n },\n \"application/x-font-snf\": {\n \"source\": \"apache\",\n \"extensions\": [\"snf\"]\n },\n \"application/x-font-speedo\": {\n \"source\": \"apache\"\n },\n \"application/x-font-sunos-news\": {\n \"source\": \"apache\"\n },\n \"application/x-font-type1\": {\n \"source\": \"apache\",\n \"extensions\": [\"pfa\",\"pfb\",\"pfm\",\"afm\"]\n },\n \"application/x-font-vfont\": {\n \"source\": \"apache\"\n },\n \"application/x-freearc\": {\n \"source\": \"apache\",\n \"extensions\": [\"arc\"]\n },\n \"application/x-futuresplash\": {\n \"source\": \"apache\",\n \"extensions\": [\"spl\"]\n },\n \"application/x-gca-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"gca\"]\n },\n \"application/x-glulx\": {\n \"source\": \"apache\",\n \"extensions\": [\"ulx\"]\n },\n \"application/x-gnumeric\": {\n \"source\": \"apache\",\n \"extensions\": [\"gnumeric\"]\n },\n \"application/x-gramps-xml\": {\n \"source\": \"apache\",\n \"extensions\": [\"gramps\"]\n },\n \"application/x-gtar\": {\n \"source\": \"apache\",\n \"extensions\": [\"gtar\"]\n },\n \"application/x-gzip\": {\n \"source\": \"apache\"\n },\n \"application/x-hdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"hdf\"]\n },\n \"application/x-httpd-php\": {\n \"compressible\": true,\n \"extensions\": [\"php\"]\n },\n \"application/x-install-instructions\": {\n \"source\": \"apache\",\n \"extensions\": [\"install\"]\n },\n \"application/x-iso9660-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"iso\"]\n },\n \"application/x-iwork-keynote-sffkey\": {\n \"extensions\": [\"key\"]\n },\n \"application/x-iwork-numbers-sffnumbers\": {\n \"extensions\": [\"numbers\"]\n },\n \"application/x-iwork-pages-sffpages\": {\n \"extensions\": [\"pages\"]\n },\n \"application/x-java-archive-diff\": {\n \"source\": \"nginx\",\n \"extensions\": [\"jardiff\"]\n },\n \"application/x-java-jnlp-file\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"jnlp\"]\n },\n \"application/x-javascript\": {\n \"compressible\": true\n },\n \"application/x-keepass2\": {\n \"extensions\": [\"kdbx\"]\n },\n \"application/x-latex\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"latex\"]\n },\n \"application/x-lua-bytecode\": {\n \"extensions\": [\"luac\"]\n },\n \"application/x-lzh-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"lzh\",\"lha\"]\n },\n \"application/x-makeself\": {\n \"source\": \"nginx\",\n \"extensions\": [\"run\"]\n },\n \"application/x-mie\": {\n \"source\": \"apache\",\n \"extensions\": [\"mie\"]\n },\n \"application/x-mobipocket-ebook\": {\n \"source\": \"apache\",\n \"extensions\": [\"prc\",\"mobi\"]\n },\n \"application/x-mpegurl\": {\n \"compressible\": false\n },\n \"application/x-ms-application\": {\n \"source\": \"apache\",\n \"extensions\": [\"application\"]\n },\n \"application/x-ms-shortcut\": {\n \"source\": \"apache\",\n \"extensions\": [\"lnk\"]\n },\n \"application/x-ms-wmd\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmd\"]\n },\n \"application/x-ms-wmz\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmz\"]\n },\n \"application/x-ms-xbap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xbap\"]\n },\n \"application/x-msaccess\": {\n \"source\": \"apache\",\n \"extensions\": [\"mdb\"]\n },\n \"application/x-msbinder\": {\n \"source\": \"apache\",\n \"extensions\": [\"obd\"]\n },\n \"application/x-mscardfile\": {\n \"source\": \"apache\",\n \"extensions\": [\"crd\"]\n },\n \"application/x-msclip\": {\n \"source\": \"apache\",\n \"extensions\": [\"clp\"]\n },\n \"application/x-msdos-program\": {\n \"extensions\": [\"exe\"]\n },\n \"application/x-msdownload\": {\n \"source\": \"apache\",\n \"extensions\": [\"exe\",\"dll\",\"com\",\"bat\",\"msi\"]\n },\n \"application/x-msmediaview\": {\n \"source\": \"apache\",\n \"extensions\": [\"mvb\",\"m13\",\"m14\"]\n },\n \"application/x-msmetafile\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmf\",\"wmz\",\"emf\",\"emz\"]\n },\n \"application/x-msmoney\": {\n \"source\": \"apache\",\n \"extensions\": [\"mny\"]\n },\n \"application/x-mspublisher\": {\n \"source\": \"apache\",\n \"extensions\": [\"pub\"]\n },\n \"application/x-msschedule\": {\n \"source\": \"apache\",\n \"extensions\": [\"scd\"]\n },\n \"application/x-msterminal\": {\n \"source\": \"apache\",\n \"extensions\": [\"trm\"]\n },\n \"application/x-mswrite\": {\n \"source\": \"apache\",\n \"extensions\": [\"wri\"]\n },\n \"application/x-netcdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"nc\",\"cdf\"]\n },\n \"application/x-ns-proxy-autoconfig\": {\n \"compressible\": true,\n \"extensions\": [\"pac\"]\n },\n \"application/x-nzb\": {\n \"source\": \"apache\",\n \"extensions\": [\"nzb\"]\n },\n \"application/x-perl\": {\n \"source\": \"nginx\",\n \"extensions\": [\"pl\",\"pm\"]\n },\n \"application/x-pilot\": {\n \"source\": \"nginx\",\n \"extensions\": [\"prc\",\"pdb\"]\n },\n \"application/x-pkcs12\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"p12\",\"pfx\"]\n },\n \"application/x-pkcs7-certificates\": {\n \"source\": \"apache\",\n \"extensions\": [\"p7b\",\"spc\"]\n },\n \"application/x-pkcs7-certreqresp\": {\n \"source\": \"apache\",\n \"extensions\": [\"p7r\"]\n },\n \"application/x-pki-message\": {\n \"source\": \"iana\"\n },\n \"application/x-rar-compressed\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"rar\"]\n },\n \"application/x-redhat-package-manager\": {\n \"source\": \"nginx\",\n \"extensions\": [\"rpm\"]\n },\n \"application/x-research-info-systems\": {\n \"source\": \"apache\",\n \"extensions\": [\"ris\"]\n },\n \"application/x-sea\": {\n \"source\": \"nginx\",\n \"extensions\": [\"sea\"]\n },\n \"application/x-sh\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"sh\"]\n },\n \"application/x-shar\": {\n \"source\": \"apache\",\n \"extensions\": [\"shar\"]\n },\n \"application/x-shockwave-flash\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"swf\"]\n },\n \"application/x-silverlight-app\": {\n \"source\": \"apache\",\n \"extensions\": [\"xap\"]\n },\n \"application/x-sql\": {\n \"source\": \"apache\",\n \"extensions\": [\"sql\"]\n },\n \"application/x-stuffit\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"sit\"]\n },\n \"application/x-stuffitx\": {\n \"source\": \"apache\",\n \"extensions\": [\"sitx\"]\n },\n \"application/x-subrip\": {\n \"source\": \"apache\",\n \"extensions\": [\"srt\"]\n },\n \"application/x-sv4cpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"sv4cpio\"]\n },\n \"application/x-sv4crc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sv4crc\"]\n },\n \"application/x-t3vm-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"t3\"]\n },\n \"application/x-tads\": {\n \"source\": \"apache\",\n \"extensions\": [\"gam\"]\n },\n \"application/x-tar\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"tar\"]\n },\n \"application/x-tcl\": {\n \"source\": \"apache\",\n \"extensions\": [\"tcl\",\"tk\"]\n },\n \"application/x-tex\": {\n \"source\": \"apache\",\n \"extensions\": [\"tex\"]\n },\n \"application/x-tex-tfm\": {\n \"source\": \"apache\",\n \"extensions\": [\"tfm\"]\n },\n \"application/x-texinfo\": {\n \"source\": \"apache\",\n \"extensions\": [\"texinfo\",\"texi\"]\n },\n \"application/x-tgif\": {\n \"source\": \"apache\",\n \"extensions\": [\"obj\"]\n },\n \"application/x-ustar\": {\n \"source\": \"apache\",\n \"extensions\": [\"ustar\"]\n },\n \"application/x-virtualbox-hdd\": {\n \"compressible\": true,\n \"extensions\": [\"hdd\"]\n },\n \"application/x-virtualbox-ova\": {\n \"compressible\": true,\n \"extensions\": [\"ova\"]\n },\n \"application/x-virtualbox-ovf\": {\n \"compressible\": true,\n \"extensions\": [\"ovf\"]\n },\n \"application/x-virtualbox-vbox\": {\n \"compressible\": true,\n \"extensions\": [\"vbox\"]\n },\n \"application/x-virtualbox-vbox-extpack\": {\n \"compressible\": false,\n \"extensions\": [\"vbox-extpack\"]\n },\n \"application/x-virtualbox-vdi\": {\n \"compressible\": true,\n \"extensions\": [\"vdi\"]\n },\n \"application/x-virtualbox-vhd\": {\n \"compressible\": true,\n \"extensions\": [\"vhd\"]\n },\n \"application/x-virtualbox-vmdk\": {\n \"compressible\": true,\n \"extensions\": [\"vmdk\"]\n },\n \"application/x-wais-source\": {\n \"source\": \"apache\",\n \"extensions\": [\"src\"]\n },\n \"application/x-web-app-manifest+json\": {\n \"compressible\": true,\n \"extensions\": [\"webapp\"]\n },\n \"application/x-www-form-urlencoded\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/x-x509-ca-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"der\",\"crt\",\"pem\"]\n },\n \"application/x-x509-ca-ra-cert\": {\n \"source\": \"iana\"\n },\n \"application/x-x509-next-ca-cert\": {\n \"source\": \"iana\"\n },\n \"application/x-xfig\": {\n \"source\": \"apache\",\n \"extensions\": [\"fig\"]\n },\n \"application/x-xliff+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xlf\"]\n },\n \"application/x-xpinstall\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"xpi\"]\n },\n \"application/x-xz\": {\n \"source\": \"apache\",\n \"extensions\": [\"xz\"]\n },\n \"application/x-zmachine\": {\n \"source\": \"apache\",\n \"extensions\": [\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"]\n },\n \"application/x400-bp\": {\n \"source\": \"iana\"\n },\n \"application/xacml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xaml+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xaml\"]\n },\n \"application/xcap-att+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xav\"]\n },\n \"application/xcap-caps+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xca\"]\n },\n \"application/xcap-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdf\"]\n },\n \"application/xcap-el+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xel\"]\n },\n \"application/xcap-error+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xcap-ns+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xns\"]\n },\n \"application/xcon-conference-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xcon-conference-info-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xenc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xenc\"]\n },\n \"application/xhtml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xhtml\",\"xht\"]\n },\n \"application/xhtml-voice+xml\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/xliff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xlf\"]\n },\n \"application/xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xml\",\"xsl\",\"xsd\",\"rng\"]\n },\n \"application/xml-dtd\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dtd\"]\n },\n \"application/xml-external-parsed-entity\": {\n \"source\": \"iana\"\n },\n \"application/xml-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xmpp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xop+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xop\"]\n },\n \"application/xproc+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xpl\"]\n },\n \"application/xslt+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xsl\",\"xslt\"]\n },\n \"application/xspf+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xspf\"]\n },\n \"application/xv+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mxml\",\"xhvml\",\"xvml\",\"xvm\"]\n },\n \"application/yang\": {\n \"source\": \"iana\",\n \"extensions\": [\"yang\"]\n },\n \"application/yang-data+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yin+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"yin\"]\n },\n \"application/zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"zip\"]\n },\n \"application/zlib\": {\n \"source\": \"iana\"\n },\n \"application/zstd\": {\n \"source\": \"iana\"\n },\n \"audio/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"audio/32kadpcm\": {\n \"source\": \"iana\"\n },\n \"audio/3gpp\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"3gpp\"]\n },\n \"audio/3gpp2\": {\n \"source\": \"iana\"\n },\n \"audio/aac\": {\n \"source\": \"iana\"\n },\n \"audio/ac3\": {\n \"source\": \"iana\"\n },\n \"audio/adpcm\": {\n \"source\": \"apache\",\n \"extensions\": [\"adp\"]\n },\n \"audio/amr\": {\n \"source\": \"iana\",\n \"extensions\": [\"amr\"]\n },\n \"audio/amr-wb\": {\n \"source\": \"iana\"\n },\n \"audio/amr-wb+\": {\n \"source\": \"iana\"\n },\n \"audio/aptx\": {\n \"source\": \"iana\"\n },\n \"audio/asc\": {\n \"source\": \"iana\"\n },\n \"audio/atrac-advanced-lossless\": {\n \"source\": \"iana\"\n },\n \"audio/atrac-x\": {\n \"source\": \"iana\"\n },\n \"audio/atrac3\": {\n \"source\": \"iana\"\n },\n \"audio/basic\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"au\",\"snd\"]\n },\n \"audio/bv16\": {\n \"source\": \"iana\"\n },\n \"audio/bv32\": {\n \"source\": \"iana\"\n },\n \"audio/clearmode\": {\n \"source\": \"iana\"\n },\n \"audio/cn\": {\n \"source\": \"iana\"\n },\n \"audio/dat12\": {\n \"source\": \"iana\"\n },\n \"audio/dls\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es201108\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202050\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202211\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202212\": {\n \"source\": \"iana\"\n },\n \"audio/dv\": {\n \"source\": \"iana\"\n },\n \"audio/dvi4\": {\n \"source\": \"iana\"\n },\n \"audio/eac3\": {\n \"source\": \"iana\"\n },\n \"audio/encaprtp\": {\n \"source\": \"iana\"\n },\n \"audio/evrc\": {\n \"source\": \"iana\"\n },\n \"audio/evrc-qcp\": {\n \"source\": \"iana\"\n },\n \"audio/evrc0\": {\n \"source\": \"iana\"\n },\n \"audio/evrc1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb1\": {\n \"source\": \"iana\"\n },\n \"audio/evs\": {\n \"source\": \"iana\"\n },\n \"audio/flexfec\": {\n \"source\": \"iana\"\n },\n \"audio/fwdred\": {\n \"source\": \"iana\"\n },\n \"audio/g711-0\": {\n \"source\": \"iana\"\n },\n \"audio/g719\": {\n \"source\": \"iana\"\n },\n \"audio/g722\": {\n \"source\": \"iana\"\n },\n \"audio/g7221\": {\n \"source\": \"iana\"\n },\n \"audio/g723\": {\n \"source\": \"iana\"\n },\n \"audio/g726-16\": {\n \"source\": \"iana\"\n },\n \"audio/g726-24\": {\n \"source\": \"iana\"\n },\n \"audio/g726-32\": {\n \"source\": \"iana\"\n },\n \"audio/g726-40\": {\n \"source\": \"iana\"\n },\n \"audio/g728\": {\n \"source\": \"iana\"\n },\n \"audio/g729\": {\n \"source\": \"iana\"\n },\n \"audio/g7291\": {\n \"source\": \"iana\"\n },\n \"audio/g729d\": {\n \"source\": \"iana\"\n },\n \"audio/g729e\": {\n \"source\": \"iana\"\n },\n \"audio/gsm\": {\n \"source\": \"iana\"\n },\n \"audio/gsm-efr\": {\n \"source\": \"iana\"\n },\n \"audio/gsm-hr-08\": {\n \"source\": \"iana\"\n },\n \"audio/ilbc\": {\n \"source\": \"iana\"\n },\n \"audio/ip-mr_v2.5\": {\n \"source\": \"iana\"\n },\n \"audio/isac\": {\n \"source\": \"apache\"\n },\n \"audio/l16\": {\n \"source\": \"iana\"\n },\n \"audio/l20\": {\n \"source\": \"iana\"\n },\n \"audio/l24\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"audio/l8\": {\n \"source\": \"iana\"\n },\n \"audio/lpc\": {\n \"source\": \"iana\"\n },\n \"audio/melp\": {\n \"source\": \"iana\"\n },\n \"audio/melp1200\": {\n \"source\": \"iana\"\n },\n \"audio/melp2400\": {\n \"source\": \"iana\"\n },\n \"audio/melp600\": {\n \"source\": \"iana\"\n },\n \"audio/mhas\": {\n \"source\": \"iana\"\n },\n \"audio/midi\": {\n \"source\": \"apache\",\n \"extensions\": [\"mid\",\"midi\",\"kar\",\"rmi\"]\n },\n \"audio/mobile-xmf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxmf\"]\n },\n \"audio/mp3\": {\n \"compressible\": false,\n \"extensions\": [\"mp3\"]\n },\n \"audio/mp4\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"m4a\",\"mp4a\"]\n },\n \"audio/mp4a-latm\": {\n \"source\": \"iana\"\n },\n \"audio/mpa\": {\n \"source\": \"iana\"\n },\n \"audio/mpa-robust\": {\n \"source\": \"iana\"\n },\n \"audio/mpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"]\n },\n \"audio/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"audio/musepack\": {\n \"source\": \"apache\"\n },\n \"audio/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"oga\",\"ogg\",\"spx\",\"opus\"]\n },\n \"audio/opus\": {\n \"source\": \"iana\"\n },\n \"audio/parityfec\": {\n \"source\": \"iana\"\n },\n \"audio/pcma\": {\n \"source\": \"iana\"\n },\n \"audio/pcma-wb\": {\n \"source\": \"iana\"\n },\n \"audio/pcmu\": {\n \"source\": \"iana\"\n },\n \"audio/pcmu-wb\": {\n \"source\": \"iana\"\n },\n \"audio/prs.sid\": {\n \"source\": \"iana\"\n },\n \"audio/qcelp\": {\n \"source\": \"iana\"\n },\n \"audio/raptorfec\": {\n \"source\": \"iana\"\n },\n \"audio/red\": {\n \"source\": \"iana\"\n },\n \"audio/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"audio/rtp-midi\": {\n \"source\": \"iana\"\n },\n \"audio/rtploopback\": {\n \"source\": \"iana\"\n },\n \"audio/rtx\": {\n \"source\": \"iana\"\n },\n \"audio/s3m\": {\n \"source\": \"apache\",\n \"extensions\": [\"s3m\"]\n },\n \"audio/scip\": {\n \"source\": \"iana\"\n },\n \"audio/silk\": {\n \"source\": \"apache\",\n \"extensions\": [\"sil\"]\n },\n \"audio/smv\": {\n \"source\": \"iana\"\n },\n \"audio/smv-qcp\": {\n \"source\": \"iana\"\n },\n \"audio/smv0\": {\n \"source\": \"iana\"\n },\n \"audio/sofa\": {\n \"source\": \"iana\"\n },\n \"audio/sp-midi\": {\n \"source\": \"iana\"\n },\n \"audio/speex\": {\n \"source\": \"iana\"\n },\n \"audio/t140c\": {\n \"source\": \"iana\"\n },\n \"audio/t38\": {\n \"source\": \"iana\"\n },\n \"audio/telephone-event\": {\n \"source\": \"iana\"\n },\n \"audio/tetra_acelp\": {\n \"source\": \"iana\"\n },\n \"audio/tetra_acelp_bb\": {\n \"source\": \"iana\"\n },\n \"audio/tone\": {\n \"source\": \"iana\"\n },\n \"audio/tsvcis\": {\n \"source\": \"iana\"\n },\n \"audio/uemclip\": {\n \"source\": \"iana\"\n },\n \"audio/ulpfec\": {\n \"source\": \"iana\"\n },\n \"audio/usac\": {\n \"source\": \"iana\"\n },\n \"audio/vdvi\": {\n \"source\": \"iana\"\n },\n \"audio/vmr-wb\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.3gpp.iufp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.4sb\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.audiokoz\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.celp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cisco.nse\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cmles.radio-events\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cns.anp1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cns.inf1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dece.audio\": {\n \"source\": \"iana\",\n \"extensions\": [\"uva\",\"uvva\"]\n },\n \"audio/vnd.digital-winds\": {\n \"source\": \"iana\",\n \"extensions\": [\"eol\"]\n },\n \"audio/vnd.dlna.adts\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.heaac.1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.heaac.2\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.mlp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.mps\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2x\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2z\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pulse.1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dra\": {\n \"source\": \"iana\",\n \"extensions\": [\"dra\"]\n },\n \"audio/vnd.dts\": {\n \"source\": \"iana\",\n \"extensions\": [\"dts\"]\n },\n \"audio/vnd.dts.hd\": {\n \"source\": \"iana\",\n \"extensions\": [\"dtshd\"]\n },\n \"audio/vnd.dts.uhd\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dvb.file\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.everad.plj\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.hns.audio\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.lucent.voice\": {\n \"source\": \"iana\",\n \"extensions\": [\"lvp\"]\n },\n \"audio/vnd.ms-playready.media.pya\": {\n \"source\": \"iana\",\n \"extensions\": [\"pya\"]\n },\n \"audio/vnd.nokia.mobile-xmf\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.nortel.vbk\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.nuera.ecelp4800\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp4800\"]\n },\n \"audio/vnd.nuera.ecelp7470\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp7470\"]\n },\n \"audio/vnd.nuera.ecelp9600\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp9600\"]\n },\n \"audio/vnd.octel.sbc\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.presonus.multitrack\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.qcelp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.rhetorex.32kadpcm\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.rip\": {\n \"source\": \"iana\",\n \"extensions\": [\"rip\"]\n },\n \"audio/vnd.rn-realaudio\": {\n \"compressible\": false\n },\n \"audio/vnd.sealedmedia.softseal.mpeg\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.vmx.cvsd\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.wave\": {\n \"compressible\": false\n },\n \"audio/vorbis\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"audio/vorbis-config\": {\n \"source\": \"iana\"\n },\n \"audio/wav\": {\n \"compressible\": false,\n \"extensions\": [\"wav\"]\n },\n \"audio/wave\": {\n \"compressible\": false,\n \"extensions\": [\"wav\"]\n },\n \"audio/webm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"weba\"]\n },\n \"audio/x-aac\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"aac\"]\n },\n \"audio/x-aiff\": {\n \"source\": \"apache\",\n \"extensions\": [\"aif\",\"aiff\",\"aifc\"]\n },\n \"audio/x-caf\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"caf\"]\n },\n \"audio/x-flac\": {\n \"source\": \"apache\",\n \"extensions\": [\"flac\"]\n },\n \"audio/x-m4a\": {\n \"source\": \"nginx\",\n \"extensions\": [\"m4a\"]\n },\n \"audio/x-matroska\": {\n \"source\": \"apache\",\n \"extensions\": [\"mka\"]\n },\n \"audio/x-mpegurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"m3u\"]\n },\n \"audio/x-ms-wax\": {\n \"source\": \"apache\",\n \"extensions\": [\"wax\"]\n },\n \"audio/x-ms-wma\": {\n \"source\": \"apache\",\n \"extensions\": [\"wma\"]\n },\n \"audio/x-pn-realaudio\": {\n \"source\": \"apache\",\n \"extensions\": [\"ram\",\"ra\"]\n },\n \"audio/x-pn-realaudio-plugin\": {\n \"source\": \"apache\",\n \"extensions\": [\"rmp\"]\n },\n \"audio/x-realaudio\": {\n \"source\": \"nginx\",\n \"extensions\": [\"ra\"]\n },\n \"audio/x-tta\": {\n \"source\": \"apache\"\n },\n \"audio/x-wav\": {\n \"source\": \"apache\",\n \"extensions\": [\"wav\"]\n },\n \"audio/xm\": {\n \"source\": \"apache\",\n \"extensions\": [\"xm\"]\n },\n \"chemical/x-cdx\": {\n \"source\": \"apache\",\n \"extensions\": [\"cdx\"]\n },\n \"chemical/x-cif\": {\n \"source\": \"apache\",\n \"extensions\": [\"cif\"]\n },\n \"chemical/x-cmdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"cmdf\"]\n },\n \"chemical/x-cml\": {\n \"source\": \"apache\",\n \"extensions\": [\"cml\"]\n },\n \"chemical/x-csml\": {\n \"source\": \"apache\",\n \"extensions\": [\"csml\"]\n },\n \"chemical/x-pdb\": {\n \"source\": \"apache\"\n },\n \"chemical/x-xyz\": {\n \"source\": \"apache\",\n \"extensions\": [\"xyz\"]\n },\n \"font/collection\": {\n \"source\": \"iana\",\n \"extensions\": [\"ttc\"]\n },\n \"font/otf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"otf\"]\n },\n \"font/sfnt\": {\n \"source\": \"iana\"\n },\n \"font/ttf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ttf\"]\n },\n \"font/woff\": {\n \"source\": \"iana\",\n \"extensions\": [\"woff\"]\n },\n \"font/woff2\": {\n \"source\": \"iana\",\n \"extensions\": [\"woff2\"]\n },\n \"image/aces\": {\n \"source\": \"iana\",\n \"extensions\": [\"exr\"]\n },\n \"image/apng\": {\n \"compressible\": false,\n \"extensions\": [\"apng\"]\n },\n \"image/avci\": {\n \"source\": \"iana\",\n \"extensions\": [\"avci\"]\n },\n \"image/avcs\": {\n \"source\": \"iana\",\n \"extensions\": [\"avcs\"]\n },\n \"image/avif\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"avif\"]\n },\n \"image/bmp\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"bmp\"]\n },\n \"image/cgm\": {\n \"source\": \"iana\",\n \"extensions\": [\"cgm\"]\n },\n \"image/dicom-rle\": {\n \"source\": \"iana\",\n \"extensions\": [\"drle\"]\n },\n \"image/emf\": {\n \"source\": \"iana\",\n \"extensions\": [\"emf\"]\n },\n \"image/fits\": {\n \"source\": \"iana\",\n \"extensions\": [\"fits\"]\n },\n \"image/g3fax\": {\n \"source\": \"iana\",\n \"extensions\": [\"g3\"]\n },\n \"image/gif\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"gif\"]\n },\n \"image/heic\": {\n \"source\": \"iana\",\n \"extensions\": [\"heic\"]\n },\n \"image/heic-sequence\": {\n \"source\": \"iana\",\n \"extensions\": [\"heics\"]\n },\n \"image/heif\": {\n \"source\": \"iana\",\n \"extensions\": [\"heif\"]\n },\n \"image/heif-sequence\": {\n \"source\": \"iana\",\n \"extensions\": [\"heifs\"]\n },\n \"image/hej2k\": {\n \"source\": \"iana\",\n \"extensions\": [\"hej2\"]\n },\n \"image/hsj2\": {\n \"source\": \"iana\",\n \"extensions\": [\"hsj2\"]\n },\n \"image/ief\": {\n \"source\": \"iana\",\n \"extensions\": [\"ief\"]\n },\n \"image/jls\": {\n \"source\": \"iana\",\n \"extensions\": [\"jls\"]\n },\n \"image/jp2\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jp2\",\"jpg2\"]\n },\n \"image/jpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpeg\",\"jpg\",\"jpe\"]\n },\n \"image/jph\": {\n \"source\": \"iana\",\n \"extensions\": [\"jph\"]\n },\n \"image/jphc\": {\n \"source\": \"iana\",\n \"extensions\": [\"jhc\"]\n },\n \"image/jpm\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpm\"]\n },\n \"image/jpx\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpx\",\"jpf\"]\n },\n \"image/jxr\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxr\"]\n },\n \"image/jxra\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxra\"]\n },\n \"image/jxrs\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxrs\"]\n },\n \"image/jxs\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxs\"]\n },\n \"image/jxsc\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxsc\"]\n },\n \"image/jxsi\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxsi\"]\n },\n \"image/jxss\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxss\"]\n },\n \"image/ktx\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktx\"]\n },\n \"image/ktx2\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktx2\"]\n },\n \"image/naplps\": {\n \"source\": \"iana\"\n },\n \"image/pjpeg\": {\n \"compressible\": false\n },\n \"image/png\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"png\"]\n },\n \"image/prs.btif\": {\n \"source\": \"iana\",\n \"extensions\": [\"btif\"]\n },\n \"image/prs.pti\": {\n \"source\": \"iana\",\n \"extensions\": [\"pti\"]\n },\n \"image/pwg-raster\": {\n \"source\": \"iana\"\n },\n \"image/sgi\": {\n \"source\": \"apache\",\n \"extensions\": [\"sgi\"]\n },\n \"image/svg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"svg\",\"svgz\"]\n },\n \"image/t38\": {\n \"source\": \"iana\",\n \"extensions\": [\"t38\"]\n },\n \"image/tiff\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"tif\",\"tiff\"]\n },\n \"image/tiff-fx\": {\n \"source\": \"iana\",\n \"extensions\": [\"tfx\"]\n },\n \"image/vnd.adobe.photoshop\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"psd\"]\n },\n \"image/vnd.airzip.accelerator.azv\": {\n \"source\": \"iana\",\n \"extensions\": [\"azv\"]\n },\n \"image/vnd.cns.inf2\": {\n \"source\": \"iana\"\n },\n \"image/vnd.dece.graphic\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"]\n },\n \"image/vnd.djvu\": {\n \"source\": \"iana\",\n \"extensions\": [\"djvu\",\"djv\"]\n },\n \"image/vnd.dvb.subtitle\": {\n \"source\": \"iana\",\n \"extensions\": [\"sub\"]\n },\n \"image/vnd.dwg\": {\n \"source\": \"iana\",\n \"extensions\": [\"dwg\"]\n },\n \"image/vnd.dxf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dxf\"]\n },\n \"image/vnd.fastbidsheet\": {\n \"source\": \"iana\",\n \"extensions\": [\"fbs\"]\n },\n \"image/vnd.fpx\": {\n \"source\": \"iana\",\n \"extensions\": [\"fpx\"]\n },\n \"image/vnd.fst\": {\n \"source\": \"iana\",\n \"extensions\": [\"fst\"]\n },\n \"image/vnd.fujixerox.edmics-mmr\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmr\"]\n },\n \"image/vnd.fujixerox.edmics-rlc\": {\n \"source\": \"iana\",\n \"extensions\": [\"rlc\"]\n },\n \"image/vnd.globalgraphics.pgb\": {\n \"source\": \"iana\"\n },\n \"image/vnd.microsoft.icon\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ico\"]\n },\n \"image/vnd.mix\": {\n \"source\": \"iana\"\n },\n \"image/vnd.mozilla.apng\": {\n \"source\": \"iana\"\n },\n \"image/vnd.ms-dds\": {\n \"compressible\": true,\n \"extensions\": [\"dds\"]\n },\n \"image/vnd.ms-modi\": {\n \"source\": \"iana\",\n \"extensions\": [\"mdi\"]\n },\n \"image/vnd.ms-photo\": {\n \"source\": \"apache\",\n \"extensions\": [\"wdp\"]\n },\n \"image/vnd.net-fpx\": {\n \"source\": \"iana\",\n \"extensions\": [\"npx\"]\n },\n \"image/vnd.pco.b16\": {\n \"source\": \"iana\",\n \"extensions\": [\"b16\"]\n },\n \"image/vnd.radiance\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealed.png\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealedmedia.softseal.gif\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealedmedia.softseal.jpg\": {\n \"source\": \"iana\"\n },\n \"image/vnd.svf\": {\n \"source\": \"iana\"\n },\n \"image/vnd.tencent.tap\": {\n \"source\": \"iana\",\n \"extensions\": [\"tap\"]\n },\n \"image/vnd.valve.source.texture\": {\n \"source\": \"iana\",\n \"extensions\": [\"vtf\"]\n },\n \"image/vnd.wap.wbmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"wbmp\"]\n },\n \"image/vnd.xiff\": {\n \"source\": \"iana\",\n \"extensions\": [\"xif\"]\n },\n \"image/vnd.zbrush.pcx\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcx\"]\n },\n \"image/webp\": {\n \"source\": \"apache\",\n \"extensions\": [\"webp\"]\n },\n \"image/wmf\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmf\"]\n },\n \"image/x-3ds\": {\n \"source\": \"apache\",\n \"extensions\": [\"3ds\"]\n },\n \"image/x-cmu-raster\": {\n \"source\": \"apache\",\n \"extensions\": [\"ras\"]\n },\n \"image/x-cmx\": {\n \"source\": \"apache\",\n \"extensions\": [\"cmx\"]\n },\n \"image/x-freehand\": {\n \"source\": \"apache\",\n \"extensions\": [\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"]\n },\n \"image/x-icon\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ico\"]\n },\n \"image/x-jng\": {\n \"source\": \"nginx\",\n \"extensions\": [\"jng\"]\n },\n \"image/x-mrsid-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"sid\"]\n },\n \"image/x-ms-bmp\": {\n \"source\": \"nginx\",\n \"compressible\": true,\n \"extensions\": [\"bmp\"]\n },\n \"image/x-pcx\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcx\"]\n },\n \"image/x-pict\": {\n \"source\": \"apache\",\n \"extensions\": [\"pic\",\"pct\"]\n },\n \"image/x-portable-anymap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pnm\"]\n },\n \"image/x-portable-bitmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pbm\"]\n },\n \"image/x-portable-graymap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pgm\"]\n },\n \"image/x-portable-pixmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"ppm\"]\n },\n \"image/x-rgb\": {\n \"source\": \"apache\",\n \"extensions\": [\"rgb\"]\n },\n \"image/x-tga\": {\n \"source\": \"apache\",\n \"extensions\": [\"tga\"]\n },\n \"image/x-xbitmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xbm\"]\n },\n \"image/x-xcf\": {\n \"compressible\": false\n },\n \"image/x-xpixmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xpm\"]\n },\n \"image/x-xwindowdump\": {\n \"source\": \"apache\",\n \"extensions\": [\"xwd\"]\n },\n \"message/cpim\": {\n \"source\": \"iana\"\n },\n \"message/delivery-status\": {\n \"source\": \"iana\"\n },\n \"message/disposition-notification\": {\n \"source\": \"iana\",\n \"extensions\": [\n \"disposition-notification\"\n ]\n },\n \"message/external-body\": {\n \"source\": \"iana\"\n },\n \"message/feedback-report\": {\n \"source\": \"iana\"\n },\n \"message/global\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8msg\"]\n },\n \"message/global-delivery-status\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8dsn\"]\n },\n \"message/global-disposition-notification\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8mdn\"]\n },\n \"message/global-headers\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8hdr\"]\n },\n \"message/http\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"message/imdn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"message/news\": {\n \"source\": \"iana\"\n },\n \"message/partial\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"message/rfc822\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"eml\",\"mime\"]\n },\n \"message/s-http\": {\n \"source\": \"iana\"\n },\n \"message/sip\": {\n \"source\": \"iana\"\n },\n \"message/sipfrag\": {\n \"source\": \"iana\"\n },\n \"message/tracking-status\": {\n \"source\": \"iana\"\n },\n \"message/vnd.si.simp\": {\n \"source\": \"iana\"\n },\n \"message/vnd.wfa.wsc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wsc\"]\n },\n \"model/3mf\": {\n \"source\": \"iana\",\n \"extensions\": [\"3mf\"]\n },\n \"model/e57\": {\n \"source\": \"iana\"\n },\n \"model/gltf+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"gltf\"]\n },\n \"model/gltf-binary\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"glb\"]\n },\n \"model/iges\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"igs\",\"iges\"]\n },\n \"model/mesh\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"msh\",\"mesh\",\"silo\"]\n },\n \"model/mtl\": {\n \"source\": \"iana\",\n \"extensions\": [\"mtl\"]\n },\n \"model/obj\": {\n \"source\": \"iana\",\n \"extensions\": [\"obj\"]\n },\n \"model/step\": {\n \"source\": \"iana\"\n },\n \"model/step+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"stpx\"]\n },\n \"model/step+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"stpz\"]\n },\n \"model/step-xml+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"stpxz\"]\n },\n \"model/stl\": {\n \"source\": \"iana\",\n \"extensions\": [\"stl\"]\n },\n \"model/vnd.collada+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dae\"]\n },\n \"model/vnd.dwf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dwf\"]\n },\n \"model/vnd.flatland.3dml\": {\n \"source\": \"iana\"\n },\n \"model/vnd.gdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"gdl\"]\n },\n \"model/vnd.gs-gdl\": {\n \"source\": \"apache\"\n },\n \"model/vnd.gs.gdl\": {\n \"source\": \"iana\"\n },\n \"model/vnd.gtw\": {\n \"source\": \"iana\",\n \"extensions\": [\"gtw\"]\n },\n \"model/vnd.moml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"model/vnd.mts\": {\n \"source\": \"iana\",\n \"extensions\": [\"mts\"]\n },\n \"model/vnd.opengex\": {\n \"source\": \"iana\",\n \"extensions\": [\"ogex\"]\n },\n \"model/vnd.parasolid.transmit.binary\": {\n \"source\": \"iana\",\n \"extensions\": [\"x_b\"]\n },\n \"model/vnd.parasolid.transmit.text\": {\n \"source\": \"iana\",\n \"extensions\": [\"x_t\"]\n },\n \"model/vnd.pytha.pyox\": {\n \"source\": \"iana\"\n },\n \"model/vnd.rosette.annotated-data-model\": {\n \"source\": \"iana\"\n },\n \"model/vnd.sap.vds\": {\n \"source\": \"iana\",\n \"extensions\": [\"vds\"]\n },\n \"model/vnd.usdz+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"usdz\"]\n },\n \"model/vnd.valve.source.compiled-map\": {\n \"source\": \"iana\",\n \"extensions\": [\"bsp\"]\n },\n \"model/vnd.vtu\": {\n \"source\": \"iana\",\n \"extensions\": [\"vtu\"]\n },\n \"model/vrml\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"wrl\",\"vrml\"]\n },\n \"model/x3d+binary\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"x3db\",\"x3dbz\"]\n },\n \"model/x3d+fastinfoset\": {\n \"source\": \"iana\",\n \"extensions\": [\"x3db\"]\n },\n \"model/x3d+vrml\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"x3dv\",\"x3dvz\"]\n },\n \"model/x3d+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"x3d\",\"x3dz\"]\n },\n \"model/x3d-vrml\": {\n \"source\": \"iana\",\n \"extensions\": [\"x3dv\"]\n },\n \"multipart/alternative\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/appledouble\": {\n \"source\": \"iana\"\n },\n \"multipart/byteranges\": {\n \"source\": \"iana\"\n },\n \"multipart/digest\": {\n \"source\": \"iana\"\n },\n \"multipart/encrypted\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/form-data\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/header-set\": {\n \"source\": \"iana\"\n },\n \"multipart/mixed\": {\n \"source\": \"iana\"\n },\n \"multipart/multilingual\": {\n \"source\": \"iana\"\n },\n \"multipart/parallel\": {\n \"source\": \"iana\"\n },\n \"multipart/related\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/report\": {\n \"source\": \"iana\"\n },\n \"multipart/signed\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/vnd.bint.med-plus\": {\n \"source\": \"iana\"\n },\n \"multipart/voice-message\": {\n \"source\": \"iana\"\n },\n \"multipart/x-mixed-replace\": {\n \"source\": \"iana\"\n },\n \"text/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"text/cache-manifest\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"appcache\",\"manifest\"]\n },\n \"text/calendar\": {\n \"source\": \"iana\",\n \"extensions\": [\"ics\",\"ifb\"]\n },\n \"text/calender\": {\n \"compressible\": true\n },\n \"text/cmd\": {\n \"compressible\": true\n },\n \"text/coffeescript\": {\n \"extensions\": [\"coffee\",\"litcoffee\"]\n },\n \"text/cql\": {\n \"source\": \"iana\"\n },\n \"text/cql-expression\": {\n \"source\": \"iana\"\n },\n \"text/cql-identifier\": {\n \"source\": \"iana\"\n },\n \"text/css\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"css\"]\n },\n \"text/csv\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"csv\"]\n },\n \"text/csv-schema\": {\n \"source\": \"iana\"\n },\n \"text/directory\": {\n \"source\": \"iana\"\n },\n \"text/dns\": {\n \"source\": \"iana\"\n },\n \"text/ecmascript\": {\n \"source\": \"iana\"\n },\n \"text/encaprtp\": {\n \"source\": \"iana\"\n },\n \"text/enriched\": {\n \"source\": \"iana\"\n },\n \"text/fhirpath\": {\n \"source\": \"iana\"\n },\n \"text/flexfec\": {\n \"source\": \"iana\"\n },\n \"text/fwdred\": {\n \"source\": \"iana\"\n },\n \"text/gff3\": {\n \"source\": \"iana\"\n },\n \"text/grammar-ref-list\": {\n \"source\": \"iana\"\n },\n \"text/html\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"html\",\"htm\",\"shtml\"]\n },\n \"text/jade\": {\n \"extensions\": [\"jade\"]\n },\n \"text/javascript\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"text/jcr-cnd\": {\n \"source\": \"iana\"\n },\n \"text/jsx\": {\n \"compressible\": true,\n \"extensions\": [\"jsx\"]\n },\n \"text/less\": {\n \"compressible\": true,\n \"extensions\": [\"less\"]\n },\n \"text/markdown\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"markdown\",\"md\"]\n },\n \"text/mathml\": {\n \"source\": \"nginx\",\n \"extensions\": [\"mml\"]\n },\n \"text/mdx\": {\n \"compressible\": true,\n \"extensions\": [\"mdx\"]\n },\n \"text/mizar\": {\n \"source\": \"iana\"\n },\n \"text/n3\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"n3\"]\n },\n \"text/parameters\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/parityfec\": {\n \"source\": \"iana\"\n },\n \"text/plain\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"]\n },\n \"text/provenance-notation\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/prs.fallenstein.rst\": {\n \"source\": \"iana\"\n },\n \"text/prs.lines.tag\": {\n \"source\": \"iana\",\n \"extensions\": [\"dsc\"]\n },\n \"text/prs.prop.logic\": {\n \"source\": \"iana\"\n },\n \"text/raptorfec\": {\n \"source\": \"iana\"\n },\n \"text/red\": {\n \"source\": \"iana\"\n },\n \"text/rfc822-headers\": {\n \"source\": \"iana\"\n },\n \"text/richtext\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtx\"]\n },\n \"text/rtf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtf\"]\n },\n \"text/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"text/rtploopback\": {\n \"source\": \"iana\"\n },\n \"text/rtx\": {\n \"source\": \"iana\"\n },\n \"text/sgml\": {\n \"source\": \"iana\",\n \"extensions\": [\"sgml\",\"sgm\"]\n },\n \"text/shaclc\": {\n \"source\": \"iana\"\n },\n \"text/shex\": {\n \"source\": \"iana\",\n \"extensions\": [\"shex\"]\n },\n \"text/slim\": {\n \"extensions\": [\"slim\",\"slm\"]\n },\n \"text/spdx\": {\n \"source\": \"iana\",\n \"extensions\": [\"spdx\"]\n },\n \"text/strings\": {\n \"source\": \"iana\"\n },\n \"text/stylus\": {\n \"extensions\": [\"stylus\",\"styl\"]\n },\n \"text/t140\": {\n \"source\": \"iana\"\n },\n \"text/tab-separated-values\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tsv\"]\n },\n \"text/troff\": {\n \"source\": \"iana\",\n \"extensions\": [\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"]\n },\n \"text/turtle\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"ttl\"]\n },\n \"text/ulpfec\": {\n \"source\": \"iana\"\n },\n \"text/uri-list\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uri\",\"uris\",\"urls\"]\n },\n \"text/vcard\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"vcard\"]\n },\n \"text/vnd.a\": {\n \"source\": \"iana\"\n },\n \"text/vnd.abc\": {\n \"source\": \"iana\"\n },\n \"text/vnd.ascii-art\": {\n \"source\": \"iana\"\n },\n \"text/vnd.curl\": {\n \"source\": \"iana\",\n \"extensions\": [\"curl\"]\n },\n \"text/vnd.curl.dcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"dcurl\"]\n },\n \"text/vnd.curl.mcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"mcurl\"]\n },\n \"text/vnd.curl.scurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"scurl\"]\n },\n \"text/vnd.debian.copyright\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.dmclientscript\": {\n \"source\": \"iana\"\n },\n \"text/vnd.dvb.subtitle\": {\n \"source\": \"iana\",\n \"extensions\": [\"sub\"]\n },\n \"text/vnd.esmertec.theme-descriptor\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.familysearch.gedcom\": {\n \"source\": \"iana\",\n \"extensions\": [\"ged\"]\n },\n \"text/vnd.ficlab.flt\": {\n \"source\": \"iana\"\n },\n \"text/vnd.fly\": {\n \"source\": \"iana\",\n \"extensions\": [\"fly\"]\n },\n \"text/vnd.fmi.flexstor\": {\n \"source\": \"iana\",\n \"extensions\": [\"flx\"]\n },\n \"text/vnd.gml\": {\n \"source\": \"iana\"\n },\n \"text/vnd.graphviz\": {\n \"source\": \"iana\",\n \"extensions\": [\"gv\"]\n },\n \"text/vnd.hans\": {\n \"source\": \"iana\"\n },\n \"text/vnd.hgl\": {\n \"source\": \"iana\"\n },\n \"text/vnd.in3d.3dml\": {\n \"source\": \"iana\",\n \"extensions\": [\"3dml\"]\n },\n \"text/vnd.in3d.spot\": {\n \"source\": \"iana\",\n \"extensions\": [\"spot\"]\n },\n \"text/vnd.iptc.newsml\": {\n \"source\": \"iana\"\n },\n \"text/vnd.iptc.nitf\": {\n \"source\": \"iana\"\n },\n \"text/vnd.latex-z\": {\n \"source\": \"iana\"\n },\n \"text/vnd.motorola.reflex\": {\n \"source\": \"iana\"\n },\n \"text/vnd.ms-mediapackage\": {\n \"source\": \"iana\"\n },\n \"text/vnd.net2phone.commcenter.command\": {\n \"source\": \"iana\"\n },\n \"text/vnd.radisys.msml-basic-layout\": {\n \"source\": \"iana\"\n },\n \"text/vnd.senx.warpscript\": {\n \"source\": \"iana\"\n },\n \"text/vnd.si.uricatalogue\": {\n \"source\": \"iana\"\n },\n \"text/vnd.sosi\": {\n \"source\": \"iana\"\n },\n \"text/vnd.sun.j2me.app-descriptor\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"jad\"]\n },\n \"text/vnd.trolltech.linguist\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.wap.si\": {\n \"source\": \"iana\"\n },\n \"text/vnd.wap.sl\": {\n \"source\": \"iana\"\n },\n \"text/vnd.wap.wml\": {\n \"source\": \"iana\",\n \"extensions\": [\"wml\"]\n },\n \"text/vnd.wap.wmlscript\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmls\"]\n },\n \"text/vtt\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"vtt\"]\n },\n \"text/x-asm\": {\n \"source\": \"apache\",\n \"extensions\": [\"s\",\"asm\"]\n },\n \"text/x-c\": {\n \"source\": \"apache\",\n \"extensions\": [\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"]\n },\n \"text/x-component\": {\n \"source\": \"nginx\",\n \"extensions\": [\"htc\"]\n },\n \"text/x-fortran\": {\n \"source\": \"apache\",\n \"extensions\": [\"f\",\"for\",\"f77\",\"f90\"]\n },\n \"text/x-gwt-rpc\": {\n \"compressible\": true\n },\n \"text/x-handlebars-template\": {\n \"extensions\": [\"hbs\"]\n },\n \"text/x-java-source\": {\n \"source\": \"apache\",\n \"extensions\": [\"java\"]\n },\n \"text/x-jquery-tmpl\": {\n \"compressible\": true\n },\n \"text/x-lua\": {\n \"extensions\": [\"lua\"]\n },\n \"text/x-markdown\": {\n \"compressible\": true,\n \"extensions\": [\"mkd\"]\n },\n \"text/x-nfo\": {\n \"source\": \"apache\",\n \"extensions\": [\"nfo\"]\n },\n \"text/x-opml\": {\n \"source\": \"apache\",\n \"extensions\": [\"opml\"]\n },\n \"text/x-org\": {\n \"compressible\": true,\n \"extensions\": [\"org\"]\n },\n \"text/x-pascal\": {\n \"source\": \"apache\",\n \"extensions\": [\"p\",\"pas\"]\n },\n \"text/x-processing\": {\n \"compressible\": true,\n \"extensions\": [\"pde\"]\n },\n \"text/x-sass\": {\n \"extensions\": [\"sass\"]\n },\n \"text/x-scss\": {\n \"extensions\": [\"scss\"]\n },\n \"text/x-setext\": {\n \"source\": \"apache\",\n \"extensions\": [\"etx\"]\n },\n \"text/x-sfv\": {\n \"source\": \"apache\",\n \"extensions\": [\"sfv\"]\n },\n \"text/x-suse-ymp\": {\n \"compressible\": true,\n \"extensions\": [\"ymp\"]\n },\n \"text/x-uuencode\": {\n \"source\": \"apache\",\n \"extensions\": [\"uu\"]\n },\n \"text/x-vcalendar\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcs\"]\n },\n \"text/x-vcard\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcf\"]\n },\n \"text/xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xml\"]\n },\n \"text/xml-external-parsed-entity\": {\n \"source\": \"iana\"\n },\n \"text/yaml\": {\n \"compressible\": true,\n \"extensions\": [\"yaml\",\"yml\"]\n },\n \"video/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"video/3gpp\": {\n \"source\": \"iana\",\n \"extensions\": [\"3gp\",\"3gpp\"]\n },\n \"video/3gpp-tt\": {\n \"source\": \"iana\"\n },\n \"video/3gpp2\": {\n \"source\": \"iana\",\n \"extensions\": [\"3g2\"]\n },\n \"video/av1\": {\n \"source\": \"iana\"\n },\n \"video/bmpeg\": {\n \"source\": \"iana\"\n },\n \"video/bt656\": {\n \"source\": \"iana\"\n },\n \"video/celb\": {\n \"source\": \"iana\"\n },\n \"video/dv\": {\n \"source\": \"iana\"\n },\n \"video/encaprtp\": {\n \"source\": \"iana\"\n },\n \"video/ffv1\": {\n \"source\": \"iana\"\n },\n \"video/flexfec\": {\n \"source\": \"iana\"\n },\n \"video/h261\": {\n \"source\": \"iana\",\n \"extensions\": [\"h261\"]\n },\n \"video/h263\": {\n \"source\": \"iana\",\n \"extensions\": [\"h263\"]\n },\n \"video/h263-1998\": {\n \"source\": \"iana\"\n },\n \"video/h263-2000\": {\n \"source\": \"iana\"\n },\n \"video/h264\": {\n \"source\": \"iana\",\n \"extensions\": [\"h264\"]\n },\n \"video/h264-rcdo\": {\n \"source\": \"iana\"\n },\n \"video/h264-svc\": {\n \"source\": \"iana\"\n },\n \"video/h265\": {\n \"source\": \"iana\"\n },\n \"video/iso.segment\": {\n \"source\": \"iana\",\n \"extensions\": [\"m4s\"]\n },\n \"video/jpeg\": {\n \"source\": \"iana\",\n \"extensions\": [\"jpgv\"]\n },\n \"video/jpeg2000\": {\n \"source\": \"iana\"\n },\n \"video/jpm\": {\n \"source\": \"apache\",\n \"extensions\": [\"jpm\",\"jpgm\"]\n },\n \"video/jxsv\": {\n \"source\": \"iana\"\n },\n \"video/mj2\": {\n \"source\": \"iana\",\n \"extensions\": [\"mj2\",\"mjp2\"]\n },\n \"video/mp1s\": {\n \"source\": \"iana\"\n },\n \"video/mp2p\": {\n \"source\": \"iana\"\n },\n \"video/mp2t\": {\n \"source\": \"iana\",\n \"extensions\": [\"ts\"]\n },\n \"video/mp4\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mp4\",\"mp4v\",\"mpg4\"]\n },\n \"video/mp4v-es\": {\n \"source\": \"iana\"\n },\n \"video/mpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"]\n },\n \"video/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"video/mpv\": {\n \"source\": \"iana\"\n },\n \"video/nv\": {\n \"source\": \"iana\"\n },\n \"video/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ogv\"]\n },\n \"video/parityfec\": {\n \"source\": \"iana\"\n },\n \"video/pointer\": {\n \"source\": \"iana\"\n },\n \"video/quicktime\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"qt\",\"mov\"]\n },\n \"video/raptorfec\": {\n \"source\": \"iana\"\n },\n \"video/raw\": {\n \"source\": \"iana\"\n },\n \"video/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"video/rtploopback\": {\n \"source\": \"iana\"\n },\n \"video/rtx\": {\n \"source\": \"iana\"\n },\n \"video/scip\": {\n \"source\": \"iana\"\n },\n \"video/smpte291\": {\n \"source\": \"iana\"\n },\n \"video/smpte292m\": {\n \"source\": \"iana\"\n },\n \"video/ulpfec\": {\n \"source\": \"iana\"\n },\n \"video/vc1\": {\n \"source\": \"iana\"\n },\n \"video/vc2\": {\n \"source\": \"iana\"\n },\n \"video/vnd.cctv\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dece.hd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvh\",\"uvvh\"]\n },\n \"video/vnd.dece.mobile\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvm\",\"uvvm\"]\n },\n \"video/vnd.dece.mp4\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dece.pd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvp\",\"uvvp\"]\n },\n \"video/vnd.dece.sd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvs\",\"uvvs\"]\n },\n \"video/vnd.dece.video\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvv\",\"uvvv\"]\n },\n \"video/vnd.directv.mpeg\": {\n \"source\": \"iana\"\n },\n \"video/vnd.directv.mpeg-tts\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dlna.mpeg-tts\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dvb.file\": {\n \"source\": \"iana\",\n \"extensions\": [\"dvb\"]\n },\n \"video/vnd.fvt\": {\n \"source\": \"iana\",\n \"extensions\": [\"fvt\"]\n },\n \"video/vnd.hns.video\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.1dparityfec-1010\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.1dparityfec-2005\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.2dparityfec-1010\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.2dparityfec-2005\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.ttsavc\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.ttsmpeg2\": {\n \"source\": \"iana\"\n },\n \"video/vnd.motorola.video\": {\n \"source\": \"iana\"\n },\n \"video/vnd.motorola.videop\": {\n \"source\": \"iana\"\n },\n \"video/vnd.mpegurl\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxu\",\"m4u\"]\n },\n \"video/vnd.ms-playready.media.pyv\": {\n \"source\": \"iana\",\n \"extensions\": [\"pyv\"]\n },\n \"video/vnd.nokia.interleaved-multimedia\": {\n \"source\": \"iana\"\n },\n \"video/vnd.nokia.mp4vr\": {\n \"source\": \"iana\"\n },\n \"video/vnd.nokia.videovoip\": {\n \"source\": \"iana\"\n },\n \"video/vnd.objectvideo\": {\n \"source\": \"iana\"\n },\n \"video/vnd.radgamettools.bink\": {\n \"source\": \"iana\"\n },\n \"video/vnd.radgamettools.smacker\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.mpeg1\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.mpeg4\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.swf\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealedmedia.softseal.mov\": {\n \"source\": \"iana\"\n },\n \"video/vnd.uvvu.mp4\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvu\",\"uvvu\"]\n },\n \"video/vnd.vivo\": {\n \"source\": \"iana\",\n \"extensions\": [\"viv\"]\n },\n \"video/vnd.youtube.yt\": {\n \"source\": \"iana\"\n },\n \"video/vp8\": {\n \"source\": \"iana\"\n },\n \"video/vp9\": {\n \"source\": \"iana\"\n },\n \"video/webm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"webm\"]\n },\n \"video/x-f4v\": {\n \"source\": \"apache\",\n \"extensions\": [\"f4v\"]\n },\n \"video/x-fli\": {\n \"source\": \"apache\",\n \"extensions\": [\"fli\"]\n },\n \"video/x-flv\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"flv\"]\n },\n \"video/x-m4v\": {\n \"source\": \"apache\",\n \"extensions\": [\"m4v\"]\n },\n \"video/x-matroska\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"mkv\",\"mk3d\",\"mks\"]\n },\n \"video/x-mng\": {\n \"source\": \"apache\",\n \"extensions\": [\"mng\"]\n },\n \"video/x-ms-asf\": {\n \"source\": \"apache\",\n \"extensions\": [\"asf\",\"asx\"]\n },\n \"video/x-ms-vob\": {\n \"source\": \"apache\",\n \"extensions\": [\"vob\"]\n },\n \"video/x-ms-wm\": {\n \"source\": \"apache\",\n \"extensions\": [\"wm\"]\n },\n \"video/x-ms-wmv\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"wmv\"]\n },\n \"video/x-ms-wmx\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmx\"]\n },\n \"video/x-ms-wvx\": {\n \"source\": \"apache\",\n \"extensions\": [\"wvx\"]\n },\n \"video/x-msvideo\": {\n \"source\": \"apache\",\n \"extensions\": [\"avi\"]\n },\n \"video/x-sgi-movie\": {\n \"source\": \"apache\",\n \"extensions\": [\"movie\"]\n },\n \"video/x-smv\": {\n \"source\": \"apache\",\n \"extensions\": [\"smv\"]\n },\n \"x-conference/x-cooltalk\": {\n \"source\": \"apache\",\n \"extensions\": [\"ice\"]\n },\n \"x-shader/x-fragment\": {\n \"compressible\": true\n },\n \"x-shader/x-vertex\": {\n \"compressible\": true\n }\n}\n","/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n","/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1\n ? exports.lookup(str)\n : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .substr(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n // source preference (least -> most)\n var preference = ['nginx', 'apache', undefined, 'iana']\n\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n\n if (types[extension]) {\n var from = preference.indexOf(db[types[extension]].source)\n var to = preference.indexOf(mime.source)\n\n if (types[extension] !== 'application/octet-stream' &&\n (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n // skip the remapping\n continue\n }\n }\n\n // set the extension -> mime\n types[extension] = type\n }\n })\n}\n","/*!\n * ee-first\n * Copyright(c) 2014 Jonathan Ong\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = first\n\n/**\n * Get the first event in a set of event emitters and event pairs.\n *\n * @param {array} stuff\n * @param {function} done\n * @public\n */\n\nfunction first(stuff, done) {\n if (!Array.isArray(stuff))\n throw new TypeError('arg must be an array of [ee, events...] arrays')\n\n var cleanups = []\n\n for (var i = 0; i < stuff.length; i++) {\n var arr = stuff[i]\n\n if (!Array.isArray(arr) || arr.length < 2)\n throw new TypeError('each array member must be [ee, events...]')\n\n var ee = arr[0]\n\n for (var j = 1; j < arr.length; j++) {\n var event = arr[j]\n var fn = listener(event, callback)\n\n // listen to the event\n ee.on(event, fn)\n // push this listener to the list of cleanups\n cleanups.push({\n ee: ee,\n event: event,\n fn: fn,\n })\n }\n }\n\n function callback() {\n cleanup()\n done.apply(null, arguments)\n }\n\n function cleanup() {\n var x\n for (var i = 0; i < cleanups.length; i++) {\n x = cleanups[i]\n x.ee.removeListener(x.event, x.fn)\n }\n }\n\n function thunk(fn) {\n done = fn\n }\n\n thunk.cancel = cleanup\n\n return thunk\n}\n\n/**\n * Create the event listener.\n * @private\n */\n\nfunction listener(event, done) {\n return function onevent(arg1) {\n var args = new Array(arguments.length)\n var ee = this\n var err = event === 'error'\n ? arg1\n : null\n\n // copy args to prevent arguments escaping scope\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n\n done(err, ee, event, args)\n }\n}\n","/*!\n * on-finished\n * Copyright(c) 2013 Jonathan Ong\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = onFinished\nmodule.exports.isFinished = isFinished\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar asyncHooks = tryRequireAsyncHooks()\nvar first = require('ee-first')\n\n/**\n * Variables.\n * @private\n */\n\n/* istanbul ignore next */\nvar defer = typeof setImmediate === 'function'\n ? setImmediate\n : function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) }\n\n/**\n * Invoke callback when the response has finished, useful for\n * cleaning up resources afterwards.\n *\n * @param {object} msg\n * @param {function} listener\n * @return {object}\n * @public\n */\n\nfunction onFinished (msg, listener) {\n if (isFinished(msg) !== false) {\n defer(listener, null, msg)\n return msg\n }\n\n // attach the listener to the message\n attachListener(msg, wrap(listener))\n\n return msg\n}\n\n/**\n * Determine if message is already finished.\n *\n * @param {object} msg\n * @return {boolean}\n * @public\n */\n\nfunction isFinished (msg) {\n var socket = msg.socket\n\n if (typeof msg.finished === 'boolean') {\n // OutgoingMessage\n return Boolean(msg.finished || (socket && !socket.writable))\n }\n\n if (typeof msg.complete === 'boolean') {\n // IncomingMessage\n return Boolean(msg.upgrade || !socket || !socket.readable || (msg.complete && !msg.readable))\n }\n\n // don't know\n return undefined\n}\n\n/**\n * Attach a finished listener to the message.\n *\n * @param {object} msg\n * @param {function} callback\n * @private\n */\n\nfunction attachFinishedListener (msg, callback) {\n var eeMsg\n var eeSocket\n var finished = false\n\n function onFinish (error) {\n eeMsg.cancel()\n eeSocket.cancel()\n\n finished = true\n callback(error)\n }\n\n // finished on first message event\n eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish)\n\n function onSocket (socket) {\n // remove listener\n msg.removeListener('socket', onSocket)\n\n if (finished) return\n if (eeMsg !== eeSocket) return\n\n // finished on first socket event\n eeSocket = first([[socket, 'error', 'close']], onFinish)\n }\n\n if (msg.socket) {\n // socket already assigned\n onSocket(msg.socket)\n return\n }\n\n // wait for socket to be assigned\n msg.on('socket', onSocket)\n\n if (msg.socket === undefined) {\n // istanbul ignore next: node.js 0.8 patch\n patchAssignSocket(msg, onSocket)\n }\n}\n\n/**\n * Attach the listener to the message.\n *\n * @param {object} msg\n * @return {function}\n * @private\n */\n\nfunction attachListener (msg, listener) {\n var attached = msg.__onFinished\n\n // create a private single listener with queue\n if (!attached || !attached.queue) {\n attached = msg.__onFinished = createListener(msg)\n attachFinishedListener(msg, attached)\n }\n\n attached.queue.push(listener)\n}\n\n/**\n * Create listener on message.\n *\n * @param {object} msg\n * @return {function}\n * @private\n */\n\nfunction createListener (msg) {\n function listener (err) {\n if (msg.__onFinished === listener) msg.__onFinished = null\n if (!listener.queue) return\n\n var queue = listener.queue\n listener.queue = null\n\n for (var i = 0; i < queue.length; i++) {\n queue[i](err, msg)\n }\n }\n\n listener.queue = []\n\n return listener\n}\n\n/**\n * Patch ServerResponse.prototype.assignSocket for node.js 0.8.\n *\n * @param {ServerResponse} res\n * @param {function} callback\n * @private\n */\n\n// istanbul ignore next: node.js 0.8 patch\nfunction patchAssignSocket (res, callback) {\n var assignSocket = res.assignSocket\n\n if (typeof assignSocket !== 'function') return\n\n // res.on('socket', callback) is broken in 0.8\n res.assignSocket = function _assignSocket (socket) {\n assignSocket.call(this, socket)\n callback(socket)\n }\n}\n\n/**\n * Try to require async_hooks\n * @private\n */\n\nfunction tryRequireAsyncHooks () {\n try {\n return require('async_hooks')\n } catch (e) {\n return {}\n }\n}\n\n/**\n * Wrap function with async resource, if possible.\n * AsyncResource.bind static method backported.\n * @private\n */\n\nfunction wrap (fn) {\n var res\n\n // create anonymous resource\n if (asyncHooks.AsyncResource) {\n res = new asyncHooks.AsyncResource(fn.name || 'bound-anonymous-fn')\n }\n\n // incompatible node.js\n if (!res || !res.runInAsyncScope) {\n return fn\n }\n\n // return bound function\n return res.runInAsyncScope.bind(res, fn, null)\n}\n","/*!\n * range-parser\n * Copyright(c) 2012-2014 TJ Holowaychuk\n * Copyright(c) 2015-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = rangeParser\n\n/**\n * Parse \"Range\" header `str` relative to the given file `size`.\n *\n * @param {Number} size\n * @param {String} str\n * @param {Object} [options]\n * @return {Array}\n * @public\n */\n\nfunction rangeParser (size, str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string')\n }\n\n var index = str.indexOf('=')\n\n if (index === -1) {\n return -2\n }\n\n // split the range string\n var arr = str.slice(index + 1).split(',')\n var ranges = []\n\n // add ranges type\n ranges.type = str.slice(0, index)\n\n // parse all ranges\n for (var i = 0; i < arr.length; i++) {\n var range = arr[i].split('-')\n var start = parseInt(range[0], 10)\n var end = parseInt(range[1], 10)\n\n // -nnn\n if (isNaN(start)) {\n start = size - end\n end = size - 1\n // nnn-\n } else if (isNaN(end)) {\n end = size - 1\n }\n\n // limit last-byte-pos to current length\n if (end > size - 1) {\n end = size - 1\n }\n\n // invalid or unsatisifiable\n if (isNaN(start) || isNaN(end) || start > end || start < 0) {\n continue\n }\n\n // add range\n ranges.push({\n start: start,\n end: end\n })\n }\n\n if (ranges.length < 1) {\n // unsatisifiable\n return -1\n }\n\n return options && options.combine\n ? combineRanges(ranges)\n : ranges\n}\n\n/**\n * Combine overlapping & adjacent ranges.\n * @private\n */\n\nfunction combineRanges (ranges) {\n var ordered = ranges.map(mapWithIndex).sort(sortByRangeStart)\n\n for (var j = 0, i = 1; i < ordered.length; i++) {\n var range = ordered[i]\n var current = ordered[j]\n\n if (range.start > current.end + 1) {\n // next range\n ordered[++j] = range\n } else if (range.end > current.end) {\n // extend range\n current.end = range.end\n current.index = Math.min(current.index, range.index)\n }\n }\n\n // trim ordered array\n ordered.length = j + 1\n\n // generate combined range\n var combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex)\n\n // copy ranges type\n combined.type = ranges.type\n\n return combined\n}\n\n/**\n * Map function to add index value to ranges.\n * @private\n */\n\nfunction mapWithIndex (range, index) {\n return {\n start: range.start,\n end: range.end,\n index: index\n }\n}\n\n/**\n * Map function to remove index value from ranges.\n * @private\n */\n\nfunction mapWithoutIndex (range) {\n return {\n start: range.start,\n end: range.end\n }\n}\n\n/**\n * Sort function to sort ranges by index.\n * @private\n */\n\nfunction sortByRangeIndex (a, b) {\n return a.index - b.index\n}\n\n/**\n * Sort function to sort ranges by start position.\n * @private\n */\n\nfunction sortByRangeStart (a, b) {\n return a.start - b.start\n}\n","/*!\n * send\n * Copyright(c) 2012 TJ Holowaychuk\n * Copyright(c) 2014-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar createError = require('http-errors')\nvar debug = require('debug')('send')\nvar destroy = require('destroy')\nvar encodeUrl = require('encodeurl')\nvar escapeHtml = require('escape-html')\nvar etag = require('etag')\nvar fresh = require('fresh')\nvar fs = require('fs')\nvar mime = require('mime-types')\nvar ms = require('ms')\nvar onFinished = require('on-finished')\nvar parseRange = require('range-parser')\nvar path = require('path')\nvar statuses = require('statuses')\nvar Stream = require('stream')\nvar util = require('util')\n\n/**\n * Path function references.\n * @private\n */\n\nvar extname = path.extname\nvar join = path.join\nvar normalize = path.normalize\nvar resolve = path.resolve\nvar sep = path.sep\n\n/**\n * Regular expression for identifying a bytes Range header.\n * @private\n */\n\nvar BYTES_RANGE_REGEXP = /^ *bytes=/\n\n/**\n * Maximum value allowed for the max age.\n * @private\n */\n\nvar MAX_MAXAGE = 60 * 60 * 24 * 365 * 1000 // 1 year\n\n/**\n * Regular expression to match a path with a directory up component.\n * @private\n */\n\nvar UP_PATH_REGEXP = /(?:^|[\\\\/])\\.\\.(?:[\\\\/]|$)/\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = send\n\n/**\n * Return a `SendStream` for `req` and `path`.\n *\n * @param {object} req\n * @param {string} path\n * @param {object} [options]\n * @return {SendStream}\n * @public\n */\n\nfunction send (req, path, options) {\n return new SendStream(req, path, options)\n}\n\n/**\n * Initialize a `SendStream` with the given `path`.\n *\n * @param {Request} req\n * @param {String} path\n * @param {object} [options]\n * @private\n */\n\nfunction SendStream (req, path, options) {\n Stream.call(this)\n\n var opts = options || {}\n\n this.options = opts\n this.path = path\n this.req = req\n\n this._acceptRanges = opts.acceptRanges !== undefined\n ? Boolean(opts.acceptRanges)\n : true\n\n this._cacheControl = opts.cacheControl !== undefined\n ? Boolean(opts.cacheControl)\n : true\n\n this._etag = opts.etag !== undefined\n ? Boolean(opts.etag)\n : true\n\n this._dotfiles = opts.dotfiles !== undefined\n ? opts.dotfiles\n : 'ignore'\n\n if (this._dotfiles !== 'ignore' && this._dotfiles !== 'allow' && this._dotfiles !== 'deny') {\n throw new TypeError('dotfiles option must be \"allow\", \"deny\", or \"ignore\"')\n }\n\n this._extensions = opts.extensions !== undefined\n ? normalizeList(opts.extensions, 'extensions option')\n : []\n\n this._immutable = opts.immutable !== undefined\n ? Boolean(opts.immutable)\n : false\n\n this._index = opts.index !== undefined\n ? normalizeList(opts.index, 'index option')\n : ['index.html']\n\n this._lastModified = opts.lastModified !== undefined\n ? Boolean(opts.lastModified)\n : true\n\n this._maxage = opts.maxAge || opts.maxage\n this._maxage = typeof this._maxage === 'string'\n ? ms(this._maxage)\n : Number(this._maxage)\n this._maxage = !isNaN(this._maxage)\n ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE)\n : 0\n\n this._root = opts.root\n ? resolve(opts.root)\n : null\n}\n\n/**\n * Inherits from `Stream`.\n */\n\nutil.inherits(SendStream, Stream)\n\n/**\n * Emit error with `status`.\n *\n * @param {number} status\n * @param {Error} [err]\n * @private\n */\n\nSendStream.prototype.error = function error (status, err) {\n // emit if listeners instead of responding\n if (hasListeners(this, 'error')) {\n return this.emit('error', createHttpError(status, err))\n }\n\n var res = this.res\n var msg = statuses.message[status] || String(status)\n var doc = createHtmlDocument('Error', escapeHtml(msg))\n\n // clear existing headers\n clearHeaders(res)\n\n // add error headers\n if (err && err.headers) {\n setHeaders(res, err.headers)\n }\n\n // send basic response\n res.statusCode = status\n res.setHeader('Content-Type', 'text/html; charset=UTF-8')\n res.setHeader('Content-Length', Buffer.byteLength(doc))\n res.setHeader('Content-Security-Policy', \"default-src 'none'\")\n res.setHeader('X-Content-Type-Options', 'nosniff')\n res.end(doc)\n}\n\n/**\n * Check if the pathname ends with \"/\".\n *\n * @return {boolean}\n * @private\n */\n\nSendStream.prototype.hasTrailingSlash = function hasTrailingSlash () {\n return this.path[this.path.length - 1] === '/'\n}\n\n/**\n * Check if this is a conditional GET request.\n *\n * @return {Boolean}\n * @api private\n */\n\nSendStream.prototype.isConditionalGET = function isConditionalGET () {\n return this.req.headers['if-match'] ||\n this.req.headers['if-unmodified-since'] ||\n this.req.headers['if-none-match'] ||\n this.req.headers['if-modified-since']\n}\n\n/**\n * Check if the request preconditions failed.\n *\n * @return {boolean}\n * @private\n */\n\nSendStream.prototype.isPreconditionFailure = function isPreconditionFailure () {\n var req = this.req\n var res = this.res\n\n // if-match\n var match = req.headers['if-match']\n if (match) {\n var etag = res.getHeader('ETag')\n return !etag || (match !== '*' && parseTokenList(match).every(function (match) {\n return match !== etag && match !== 'W/' + etag && 'W/' + match !== etag\n }))\n }\n\n // if-unmodified-since\n var unmodifiedSince = parseHttpDate(req.headers['if-unmodified-since'])\n if (!isNaN(unmodifiedSince)) {\n var lastModified = parseHttpDate(res.getHeader('Last-Modified'))\n return isNaN(lastModified) || lastModified > unmodifiedSince\n }\n\n return false\n}\n\n/**\n * Strip various content header fields for a change in entity.\n *\n * @private\n */\n\nSendStream.prototype.removeContentHeaderFields = function removeContentHeaderFields () {\n var res = this.res\n\n res.removeHeader('Content-Encoding')\n res.removeHeader('Content-Language')\n res.removeHeader('Content-Length')\n res.removeHeader('Content-Range')\n res.removeHeader('Content-Type')\n}\n\n/**\n * Respond with 304 not modified.\n *\n * @api private\n */\n\nSendStream.prototype.notModified = function notModified () {\n var res = this.res\n debug('not modified')\n this.removeContentHeaderFields()\n res.statusCode = 304\n res.end()\n}\n\n/**\n * Raise error that headers already sent.\n *\n * @api private\n */\n\nSendStream.prototype.headersAlreadySent = function headersAlreadySent () {\n var err = new Error('Can\\'t set headers after they are sent.')\n debug('headers already sent')\n this.error(500, err)\n}\n\n/**\n * Check if the request is cacheable, aka\n * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}).\n *\n * @return {Boolean}\n * @api private\n */\n\nSendStream.prototype.isCachable = function isCachable () {\n var statusCode = this.res.statusCode\n return (statusCode >= 200 && statusCode < 300) ||\n statusCode === 304\n}\n\n/**\n * Handle stat() error.\n *\n * @param {Error} error\n * @private\n */\n\nSendStream.prototype.onStatError = function onStatError (error) {\n switch (error.code) {\n case 'ENAMETOOLONG':\n case 'ENOENT':\n case 'ENOTDIR':\n this.error(404, error)\n break\n default:\n this.error(500, error)\n break\n }\n}\n\n/**\n * Check if the cache is fresh.\n *\n * @return {Boolean}\n * @api private\n */\n\nSendStream.prototype.isFresh = function isFresh () {\n return fresh(this.req.headers, {\n etag: this.res.getHeader('ETag'),\n 'last-modified': this.res.getHeader('Last-Modified')\n })\n}\n\n/**\n * Check if the range is fresh.\n *\n * @return {Boolean}\n * @api private\n */\n\nSendStream.prototype.isRangeFresh = function isRangeFresh () {\n var ifRange = this.req.headers['if-range']\n\n if (!ifRange) {\n return true\n }\n\n // if-range as etag\n if (ifRange.indexOf('\"') !== -1) {\n var etag = this.res.getHeader('ETag')\n return Boolean(etag && ifRange.indexOf(etag) !== -1)\n }\n\n // if-range as modified date\n var lastModified = this.res.getHeader('Last-Modified')\n return parseHttpDate(lastModified) <= parseHttpDate(ifRange)\n}\n\n/**\n * Redirect to path.\n *\n * @param {string} path\n * @private\n */\n\nSendStream.prototype.redirect = function redirect (path) {\n var res = this.res\n\n if (hasListeners(this, 'directory')) {\n this.emit('directory', res, path)\n return\n }\n\n if (this.hasTrailingSlash()) {\n this.error(403)\n return\n }\n\n var loc = encodeUrl(collapseLeadingSlashes(this.path + '/'))\n var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + escapeHtml(loc))\n\n // redirect\n res.statusCode = 301\n res.setHeader('Content-Type', 'text/html; charset=UTF-8')\n res.setHeader('Content-Length', Buffer.byteLength(doc))\n res.setHeader('Content-Security-Policy', \"default-src 'none'\")\n res.setHeader('X-Content-Type-Options', 'nosniff')\n res.setHeader('Location', loc)\n res.end(doc)\n}\n\n/**\n * Pipe to `res.\n *\n * @param {Stream} res\n * @return {Stream} res\n * @api public\n */\n\nSendStream.prototype.pipe = function pipe (res) {\n // root path\n var root = this._root\n\n // references\n this.res = res\n\n // decode the path\n var path = decode(this.path)\n if (path === -1) {\n this.error(400)\n return res\n }\n\n // null byte(s)\n if (~path.indexOf('\\0')) {\n this.error(400)\n return res\n }\n\n var parts\n if (root !== null) {\n // normalize\n if (path) {\n path = normalize('.' + sep + path)\n }\n\n // malicious path\n if (UP_PATH_REGEXP.test(path)) {\n debug('malicious path \"%s\"', path)\n this.error(403)\n return res\n }\n\n // explode path parts\n parts = path.split(sep)\n\n // join / normalize from optional root dir\n path = normalize(join(root, path))\n } else {\n // \"..\" is malicious without \"root\"\n if (UP_PATH_REGEXP.test(path)) {\n debug('malicious path \"%s\"', path)\n this.error(403)\n return res\n }\n\n // explode path parts\n parts = normalize(path).split(sep)\n\n // resolve the path\n path = resolve(path)\n }\n\n // dotfile handling\n if (containsDotFile(parts)) {\n debug('%s dotfile \"%s\"', this._dotfiles, path)\n switch (this._dotfiles) {\n case 'allow':\n break\n case 'deny':\n this.error(403)\n return res\n case 'ignore':\n default:\n this.error(404)\n return res\n }\n }\n\n // index file support\n if (this._index.length && this.hasTrailingSlash()) {\n this.sendIndex(path)\n return res\n }\n\n this.sendFile(path)\n return res\n}\n\n/**\n * Transfer `path`.\n *\n * @param {String} path\n * @api public\n */\n\nSendStream.prototype.send = function send (path, stat) {\n var len = stat.size\n var options = this.options\n var opts = {}\n var res = this.res\n var req = this.req\n var ranges = req.headers.range\n var offset = options.start || 0\n\n if (res.headersSent) {\n // impossible to send now\n this.headersAlreadySent()\n return\n }\n\n debug('pipe \"%s\"', path)\n\n // set header fields\n this.setHeader(path, stat)\n\n // set content-type\n this.type(path)\n\n // conditional GET support\n if (this.isConditionalGET()) {\n if (this.isPreconditionFailure()) {\n this.error(412)\n return\n }\n\n if (this.isCachable() && this.isFresh()) {\n this.notModified()\n return\n }\n }\n\n // adjust len to start/end options\n len = Math.max(0, len - offset)\n if (options.end !== undefined) {\n var bytes = options.end - offset + 1\n if (len > bytes) len = bytes\n }\n\n // Range support\n if (this._acceptRanges && BYTES_RANGE_REGEXP.test(ranges)) {\n // parse\n ranges = parseRange(len, ranges, {\n combine: true\n })\n\n // If-Range support\n if (!this.isRangeFresh()) {\n debug('range stale')\n ranges = -2\n }\n\n // unsatisfiable\n if (ranges === -1) {\n debug('range unsatisfiable')\n\n // Content-Range\n res.setHeader('Content-Range', contentRange('bytes', len))\n\n // 416 Requested Range Not Satisfiable\n return this.error(416, {\n headers: { 'Content-Range': res.getHeader('Content-Range') }\n })\n }\n\n // valid (syntactically invalid/multiple ranges are treated as a regular response)\n if (ranges !== -2 && ranges.length === 1) {\n debug('range %j', ranges)\n\n // Content-Range\n res.statusCode = 206\n res.setHeader('Content-Range', contentRange('bytes', len, ranges[0]))\n\n // adjust for requested range\n offset += ranges[0].start\n len = ranges[0].end - ranges[0].start + 1\n }\n }\n\n // clone options\n for (var prop in options) {\n opts[prop] = options[prop]\n }\n\n // set read options\n opts.start = offset\n opts.end = Math.max(offset, offset + len - 1)\n\n // content-length\n res.setHeader('Content-Length', len)\n\n // HEAD support\n if (req.method === 'HEAD') {\n res.end()\n return\n }\n\n this.stream(path, opts)\n}\n\n/**\n * Transfer file for `path`.\n *\n * @param {String} path\n * @api private\n */\nSendStream.prototype.sendFile = function sendFile (path) {\n var i = 0\n var self = this\n\n debug('stat \"%s\"', path)\n fs.stat(path, function onstat (err, stat) {\n var pathEndsWithSep = path[path.length - 1] === sep\n if (err && err.code === 'ENOENT' && !extname(path) && !pathEndsWithSep) {\n // not found, check extensions\n return next(err)\n }\n if (err) return self.onStatError(err)\n if (stat.isDirectory()) return self.redirect(path)\n if (pathEndsWithSep) return self.error(404)\n self.emit('file', path, stat)\n self.send(path, stat)\n })\n\n function next (err) {\n if (self._extensions.length <= i) {\n return err\n ? self.onStatError(err)\n : self.error(404)\n }\n\n var p = path + '.' + self._extensions[i++]\n\n debug('stat \"%s\"', p)\n fs.stat(p, function (err, stat) {\n if (err) return next(err)\n if (stat.isDirectory()) return next()\n self.emit('file', p, stat)\n self.send(p, stat)\n })\n }\n}\n\n/**\n * Transfer index for `path`.\n *\n * @param {String} path\n * @api private\n */\nSendStream.prototype.sendIndex = function sendIndex (path) {\n var i = -1\n var self = this\n\n function next (err) {\n if (++i >= self._index.length) {\n if (err) return self.onStatError(err)\n return self.error(404)\n }\n\n var p = join(path, self._index[i])\n\n debug('stat \"%s\"', p)\n fs.stat(p, function (err, stat) {\n if (err) return next(err)\n if (stat.isDirectory()) return next()\n self.emit('file', p, stat)\n self.send(p, stat)\n })\n }\n\n next()\n}\n\n/**\n * Stream `path` to the response.\n *\n * @param {String} path\n * @param {Object} options\n * @api private\n */\n\nSendStream.prototype.stream = function stream (path, options) {\n var self = this\n var res = this.res\n\n // pipe\n var stream = fs.createReadStream(path, options)\n this.emit('stream', stream)\n stream.pipe(res)\n\n // cleanup\n function cleanup () {\n destroy(stream, true)\n }\n\n // response finished, cleanup\n onFinished(res, cleanup)\n\n // error handling\n stream.on('error', function onerror (err) {\n // clean up stream early\n cleanup()\n\n // error\n self.onStatError(err)\n })\n\n // end\n stream.on('end', function onend () {\n self.emit('end')\n })\n}\n\n/**\n * Set content-type based on `path`\n * if it hasn't been explicitly set.\n *\n * @param {String} path\n * @api private\n */\n\nSendStream.prototype.type = function type (path) {\n var res = this.res\n\n if (res.getHeader('Content-Type')) return\n\n var ext = extname(path)\n var type = mime.contentType(ext) || 'application/octet-stream'\n\n debug('content-type %s', type)\n res.setHeader('Content-Type', type)\n}\n\n/**\n * Set response header fields, most\n * fields may be pre-defined.\n *\n * @param {String} path\n * @param {Object} stat\n * @api private\n */\n\nSendStream.prototype.setHeader = function setHeader (path, stat) {\n var res = this.res\n\n this.emit('headers', res, path, stat)\n\n if (this._acceptRanges && !res.getHeader('Accept-Ranges')) {\n debug('accept ranges')\n res.setHeader('Accept-Ranges', 'bytes')\n }\n\n if (this._cacheControl && !res.getHeader('Cache-Control')) {\n var cacheControl = 'public, max-age=' + Math.floor(this._maxage / 1000)\n\n if (this._immutable) {\n cacheControl += ', immutable'\n }\n\n debug('cache-control %s', cacheControl)\n res.setHeader('Cache-Control', cacheControl)\n }\n\n if (this._lastModified && !res.getHeader('Last-Modified')) {\n var modified = stat.mtime.toUTCString()\n debug('modified %s', modified)\n res.setHeader('Last-Modified', modified)\n }\n\n if (this._etag && !res.getHeader('ETag')) {\n var val = etag(stat)\n debug('etag %s', val)\n res.setHeader('ETag', val)\n }\n}\n\n/**\n * Clear all headers from a response.\n *\n * @param {object} res\n * @private\n */\n\nfunction clearHeaders (res) {\n var headers = getHeaderNames(res)\n\n for (var i = 0; i < headers.length; i++) {\n res.removeHeader(headers[i])\n }\n}\n\n/**\n * Collapse all leading slashes into a single slash\n *\n * @param {string} str\n * @private\n */\nfunction collapseLeadingSlashes (str) {\n for (var i = 0; i < str.length; i++) {\n if (str[i] !== '/') {\n break\n }\n }\n\n return i > 1\n ? '/' + str.substr(i)\n : str\n}\n\n/**\n * Determine if path parts contain a dotfile.\n *\n * @api private\n */\n\nfunction containsDotFile (parts) {\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i]\n if (part.length > 1 && part[0] === '.') {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Create a Content-Range header.\n *\n * @param {string} type\n * @param {number} size\n * @param {array} [range]\n */\n\nfunction contentRange (type, size, range) {\n return type + ' ' + (range ? range.start + '-' + range.end : '*') + '/' + size\n}\n\n/**\n * Create a minimal HTML document.\n *\n * @param {string} title\n * @param {string} body\n * @private\n */\n\nfunction createHtmlDocument (title, body) {\n return '<!DOCTYPE html>\\n' +\n '<html lang=\"en\">\\n' +\n '<head>\\n' +\n '<meta charset=\"utf-8\">\\n' +\n '<title>' + title + '</title>\\n' +\n '</head>\\n' +\n '<body>\\n' +\n '<pre>' + body + '</pre>\\n' +\n '</body>\\n' +\n '</html>\\n'\n}\n\n/**\n * Create a HttpError object from simple arguments.\n *\n * @param {number} status\n * @param {Error|object} err\n * @private\n */\n\nfunction createHttpError (status, err) {\n if (!err) {\n return createError(status)\n }\n\n return err instanceof Error\n ? createError(status, err, { expose: false })\n : createError(status, err)\n}\n\n/**\n * decodeURIComponent.\n *\n * Allows V8 to only deoptimize this fn instead of all\n * of send().\n *\n * @param {String} path\n * @api private\n */\n\nfunction decode (path) {\n try {\n return decodeURIComponent(path)\n } catch (err) {\n return -1\n }\n}\n\n/**\n * Get the header names on a response.\n *\n * @param {object} res\n * @returns {array[string]}\n * @private\n */\n\nfunction getHeaderNames (res) {\n return typeof res.getHeaderNames !== 'function'\n ? Object.keys(res._headers || {})\n : res.getHeaderNames()\n}\n\n/**\n * Determine if emitter has listeners of a given type.\n *\n * The way to do this check is done three different ways in Node.js >= 0.10\n * so this consolidates them into a minimal set using instance methods.\n *\n * @param {EventEmitter} emitter\n * @param {string} type\n * @returns {boolean}\n * @private\n */\n\nfunction hasListeners (emitter, type) {\n var count = typeof emitter.listenerCount !== 'function'\n ? emitter.listeners(type).length\n : emitter.listenerCount(type)\n\n return count > 0\n}\n\n/**\n * Normalize the index option into an array.\n *\n * @param {boolean|string|array} val\n * @param {string} name\n * @private\n */\n\nfunction normalizeList (val, name) {\n var list = [].concat(val || [])\n\n for (var i = 0; i < list.length; i++) {\n if (typeof list[i] !== 'string') {\n throw new TypeError(name + ' must be array of strings or false')\n }\n }\n\n return list\n}\n\n/**\n * Parse an HTTP Date into a number.\n *\n * @param {string} date\n * @private\n */\n\nfunction parseHttpDate (date) {\n var timestamp = date && Date.parse(date)\n\n return typeof timestamp === 'number'\n ? timestamp\n : NaN\n}\n\n/**\n * Parse a HTTP token list.\n *\n * @param {string} str\n * @private\n */\n\nfunction parseTokenList (str) {\n var end = 0\n var list = []\n var start = 0\n\n // gather tokens\n for (var i = 0, len = str.length; i < len; i++) {\n switch (str.charCodeAt(i)) {\n case 0x20: /* */\n if (start === end) {\n start = end = i + 1\n }\n break\n case 0x2c: /* , */\n if (start !== end) {\n list.push(str.substring(start, end))\n }\n start = end = i + 1\n break\n default:\n end = i + 1\n break\n }\n }\n\n // final token\n if (start !== end) {\n list.push(str.substring(start, end))\n }\n\n return list\n}\n\n/**\n * Set an object of headers on a response.\n *\n * @param {object} res\n * @param {object} headers\n * @private\n */\n\nfunction setHeaders (res, headers) {\n var keys = Object.keys(headers)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n res.setHeader(key, headers[key])\n }\n}\n","import { IncomingHttpHeaders, OutgoingHttpHeaders } from \"node:http\";\nimport { Streamer } from \"../streamer\";\nimport { StateObject } from '../StateObject';\nimport { createHash } from \"node:crypto\";\nimport * as zlib from \"node:zlib\";\nimport { ok } from \"node:assert\";\nimport { promisify } from \"node:util\";\nimport { SiteConfig } from \"../routes/router\";\nimport * as path from \"node:path\";\nimport { createRequire } from \"node:module\";\nimport { fileURLToPath } from \"node:url\";\n/**\nOptions include:\n- `cbPartStart(headers,name,filename)` - invoked when a file starts being received\n- `cbPartChunk(chunk)` - invoked when a chunk of a file is received\n- `cbPartEnd()` - invoked when a file finishes being received\n- `cbFinished(err)` - invoked when the all the form data has been processed\n*/\nexport function readMultipartData(this: StateObject<any, any>, options: {\n cbPartStart: (headers: IncomingHttpHeaders, name: string | null, filename: string | null) => void,\n cbPartChunk: (chunk: Buffer) => void,\n cbPartEnd: () => void,\n cbFinished: (err: Error | string | null) => void\n}) {\n return new Promise<void>((resolve, reject) => {\n // Check that the Content-Type is multipart/form-data\n const contentType = this.headers['content-type'];\n if (!contentType?.startsWith(\"multipart/form-data\")) {\n return reject(\"Expected multipart/form-data content type\");\n }\n // Extract the boundary string from the Content-Type header\n const boundaryMatch = contentType.match(/boundary=(.+)$/);\n if (!boundaryMatch) {\n return reject(\"Missing boundary in multipart/form-data\");\n }\n const boundary = boundaryMatch[1];\n const boundaryBuffer = Buffer.from(\"--\" + boundary);\n // Initialise\n let buffer = Buffer.alloc(0);\n let processingPart = false;\n // Process incoming chunks\n this.reader.on(\"data\", (chunk) => {\n // Accumulate the incoming data\n buffer = Buffer.concat([buffer, chunk]);\n // Loop through any parts within the current buffer\n while (true) {\n if (!processingPart) {\n // If we're not processing a part then we try to find a boundary marker\n const boundaryIndex = buffer.indexOf(boundaryBuffer);\n if (boundaryIndex === -1) {\n // Haven't reached the boundary marker yet, so we should wait for more data\n break;\n }\n // Look for the end of the headers\n const endOfHeaders = buffer.indexOf(\"\\r\\n\\r\\n\", boundaryIndex + boundaryBuffer.length);\n if (endOfHeaders === -1) {\n // Haven't reached the end of the headers, so we should wait for more data\n break;\n }\n // Extract and parse headers\n const headersPart = Uint8Array.prototype.slice.call(buffer, boundaryIndex + boundaryBuffer.length, endOfHeaders).toString();\n const currentHeaders: IncomingHttpHeaders = {};\n headersPart.split(\"\\r\\n\").forEach(headerLine => {\n const [key, value] = headerLine.split(\": \");\n ok(typeof key === \"string\");\n currentHeaders[key.toLowerCase()] = value;\n });\n // Parse the content disposition header\n const contentDisposition: {\n name: string | null,\n filename: string | null\n } = {\n name: null,\n filename: null\n };\n if (currentHeaders[\"content-disposition\"]) {\n // Split the content-disposition header into semicolon-delimited parts\n const parts = currentHeaders[\"content-disposition\"].split(\";\").map(part => part.trim());\n // Iterate over each part to extract name and filename if they exist\n parts.forEach(part => {\n if (part.startsWith(\"name=\")) {\n // Remove \"name=\" and trim quotes\n contentDisposition.name = part.substring(6, part.length - 1);\n } else if (part.startsWith(\"filename=\")) {\n // Remove \"filename=\" and trim quotes\n contentDisposition.filename = part.substring(10, part.length - 1);\n }\n });\n }\n processingPart = true;\n options.cbPartStart(currentHeaders, contentDisposition.name, contentDisposition.filename);\n // Slice the buffer to the next part\n buffer = Buffer.from(buffer, endOfHeaders + 4);\n } else {\n const boundaryIndex = buffer.indexOf(boundaryBuffer);\n if (boundaryIndex >= 0) {\n // Return the part up to the boundary minus the terminating LF CR\n options.cbPartChunk(Buffer.from(buffer, 0, boundaryIndex - 2));\n options.cbPartEnd();\n processingPart = false;\n // this starts at the boundary marker, which gets picked up on the next loop\n buffer = Buffer.from(buffer, boundaryIndex);\n } else {\n // Return the rest of the buffer\n options.cbPartChunk(buffer);\n // Reset the buffer and wait for more data\n buffer = Buffer.alloc(0);\n break;\n }\n }\n }\n });\n\n // All done\n this.reader.on(\"end\", () => {\n resolve();\n });\n }).then(() => {\n options.cbFinished(null);\n }, (err) => {\n options.cbFinished(err);\n throw err;\n });\n\n}\n\n\n\n/*\nSend a response to the client. This method checks if the response must be sent\nor if the client alrady has the data cached. If that's the case only a 304\nresponse will be transmitted and the browser will use the cached data.\nOnly requests with status code 200 are considdered for caching.\nrequest: request instance passed to the handler\nresponse: response instance passed to the handler\nstatusCode: stauts code to send to the browser\nheaders: response headers (they will be augmented with an `Etag` header)\ndata: the data to send (passed to the end method of the response instance)\nencoding: the encoding of the data to send (passed to the end method of the response instance)\n*/\nexport async function sendResponse(config: SiteConfig, state: StateObject<any, any>, statusCode: number, headers: OutgoingHttpHeaders, data: string | Buffer, encoding?: NodeJS.BufferEncoding) {\n // console.log(\"sendResponse\");\n if (config.enableBrowserCache && (statusCode == 200)) {\n // console.log(\"enableBrowserCache\");\n var hash = createHash('md5');\n // Put everything into the hash that could change and invalidate the data that\n // the browser already stored. The headers the data and the encoding.\n hash.update(data);\n hash.update(JSON.stringify(headers));\n if (encoding) {\n hash.update(encoding);\n }\n var contentDigest = hash.digest(\"hex\");\n // RFC 7232 section 2.3 mandates for the etag to be enclosed in quotes\n headers[\"Etag\"] = '\"' + contentDigest + '\"';\n headers[\"Cache-Control\"] = \"max-age=0, must-revalidate\";\n // Check if any of the hashes contained within the if-none-match header\n // matches the current hash.\n // If one matches, do not send the data but tell the browser to use the\n // cached data.\n // We do not implement \"*\" as it makes no sense here.\n var ifNoneMatch = state.headers[\"if-none-match\"];\n if (ifNoneMatch) {\n var matchParts = ifNoneMatch.split(\",\").map(function (etag) {\n return etag.replace(/^[ \"]+|[ \"]+$/g, \"\");\n });\n if (matchParts.indexOf(contentDigest) != -1) {\n return state.sendEmpty(304, headers);\n }\n }\n }\n /*\n If the gzip=yes is set, check if the user agent permits compression. If so,\n compress our response if the raw data is bigger than 2k. Compressing less\n data is inefficient.\n */\n if (config.enableGzip && (data.length > 2048)) {\n var acceptEncoding = state.headers[\"accept-encoding\"] || \"\";\n if (/\\bdeflate\\b/.test(acceptEncoding)) {\n headers[\"Content-Encoding\"] = \"deflate\";\n data = await promisify(zlib.deflate)(data);\n } else if (/\\bgzip\\b/.test(acceptEncoding)) {\n headers[\"Content-Encoding\"] = \"gzip\";\n data = await promisify(zlib.gzip)(data);\n }\n }\n if (typeof data === \"string\") {\n ok(encoding, \"encoding must be set for string data\");\n return state.sendString(statusCode, headers, data, encoding);\n } else {\n return state.sendBuffer(statusCode, headers, data);\n }\n}\n\n\ninterface Route {\n useACL: any;\n method: string;\n entityName: any;\n csrfDisable: any;\n bodyFormat: string;\n path: { source: string; };\n handler: (streamer: Streamer) => void;\n};\n\ninterface State {\n wiki: any;\n boot: any;\n server: any;\n urlInfo: any;\n queryParameters: any;\n pathPrefix: string;\n sendResponse: any;\n redirect: any;\n streamMultipartData: any;\n authenticatedUser: any;\n authenticatedUsername: any;\n authorizationType: string;\n allowAnon: boolean;\n anonAccessConfigured: boolean;\n allowAnonReads: boolean;\n allowAnonWrites: boolean;\n showAnonConfig: boolean;\n firstGuestUser: boolean;\n data?: any;\n}\n\ninterface Server {\n enableBrowserCache: boolean;\n enableGzip: boolean;\n get: (key: string) => any;\n methodMappings: { [key: string]: string };\n isAuthorized: (authorizationType: string, username: string) => boolean;\n getAnonymousAccessConfig: () => { allowReads: boolean; allowWrites: boolean; isEnabled: boolean; showAnonConfig: boolean };\n sqlTiddlerDatabase: any;\n servername: string;\n findMatchingRoute: (request: Streamer, state: State) => Route;\n authenticateUser: (request: Streamer, response: Streamer) => any;\n methodACLPermMappings: { [key: string]: string };\n csrfDisable: boolean;\n wiki: any;\n boot: any;\n}\n\n\nexport function is<T>(a: any, b: boolean): a is T { return b; }\n\n/** Initiates a timer that must get cancelled before the current turn of the event loop ends */\nexport class SyncCheck {\n done;\n constructor() {\n let cancelled = false;\n const error = new Error(\"SyncCheck was not completed before the current turn of the event loop ended\");\n process.nextTick(() => {\n if (cancelled) return;\n console.log(error);\n process.exit(1);\n });\n this.done = () => { cancelled = true };\n }\n}\n\n\n/** \n * If any property returns a function, and that function returns a promise, \n * the proxy will throw an error if the promise is not awaited before the next property access.\n * \n * The stack trace of the error will point to the line where the promise was returned.\n */\nexport function createStrictAwaitProxy<T extends object>(instance: T): T {\n let outstandingPromiseError: Error | null = null;\n\n function wrappedFunction(value: Function) {\n return function (this: any, ...args: any[]) {\n // Protect against calling any methods while an outstanding promise exists.\n\n // Call the original function preserving the correct \"this\" context.\n const result = Reflect.apply(value, this, args);\n // If the result is a promise, wrap it to clear the outstanding lock on await.\n if (result instanceof Promise) {\n return new Proxy(result, {\n get(promiseTarget, promiseProp, promiseReceiver) {\n // When the promise's then property is accessed (i.e. when it's awaited),\n // clear the outstanding promise so that subsequent method calls are allowed.\n if (promiseProp === \"then\") {\n outstandingPromiseError = null;\n }\n const inner = Reflect.get(promiseTarget, promiseProp, promiseReceiver).bind(promiseTarget);\n if (promiseProp === \"catch\") {\n return wrappedFunction(inner);\n }\n return inner;\n }\n });\n }\n return result;\n }\n }\n\n return new Proxy(instance, {\n get(target, prop, receiver) {\n // throw an error if an outstanding promise exists.\n if (outstandingPromiseError !== null) {\n throw outstandingPromiseError;\n }\n // Use Reflect.get to get the property value.\n const value = Reflect.get(target, prop, receiver);\n\n // If the property is a function, return a wrapped function.\n if (typeof value === \"function\") {\n return wrappedFunction(value);\n }\n // For non-function properties, just return the value.\n return value;\n }\n });\n}\n\nexport function tryParseJSON<T>(json: string): T | undefined {\n try {\n return JSON.parse(json);\n } catch {\n return undefined;\n }\n}\n\n\nexport class TypedGenerator<T extends [any, any][]> {\n static checker<T extends [any, any][]>() {\n return {\n /** `const value1 = asV(1, yield asY(0, value0))` */\n asV<I extends number>(index: I, args: T[I][0]): T[I][0] { return args; },\n /** `const value1 = asV(1, yield asY(0, value0))` */\n asY<I extends number>(index: I, ret: T[I][1]): T[I][1] { return ret; },\n }\n }\n static wrapper<T extends [any, any][]>() {\n return <A extends any[]>(factory: (...args: A) => Generator<any, any, any>) => {\n return (...args: A) => new TypedGenerator<T>(factory(...args));\n };\n }\n constructor(private inner: Generator<any, any, any>, private index = 0) { }\n async next<I extends number>(index: I, ...args: T[I][0] extends void ? [] : [T[I][0]]): Promise<(\n T extends [...any[], T[I]] ? IteratorReturnResult<T[I][1]> : IteratorYieldResult<T[I][1]>\n )> {\n if (index !== this.index) throw new Error(\"Invalid index\");\n this.index++;\n return this.inner.next(...args) as any;\n }\n return(value: any): any { this.inner.return(value); }\n throw(e: any): any { this.inner.throw(e); }\n}\n\nexport async function mapAsync<T, U, V>(array: T[], callback: (this: V, value: T, index: number, array: T[]) => Promise<U>, thisArg?: any): Promise<U[]> {\n const results = new Array(array.length);\n for (let index = 0; index < array.length; index++) {\n results[index] = await callback.call(thisArg, array[index] as T, index, array);\n }\n return results;\n};\n\nexport async function filterAsync<T, V>(array: T[], callback: (this: V, value: T, index: number, array: T[]) => Promise<boolean>, thisArg?: any): Promise<T[]> {\n const results = [];\n for (let index = 0; index < array.length; index++) {\n if (await callback.call(thisArg, array[index] as T, index, array)) {\n results.push(array[index]);\n }\n }\n return results as any;\n}\n\n\nexport function truthy<T>(\n obj: T\n): obj is Exclude<T, false | null | undefined | 0 | '' | void> {\n return !!obj;\n}\n\n\nexport class UserError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"UserError\";\n }\n}\n/** \n * This returns the resolved path relative to the executing code file, \n * however it uses path.resolve, not require.resolve. \n */\n\nexport function dist_resolve(filepath: string) {\n const filename = typeof module === \"undefined\" ? fileURLToPath(import.meta.url) : module.filename;\n return path.resolve(path.dirname(filename), filepath);\n}\nexport function dist_require_resolve(filepath: string) {\n const filename = typeof module === \"undefined\" ? fileURLToPath(import.meta.url) : module.filename;\n return createRequire(filename).resolve(filepath);\n}\n\n\nexport declare interface JsonArray extends Array<JsonValue> { }\nexport declare type JsonObject = { [Key in string]?: JsonValue; };\nexport declare type JsonValue = string | number | boolean | JsonObject | JsonArray | null | Date;\n","import { AuthStateRouteACL, StateObject } from \"../StateObject\";\nimport * as z from \"zod\";\nimport { AllowedMethod, BodyFormat } from \"../routes/router\";\n\n\nexport interface RouteOptAny extends RouteOptBase<BodyFormat, AllowedMethod[], string[]> { }\n\nexport interface Route extends RouteDef<ParentTuple, string[]> { }\n\nexport interface rootRoute extends RouteDef<[\n undefined,\n AllowedMethod[],\n StateObject<BodyFormat, AllowedMethod>,\n [[]]\n], []> { }\n\nexport interface RouteMatch {\n route: Route;\n params: (string | undefined)[];\n remainingPath: string;\n}\n\ntype DetermineRouteOptions<\n P extends ParentTuple, PA extends string[]\n> = P extends [BodyFormat, AllowedMethod[], any, any]\n ?\n RouteOptBase<P[0], P[1], PA> & { bodyFormat?: undefined; }\n :\n P extends [undefined, AllowedMethod[], any, any]\n ?\n | { [K in BodyFormat]: RouteOptBase<K, P[1], PA> & { bodyFormat: K; }; }[BodyFormat]\n | RouteOptBase<BodyFormat, P[1], PA> & { bodyFormat?: undefined; }\n : never;\n\ntype ParentTuple = [BodyFormat | undefined, AllowedMethod[], any, string[][]];\n\ninterface RouteOptBase<B extends BodyFormat, M extends AllowedMethod[], PA extends string[]> {\n\n /** \n * Regex to test the pathname on. It must start with `^`. If this is a child route, \n * it will be tested against the remaining portion of the parent route. \n */\n path: RegExp;\n pathParams?: PA;\n /** The uppercase method names to match this route */\n method: M;\n /** \n * The highest bodyformat in the chain always takes precedent. Type-wise, only one is allowed, \n * but at runtime the first one found is the one used. \n * \n * Note that bodyFormat is completely ignored for GET and HEAD requests.\n */\n bodyFormat?: B;\n /** If this route is the last one matched, it will NOT be called, and a 404 will be returned. */\n denyFinal?: boolean;\n}\n\nexport interface RouteDef<P extends ParentTuple, PA extends string[]> extends RouteOptBase<P[0] & {}, P[1], PA> {\n\n /**\n * If this route's handler sends headers, the matched child route will not be called.\n */\n handler: (state: StateObject<P[0] extends undefined ? BodyFormat : (P[0] & {}), P[1][number], [...P[3], [...PA]], unknown>) => Promise<P[2]>\n\n /**\n * ### ROUTING\n *\n * @param route The route definition.\n *\n * If the parent route sends headers, or returns the STREAM_ENDED symbol, \n * this route will not be called.\n *\n * Inner routes are matched on the remaining portion of the parent route\n * using `pathname.slice(match[0].length)`. If the parent route entirely \n * matches the pathname, this route will be matched on \"/\".\n * \n * If the body format is \"stream\", \"buffer\", \"ignore\" or not yet defined at this level in the tree,\n * then zod cannot be used. \n * \n * Note that GET and HEAD are always bodyFormat: \"ignore\", regardless of what is set here.\n */\n defineRoute: <R, PA extends string[],\n // T extends DetermineRouteOptions<P, [...PA]>\n T extends (P extends [BodyFormat, AllowedMethod[], any, any]\n ?\n RouteOptBase<P[0], P[1], [...PA]> & { bodyFormat?: undefined; }\n :\n P extends [undefined, AllowedMethod[], any, any]\n ?\n | { [K in BodyFormat]: RouteOptBase<K, P[1], [...PA]> & { bodyFormat: K; }; }[BodyFormat]\n | RouteOptBase<BodyFormat, P[1], [...PA]> & { bodyFormat?: undefined; }\n : never) \n > (\n route: T,\n handler: (\n /** \n * The state object for this route.\n * \n * If the route only specifies \"GET\" and/or \"HEAD\", then the bodyFormat can only be \"ignore\"\n * \n * Otherwise, the bodyFormat is determined by the first parent route that specifies it.\n * \n * The state object is wrapped in a proxy which throws if methods return a promise that \n * doesn't get awaited before the next property access. It only enforces the first layer \n * of properties, so if you have a nested object, you will need to wrap it in a proxy as well.\n * \n * store and store.sql will probably also be wrapped in this proxy.\n */\n state: StateObject<\n // if the route only specifies \"GET\" and/or \"HEAD\", then the bodyFormat can only be \"ignore\"\n (Exclude<T[\"method\"][number], \"GET\" | \"HEAD\"> extends never ? never : (\n // parent route specified bodyFormat?\n P[0] extends BodyFormat ? P[0] :\n // this route specified bodyFormat?\n T[\"bodyFormat\"] extends BodyFormat ? T[\"bodyFormat\"] :\n // otherwise it could be anything\n BodyFormat\n )) | (\n // GET and HEAD requests imply \"ignore\"\n T[\"method\"][number] extends \"GET\" | \"HEAD\" ? \"ignore\" : never\n ),\n // HTTP method\n T[\"method\"][number],\n // possible placeholder for declaring routes\n getPA<P, T>,\n // infer zod, if set for this route\n unknown\n >) => Promise<R>\n ) =>\n P[0] extends BodyFormat ? RouteDef<[P[0], T[\"method\"], R, P[3]], [...PA]> :\n T[\"bodyFormat\"] extends BodyFormat ? RouteDef<[T[\"bodyFormat\"], T[\"method\"], R, P[3]], [...PA]> :\n RouteDef<[undefined, T[\"method\"], R, P[3]], [...PA]>\n\n $o?: P;\n}\n\ntype getPA<P extends ParentTuple, T extends DetermineRouteOptions<P, any>> =\n [...P[3], ...T[\"pathParams\"] extends string[] ? [T[\"pathParams\"]] : []];\nfunction test<T extends z.ZodTypeAny>(schema: { schema: T }): T {\n return schema.schema;\n}\nconst test1 = test({ schema: z.object({ test: z.string() }) })\ntype t1 = typeof test1;\ntype t2 = z.infer<t1>;\n\n\n\n/** This doesn't need to run, it's just to test types */\nfunction testroute(root: rootRoute) {\n\n const test1 = root.defineRoute({\n path: /^test/,\n method: [\"GET\", \"POST\"],\n bodyFormat: undefined,\n }, async state => {\n const test: BodyFormat = state.bodyFormat;\n });\n\n const test2_2 = test1.defineRoute({\n path: /^test/,\n bodyFormat: \"www-form-urlencoded\",\n method: [\"POST\"],\n }, async state => {\n // zod: z.object({ test: z.string() }),\n\n\n });\n\n const test2 = test1.defineRoute({\n path: /^test/,\n bodyFormat: \"string\",\n method: [\"GET\"],\n zod: z.string(),\n // handler: ,\n }, async (state) => {\n //@ts-expect-error because we didn't include \"string\"\n const test: Exclude<BodyFormat, \"ignore\"> = state.bodyFormat;\n // no error here if bodyFormat is correctly typed\n const test2: \"ignore\" = state.bodyFormat\n // @ts-expect-error because it should be \"string\"\n state.isBodyFormat(\"buffer\");\n // this should never be an error unless something is really messed up\n state.isBodyFormat(\"ignore\");\n });\n\n const test3 = test2.defineRoute({\n path: /^test/,\n method: [\"GET\"],\n // // @ts-expect-error because it's already been defined by the parent\n // bodyFormat: \"buffer\",\n zod: z.string(),\n }, async (state) => {\n //@ts-expect-error because we didn't include \"string\"\n const test: Exclude<BodyFormat, \"ignore\"> = state.bodyFormat;\n // no error here if bodyFormat is correctly typed\n const test2: \"ignore\" = state.bodyFormat\n // @ts-expect-error because it should be \"string\"\n state.isBodyFormat(\"buffer\");\n // this should never be an error unless something is really messed up\n state.isBodyFormat(\"ignore\");\n })\n\n const test2post = test1.defineRoute({\n path: /^test/,\n bodyFormat: \"string\",\n method: [\"POST\"],\n zod: z.string(),\n // handler: ,\n }, async (state) => {\n // @ts-expect-error because we didn't include \"string\"\n const test: Exclude<BodyFormat, \"string\"> = state.bodyFormat;\n // no error here if bodyFormat is correctly typed\n const test2: \"string\" = state.bodyFormat\n // @ts-expect-error because it should be \"string\"\n state.isBodyFormat(\"buffer\");\n // this should never be an error unless something is really messed up\n state.isBodyFormat(\"string\");\n });\n\n const test3post = test2post.defineRoute({\n path: /^test/,\n method: [\"POST\"],\n // // @ts-expect-error because it's already been defined by the parent\n // bodyFormat: \"buffer\",\n zod: z.string(),\n }, async (state) => {\n // @ts-expect-error because we didn't include \"string\"\n const test: Exclude<BodyFormat, \"string\"> = state.bodyFormat;\n // no error here if bodyFormat is correctly typed\n const test2: \"string\" = state.bodyFormat\n // @ts-expect-error because it should be \"string\"\n state.isBodyFormat(\"buffer\");\n // this should never be an error unless something is really messed up\n state.isBodyFormat(\"string\");\n })\n}\n\n","import { Prisma } from \"@prisma/client\";\nimport { truthy } from \"./utils\";\nimport { ok } from \"node:assert\";\n\n\nexport class DataChecks {\n allowAnonReads;\n allowAnonWrites;\n constructor(options: { allowAnonReads?: boolean, allowAnonWrites?: boolean }) {\n this.allowAnonReads = options.allowAnonReads;\n this.allowAnonWrites = options.allowAnonWrites;\n }\n\n okTiddlerFields(tiddlerFields: Record<string, any>) {\n ok(tiddlerFields.title, 'title must not be empty');\n Object.entries(tiddlerFields).forEach(([key, value]) => {\n if (typeof value === \"undefined\" || value === null) return;\n ok(typeof value === \"string\", `tiddler fields must be a string, ${key} is ${typeof value}`);\n });\n }\n\n okBagName(bagName: PrismaField<\"Bags\", \"bag_name\">) {\n ok(typeof bagName === \"string\", 'bagName must be a string');\n ok(bagName, 'bagName must not be empty');\n }\n\n okRecipeName(recipeName: PrismaField<\"Recipes\", \"recipe_name\">) {\n ok(typeof recipeName === \"string\", 'recipeName must be a string');\n ok(recipeName, 'recipeName must not be empty');\n }\n\n okUserID(userID: PrismaField<\"Users\", \"user_id\">) {\n ok(typeof userID === \"number\", 'userID must be a number');\n ok(userID > 0, 'userID must be greater than zero');\n }\n\n okTiddlerTitle(tiddlerTitle: string): asserts tiddlerTitle is PrismaField<\"Tiddlers\", \"title\"> {\n ok(typeof tiddlerTitle === \"string\", 'tiddler title must be a string');\n ok(tiddlerTitle, 'tiddler title must not be empty');\n }\n\n okEntityType(entityType: EntityType) {\n ok(entityType === \"bag\" || entityType === \"recipe\", \"Invalid entity type: \" + entityType);\n }\n\n okEntityName(entityName: EntityName<EntityType>) {\n ok(typeof entityName === \"string\", 'entityName must be a string');\n ok(entityName, 'entityName must not be empty');\n }\n\n okSessionID(sessionID: string): asserts sessionID is PrismaField<\"Sessions\", \"session_id\"> {\n ok(typeof sessionID === \"string\", 'sessionID must be a string');\n ok(sessionID, 'sessionID must not be empty');\n }\n\n isPermissionName = <T extends string>(e: T): e is T & ACLPermissionName => {\n const test = e as ACLPermissionName;\n switch (test) {\n case \"ADMIN\":\n case \"READ\":\n case \"WRITE\":\n return true;\n default: {\n const _: never = test;\n return false;\n }\n }\n }\n\n permissions: { [K in ACLPermissionName]: K } = { READ: \"READ\", WRITE: \"WRITE\", ADMIN: \"ADMIN\", };\n\n isEntityType = (x: any): x is \"recipe\" | \"bag\" => [\"recipe\", \"bag\"].includes(x);\n\n entityTypes: { [K in EntityType]: K } = { recipe: \"recipe\", bag: \"bag\" };\n\n /** If the user isn't logged in, user_id is 0. */\n getBagWhereACL({ recipe_id, permission, user_id, role_ids }: {\n /** Recipe ID can be provided as an extra restriction */\n recipe_id?: number,\n permission: ACLPermissionName,\n user_id: number,\n role_ids: number[],\n }) {\n\n const OR = this.getWhereACL({ permission, user_id, role_ids });\n\n return ([\n // all system bags are allowed to be read by any user\n permission === \"READ\" && { is_plugin: true },\n ...OR,\n // admin permission doesn't get inherited \n permission === \"ADMIN\" ? undefined : {\n recipe_bags: {\n some: {\n // check if we're in position 0 (for write) or any position (for read)\n position: permission === \"WRITE\" ? 0 : undefined,\n // of a recipe that the user has this permission on\n recipe: { OR },\n // if the connection was created with admin permissions\n with_acl: true,\n // for the specific recipe, if provided\n recipe_id,\n }\n }\n }\n ] satisfies (Prisma.BagsWhereInput | undefined | null | false)[]).filter(truthy)\n\n }\n getWhereACL({ permission, user_id, role_ids }: {\n permission: ACLPermissionName,\n user_id?: number,\n role_ids?: number[],\n }) {\n const { allowAnonReads, allowAnonWrites } = this;\n const anonRead = allowAnonReads && permission === \"READ\";\n const anonWrite = allowAnonWrites && permission === \"WRITE\";\n const allowAnon = anonRead || anonWrite;\n const allperms = [\"READ\", \"WRITE\", \"ADMIN\"] as const;\n const index = allperms.indexOf(permission);\n if (index === -1) throw new Error(\"Invalid permission\");\n const checkPerms = allperms.slice(index);\n\n return ([\n // allow unowned for any user (conditional for anon reads)\n (user_id || allowAnon) && { acl: { none: {} }, owner_id: null },\n // allow owner for user \n user_id && { owner_id: user_id },\n // allow acl for user \n user_id && role_ids?.length && {\n acl: {\n some: {\n permission: { in: checkPerms },\n role_id: { in: role_ids },\n }\n }\n },\n user_id && role_ids?.length && {\n acl: {\n some: {\n permission: { in: checkPerms },\n role_id: { in: role_ids },\n }\n }\n },\n\n ] satisfies (Prisma.RecipesWhereInput | Prisma.BagsWhereInput | undefined | null | false | 0)[]\n ).filter(truthy)\n }\n\n\n\n}\n\n\n\n/**\n## assumptions about prisma that should be tested\n\n```\nreturn await this.engine.acl.findMany({\n where: {\n entity_name: entityName,\n entity_type: entityType,\n // if permission_name is undefined, will prisma \n // include records without a permission connection?\n // ChatGPT 03-mini-high doesn't think so.\n permission: { permission_name } \n },\n});\n```\n*/\ndeclare let _dataChecks: any;","import { z, ZodEffects } from \"zod\";\nimport { StateObject } from \"../StateObject\";\nimport { Prisma } from \"@prisma/client\";\nimport { STREAM_ENDED } from \"../streamer\";\n\n\n\nexport namespace ZodAssert {\n type Exactly<T, X> = T & Record<Exclude<keyof X, keyof T>, never>\n /** \n * assert zod on the request body (`state.data`). \n * \n * You cannot assert data on a stream or ignore body format.\n * \n * Attempting to do so will cause the schema argument to expect a string \n * containing an error message informing the developer of this.\n */\n export function data<T extends\n S extends StateObject<\"ignore\" | \"stream\"> ? z.ZodUnknown :\n S extends StateObject<\"www-form-urlencoded\"> ? z.ZodObject<any> :\n z.ZodTypeAny, S extends StateObject\n >(\n state: S,\n schema:\n S extends StateObject<\"ignore\" | \"stream\">\n ? \"it is invalid to assert data for this body format\"\n : (zod: S extends StateObject<\"www-form-urlencoded\"> ? Z2<\"STRING\"> : Z2<\"JSON\">) => T,\n /** \n * If the data does not match the schema, this function is called sync'ly with the zod error.\n * Whatever it returns is sent as a utf8 string response body.\n * @param error The zod error.\n * @returns A string to send as the response body, or void to use the default error message.\n */\n onError?: (error: z.ZodError<any>) => string | void\n ): asserts state is S & ({ data: z.infer<T> }) {\n _zodAssert(\"data\", state, schema as any, onError);\n }\n\n /** \n * assert zod on the route path match groups (`state.pathParams`). \n * \n * Sends a 404 response instead of 400. \n */\n export function pathParams<\n T extends Exactly<{ [k in keyof S[\"pathParams\"]]: z.ZodTypeAny; }, T>,\n S extends StateObject,\n >(\n state: S, schemaShape: (zod: Z2<\"STRING\">) => T,\n /** \n * If the data does not match the schema, this function is called sync'ly with the zod error.\n * Whatever it returns is sent as a utf8 string response body.\n * @param error The zod error.\n * @returns A string to send as the response body, or void to use the default error message.\n */\n onError?: (error: z.ZodError<any>) => string | void\n ): asserts state is S & ({ pathParams: z.infer<z.ZodObject<T>> }) {\n _zodAssert(\"pathParams\", state, schemaShape, onError);\n }\n\n /** \n * assert zod on the url query parameters (`state.queryParams`). \n * \n * This is the only place that the query parameters are declared, so the keys are not checked. \n * \n * If no value is specified, it defaults to an empty string\n * (`?key&key=&key` becomes `key: [\"\", \"\", \"\"]`).\n * \n * In zod: `z.object({ key: z.array(z.string()).optional() })`\n */\n export function queryParams<T extends Record<string, z.ZodTypeAny>, S extends StateObject>(\n state: S, schemaShape: (zod: Z2<\"STRING\">) => T,\n /** \n * If the data does not match the schema, this function is called sync'ly with the zod error.\n * Whatever it returns is sent as a utf8 string response body.\n * @param error The zod error.\n * @returns A string to send as the response body, or void to use the default error message.\n */\n onError?: (error: z.ZodError<any>) => string | void\n ): asserts state is S & ({ queryParams: z.infer<z.ZodObject<T>> }) {\n _zodAssert(\"queryParams\", state, schemaShape, onError);\n }\n /** \n * assert zod on the data passed to this function and returns the cleaned data.\n * If onError is not specified, or does not return STREAM_ENDED, an error 500 is sent. \n * Either way, zodAssert will throw STREAM_ENDED immediately.\n * \n * If onError is not specified, the error will be printed with console.log.\n */\n export function any<T extends z.ZodTypeAny, S extends StateObject>(\n state: S, schemaShape: (zod: Z2<\"JSON\">) => T, data: z.input<T>,\n /** \n * If the data does not match the schema, this function is called sync'ly with the zod error.\n * If it does not return the STREAM_ENDED symbol indicating an appropriate error response was sent, \n * zodAssert will throw with a 500 error.\n * \n * It is perfectly valid to throw an error from this function,\n * as zodAssert will throw STREAM_ENDED immediately if it returns.\n * \n * @param error The zod error.\n * @returns STREAM_ENDED to indicate an appropriate error response was sent, or undefined.\n */\n onError?: (error: z.ZodError<any>) => void | symbol\n ): z.infer<T> { return _zodAssertAny(\"any\", state, schemaShape, data, onError); }\n /** \n * assert zod on the data passed to this function and returns the cleaned data.\n * If onError is not specified, or does not return STREAM_ENDED, an error 500 is sent. \n * Either way, zodAssert will throw STREAM_ENDED immediately.\n * \n * If onError is not specified, the error will be printed with console.log.\n */\n export function response<T extends z.ZodTypeAny, S extends StateObject>(\n state: S, schemaShape: (zod: Z2<\"JSON\">) => T, data: z.input<T>,\n /** \n * If the data does not match the schema, this function is called sync'ly with the zod error.\n * If it does not return the STREAM_ENDED symbol indicating an appropriate error response was sent, \n * zodAssert will throw with a 500 error.\n * \n * It is perfectly valid to throw an error from this function,\n * as zodAssert will throw STREAM_ENDED immediately if it returns.\n * \n * @param error The zod error.\n * @returns STREAM_ENDED to indicate an appropriate error response was sent, or undefined.\n */\n onError?: (error: z.ZodError<any>) => void | symbol\n ): z.infer<T> { return _zodAssertAny(\"response\", state, schemaShape, data, onError); }\n\n\n}\n// type t = number extends PrismaPayloadScalars<\"Roles\">[\"role_id\"] ? FieldTypeNumberSelector<\"JSON\"> : false;\nexport interface Z2<T extends FieldTypeGroups> extends _zod {\n /** \n * Tags the resulting value as being from the specified table field.\n * \n * The third argument is a string literal that specifies the field type based on the selected field.\n * \n * \"string\" and \"parse-number\" \n * - will use decodeURIComponent on the value. \n * - Require a string length at least one\n * \n * You can use .optional(), .nullable(), .nulish() after this to make the field optional.\n */\n prismaField<Table extends Prisma.ModelName, Field extends keyof PrismaPayloadScalars<Table>>(\n table: Table, field: Field,\n fieldtype:\n string extends (PrismaPayloadScalars<Table>[Field]) ? FieldTypeStringSelector<T> :\n number extends (PrismaPayloadScalars<Table>[Field]) ? FieldTypeNumberSelector<T> :\n boolean extends (PrismaPayloadScalars<Table>[Field]) ? FieldTypeBooleanSelector<T> :\n never,\n nullable?: null extends PrismaPayloadScalars<Table>[Field] ? true : false\n ): ZodEffects<any, PrismaField<Table, Field>, PrismaPayloadScalars<Table>[Field]>;\n\n\n authUser(): z.ZodNullable<z.ZodObject<{\n user_id: z.ZodNumber;\n isAdmin: z.ZodBoolean;\n username: z.ZodString;\n sessionId: z.ZodNumber;\n }>>;\n\n}\n\nexport const _zodAssertAny = (\n input: string,\n state: StateObject,\n schema: (z: Z2<any>) => z.ZodTypeAny | Record<string, z.ZodTypeAny>,\n inputdata: any,\n onError?: (error: z.ZodError<any>) => symbol | void,\n) => {\n const schema2: any = schema(makeZ2(input));\n const { success, data, error } = z.any().pipe(schema2).safeParse(inputdata);\n if (!success) {\n if (!onError) error.issues.forEach(e => console.log(input, e.message, e.path));\n if (onError?.(error) === STREAM_ENDED) throw STREAM_ENDED;\n throw state.sendEmpty(500, { \"x-reason\": input });\n }\n return data;\n}\n\nconst _zodAssert = (\n input: \"data\" | \"pathParams\" | \"queryParams\",\n state: StateObject,\n schema: (z: Z2<any>) => z.ZodTypeAny | Record<string, z.ZodTypeAny>,\n onError?: (error: z.ZodError<any>) => string | void,\n) => {\n\n // this checks if the schema is a string, since that is used to indicate invalid use cases of zodAssert,\n // and if it's correctly typed, then this is the best way to find it.\n if (typeof schema === \"string\") {\n console.log(new Error(`schema is a string: ${schema}`));\n throw state.sendEmpty(500);\n }\n const schema2: any = schema(makeZ2(input));\n\n const { success, data, error } = z.any().pipe(\n input === \"data\" ? schema2 : z.object(schema2)\n ).safeParse(state[input]);\n if (!success) {\n if (!onError) error.issues.forEach(e => console.log(input, e.message, e.path));\n const status = input === \"pathParams\" ? 404 : 400;\n const message = onError?.(error);\n if (typeof message === \"string\")\n throw state.sendString(status, { \"x-reason\": input }, message ?? \"\", \"utf8\");\n else\n throw state.sendEmpty(status, { \"x-reason\": input });\n }\n state[input] = data;\n};\n\ntype _zod = typeof z;\ntype ExtraFieldType = \"string\" | \"number\" | \"parse-number\" | \"boolean\" | \"parse-boolean\";\ntype FieldTypeGroups = \"STRING\" | \"JSON\";\ntype FieldTypeStringSelector<T extends FieldTypeGroups> = T extends \"STRING\" ? \"string\" : \"string\";\ntype FieldTypeNumberSelector<T extends FieldTypeGroups> = T extends \"STRING\" ? \"parse-number\" : \"number\";\ntype FieldTypeBooleanSelector<T extends FieldTypeGroups> = T extends \"STRING\" ? \"parse-boolean\" : \"boolean\";\n\nexport const Z2 = makeZ2(\"any\");\n\n\nfunction makeZ2<T extends FieldTypeGroups>(input: \"data\" | \"pathParams\" | \"queryParams\" | \"any\" | \"response\" | string): Z2<T> {\n const z2 = Object.create(z);\n z2.prismaField = prismaField;\n z2.authUser = () => z.object({\n user_id: z.number(),\n isAdmin: z.boolean(),\n username: z.string(),\n sessionId: z.number(),\n }).nullable();\n return z2;\n}\n\n\nfunction prismaField(table: any, field: any, fieldtype: ExtraFieldType, nullable?: boolean): any {\n const check = (() => {\n switch (fieldtype) {\n case \"string\":\n return z.string()\n .refine(x => x.length, { message: \"String must have length\" });\n case \"parse-number\":\n return z.string().min(1)\n .pipe(z.bigint({ coerce: true }))\n .pipe(z.number({ coerce: true }).finite())\n .refine(x => !isNaN(x), { message: \"Invalid number\" });\n case \"parse-boolean\":\n return z.enum([\"true\", \"false\", \"null\"]).transform(x => x === \"null\" ? null : x === \"true\");\n case \"boolean\":\n return z.boolean();\n case \"number\":\n return z.number().finite().int();\n default:\n throw new Error(\"Invalid field type\");\n }\n })();\n return nullable ? check.nullable() : check;\n\n}\n\n\n// const zodAssertGlobal = {\n// data: _zodAssert.bind(null, \"data\"),\n// pathParams: _zodAssert.bind(null, \"pathParams\"),\n// queryParams: _zodAssert.bind(null, \"queryParams\"),\n// response: _zodAssertAny.bind(null, \"response\"),\n// any: _zodAssertAny.bind(null, \"any\"),\n// zod: makeZ2(\"any\"),\n// };\n\n// declare global { type ZodAssert = typeof zodAssertGlobal; }\n\n// type t = ZodAssert;","export * from \"./utils\";\nexport * from \"./rootRoute\";\nexport * from \"./data-checks\";\nexport * from \"./zodAssert\";","import \"./global\";\nimport * as http2 from 'node:http2';\nimport send from 'send';\nimport { Readable } from 'stream';\nimport { IncomingMessage, ServerResponse, IncomingHttpHeaders as NodeIncomingHeaders, OutgoingHttpHeaders } from 'node:http';\nimport { is } from './utils';\nimport { createReadStream } from 'node:fs';\nimport { Writable } from 'node:stream';\n\ndeclare module 'node:net' {\n interface Socket {\n // this comment gets prepended to the other comment for this property, thus the hanging sentance.\n /** Not defined on net.Socket instances. \n * \n * On tls.Socket instances, */\n encrypted?: boolean;\n }\n}\n\n\nexport interface IncomingHttpHeaders extends NodeIncomingHeaders {\n \"accept-encoding\"?: string;\n}\n\nexport const SYMBOL_IGNORE_ERROR: unique symbol = Symbol(\"IGNORE_ERROR\");\nexport const STREAM_ENDED: unique symbol = Symbol(\"STREAM_ENDED\");\n\n\nexport type StreamerChunk = { data: string, encoding: NodeJS.BufferEncoding } | NodeJS.ReadableStream | Readable | Buffer;\n\n/**\n * The HTTP2 shims used in the request handler are only used for HTTP2 requests. \n * The NodeJS HTTP2 server actually calls the HTTP1 parser for all HTTP1 requests. \n */\nexport class Streamer {\n host: string;\n method: AllowedMethod;\n urlInfo: URL;\n url: string;\n headers: IncomingHttpHeaders;\n isSecure: boolean;\n cookies: Record<string, string | undefined>;\n constructor(\n private req: IncomingMessage | http2.Http2ServerRequest,\n private res: ServerResponse | http2.Http2ServerResponse,\n private router: Router\n ) {\n\n this.headers = req.headers;\n this.url = req.url as string;\n if (is<http2.Http2ServerRequest>(req, req.httpVersionMajor > 1)) {\n this.req.headers.host = req.headers[\":authority\"];\n }\n\n if (!req.headers.host) throw new Error(\"This should never happen\");\n if (!req.method) throw new Error(\"This should never happen\");\n if (!req.url?.startsWith(\"/\")) throw new Error(\"This should never happen\");\n //https://httpwg.org/specs/rfc9110.html#status.501\n if (!is<AllowedMethod>(req.method, AllowedMethods.includes(req.method as any)))\n throw this.sendString(501, {}, \"Method not supported\", \"utf8\");\n this.host = req.headers.host;\n this.method = req.method;\n this.isSecure = !!req.socket.encrypted;\n this.urlInfo = new URL(`https://${req.headers.host}${req.url}`);\n\n this.cookies = this.parseCookieString(req.headers.cookie || \"\");\n }\n\n\n // RIP Push Stream. it was a great idea.\n async pushStream(path: string) {\n return new Promise<Streamer>((resolve, reject) => {\n const req2: http2.Http2ServerRequest = this.req as any;\n if (!req2.stream || !req2.stream.pushAllowed) return reject();\n req2.stream.write\n const newRawHeaders = this.req.rawHeaders.slice();\n for (let i = 0; i < newRawHeaders.length; i += 2) {\n if (newRawHeaders[i] === \":method\") newRawHeaders[i + 1] = \"GET\";\n if (newRawHeaders[i] === \":path\") newRawHeaders[i + 1] = path;\n }\n req2.stream.pushStream({ \":method\": \"GET\", \":path\": path }, (err, pushStream, headers) => {\n if (err) return reject(err);\n const preq = new http2.Http2ServerRequest(pushStream, req2.headers, {}, newRawHeaders);\n const pres = new http2.Http2ServerResponse(pushStream);\n const pushStreamer = new Streamer(preq, pres, this.router);\n resolve(pushStreamer);\n });\n }).then(async streamer => {\n await this.router.handle(streamer);\n return streamer;\n }, (err) => { if (err) throw err; });\n }\n\n\n parseCookieString(cookieString: string) {\n const cookies: any = {};\n if (typeof cookieString !== 'string') throw new Error('cookieString must be a string');\n cookieString.split(';').forEach(cookie => {\n const parts = cookie.split('=');\n if (parts.length >= 2) {\n const key = parts[0]!.trim();\n const value = parts.slice(1).join('=').trim();\n cookies[key] = decodeURIComponent(value);\n }\n });\n return cookies;\n }\n\n get reader(): Readable { return this.req; }\n get writer(): Writable {\n // don't overwrite it here if it's already set because this could just be for sending the body.\n if (!this.headersSent && !this.headersSentBy)\n this.headersSentBy = new Error(\"Possible culprit was given access to the response object here.\");\n return this.res;\n }\n\n throw(statusCode: number) {\n this.sendEmpty(statusCode);\n throw SYMBOL_IGNORE_ERROR;\n }\n\n catcher = (error: unknown) => {\n if (error === SYMBOL_IGNORE_ERROR) return;\n if (error === STREAM_ENDED) return;\n const tag = this.urlInfo.href;\n console.error(tag, error);\n if (!this.headersSent)\n this.sendEmpty(500, { \"x-reason\": \"Internal Server Error (catcher)\" });\n }\n\n checkHeadersSentBy(setError: boolean) {\n if (this.headersSent && this.headersSentBy) {\n console.log(this.headersSentBy);\n console.log(new Error(\"This is the second attempt to send headers. Was it supposed to happen?\"));\n }\n else if (this.res.headersSent) console.log(\"Headers were sent by an unknown source.\");\n // queue up the error in case there is a second attempt.\n else this.headersSentBy = new Error(\"You appear to be sending headers more than once. The first attempt was here. Does it need to throw or return?\")\n }\n\n\n\n toHeadersMap(headers: { [x: string]: string | string[] | number | undefined }) {\n return new Map(Object.entries(headers).map(([k, v]) =>\n [k.toLowerCase(), Array.isArray(v) ? v : v === undefined ? [] : [v.toString()]]\n ));\n }\n\n readBody = () => new Promise<Buffer>((resolve: (chunk: Buffer) => void) => {\n const chunks: Buffer[] = [];\n\n this.reader.on('data', chunk => chunks.push(typeof chunk === \"string\" ? Buffer.from(chunk) : chunk));\n this.reader.on('end', () => resolve(Buffer.concat(chunks)));\n });\n\n sendEmpty(status: number, headers: OutgoingHttpHeaders = {}): typeof STREAM_ENDED {\n if (process.env.DEBUG?.split(\",\").includes(\"send\")) {\n console.error(\"sendEmpty\", status, headers);\n }\n this.checkHeadersSentBy(true);\n this.res.writeHead(status, headers);\n this.res.end();\n return STREAM_ENDED;\n }\n\n sendString(status: number, headers: OutgoingHttpHeaders, data: string, encoding: NodeJS.BufferEncoding): typeof STREAM_ENDED {\n if (process.env.DEBUG?.split(\",\").includes(\"send\")) {\n console.error(\"sendString\", status, headers);\n }\n this.checkHeadersSentBy(true);\n headers['content-length'] = Buffer.byteLength(data, encoding);\n this.res.writeHead(status, headers);\n\n if (this.method === \"HEAD\")\n this.res.end();\n else\n this.res.end(data, encoding);\n\n return STREAM_ENDED;\n }\n\n sendBuffer(status: number, headers: OutgoingHttpHeaders, data: Buffer): typeof STREAM_ENDED {\n if (process.env.DEBUG?.split(\",\").includes(\"send\")) {\n console.error(\"sendBuffer\", status, headers);\n }\n this.checkHeadersSentBy(true);\n headers['content-length'] = data.length;\n this.res.writeHead(status, headers);\n if (this.method === \"HEAD\")\n this.res.end();\n else\n this.res.end(data);\n return STREAM_ENDED;\n }\n /** If this is a HEAD request, the stream will be ignored AND LEFT OPEN. */\n sendStream(status: number, headers: OutgoingHttpHeaders, stream: Readable): typeof STREAM_ENDED {\n if (process.env.DEBUG?.split(\",\").includes(\"send\")) {\n console.error(\"sendStream\", status, headers);\n }\n this.checkHeadersSentBy(true);\n this.res.writeHead(status, headers);\n if (this.method === \"HEAD\")\n this.res.end();\n else\n stream.pipe(this.res);\n return STREAM_ENDED;\n }\n // I'm not sure if there's a use case for this\n private sendFD(status: number, headers: OutgoingHttpHeaders, options: {\n fd: number;\n offset?: number;\n length?: number;\n }): typeof STREAM_ENDED {\n this.checkHeadersSentBy(true);\n this.res.writeHead(status, headers);\n const { fd, offset, length } = options;\n const stream = createReadStream(\"\", {\n fd,\n start: offset,\n end: length && length - 1,\n autoClose: false,\n });\n stream.pipe(this.res);\n return STREAM_ENDED;\n }\n /** \n * Sends a file with the appropriate cache headers, using the `send` npm module. \n * \n * Think of it like a static file server where you are serving files from a directory.\n * \n * @param options.root The directory to serve files from.\n * @param options.reqpath The path to the file relative to the `root` directory.\n * @param options.offset The offset in bytes to start reading the file from.\n * @param options.length The number of bytes to read from the file.\n * @param options.index \"index.html\" by default, to disable this set false or \n * to supply a new index pass a string or an array in preferred order. \n * \n * If an index.html file is not found, `send` will NOT generate a directory listing.\n * \n * The `send` method will automatically set the `Content-Type` header based on the file extension.\n * \n * If the file is not found, the `send` method will automatically send a 404 response.\n * \n\n * @returns STREAM_ENDED\n */\n sendFile(status: number, headers: OutgoingHttpHeaders, options: {\n root: string;\n reqpath: string;\n offset?: number;\n length?: number;\n index?: string | boolean | string[] | undefined,\n on404?: () => Promise<typeof STREAM_ENDED>;\n onDir?: () => Promise<typeof STREAM_ENDED>;\n }) {\n\n // the headers and status have to be set on the response object before piping the stream\n this.res.statusCode = status;\n this.toHeadersMap(headers).forEach((v, k) => { this.res.appendHeader(k, v); });\n\n const { root, reqpath, offset, length } = options;\n\n if (process.env.DEBUG?.split(\",\").includes(\"send\")) {\n console.error(\"sendFile\", root, reqpath, status, headers);\n }\n\n const stream = send(this.req, reqpath, {\n dotfiles: \"ignore\",\n index: false,\n root,\n start: offset,\n end: length && length - 1,\n });\n return new Promise<typeof STREAM_ENDED>((resolve, reject) => {\n\n stream.on(\"error\", (err) => Promise.resolve().then(async (): Promise<typeof STREAM_ENDED> => {\n if (err === 404 || err?.statusCode === 404) {\n return (await options.on404?.()) ?? this.sendEmpty(404);\n } else {\n console.log(err);\n throw this.sendEmpty(500);\n }\n }).then(resolve, reject));\n\n stream.on(\"directory\", () => Promise.resolve().then(async (): Promise<typeof STREAM_ENDED> => {\n return (await options.onDir?.())\n ?? this.sendEmpty(404, { \"x-reason\": \"Directory listing not allowed\" })\n }).then(resolve, reject));\n\n stream.on(\"end\", () => {\n resolve(STREAM_ENDED);\n })\n\n this.checkHeadersSentBy(true);\n stream.pipe(this.res);\n });\n }\n\n setCookie(name: string, value: string, options: {\n domain?: string;\n path?: string;\n expires?: Date;\n maxAge?: number;\n secure?: boolean;\n httpOnly?: boolean;\n sameSite?: \"Strict\" | \"Lax\" | \"None\";\n }) {\n var cookie = `${name}=${encodeURIComponent(value)}`;\n if (options.domain) cookie += `; Domain=${options.domain}`;\n if (options.path) cookie += `; Path=${options.path}`;\n if (options.expires) cookie += `; Expires=${options.expires.toUTCString()}`;\n if (options.maxAge) cookie += `; Max-Age=${options.maxAge}`;\n if (options.secure) cookie += `; Secure`;\n if (options.httpOnly) cookie += `; HttpOnly`;\n if (options.sameSite) cookie += `; SameSite=${options.sameSite}`;\n this.appendHeader(\"Set-Cookie\", cookie);\n }\n\n appendHeader(name: string, value: string): void {\n const current = this.res.getHeader(name);\n this.res.setHeader(name,\n current\n ? Array.isArray(current)\n ? [...current as string[], value]\n : [current as string, value]\n : value\n );\n }\n\n setHeader(name: string, value: string): void {\n this.res.setHeader(name, value);\n }\n writeHead(status: number, headers: OutgoingHttpHeaders = {}): void {\n if (process.env.DEBUG?.split(\",\").includes(\"send\")) {\n console.error(\"writeHead\", status, headers);\n }\n this.checkHeadersSentBy(true);\n this.res.writeHead(status, headers);\n }\n write(chunk: Buffer | string, encoding?: NodeJS.BufferEncoding): void {\n // Between http1 and http2, the types are slightly different, but the runtime effect seems to be the same.\n encoding ? (this.res as ServerResponse).write(chunk, encoding) : (this.res as ServerResponse).write(chunk)\n }\n end(): typeof STREAM_ENDED {\n this.res.end();\n return STREAM_ENDED;\n }\n\n get headersSent() {\n return this.res.headersSent;\n }\n\n headersSentBy: Error | undefined;\n}\n\nexport class StreamerState {\n\n readBody\n sendEmpty\n sendString\n sendBuffer\n sendStream\n sendFile\n setCookie\n /**\n * \n * Sets a single header value. If the header already exists in the to-be-sent\n * headers, its value will be replaced. Use an array of strings to send multiple\n * headers with the same name\n * \n * When headers have been set with `response.setHeader()`, they will be merged\n * with any headers passed to `response.writeHead()`, with the headers passed\n * to `response.writeHead()` given precedence.\n * \n */\n setHeader\n writeHead\n write\n end\n\n /** sends a status and plain text string body */\n sendSimple(status: number, msg: string): typeof STREAM_ENDED {\n return this.sendString(status, {\n \"content-type\": \"text/plain\"\n }, msg, \"utf8\");\n }\n /** Stringify the value (unconditionally) and send it with content-type `application/json` */\n sendJSON<T>(status: number, obj: T): typeof STREAM_ENDED {\n return this.sendString(status, {\n \"content-type\": \"application/json\"\n }, JSON.stringify(obj), \"utf8\");\n }\n \n\n STREAM_ENDED: typeof STREAM_ENDED = STREAM_ENDED;\n\n constructor(private streamer: Streamer) {\n this.readBody = this.streamer.readBody.bind(this.streamer);\n this.sendEmpty = this.streamer.sendEmpty.bind(this.streamer);\n this.sendString = this.streamer.sendString.bind(this.streamer);\n this.sendBuffer = this.streamer.sendBuffer.bind(this.streamer);\n this.sendStream = this.streamer.sendStream.bind(this.streamer);\n this.sendFile = this.streamer.sendFile.bind(this.streamer);\n this.setHeader = this.streamer.setHeader.bind(this.streamer);\n this.writeHead = this.streamer.writeHead.bind(this.streamer);\n this.write = this.streamer.write.bind(this.streamer);\n this.end = this.streamer.end.bind(this.streamer);\n this.setCookie = this.streamer.setCookie.bind(this.streamer);\n\n }\n\n\n get url() { return this.streamer.url; }\n get method(): AllowedMethod { return this.streamer.method; }\n get headers() { return this.streamer.headers; }\n get host() { return this.streamer.host; }\n get urlInfo() { return this.streamer.urlInfo; }\n get headersSent() { return this.streamer.headersSent; }\n\n get reader() { return this.streamer.reader; }\n\n /** Currently this is based on whether the socket is secure, so a proxy will cause problems. */\n get isSecure() { return this.streamer.isSecure; }\n get cookies() { return this.streamer.cookies; }\n\n}\n\n\nimport { AllowedMethod, AllowedMethods, Router } from './routes/router';\n\n","import { Readable } from 'stream';\nimport { filterAsync, mapAsync, readMultipartData, sendResponse } from './utils';\nimport { STREAM_ENDED, Streamer, StreamerState } from './streamer';\nimport { PassThrough } from 'node:stream';\nimport { AllowedMethod, BodyFormat, RouteMatch, Router, SiteConfig } from './routes/router';\nimport * as z from 'zod';\nimport { AuthUser } from './routes/services/sessions';\nimport { Prisma, PrismaClient } from '@prisma/client';\nimport { Types } from '@prisma/client/runtime/library';\nimport { DataChecks } from './utils';\nimport { setupDevServer } from \"./setupDevServer\";\nimport { Commander } from './commander';\nimport { PasswordService } from './routes/services/PasswordService';\n\nexport interface AuthStateRouteACL {\n\n}\n\n\n\n// This class abstracts the request/response cycle into a single object.\n// It hides most of the details from the routes, allowing us to easily change the underlying server implementation.\nexport class StateObject<\n B extends BodyFormat = BodyFormat,\n M extends AllowedMethod = AllowedMethod,\n RoutePathParams extends string[][] = string[][],\n D = unknown\n> extends StreamerState {\n\n z: typeof z = z;\n\n STREAM_ENDED: typeof STREAM_ENDED = STREAM_ENDED;\n\n get method(): M { return super.method as M; }\n readMultipartData\n sendResponse\n /** This is set in makeRouter */\n sendDevServer!: () => ReturnType<Awaited<ReturnType<typeof setupDevServer>>>;\n\n data!:\n B extends \"string\" ? string :\n B extends \"buffer\" ? Buffer :\n B extends \"www-form-urlencoded-urlsearchparams\" ? URLSearchParams :\n B extends \"stream\" ? Readable :\n B extends \"ignore\" ? undefined :\n D;\n /** \n * an *object from entries* of all the pathParams in the tree mapped to the path regex matches from that route.\n * \n * Object.fromEntries takes the last value if there are duplicates, so conflicting names will have the last value in the path. \n * \n * Conflicting names would be defined on the route definitions, so just change the name there if there is a conflict.\n */\n pathParams: Record<RoutePathParams extends (infer X extends string)[][] ? X : never, string | undefined>;\n /** \n * The query params. Because these aren't checked anywhere, \n * the value includes undefined since it will be that if \n * the key is not specified at all. \n * \n * This will always satisfy the zod schema: `z.record(z.array(z.string()))`\n */\n queryParams: Record<string, string[] | undefined>;\n\n\n private engine: Commander[\"engine\"];\n public config: SiteConfig;\n public PasswordService: PasswordService;\n\n constructor(\n streamer: Streamer,\n /** The array of Route tree nodes the request matched. */\n private routePath: RouteMatch[],\n /** The bodyformat that ended up taking precedence. This should be correctly typed. */\n public bodyFormat: B,\n public user: AuthUser,\n public commander: Commander,\n public tiddlerCache: Router[\"tiddlerCache\"],\n ) {\n super(streamer);\n\n this.engine = commander.engine;\n this.config = commander.siteConfig;\n this.PasswordService = commander.PasswordService;\n\n this.readMultipartData = readMultipartData.bind(this);\n this.sendResponse = sendResponse.bind(undefined, this.config, this);\n\n this.pathParams = Object.fromEntries<string | undefined>(routePath.map(r =>\n r.route.pathParams\n ?.map((e, i) => [e, r.params[i]] as const)\n .filter(<T>(e: T): e is T & {} => !!e)\n ?? []\n ).flat()) as any;\n\n const pathParamsZodCheck = z.record(z.string().transform(zodURIComponent).optional()).safeParse(this.pathParams);\n if (!pathParamsZodCheck.success) console.log(\"BUG: Path params zod error\", pathParamsZodCheck.error, this.pathParams);\n else this.pathParams = pathParamsZodCheck.data;\n\n this.queryParams = Object.fromEntries([...this.urlInfo.searchParams.keys()]\n .map(key => [key, this.urlInfo.searchParams.getAll(key)] as const));\n\n const queryParamsZodCheck = z.record(z.array(z.string())).safeParse(this.queryParams);\n if (!queryParamsZodCheck.success) console.log(\"BUG: Query params zod error\", queryParamsZodCheck.error, this.queryParams);\n else this.queryParams = queryParamsZodCheck.data;\n\n\n }\n \n okUser() {\n if (!this.user.isLoggedIn) throw \"User not authenticated\";\n }\n okAdmin() {\n if (!this.user.isLoggedIn) throw \"User not authenticated\";\n if (!this.user.isAdmin) throw \"User is not an admin\";\n }\n\n // createStore(engine: PrismaTxnClient) {\n // const sql = createStrictAwaitProxy(new SqlTiddlerDatabase(engine));\n // return createStrictAwaitProxy(new SqlTiddlerStore(sql, this.attachmentStore));\n // }\n\n $transaction = async <T>(fn: (prisma: PrismaTxnClient) => Promise<T>): Promise<T> => {\n return await this.engine.$transaction(prisma => fn(prisma as PrismaTxnClient));\n }\n\n $transactionTuple<P extends Prisma.PrismaPromise<any>[]>(arg: (prisma: Commander[\"engine\"]) => [...P], options?: { isolationLevel?: Prisma.TransactionIsolationLevel }): Promise<Types.Utils.UnwrapTuple<P>> {\n return this.engine.$transaction(arg(this.engine), options);\n }\n\n makeTiddlerEtag(options: { bag_name: string; tiddler_id: string | number; }) {\n // why do we need tiddler_id AND bag_name? tiddler_id is unique across all tiddlers\n if (options.bag_name && options.tiddler_id) {\n return `\"tiddler:${options.bag_name}/${options.tiddler_id}\"`;\n } else {\n throw \"Missing bag_name or tiddler_id\";\n }\n }\n\n /** type-narrowing helper function. This affects anywhere T is used. */\n isBodyFormat<T extends B, S extends { [K in B]: StateObject<K, M, RoutePathParams, D> }[T]>(format: T): this is S {\n return this.bodyFormat as BodyFormat === format;\n }\n\n\n /**\n *\n * Sends a **302** status code and **Location** header to the client.\n * \n * \n * - **301 Moved Permanently:** The resource has been permanently moved to a new URL.\n * - **302 Found:** The resource is temporarily located at a different URL.\n * - **303 See Other:** Fetch the resource from another URI using a GET request.\n * - **307 Temporary Redirect:** The resource is temporarily located at a different URL; the same HTTP method should be used.\n * - **308 Permanent Redirect:** The resource has permanently moved; the client should use the new URL in future requests.\n */\n redirect(location: string, pushLocation?: boolean): typeof STREAM_ENDED {\n return this.sendEmpty(302, { 'Location': location });\n }\n\n sendSSE(retryMilliseconds?: number) {\n if (retryMilliseconds !== undefined)\n if (typeof retryMilliseconds !== \"number\" || retryMilliseconds < 0)\n throw new Error(\"Invalid retryMilliseconds: must be a non-negative number\");\n\n const stream = new PassThrough();\n\n this.sendStream(200, {\n \"content-type\": \"text/event-stream\",\n \"cache-control\": \"no-cache\",\n \"connection\": \"keep-alive\",\n \"x-accel-buffering\": \"no\",\n }, stream);\n\n stream.write(\": This page is a server-sent event stream. It will continue loading until you close it.\\n\");\n stream.write(\": https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events\\n\");\n stream.write(\"\\n\");\n\n /**\n * \n * @param {string} eventName The event name. If zero-length, the field is omitted\n * @param eventData The data to send. Must be stringify-able to JSON.\n * @param {string} eventId The event id. If zero-length, the field is omitted.\n */\n const emitEvent = (eventName: string, eventData: any, eventId: string) => {\n if (typeof eventName !== \"string\")\n throw new Error(\"Event name must be a string (a zero-length string disables the field)\");\n if (eventName.includes(\"\\n\"))\n throw new Error(\"Event name cannot contain newlines\");\n if (typeof eventId !== \"string\")\n throw new Error(\"Event ID must be a string\");\n if (eventId.includes(\"\\n\"))\n throw new Error(\"Event ID cannot contain newlines\");\n\n stream.write([\n eventName && `event: ${eventName}`,\n `data: ${JSON.stringify(eventData)}`,\n eventId && `id: ${eventId}`,\n retryMilliseconds && `retry: ${retryMilliseconds}`,\n ].filter(e => e).join(\"\\n\") + \"\\n\\n\");\n }\n\n return {\n /** Emit an SSE event */\n emitEvent,\n emitComment: (comment: string) => stream.write(`: ${comment}\\n\\n`),\n close: () => stream.end(),\n onClose: (callback: () => void) => stream.on(\"close\", callback),\n };\n\n }\n // several changes were made to this function\n // - it shouldn't assume it knows where the entityName is\n // - it throws STREAM_ENDED if it ends the request\n // - it does not check whether headers have been sent before throwing. \n // - headers should not be sent before it is called. \n // - it should not send a response more than once since it should throw every time it does.\n // and now it is replaced by the getACL prisma query.\n async checkACL(entityType: EntityType, entityName: string, permissionName: ACLPermissionName): Promise<void> {\n console.error(\"checkACL is not implemented\");\n throw this.sendEmpty(500);\n }\n\n\n async getRecipeACL(\n recipe_name: PrismaField<\"Recipes\", \"recipe_name\">,\n needWrite: boolean\n ) {\n const { user_id, isAdmin, role_ids } = this.user;\n\n const prisma = this.engine;\n const read = new DataChecks(this.config).getBagWhereACL({ permission: \"READ\", user_id, role_ids });\n const write = new DataChecks(this.config).getBagWhereACL({ permission: \"WRITE\", user_id, role_ids });\n\n const [recipe, canRead, canWrite] = await prisma.$transaction([\n prisma.recipes.findUnique({\n select: { recipe_id: true },\n where: { recipe_name }\n }),\n isAdmin ? prisma.$queryRaw`SELECT 1` : prisma.recipes.findUnique({\n select: { recipe_id: true },\n where: { recipe_name, recipe_bags: { every: { bag: { OR: read } } } }\n }),\n isAdmin ? prisma.$queryRaw`SELECT 1` : needWrite ? prisma.recipes.findUnique({\n select: { recipe_id: true },\n where: { recipe_name, recipe_bags: { some: { position: 0, bag: { OR: write } } } }\n }) : prisma.$queryRaw`SELECT 1`,\n ]);\n\n return { recipe, canRead, canWrite };\n\n }\n async assertRecipeACL(\n recipe_name: PrismaField<\"Recipes\", \"recipe_name\">,\n needWrite: boolean\n ) {\n\n const { recipe, canRead, canWrite } = await this.getRecipeACL(recipe_name, needWrite);\n\n if (!recipe) throw this.sendEmpty(404, { \"x-reason\": \"recipe not found\" });\n if (!canRead) throw this.sendEmpty(403, { \"x-reason\": \"no read permission\" });\n if (!canWrite) throw this.sendEmpty(403, { \"x-reason\": \"no write permission\" });\n\n }\n\n async getBagACL(\n bag_name: PrismaField<\"Bags\", \"bag_name\">,\n needWrite: boolean\n ) {\n const { user_id, isAdmin, role_ids } = this.user;\n const prisma = this.engine;\n const read = new DataChecks(this.config).getBagWhereACL({ permission: \"READ\", user_id, role_ids });\n const write = new DataChecks(this.config).getBagWhereACL({ permission: \"WRITE\", user_id, role_ids });\n const [bag, canRead, canWrite] = await prisma.$transaction([\n prisma.bags.findUnique({\n select: { bag_id: true, is_plugin: true, owner_id: true },\n where: { bag_name }\n }),\n isAdmin ? prisma.$queryRaw`SELECT 1` : prisma.bags.findUnique({\n select: { bag_id: true },\n where: { bag_name, OR: read }\n }),\n isAdmin ? prisma.$queryRaw`SELECT 1` : needWrite ? prisma.bags.findUnique({\n select: { bag_id: true },\n where: { bag_name, OR: write }\n }) : prisma.$queryRaw`SELECT 1`,\n ]);\n return { bag, canRead, canWrite };\n }\n\n async assertBagACL(\n bag_name: PrismaField<\"Bags\", \"bag_name\">,\n needWrite: boolean\n ) {\n const { bag, canRead, canWrite } = await this.getBagACL(bag_name, needWrite);\n\n if (!bag) throw this.sendEmpty(404, { \"x-reason\": \"recipe not found\" });\n if (!canRead) throw this.sendEmpty(403, { \"x-reason\": \"no read permission\" });\n if (!canWrite) throw this.sendEmpty(403, { \"x-reason\": \"no write permission\" });\n\n return bag;\n\n }\n\n}\n\nconst zodURIComponent = (val: string, ctx: z.RefinementCtx) => {\n try {\n return decodeURIComponent(val);\n } catch (e) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Invalid URI component\",\n });\n return z.NEVER;\n }\n}\n","import { registerZodRoutes, SiteConfig, zodManage, RouterKeyMap, RouterRouteMap } from \"../router\";\nimport { DataChecks } from \"../../utils\";\nimport { AuthUser } from \"../services/sessions\";\n\n// https://crates.io/crates/indradb\n\n\nexport const RecipeKeyMap: RouterKeyMap<RecipeManager, true> = {\n index_json: true,\n\n bag_create: true,\n bag_update: true,\n bag_upsert: true,\n bag_delete: true,\n bag_acl_update: true,\n\n recipe_create: true,\n recipe_update: true,\n recipe_upsert: true,\n recipe_delete: true,\n recipe_acl_update: true,\n\n}\n\nexport type RecipeManagerMap = RouterRouteMap<RecipeManager>;\n\nexport class RecipeManager {\n\n static defineRoutes(root: rootRoute, config: SiteConfig) {\n registerZodRoutes(root, new RecipeManager(config), Object.keys(RecipeKeyMap));\n }\n\n checks: DataChecks;\n\n constructor(private config: SiteConfig) {\n const { allowAnonReads, allowAnonWrites } = config;\n this.checks = new DataChecks({ allowAnonReads, allowAnonWrites })\n }\n\n index_json = zodManage(z => z.undefined(), async (state, prisma) => {\n\n const { isAdmin, user_id, username, role_ids } = state.user;\n\n const OR = this.checks.getBagWhereACL({ permission: \"READ\", user_id, role_ids });\n\n const bagList = await prisma.bags.findMany({\n include: {\n _count: isAdmin ? undefined : {\n select: {\n acl: {\n where: {\n permission: \"ADMIN\",\n role_id: { in: role_ids }\n }\n }\n }\n },\n acl: true,\n },\n where: isAdmin ? undefined : { OR }\n });\n\n const recipeList = await prisma.recipes.findMany({\n include: {\n recipe_bags: {\n select: { bag_id: true, position: true, with_acl: true, },\n orderBy: { position: \"asc\" }\n },\n acl: true,\n _count: isAdmin ? undefined : {\n select: {\n acl: {\n where: {\n permission: \"ADMIN\",\n role_id: { in: role_ids }\n }\n }\n }\n },\n },\n where: isAdmin ? undefined : { recipe_bags: { every: { bag: { OR } } } }\n });\n\n const userListUser = !isAdmin && await prisma.users.findMany({\n select: { user_id: true, username: true }\n });\n\n const userListAdmin = !!isAdmin && await prisma.users.findMany({\n select: { user_id: true, username: true, email: true, roles: true, last_login: true, created_at: true }\n });\n\n const roleList = await prisma.roles.findMany();\n\n return {\n bagList,\n recipeList,\n isAdmin,\n user_id,\n userListUser,\n userListAdmin,\n roleList,\n username,\n isLoggedIn: state.user.isLoggedIn,\n allowAnonReads: state.config.allowAnonReads,\n allowAnonWrites: state.config.allowAnonWrites,\n }\n });\n\n recipe_create = zodManage(z => z.object({\n recipe_name: z.string(),\n description: z.string(),\n bag_names: z.array(z.object({ bag_name: z.string(), with_acl: z.boolean() })),\n owner_id: z.prismaField(\"Recipes\", \"owner_id\", \"number\", true).optional(),\n isCreate: z.literal(true).default(true),\n }), async (state, prisma) => {\n return await this.recipeCreateOrUpdate(state.data, prisma, state.user);\n });\n recipe_update = zodManage(z => z.object({\n recipe_name: z.string(),\n description: z.string(),\n bag_names: z.array(z.object({ bag_name: z.string(), with_acl: z.boolean() })),\n owner_id: z.prismaField(\"Recipes\", \"owner_id\", \"number\", true).optional(),\n isCreate: z.literal(false).default(false),\n }), async (state, prisma) => {\n return await this.recipeCreateOrUpdate(state.data, prisma, state.user);\n });\n\n recipe_upsert = zodManage(z => z.object({\n recipe_name: z.string(),\n description: z.string(),\n bag_names: z.array(z.object({ bag_name: z.string(), with_acl: z.boolean() })),\n owner_id: z.prismaField(\"Recipes\", \"owner_id\", \"number\", true).optional(),\n isCreate: z.boolean(),\n }), async (state, prisma) => {\n return await this.recipeCreateOrUpdate(state.data, prisma, state.user);\n });\n\n bag_create = zodManage(z => z.object({\n bag_name: z.string(),\n description: z.string(),\n is_plugin: z.boolean(),\n owner_id: z.prismaField(\"Bags\", \"owner_id\", \"number\", true).optional(),\n isCreate: z.literal(true).default(true),\n }), async (state, prisma) => {\n return await this.bagCreateOrUpdate(state.data, prisma, state.user);\n });\n\n bag_update = zodManage(z => z.object({\n bag_name: z.string(),\n description: z.string(),\n is_plugin: z.boolean(),\n owner_id: z.prismaField(\"Bags\", \"owner_id\", \"number\", true).optional(),\n isCreate: z.literal(false).default(false),\n }), async (state, prisma) => {\n return await this.bagCreateOrUpdate(state.data, prisma, state.user);\n });\n\n bag_upsert = zodManage(z => z.object({\n bag_name: z.string(),\n description: z.string(),\n is_plugin: z.boolean(),\n owner_id: z.prismaField(\"Bags\", \"owner_id\", \"number\", true).optional(),\n isCreate: z.boolean(),\n }), async (state, prisma) => {\n return await this.bagCreateOrUpdate(state.data, prisma, state.user);\n });\n\n async recipeCreateOrUpdate({ bag_names, description, owner_id, recipe_name, isCreate }: {\n recipe_name: string,\n description: string,\n bag_names: { bag_name: string, with_acl: boolean }[],\n owner_id?: number | null,\n isCreate: boolean,\n }, prisma: PrismaTxnClient, user: AuthUser) {\n const existing = await prisma.recipes.findUnique({ where: { recipe_name }, });\n\n this.assertCreateOrUpdate({ user, type: \"recipe\", isCreate, owner_id, existing, });\n\n const { isAdmin, user_id } = user;\n\n const OR = this.checks.getWhereACL({ permission: \"ADMIN\", user_id, });\n\n const bags = new Map(\n await prisma.bags.findMany({\n where: { bag_name: { in: bag_names.map(e => e.bag_name) } },\n }).then(bags => bags.map(bag => [bag.bag_name as string, bag]))\n );\n\n const missing = bag_names.filter(e => !bags.has(e.bag_name));\n if (missing.length) throw \"Some bags not found: \" + JSON.stringify(missing);\n\n const bagsAcl = new Map(\n await prisma.bags.findMany({\n where: { bag_name: { in: bag_names.map(e => e.bag_name) }, OR },\n }).then(bags => bags.map(bag => [bag.bag_name as string, bag]))\n );\n\n const createBags = bag_names.map((bag, position) => ({\n bag_id: bags.get(bag.bag_name)!.bag_id,\n with_acl: bagsAcl && bagsAcl.has(bag.bag_name) && bag.with_acl,\n position,\n }));\n\n if (existing) {\n await prisma.recipes.update({\n where: { recipe_name },\n data: {\n description,\n owner_id: isAdmin ? owner_id : undefined,\n recipe_bags: {\n deleteMany: {},\n }\n }\n });\n await prisma.recipes.update({\n where: { recipe_name },\n data: {\n recipe_bags: {\n create: createBags\n }\n }\n });\n return existing;\n } else {\n\n return await prisma.recipes.create({\n data: {\n recipe_name,\n description,\n recipe_bags: { create: createBags },\n owner_id: isAdmin ? owner_id : user_id\n },\n });\n }\n }\n\n async bagCreateOrUpdate({ bag_name, description, is_plugin, owner_id, isCreate }: {\n bag_name: string,\n description: string,\n is_plugin: boolean,\n owner_id?: number | null,\n isCreate: boolean,\n }, prisma: PrismaTxnClient, user: AuthUser) {\n const existing = await prisma.bags.findUnique({\n where: { bag_name },\n select: { owner_id: true }\n });\n\n this.assertCreateOrUpdate({ type: \"bag\", isCreate, owner_id, existing, user });\n\n const { isAdmin, user_id } = user;\n\n return await prisma.bags.upsert({\n where: { bag_name },\n update: {\n description,\n is_plugin,\n owner_id: isAdmin ? owner_id : undefined //undefined leaves the value as-is\n },\n create: {\n bag_name,\n description,\n is_plugin,\n owner_id: isAdmin ? owner_id : user_id\n },\n });\n\n }\n\n\n assertCreateOrUpdate({\n existing, isCreate, owner_id, type, user\n }: {\n user: AuthUser,\n isCreate: boolean,\n owner_id?: number | null,\n existing: { owner_id: PrismaField<\"Users\", \"user_id\"> | null } | null\n type: \"recipe\" | \"bag\"\n }) {\n // check user_id just to be safe because we depend on it for an additional check here and elsewhere\n // user_id 0 is also not a valid user_id and only used for anonymous users\n if (!user.isLoggedIn || !user.user_id)\n throw \"User not authenticated\";\n\n const { isAdmin, user_id } = user;\n\n if (!isAdmin && owner_id !== undefined)\n throw \"owner_id is only valid for admins\";\n\n if (existing && isCreate)\n throw `A ${type} with this name already exists`;\n\n if (existing && !isAdmin && existing.owner_id !== user_id)\n throw `User does not own the ${type} and is not an admin`;\n\n }\n\n recipe_delete = zodManage(z => z.object({\n recipe_name: z.string(),\n }), async (state, prisma) => {\n const { recipe_name } = state.data;\n\n if (!state.user.isLoggedIn) throw \"User not authenticated\";\n\n const recipe = await prisma.recipes.findUnique({\n where: { recipe_name },\n });\n\n if (!recipe) throw \"Recipe not found\";\n\n const { isAdmin, user_id } = state.user;\n\n if (!isAdmin && recipe.owner_id !== user_id)\n throw \"User does not own the recipe and is not an admin\";\n\n await prisma.recipes.delete({\n where: { recipe_name }\n });\n\n return null;\n });\n\n bag_delete = zodManage(z => z.object({\n bag_name: z.string(),\n }), async (state, prisma) => {\n const { bag_name } = state.data;\n\n if (!state.user.isLoggedIn) throw \"User not authenticated\";\n\n const bag = await prisma.bags.findUnique({\n where: { bag_name },\n include: { _count: { select: { tiddlers: true } } }\n });\n\n if (!bag) throw \"Bag not found\";\n\n const { isAdmin, user_id } = state.user;\n\n if (!isAdmin && bag.owner_id !== user_id)\n throw \"User does not own the bag and is not an admin\";\n\n if (bag._count.tiddlers)\n throw \"Bag has tiddlers added and can no longer be deleted.\";\n\n await prisma.bags.delete({\n where: { bag_name }\n });\n\n return null;\n });\n\n // Partial<{\n // role_id: number | null;\n // permission: \"READ\" | \"WRITE\" | \"ADMIN\";\n // }>[]\n recipe_acl_update = zodManage(z => z.object({\n recipe_name: z.prismaField(\"Recipes\", \"recipe_name\", \"string\"),\n acl: z.array(z.object({\n role_id: z.number().nullable(),\n permission: z.enum([\"READ\", \"WRITE\", \"ADMIN\"]),\n })),\n }), async (state, prisma) => {\n const { recipe_name, acl } = state.data;\n\n if (!state.user.isLoggedIn) throw \"User not authenticated\";\n\n const recipe = await prisma.recipes.findUnique({\n where: { recipe_name }\n });\n\n if (!recipe) throw \"Recipe not found\";\n\n const { isAdmin, user_id } = state.user;\n\n if (!isAdmin && recipe.owner_id !== user_id)\n throw \"User does not own the recipe and is not an admin\";\n\n const distinct = new Set(acl.map(acl => JSON.stringify([acl.role_id, acl.permission])));\n\n const { recipe_id } = recipe;\n\n await prisma.recipeAcl.deleteMany({\n where: { recipe_id }\n });\n\n await prisma.recipeAcl.createMany({\n data: Array.from(distinct).map(e => {\n const [role_id, permission] = JSON.parse(e);\n return { recipe_id, role_id, permission };\n })\n });\n\n return null;\n });\n\n bag_acl_update = zodManage(z => z.object({\n bag_name: z.prismaField(\"Bags\", \"bag_name\", \"string\"),\n acl: z.array(z.object({\n role_id: z.number().nullable(),\n permission: z.enum([\"READ\", \"WRITE\", \"ADMIN\"]),\n })),\n }), async (state, prisma) => {\n const { bag_name, acl } = state.data;\n\n if (!state.user.isLoggedIn) throw \"User not authenticated\";\n\n const bag = await prisma.bags.findUnique({\n where: { bag_name },\n include: { acl: true }\n });\n\n if (!bag) throw \"Bag not found\";\n\n const { isAdmin, user_id } = state.user;\n\n if (!isAdmin && bag.owner_id !== user_id)\n throw \"User does not own the bag and is not an admin\";\n\n const distinct = new Set(acl.map(acl => JSON.stringify([acl.role_id, acl.permission])));\n\n const { bag_id } = bag;\n\n await prisma.bagAcl.deleteMany({\n where: { bag_id }\n });\n\n await prisma.bagAcl.createMany({\n data: Array.from(distinct).map(e => {\n const [role_id, permission] = JSON.parse(e);\n return { bag_id, role_id, permission };\n })\n });\n\n return null;\n });\n\n\n}","import { registerZodRoutes, SiteConfig, zodManage, RouterKeyMap, RouterRouteMap } from \"../router\";\n\nexport const UserKeyMap: RouterKeyMap<UserManager, true> = {\n user_edit_data: true,\n user_create: true,\n user_delete: true,\n user_list: true,\n user_update: true,\n user_update_password: true,\n role_create: true,\n role_update: true,\n}\n\nexport type UserManagerMap = RouterRouteMap<UserManager>;\n\n\nexport class UserManager {\n static defineRoutes(root: rootRoute, config: SiteConfig) {\n registerZodRoutes(root, new UserManager(), Object.keys(UserKeyMap));\n }\n\n user_edit_data = zodManage(z => z.object({\n user_id: z.prismaField(\"Users\", \"user_id\", \"number\")\n }), async (state, prisma) => {\n state.okUser();\n \n const { user_id } = state.data;\n\n if (!state.user.isAdmin && state.user.user_id !== user_id)\n throw \"Non-admins cannot retrieve the profile of other users\"\n\n const user = await prisma.users.findUnique({\n where: { user_id },\n select: {\n user_id: true,\n username: true,\n email: true,\n roles: true,\n last_login: true,\n created_at: true,\n }\n });\n \n if (!user) throw \"User not found\";\n \n const allRoles = await prisma.roles.findMany({\n select: {\n role_id: true,\n role_name: true,\n description: true,\n }\n });\n\n return { user, allRoles }\n });\n\n user_list = zodManage(z => z.undefined(), async (state, prisma) => {\n\n state.okAdmin();\n\n const res = await prisma.users.findMany({\n select: {\n user_id: true,\n username: true,\n email: true,\n roles: true,\n last_login: true,\n created_at: true,\n }\n });\n return res.map(e => ({\n ...e,\n last_login: e.last_login?.toISOString(),\n created_at: e.created_at.toISOString(),\n }));\n });\n\n\n user_create = zodManage(z => z.object({\n username: z.string(),\n email: z.string(),\n role_id: z.prismaField(\"Roles\", \"role_id\", \"number\", false),\n }), async (state, prisma) => {\n const { username, email, role_id } = state.data;\n\n state.okAdmin();\n\n const user = await prisma.users.create({\n data: { username, email, password: \"\", roles: { connect: { role_id } } },\n select: { user_id: true, created_at: true }\n });\n\n return user;\n });\n\n user_update = zodManage(z => z.object({\n user_id: z.number(),\n username: z.string(),\n email: z.string(),\n role_id: z.prismaField(\"Roles\", \"role_id\", \"number\").optional(),\n }), async (state, prisma) => {\n const { user_id, username, email, role_id } = state.data;\n\n state.okAdmin();\n\n if (state.user.user_id === user_id) throw \"Admin cannot update themselves\";\n\n await prisma.users.update({\n where: { user_id },\n data: { username, email, roles: { set: [{ role_id }] } }\n });\n\n return null;\n });\n\n\n user_delete = zodManage(z => z.object({\n user_id: z.number(),\n }), async (state, prisma) => {\n const { user_id } = state.data;\n\n state.okAdmin();\n\n if (state.user.user_id === user_id) throw \"Admin cannot delete themselves\";\n\n const bags = await prisma.bags.count({ where: { owner_id: user_id } });\n\n if (bags) throw \"User owns bags and cannot be deleted\";\n\n await prisma.users.delete({ where: { user_id } });\n\n return null;\n });\n\n\n user_update_password = zodManage(z => z.object({\n user_id: z.prismaField(\"Users\", \"user_id\", \"number\"),\n registrationRequest: z.string().optional(),\n registrationRecord: z.string().optional(),\n }), async (state, prisma) => {\n const { user_id, registrationRecord, registrationRequest } = state.data;\n\n state.okUser();\n\n\n if (state.user.user_id !== user_id && !state.user.isAdmin)\n throw \"You must be an admin to update another user's password\";\n\n const userExists = await prisma.users.count({ where: { user_id } });\n if (!userExists) throw \"User does not exist\";\n\n if (registrationRequest) {\n return state.PasswordService.createRegistrationResponse({\n userID: user_id,\n registrationRequest\n });\n } else if (registrationRecord) {\n await prisma.users.update({\n where: { user_id },\n data: { password: registrationRecord }\n });\n }\n\n return null;\n });\n\n role_create = zodManage(z => z.object({\n role_name: z.string(),\n description: z.string(),\n }), async (state, prisma) => {\n const { role_name, description } = state.data;\n\n state.okAdmin();\n\n return await prisma.roles.create({\n data: { role_name, description }\n });\n\n });\n\n role_update = zodManage(z => z.object({\n role_id: z.prismaField(\"Roles\", \"role_id\", \"number\"),\n role_name: z.prismaField(\"Roles\", \"role_name\", \"string\"),\n description: z.prismaField(\"Roles\", \"description\", \"string\"),\n }), async (state, prisma) => {\n const { role_id, role_name, description } = state.data;\n\n state.okUser();\n\n if (role_id < 1) throw \"Invalid role id\";\n if (role_id === 1) throw \"Cannot update the admin role\";\n if (role_id === 2) throw \"Cannot update the user role\";\n\n return await prisma.roles.update({\n where: { role_id },\n data: { role_name, description }\n });\n\n });\n\n}","\nimport { RecipeKeyMap, RecipeManager } from \"../managers/manager-recipes\";\nimport { UserKeyMap, UserManager } from \"../managers/manager-users\";\nimport { SiteConfig } from \"../router\";\n\nexport { UserManager, UserManagerMap } from \"./manager-users\";\nexport { RecipeManager, RecipeManagerMap } from \"./manager-recipes\";\n\nfunction isKeyOf<T extends Record<string, any>>(obj: T, key: string | number | symbol): key is keyof T {\n return key in obj;\n}\n\n\nexport const ManagerRoutes = (root: rootRoute, config: SiteConfig) => {\n RecipeManager.defineRoutes(root, config);\n UserManager.defineRoutes(root, config);\n};","import * as fs from \"fs\";\nimport * as path from \"path\";\nimport { SiteConfig } from \"./router\";\nimport { AttachmentService, TiddlerFields } from \"./services/attachments\";\nimport { ok } from \"assert\";\nimport { Commander } from \"../commander\";\nimport { FileInfoTiddlers } from \"tiddlywiki\";\nimport { UserError } from \"../utils\";\n\n/**\n\n### NOTES from attachments file\n\nClass to handle the attachments in the filing system\n\nThe store folder looks like this:\n\nstore/\n inbox/ - files that are in the process of being uploaded via a multipart form upload\n 202402282125432742/\n 0\n 1\n ...\n ...\n files/ - files that are the text content of large tiddlers\n b7def178-79c4-4d88-b7a4-39763014a58b/\n data.jpg - the extension is provided for convenience when directly inspecting the file system\n meta.json - contains:\n {\n \"filename\": \"data.jpg\",\n \"type\": \"video/mp4\",\n \"uploaded\": \"2024021821224823\"\n }\n database.sql - The database file (managed by Prisma)\n\n*/\nexport class TiddlerStore {\n attachService: AttachmentService;\n storePath: string;\n config;\n fieldModules;\n constructor(\n private commander: Commander,\n public prisma: PrismaTxnClient\n ) {\n this.fieldModules = this.commander.$tw.Tiddler.fieldModules;\n this.attachService = new commander.AttachmentService(commander.siteConfig, prisma);\n this.storePath = commander.siteConfig.storePath;\n this.config = commander.siteConfig;\n }\n\n /*\n Returns null if a bag/recipe name is valid, or a string error message if not\n */\n validateItemName(name: string, allowPrivilegedCharacters: boolean) {\n if (typeof name !== \"string\") {\n return \"Not a valid string\";\n }\n if (name.length > 256) {\n return \"Too long\";\n }\n // Removed ~ from this list temporarily\n if (allowPrivilegedCharacters) {\n if (!(/^[^\\s\\u00A0\\x00-\\x1F\\x7F`!@#%^&*()+={}\\[\\];\\'\\\"<>,\\\\\\?]+$/g.test(name))) {\n return \"Invalid character(s)\";\n }\n } else {\n if (!(/^[^\\s\\u00A0\\x00-\\x1F\\x7F`!@#$%^&*()+={}\\[\\];:\\'\\\"<>.,\\/\\\\\\?]+$/g.test(name))) {\n return \"Invalid character(s)\";\n }\n }\n return null;\n }\n /*\n Returns null if the argument is an array of valid bag/recipe names, or a string error message if not\n */\n validateItemNames(names: string[], allowPrivilegedCharacters: boolean) {\n if (!Array.isArray(names)) {\n return \"Not a valid array\";\n }\n var errors = [];\n for (const name of names) {\n const result = this.validateItemName(name, allowPrivilegedCharacters);\n if (result && errors.indexOf(result) === -1) {\n errors.push(result);\n }\n }\n if (errors.length === 0) {\n return null;\n } else {\n return errors.join(\"\\n\");\n }\n }\n async upsertRecipe(\n recipe_name: PrismaField<\"Recipes\", \"recipe_name\">,\n description: PrismaField<\"Recipes\", \"description\">,\n bags: { bag_name: PrismaField<\"Bags\", \"bag_name\">, with_acl: PrismaField<\"Recipe_bags\", \"with_acl\"> }[],\n { allowPrivilegedCharacters = false }: { allowPrivilegedCharacters?: boolean; } = {}\n ) {\n const [recipe_, recipe_bags_] = this.upsertRecipe_PrismaArray(recipe_name, description, bags, { allowPrivilegedCharacters });\n const recipe = await recipe_;\n await recipe_bags_;\n return recipe;\n }\n upsertRecipe_PrismaArray(\n recipe_name: PrismaField<\"Recipes\", \"recipe_name\">,\n description: PrismaField<\"Recipes\", \"description\">,\n bags: { bag_name: PrismaField<\"Bags\", \"bag_name\">, with_acl: PrismaField<\"Recipe_bags\", \"with_acl\"> }[],\n { allowPrivilegedCharacters = false }: { allowPrivilegedCharacters?: boolean; } = {}\n ) {\n\n const validationRecipeName = this.validateItemName(recipe_name, allowPrivilegedCharacters);\n if (validationRecipeName) throw validationRecipeName;\n if (bags.length === 0) throw new UserError(\"Recipes must contain at least one bag\");\n\n return [\n this.prisma.recipes.upsert({\n where: { recipe_name },\n update: { description, recipe_bags: { deleteMany: {} } },\n create: { recipe_name, description },\n select: { recipe_id: true }\n }),\n this.prisma.recipes.update({\n where: { recipe_name },\n data: {\n recipe_bags: {\n create: bags.map(({ bag_name, with_acl }, position) => ({\n bag: { connect: { bag_name } },\n position,\n with_acl\n }))\n }\n }\n })\n ];\n\n }\n async upsertBag(\n bag_name: PrismaField<\"Bags\", \"bag_name\">,\n description: PrismaField<\"Bags\", \"description\">,\n is_plugin: PrismaField<\"Bags\", \"is_plugin\">,\n { allowPrivilegedCharacters = false }: { allowPrivilegedCharacters?: boolean; } = {}\n ) {\n return await this.upsertBag_PrismaPromise(bag_name, description, is_plugin, {\n allowPrivilegedCharacters\n });\n }\n upsertBag_PrismaPromise(\n bag_name: PrismaField<\"Bags\", \"bag_name\">,\n description: PrismaField<\"Bags\", \"description\">,\n is_plugin: PrismaField<\"Bags\", \"is_plugin\">,\n { allowPrivilegedCharacters = false }: { allowPrivilegedCharacters?: boolean; } = {}\n ) {\n\n const validationBagName = this.validateItemName(bag_name, allowPrivilegedCharacters);\n if (validationBagName) throw validationBagName;\n\n return this.prisma.bags.upsert({\n where: { bag_name },\n update: { description, is_plugin },\n create: { bag_name, description, is_plugin },\n select: { bag_id: true }\n });\n\n }\n /**\n * You probably want to call this inside a transaction.\n *\n ```js\n const tiddlersFromPath = $tw.loadTiddlersFromPath(tiddlerPath);\n ```\n */\n async saveTiddlersFromPath(\n tiddlersFromPath: { tiddlers: TiddlerFields[] }[],\n bag_name: PrismaField<\"Bags\", \"bag_name\">\n ) {\n\n }\n saveTiddlersFromPath_PrismaArray(\n tiddlersFromPath: { tiddlers: TiddlerFields[] }[],\n bag_name: PrismaField<\"Bags\", \"bag_name\">\n ) {\n return [\n this.prisma.tiddlers.deleteMany({\n where: { bag: { bag_name } }\n }),\n ...tiddlersFromPath.flatMap(({ tiddlers }) =>\n tiddlers.flatMap(tiddler =>\n this.saveBagTiddlerFields_PrismaArray(tiddler, bag_name, null)\n )\n )\n ]\n\n }\n\n\n /*\n Returns {tiddler_id:}\n */\n async saveBagTiddler(\n incomingTiddlerFields: TiddlerFields,\n bag_name: PrismaField<\"Bags\", \"bag_name\">\n ) {\n const { title } = incomingTiddlerFields;\n\n const existing_attachment_hash = await this.prisma.tiddlers.findFirst({\n where: { title, bag: { bag_name } },\n select: { attachment_hash: true }\n }).then(e => e?.attachment_hash ?? null);\n\n const { tiddlerFields, attachment_hash } = await this.attachService.processIncomingTiddler({\n tiddlerFields: incomingTiddlerFields,\n existing_attachment_hash,\n existing_canonical_uri: existing_attachment_hash && this.attachService.makeCanonicalUri(bag_name, incomingTiddlerFields.title)\n });\n return this.saveBagTiddlerFields(tiddlerFields, bag_name, attachment_hash);\n\n }\n /*\n Create a tiddler in a bag adopting the specified file as the attachment. The attachment file must be on the same disk as the attachment store\n Options include:\n \n filepath - filepath to the attachment file\n hash - string hash of the attachment file\n type - content type of file as uploaded\n \n Returns {tiddler_id:}\n */\n async saveBagTiddlerWithAttachment(\n incomingTiddlerFields: TiddlerFields,\n bag_name: PrismaField<\"Bags\", \"bag_name\">,\n options: {\n filepath: string;\n hash: string;\n type: string;\n _canonical_uri: string;\n }\n ) {\n const attachment_hash = await this.attachService.adoptAttachment({\n // options.filepath, options.type, options.hash, options._canonical_uri\n incomingFilepath: options.filepath,\n type: options.type,\n hash: options.hash,\n _canonical_uri: options._canonical_uri\n });\n if (attachment_hash) {\n return this.saveBagTiddlerFields(incomingTiddlerFields, bag_name, attachment_hash);\n } else {\n return null;\n }\n }\n /*\n Returns {tiddler_id:,bag_name:}\n \n The critical difference here is that the tiddler gets saved to the top bag.\n */\n async saveRecipeTiddler(\n incomingTiddlerFields: TiddlerFields,\n recipe_name: PrismaField<\"Recipes\", \"recipe_name\">\n ) {\n const { title } = incomingTiddlerFields;\n const currentBag = await this.getRecipeBagWithTiddler({ recipe_name, title });\n const existing_attachment_hash = currentBag && await this.prisma.tiddlers.findFirst({\n where: { title, bag: { bag_name: currentBag.bag.bag_name } },\n select: { attachment_hash: true }\n }).then(e => e?.attachment_hash ?? null);\n\n const { tiddlerFields, attachment_hash } = await this.attachService.processIncomingTiddler({\n existing_attachment_hash,\n existing_canonical_uri: incomingTiddlerFields._canonical_uri,\n tiddlerFields: incomingTiddlerFields\n });\n return this.saveRecipeTiddlerFields(tiddlerFields, recipe_name, attachment_hash);\n }\n\n /*\n returns {tiddler_id:,tiddler:}\n */\n async getBagTiddler(options: {\n title: PrismaField<\"Tiddlers\", \"title\">;\n bag_name?: PrismaField<\"Bags\", \"bag_name\">;\n bag_id?: PrismaField<\"Bags\", \"bag_id\">;\n }) {\n const { title, bag_name, bag_id } = options;\n ok(bag_name || bag_id, \"bag_name or bag_id must be provided\");\n\n const tiddler = await this.prisma.tiddlers.findFirst({\n where: bag_name\n ? { title, bag: { bag_name }, is_deleted: false }\n : { title, bag_id, is_deleted: false },\n select: { tiddler_id: true }\n });\n if (!tiddler) return null;\n\n var tiddlerInfo = await this.getTiddlerInfo(tiddler.tiddler_id);\n if (!tiddlerInfo) return null;\n\n // if (tiddlerInfo.is_plugin) {\n // const pluginBag = await this.prisma.bags.findUnique({\n // where: { bag_name: tiddlerInfo.bag_name },\n // include: { tiddlers: { include: { fields: true } } }\n // });\n // }\n\n return {\n ...tiddlerInfo,\n tiddler: this.attachService.processOutgoingTiddler(tiddlerInfo)\n };\n\n }\n\n async getRecipeTiddler(\n title: PrismaField<\"Tiddlers\", \"title\">,\n recipe_name: PrismaField<\"Recipes\", \"recipe_name\">\n ) {\n\n const recipe_bag = await this.getRecipeBagWithTiddler({ recipe_name, title });\n\n if (!recipe_bag) return null;\n\n return await this.getBagTiddler({ title, bag_id: recipe_bag.bag_id });\n\n }\n\n\n async getRecipeBagWithTiddler({ recipe_name, title }: { recipe_name: string; title: string; }) {\n\n return await this.prisma.recipe_bags.findFirst({\n include: { bag: true, recipe: true },\n where: {\n recipe: { recipe_name },\n bag: { tiddlers: { some: { title, is_deleted: false } } }\n },\n orderBy: { position: \"asc\" }\n });\n }\n\n async getRecipeWritableBag(\n recipe_name: PrismaField<\"Recipes\", \"recipe_name\">\n ) {\n const recipe_bag = await this.prisma.recipe_bags.findFirst({\n select: { bag: true },\n where: { recipe: { recipe_name }, position: 0 }\n });\n if (!recipe_bag) return null;\n return recipe_bag.bag;\n }\n\n\n async getTiddlerInfo(\n tiddler_id: PrismaField<\"Tiddlers\", \"tiddler_id\">\n ) {\n\n const tiddler = await this.prisma.tiddlers.findUnique({\n where: { tiddler_id, is_deleted: false },\n include: { fields: true, bag: true }\n });\n\n if (!tiddler) return null;\n\n if (tiddler.bag.is_plugin && tiddler.title as string !== tiddler.bag.bag_name as string)\n throw new UserError(\"Can only get tiddler info for a plugin bag itself\");\n\n return {\n bag_name: tiddler.bag.bag_name,\n is_plugin_bag: tiddler.bag.is_plugin,\n tiddler_id: tiddler.tiddler_id,\n attachment_hash: tiddler.attachment_hash,\n tiddler: Object.fromEntries([\n ...tiddler.fields.map(e => [e.field_name, e.field_value] as const),\n [\"title\", tiddler.title]\n ]) as TiddlerFields\n };\n }\n /*\n Get an attachment ready to stream. Returns null if there is an error or:\n tiddler_id: revision of tiddler\n stream: stream of file\n type: type of file\n Returns {tiddler_id:,bag_name:}\n */\n async getBagTiddlerStream(\n title: PrismaField<\"Tiddlers\", \"title\">,\n bag_name: PrismaField<\"Bags\", \"bag_name\">\n ) {\n const tiddlerInfo = await this.getBagTiddler({ title, bag_name });\n if (!tiddlerInfo) return null;\n\n if (tiddlerInfo.attachment_hash) {\n return {\n ...await this.attachService.getAttachmentStream(tiddlerInfo.attachment_hash) ?? {},\n tiddler_id: tiddlerInfo.tiddler_id,\n bag_name: bag_name\n };\n } else {\n const { Readable } = require('stream');\n const stream = new Readable();\n stream._read = () => {\n // Push data\n const type = tiddlerInfo.tiddler.type || \"text/plain\";\n stream.push(tiddlerInfo.tiddler.text || \"\", (this.config.contentTypeInfo[type] || { encoding: \"utf8\" }).encoding);\n // Push null to indicate the end of the stream\n stream.push(null);\n };\n return {\n tiddler_id: tiddlerInfo.tiddler_id,\n bag_name: bag_name,\n stream: stream,\n type: tiddlerInfo.tiddler.type || \"text/plain\"\n };\n }\n\n }\n\n /**\n Returns {tiddler_id:,bag_name:} or null if the recipe is empty\n */\n async saveRecipeTiddlerFields(\n tiddlerFields: TiddlerFields,\n recipe_name: PrismaField<\"Recipes\", \"recipe_name\">,\n attachment_hash: PrismaField<\"Tiddlers\", \"attachment_hash\">\n ) {\n\n const recipe = await this.prisma.recipes.findUnique({\n where: { recipe_name },\n include: {\n recipe_bags: {\n // we're saving to the top most bag\n where: { position: 0 },\n select: { bag: { select: { bag_id: true, bag_name: true } } },\n }\n }\n });\n\n if (!recipe) throw new UserError(\"Recipe not found\");\n\n const bag_name = recipe.recipe_bags[0]?.bag.bag_name;\n\n if (!bag_name) throw new UserError(\"Recipe has no bag at position 0\");\n\n // Save the tiddler to the specified bag\n var { tiddler_id } = await this.saveBagTiddlerFields(tiddlerFields, bag_name, attachment_hash);\n\n return { tiddler_id, bag_name };\n // \t// Find the topmost bag in the recipe\n // \tvar row = this.engine.runStatementGet(`\n // \tSELECT b.bag_name\n // \tFROM bags AS b\n // \tJOIN (\n // \t\tSELECT rb.bag_id\n // \t\tFROM recipe_bags AS rb\n // \t\tWHERE rb.recipe_id = (\n // \t\t\tSELECT recipe_id\n // \t\t\tFROM recipes\n // \t\t\tWHERE recipe_name = $recipe_name\n // \t\t)\n // \t\tORDER BY rb.position DESC\n // \t\tLIMIT 1\n // \t) AS selected_bag\n // \tON b.bag_id = selected_bag.bag_id\n // `, {\n // \t\t$recipe_name: recipe_name\n // \t});\n // \tif (!row) {\n // \t\treturn null;\n // \t}\n // \t// Save the tiddler to the topmost bag\n // \tvar info = this.saveBagTiddler(tiddlerFields, row.bag_name, attachment_hash);\n // \treturn {\n // \t\ttiddler_id: info.tiddler_id,\n // \t\tbag_name: row.bag_name\n // \t};\n }\n\n async saveBagTiddlerFields(\n tiddlerFields: TiddlerFields,\n bag_name: PrismaField<\"Bags\", \"bag_name\">,\n attachment_hash: PrismaField<\"Tiddlers\", \"attachment_hash\">\n ) {\n const [deletion, creation] = this.saveBagTiddlerFields_PrismaArray(tiddlerFields, bag_name, attachment_hash);\n await deletion;\n return await creation;\n }\n saveBagTiddlerFields_PrismaArray(\n tiddlerFields: TiddlerFields,\n bag_name: PrismaField<\"Bags\", \"bag_name\">,\n attachment_hash: PrismaField<\"Tiddlers\", \"attachment_hash\">\n ) {\n\n const { title } = tiddlerFields;\n if (!title) {\n console.error(tiddlerFields);\n throw new Error(\"Tiddler must have a title\");\n }\n\n const deletion = this.prisma.tiddlers.deleteMany({\n where: { bag: { bag_name }, title }\n });\n\n const encodeTiddlerFields = ([field_name, field_value]: [string, any]) => {\n const fieldModule = this.fieldModules[field_name];\n if (typeof field_value === \"string\") return [field_name, field_value];\n if (fieldModule && fieldModule.stringify) field_value = fieldModule.stringify(field_value);\n if (typeof field_value === \"number\") field_value = field_value.toString();\n if (typeof field_value === \"boolean\") field_value = field_value ? \"true\" : \"false\";\n if (typeof field_value === \"undefined\" || field_value === null) field_value = \"\";\n return [field_name, field_value];\n };\n\n const creation = this.prisma.tiddlers.create({\n data: {\n bag: { connect: { bag_name } },\n title,\n is_deleted: false,\n attachment_hash: attachment_hash || null,\n fields: {\n create: Object.entries(tiddlerFields)\n .map(encodeTiddlerFields)\n .map(([field_name, field_value]) => ({ field_name, field_value }))\n }\n },\n select: {\n tiddler_id: true\n }\n });\n\n return [deletion, creation] as const;\n\n // \tattachment_hash = attachment_hash || null;\n // \t// Update the tiddlers table\n // \tvar info = this.engine.runStatement(`\n // \tINSERT OR REPLACE INTO tiddlers (bag_id, title, is_deleted, attachment_hash)\n // \tVALUES (\n // \t\t(SELECT bag_id FROM bags WHERE bag_name = $bag_name),\n // \t\t$title,\n // \t\tFALSE,\n // \t\t$attachment_hash\n // \t)\n // `, {\n // \t\t$title: tiddlerFields.title,\n // \t\t$attachment_hash: attachment_hash,\n // \t\t$bag_name: bag_name\n // \t});\n // \t// Update the fields table\n // \tthis.engine.runStatement(`\n // \tINSERT OR REPLACE INTO fields (tiddler_id, field_name, field_value)\n // \tSELECT\n // \t\tt.tiddler_id,\n // \t\tjson_each.key AS field_name,\n // \t\tjson_each.value AS field_value\n // \tFROM (\n // \t\tSELECT tiddler_id\n // \t\tFROM tiddlers\n // \t\tWHERE bag_id = (\n // \t\t\tSELECT bag_id\n // \t\t\tFROM bags\n // \t\t\tWHERE bag_name = $bag_name\n // \t\t) AND title = $title\n // \t) AS t\n // \tJOIN json_each($field_values) AS json_each\n // `, {\n // \t\t$title: tiddlerFields.title,\n // \t\t$bag_name: bag_name,\n // \t\t$field_values: JSON.stringify(Object.assign({}, tiddlerFields, { title: undefined }))\n // \t});\n // \treturn {\n // \t\ttiddler_id: info.lastInsertRowid\n // \t};\n }\n /*\n Returns {tiddler_id:,bag_name:}\n */\n async deleteRecipeTiddler(\n recipe_name: PrismaField<\"Recipes\", \"recipe_name\">,\n title: PrismaField<\"Tiddlers\", \"title\">\n ) {\n\n const currentBag = await this.getRecipeBagWithTiddler({ recipe_name, title });\n if (!currentBag)\n throw new UserError(\"Tiddler not found in recipe\");\n if (currentBag.position !== 0)\n throw new UserError(\"Cannot delete tiddler from non-top bag\");\n return await this.deleteBagTiddler(title, currentBag.bag.bag_name);\n }\n /**\n Returns {tiddler_id:} of the delete marker\n */\n async deleteBagTiddler(\n title: PrismaField<\"Tiddlers\", \"title\">,\n bag_name: PrismaField<\"Bags\", \"bag_name\">\n ) {\n await this.prisma.tiddlers.deleteMany({\n where: { title, bag: { bag_name } },\n });\n const { tiddler_id } = await this.prisma.tiddlers.create({\n data: {\n title,\n bag: { connect: { bag_name } },\n is_deleted: true,\n attachment_hash: null,\n },\n select: {\n tiddler_id: true\n }\n });\n\n return { bag_name, tiddler_id }\n\n // \t// Delete the fields of this tiddler\n // \tthis.engine.runStatement(`\n // \tDELETE FROM fields\n // \tWHERE tiddler_id IN (\n // \t\tSELECT t.tiddler_id\n // \t\tFROM tiddlers AS t\n // \t\tINNER JOIN bags AS b ON t.bag_id = b.bag_id\n // \t\tWHERE b.bag_name = $bag_name AND t.title = $title\n // \t)\n // `, {\n // \t\t$title: title,\n // \t\t$bag_name: bag_name\n // \t});\n // \t// Mark the tiddler itself as deleted\n // \tconst rowDeleteMarker = this.engine.runStatement(`\n // \tINSERT OR REPLACE INTO tiddlers (bag_id, title, is_deleted, attachment_hash)\n // \tVALUES (\n // \t\t(SELECT bag_id FROM bags WHERE bag_name = $bag_name),\n // \t\t$title,\n // \t\tTRUE,\n // \t\tNULL\n // \t)\n // `, {\n // \t\t$title: title,\n // \t\t$bag_name: bag_name\n // \t});\n // \treturn { tiddler_id: rowDeleteMarker.lastInsertRowid };\n }\n \n async getRecipeTiddlersByBag(\n recipe_name: PrismaField<\"Recipes\", \"recipe_name\">,\n options: {\n // how do you limit a list of unique titles?\n // limit?: number, \n last_known_tiddler_id?: number,\n include_deleted?: boolean,\n } = {}\n ) {\n // In prisma it's easy to get the top bag for a specific title. \n // To get all titles we basically have to get all bags and manually find the top one. \n const lastid = options.last_known_tiddler_id;\n const withDeleted = options.include_deleted;\n const bags = await this.prisma.recipe_bags.findMany({\n where: { recipe: { recipe_name } },\n select: {\n position: true,\n bag: {\n select: {\n bag_id: true,\n bag_name: true,\n is_plugin: true,\n tiddlers: {\n select: {\n title: true,\n tiddler_id: true,\n is_deleted: true,\n },\n where: {\n is_deleted: withDeleted ? undefined : false,\n tiddler_id: lastid ? { gt: lastid } : undefined\n },\n }\n }\n }\n },\n });\n\n\n return bags.map(e => ({\n bag_id: e.bag.bag_id,\n bag_name: e.bag.bag_name,\n is_plugin: e.bag.is_plugin,\n position: e.position,\n tiddlers: e.bag.tiddlers\n }));\n\n // \t// Get the recipe ID\n // \tconst rowsCheckRecipe = this.engine.runStatementGet(`\n // \tSELECT recipe_id FROM recipes WHERE recipes.recipe_name = $recipe_name\n // `, {\n // \t\t$recipe_name: recipe_name\n // \t});\n // \tif (!rowsCheckRecipe) {\n // \t\treturn null;\n // \t}\n // \tconst recipe_id = rowsCheckRecipe.recipe_id;\n // \t// Compose the query to get the tiddlers\n // \tconst params = {\n // \t\t$recipe_id: recipe_id\n // \t};\n // \tif (options.limit) {\n // \t\tparams.$limit = options.limit.toString();\n // \t}\n // \tif (options.last_known_tiddler_id) {\n // \t\tparams.$last_known_tiddler_id = options.last_known_tiddler_id;\n // \t}\n // \tconst rows = this.engine.runStatementGetAll(`\n // \tSELECT title, tiddler_id, is_deleted, bag_name\n // \tFROM (\n // \t\tSELECT t.title, t.tiddler_id, t.is_deleted, b.bag_name, MAX(rb.position) AS position\n // \t\tFROM bags AS b\n // \t\tINNER JOIN recipe_bags AS rb ON b.bag_id = rb.bag_id\n // \t\tINNER JOIN tiddlers AS t ON b.bag_id = t.bag_id\n // \t\tWHERE rb.recipe_id = $recipe_id\n // \t\t${options.include_deleted ? \"\" : \"AND t.is_deleted = FALSE\"}\n // \t\t${options.last_known_tiddler_id ? \"AND tiddler_id > $last_known_tiddler_id\" : \"\"}\n // \t\tGROUP BY t.title\n // \t\tORDER BY t.title, tiddler_id DESC\n // \t\t${options.limit ? \"LIMIT $limit\" : \"\"}\n // \t)\n // `, params);\n // \treturn rows;\n }\n}\n","\"use strict\";var sjcl={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(a){this.toString=function(){return\"CORRUPT: \"+this.message};this.message=a},invalid:function(a){this.toString=function(){return\"INVALID: \"+this.message};this.message=a},bug:function(a){this.toString=function(){return\"BUG: \"+this.message};this.message=a},notReady:function(a){this.toString=function(){return\"NOT READY: \"+this.message};this.message=a}}};\nsjcl.cipher.aes=function(a){this.s[0][0][0]||this.O();var b,c,d,e,f=this.s[0][4],g=this.s[1];b=a.length;var h=1;if(4!==b&&6!==b&&8!==b)throw new sjcl.exception.invalid(\"invalid aes key size\");this.b=[d=a.slice(0),e=[]];for(a=b;a<4*b+28;a++){c=d[a-1];if(0===a%b||8===b&&4===a%b)c=f[c>>>24]<<24^f[c>>16&255]<<16^f[c>>8&255]<<8^f[c&255],0===a%b&&(c=c<<8^c>>>24^h<<24,h=h<<1^283*(h>>7));d[a]=d[a-b]^c}for(b=0;a;b++,a--)c=d[b&3?a:a-4],e[b]=4>=a||4>b?c:g[0][f[c>>>24]]^g[1][f[c>>16&255]]^g[2][f[c>>8&255]]^g[3][f[c&\n255]]};\nsjcl.cipher.aes.prototype={encrypt:function(a){return t(this,a,0)},decrypt:function(a){return t(this,a,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],O:function(){var a=this.s[0],b=this.s[1],c=a[4],d=b[4],e,f,g,h=[],k=[],l,n,m,p;for(e=0;0x100>e;e++)k[(h[e]=e<<1^283*(e>>7))^e]=e;for(f=g=0;!c[f];f^=l||1,g=k[g]||1)for(m=g^g<<1^g<<2^g<<3^g<<4,m=m>>8^m&255^99,c[f]=m,d[m]=f,n=h[e=h[l=h[f]]],p=0x1010101*n^0x10001*e^0x101*l^0x1010100*f,n=0x101*h[m]^0x1010100*m,e=0;4>e;e++)a[e][f]=n=n<<24^n>>>8,b[e][m]=p=p<<24^p>>>8;for(e=\n0;5>e;e++)a[e]=a[e].slice(0),b[e]=b[e].slice(0)}};\nfunction t(a,b,c){if(4!==b.length)throw new sjcl.exception.invalid(\"invalid aes block size\");var d=a.b[c],e=b[0]^d[0],f=b[c?3:1]^d[1],g=b[2]^d[2];b=b[c?1:3]^d[3];var h,k,l,n=d.length/4-2,m,p=4,r=[0,0,0,0];h=a.s[c];a=h[0];var q=h[1],v=h[2],w=h[3],x=h[4];for(m=0;m<n;m++)h=a[e>>>24]^q[f>>16&255]^v[g>>8&255]^w[b&255]^d[p],k=a[f>>>24]^q[g>>16&255]^v[b>>8&255]^w[e&255]^d[p+1],l=a[g>>>24]^q[b>>16&255]^v[e>>8&255]^w[f&255]^d[p+2],b=a[b>>>24]^q[e>>16&255]^v[f>>8&255]^w[g&255]^d[p+3],p+=4,e=h,f=k,g=l;for(m=\n0;4>m;m++)r[c?3&-m:m]=x[e>>>24]<<24^x[f>>16&255]<<16^x[g>>8&255]<<8^x[b&255]^d[p++],h=e,e=f,f=g,g=b,b=h;return r}\nsjcl.bitArray={bitSlice:function(a,b,c){a=sjcl.bitArray.$(a.slice(b/32),32-(b&31)).slice(1);return void 0===c?a:sjcl.bitArray.clamp(a,c-b)},extract:function(a,b,c){var d=Math.floor(-b-c&31);return((b+c-1^b)&-32?a[b/32|0]<<32-d^a[b/32+1|0]>>>d:a[b/32|0]>>>d)&(1<<c)-1},concat:function(a,b){if(0===a.length||0===b.length)return a.concat(b);var c=a[a.length-1],d=sjcl.bitArray.getPartial(c);return 32===d?a.concat(b):sjcl.bitArray.$(b,d,c|0,a.slice(0,a.length-1))},bitLength:function(a){var b=a.length;return 0===\nb?0:32*(b-1)+sjcl.bitArray.getPartial(a[b-1])},clamp:function(a,b){if(32*a.length<b)return a;a=a.slice(0,Math.ceil(b/32));var c=a.length;b=b&31;0<c&&b&&(a[c-1]=sjcl.bitArray.partial(b,a[c-1]&2147483648>>b-1,1));return a},partial:function(a,b,c){return 32===a?b:(c?b|0:b<<32-a)+0x10000000000*a},getPartial:function(a){return Math.round(a/0x10000000000)||32},equal:function(a,b){if(sjcl.bitArray.bitLength(a)!==sjcl.bitArray.bitLength(b))return!1;var c=0,d;for(d=0;d<a.length;d++)c|=a[d]^b[d];return 0===\nc},$:function(a,b,c,d){var e;e=0;for(void 0===d&&(d=[]);32<=b;b-=32)d.push(c),c=0;if(0===b)return d.concat(a);for(e=0;e<a.length;e++)d.push(c|a[e]>>>b),c=a[e]<<32-b;e=a.length?a[a.length-1]:0;a=sjcl.bitArray.getPartial(e);d.push(sjcl.bitArray.partial(b+a&31,32<b+a?c:d.pop(),1));return d},i:function(a,b){return[a[0]^b[0],a[1]^b[1],a[2]^b[2],a[3]^b[3]]},byteswapM:function(a){var b,c;for(b=0;b<a.length;++b)c=a[b],a[b]=c>>>24|c>>>8&0xff00|(c&0xff00)<<8|c<<24;return a}};\nsjcl.codec.utf8String={fromBits:function(a){var b=\"\",c=sjcl.bitArray.bitLength(a),d,e;for(d=0;d<c/8;d++)0===(d&3)&&(e=a[d/4]),b+=String.fromCharCode(e>>>8>>>8>>>8),e<<=8;return decodeURIComponent(escape(b))},toBits:function(a){a=unescape(encodeURIComponent(a));var b=[],c,d=0;for(c=0;c<a.length;c++)d=d<<8|a.charCodeAt(c),3===(c&3)&&(b.push(d),d=0);c&3&&b.push(sjcl.bitArray.partial(8*(c&3),d));return b}};\nsjcl.codec.hex={fromBits:function(a){var b=\"\",c;for(c=0;c<a.length;c++)b+=((a[c]|0)+0xf00000000000).toString(16).substr(4);return b.substr(0,sjcl.bitArray.bitLength(a)/4)},toBits:function(a){var b,c=[],d;a=a.replace(/\\s|0x/g,\"\");d=a.length;a=a+\"00000000\";for(b=0;b<a.length;b+=8)c.push(parseInt(a.substr(b,8),16)^0);return sjcl.bitArray.clamp(c,4*d)}};\nsjcl.codec.base32={B:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\",X:\"0123456789ABCDEFGHIJKLMNOPQRSTUV\",BITS:32,BASE:5,REMAINING:27,fromBits:function(a,b,c){var d=sjcl.codec.base32.BASE,e=sjcl.codec.base32.REMAINING,f=\"\",g=0,h=sjcl.codec.base32.B,k=0,l=sjcl.bitArray.bitLength(a);c&&(h=sjcl.codec.base32.X);for(c=0;f.length*d<l;)f+=h.charAt((k^a[c]>>>g)>>>e),g<d?(k=a[c]<<d-g,g+=e,c++):(k<<=d,g-=d);for(;f.length&7&&!b;)f+=\"=\";return f},toBits:function(a,b){a=a.replace(/\\s|=/g,\"\").toUpperCase();var c=sjcl.codec.base32.BITS,\nd=sjcl.codec.base32.BASE,e=sjcl.codec.base32.REMAINING,f=[],g,h=0,k=sjcl.codec.base32.B,l=0,n,m=\"base32\";b&&(k=sjcl.codec.base32.X,m=\"base32hex\");for(g=0;g<a.length;g++){n=k.indexOf(a.charAt(g));if(0>n){if(!b)try{return sjcl.codec.base32hex.toBits(a)}catch(p){}throw new sjcl.exception.invalid(\"this isn't \"+m+\"!\");}h>e?(h-=e,f.push(l^n>>>h),l=n<<c-h):(h+=d,l^=n<<c-h)}h&56&&f.push(sjcl.bitArray.partial(h&56,l,1));return f}};\nsjcl.codec.base32hex={fromBits:function(a,b){return sjcl.codec.base32.fromBits(a,b,1)},toBits:function(a){return sjcl.codec.base32.toBits(a,1)}};\nsjcl.codec.base64={B:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",fromBits:function(a,b,c){var d=\"\",e=0,f=sjcl.codec.base64.B,g=0,h=sjcl.bitArray.bitLength(a);c&&(f=f.substr(0,62)+\"-_\");for(c=0;6*d.length<h;)d+=f.charAt((g^a[c]>>>e)>>>26),6>e?(g=a[c]<<6-e,e+=26,c++):(g<<=6,e-=6);for(;d.length&3&&!b;)d+=\"=\";return d},toBits:function(a,b){a=a.replace(/\\s|=/g,\"\");var c=[],d,e=0,f=sjcl.codec.base64.B,g=0,h;b&&(f=f.substr(0,62)+\"-_\");for(d=0;d<a.length;d++){h=f.indexOf(a.charAt(d));\nif(0>h)throw new sjcl.exception.invalid(\"this isn't base64!\");26<e?(e-=26,c.push(g^h>>>e),g=h<<32-e):(e+=6,g^=h<<32-e)}e&56&&c.push(sjcl.bitArray.partial(e&56,g,1));return c}};sjcl.codec.base64url={fromBits:function(a){return sjcl.codec.base64.fromBits(a,1,1)},toBits:function(a){return sjcl.codec.base64.toBits(a,1)}};sjcl.hash.sha256=function(a){this.b[0]||this.O();a?(this.F=a.F.slice(0),this.A=a.A.slice(0),this.l=a.l):this.reset()};sjcl.hash.sha256.hash=function(a){return(new sjcl.hash.sha256).update(a).finalize()};\nsjcl.hash.sha256.prototype={blockSize:512,reset:function(){this.F=this.Y.slice(0);this.A=[];this.l=0;return this},update:function(a){\"string\"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));var b,c=this.A=sjcl.bitArray.concat(this.A,a);b=this.l;a=this.l=b+sjcl.bitArray.bitLength(a);if(0x1fffffffffffff<a)throw new sjcl.exception.invalid(\"Cannot hash more than 2^53 - 1 bits\");if(\"undefined\"!==typeof Uint32Array){var d=new Uint32Array(c),e=0;for(b=512+b-(512+b&0x1ff);b<=a;b+=512)u(this,d.subarray(16*e,\n16*(e+1))),e+=1;c.splice(0,16*e)}else for(b=512+b-(512+b&0x1ff);b<=a;b+=512)u(this,c.splice(0,16));return this},finalize:function(){var a,b=this.A,c=this.F,b=sjcl.bitArray.concat(b,[sjcl.bitArray.partial(1,1)]);for(a=b.length+2;a&15;a++)b.push(0);b.push(Math.floor(this.l/0x100000000));for(b.push(this.l|0);b.length;)u(this,b.splice(0,16));this.reset();return c},Y:[],b:[],O:function(){function a(a){return 0x100000000*(a-Math.floor(a))|0}for(var b=0,c=2,d,e;64>b;c++){e=!0;for(d=2;d*d<=c;d++)if(0===c%d){e=\n!1;break}e&&(8>b&&(this.Y[b]=a(Math.pow(c,.5))),this.b[b]=a(Math.pow(c,1/3)),b++)}}};\nfunction u(a,b){var c,d,e,f=a.F,g=a.b,h=f[0],k=f[1],l=f[2],n=f[3],m=f[4],p=f[5],r=f[6],q=f[7];for(c=0;64>c;c++)16>c?d=b[c]:(d=b[c+1&15],e=b[c+14&15],d=b[c&15]=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+b[c&15]+b[c+9&15]|0),d=d+q+(m>>>6^m>>>11^m>>>25^m<<26^m<<21^m<<7)+(r^m&(p^r))+g[c],q=r,r=p,p=m,m=n+d|0,n=l,l=k,k=h,h=d+(k&l^n&(k^l))+(k>>>2^k>>>13^k>>>22^k<<30^k<<19^k<<10)|0;f[0]=f[0]+h|0;f[1]=f[1]+k|0;f[2]=f[2]+l|0;f[3]=f[3]+n|0;f[4]=f[4]+m|0;f[5]=f[5]+p|0;f[6]=f[6]+r|0;f[7]=\nf[7]+q|0}\nsjcl.mode.ccm={name:\"ccm\",G:[],listenProgress:function(a){sjcl.mode.ccm.G.push(a)},unListenProgress:function(a){a=sjcl.mode.ccm.G.indexOf(a);-1<a&&sjcl.mode.ccm.G.splice(a,1)},fa:function(a){var b=sjcl.mode.ccm.G.slice(),c;for(c=0;c<b.length;c+=1)b[c](a)},encrypt:function(a,b,c,d,e){var f,g=b.slice(0),h=sjcl.bitArray,k=h.bitLength(c)/8,l=h.bitLength(g)/8;e=e||64;d=d||[];if(7>k)throw new sjcl.exception.invalid(\"ccm: iv must be at least 7 bytes\");for(f=2;4>f&&l>>>8*f;f++);f<15-k&&(f=15-k);c=h.clamp(c,\n8*(15-f));b=sjcl.mode.ccm.V(a,b,c,d,e,f);g=sjcl.mode.ccm.C(a,g,c,b,e,f);return h.concat(g.data,g.tag)},decrypt:function(a,b,c,d,e){e=e||64;d=d||[];var f=sjcl.bitArray,g=f.bitLength(c)/8,h=f.bitLength(b),k=f.clamp(b,h-e),l=f.bitSlice(b,h-e),h=(h-e)/8;if(7>g)throw new sjcl.exception.invalid(\"ccm: iv must be at least 7 bytes\");for(b=2;4>b&&h>>>8*b;b++);b<15-g&&(b=15-g);c=f.clamp(c,8*(15-b));k=sjcl.mode.ccm.C(a,k,c,l,e,b);a=sjcl.mode.ccm.V(a,k.data,c,d,e,b);if(!f.equal(k.tag,a))throw new sjcl.exception.corrupt(\"ccm: tag doesn't match\");\nreturn k.data},na:function(a,b,c,d,e,f){var g=[],h=sjcl.bitArray,k=h.i;d=[h.partial(8,(b.length?64:0)|d-2<<2|f-1)];d=h.concat(d,c);d[3]|=e;d=a.encrypt(d);if(b.length)for(c=h.bitLength(b)/8,65279>=c?g=[h.partial(16,c)]:0xffffffff>=c&&(g=h.concat([h.partial(16,65534)],[c])),g=h.concat(g,b),b=0;b<g.length;b+=4)d=a.encrypt(k(d,g.slice(b,b+4).concat([0,0,0])));return d},V:function(a,b,c,d,e,f){var g=sjcl.bitArray,h=g.i;e/=8;if(e%2||4>e||16<e)throw new sjcl.exception.invalid(\"ccm: invalid tag length\");\nif(0xffffffff<d.length||0xffffffff<b.length)throw new sjcl.exception.bug(\"ccm: can't deal with 4GiB or more data\");c=sjcl.mode.ccm.na(a,d,c,e,g.bitLength(b)/8,f);for(d=0;d<b.length;d+=4)c=a.encrypt(h(c,b.slice(d,d+4).concat([0,0,0])));return g.clamp(c,8*e)},C:function(a,b,c,d,e,f){var g,h=sjcl.bitArray;g=h.i;var k=b.length,l=h.bitLength(b),n=k/50,m=n;c=h.concat([h.partial(8,f-1)],c).concat([0,0,0]).slice(0,4);d=h.bitSlice(g(d,a.encrypt(c)),0,e);if(!k)return{tag:d,data:[]};for(g=0;g<k;g+=4)g>n&&(sjcl.mode.ccm.fa(g/\nk),n+=m),c[3]++,e=a.encrypt(c),b[g]^=e[0],b[g+1]^=e[1],b[g+2]^=e[2],b[g+3]^=e[3];return{tag:d,data:h.clamp(b,l)}}};\nsjcl.mode.ocb2={name:\"ocb2\",encrypt:function(a,b,c,d,e,f){if(128!==sjcl.bitArray.bitLength(c))throw new sjcl.exception.invalid(\"ocb iv must be 128 bits\");var g,h=sjcl.mode.ocb2.S,k=sjcl.bitArray,l=k.i,n=[0,0,0,0];c=h(a.encrypt(c));var m,p=[];d=d||[];e=e||64;for(g=0;g+4<b.length;g+=4)m=b.slice(g,g+4),n=l(n,m),p=p.concat(l(c,a.encrypt(l(c,m)))),c=h(c);m=b.slice(g);b=k.bitLength(m);g=a.encrypt(l(c,[0,0,0,b]));m=k.clamp(l(m.concat([0,0,0]),g),b);n=l(n,l(m.concat([0,0,0]),g));n=a.encrypt(l(n,l(c,h(c))));\nd.length&&(n=l(n,f?d:sjcl.mode.ocb2.pmac(a,d)));return p.concat(k.concat(m,k.clamp(n,e)))},decrypt:function(a,b,c,d,e,f){if(128!==sjcl.bitArray.bitLength(c))throw new sjcl.exception.invalid(\"ocb iv must be 128 bits\");e=e||64;var g=sjcl.mode.ocb2.S,h=sjcl.bitArray,k=h.i,l=[0,0,0,0],n=g(a.encrypt(c)),m,p,r=sjcl.bitArray.bitLength(b)-e,q=[];d=d||[];for(c=0;c+4<r/32;c+=4)m=k(n,a.decrypt(k(n,b.slice(c,c+4)))),l=k(l,m),q=q.concat(m),n=g(n);p=r-32*c;m=a.encrypt(k(n,[0,0,0,p]));m=k(m,h.clamp(b.slice(c),p).concat([0,\n0,0]));l=k(l,m);l=a.encrypt(k(l,k(n,g(n))));d.length&&(l=k(l,f?d:sjcl.mode.ocb2.pmac(a,d)));if(!h.equal(h.clamp(l,e),h.bitSlice(b,r)))throw new sjcl.exception.corrupt(\"ocb: tag doesn't match\");return q.concat(h.clamp(m,p))},pmac:function(a,b){var c,d=sjcl.mode.ocb2.S,e=sjcl.bitArray,f=e.i,g=[0,0,0,0],h=a.encrypt([0,0,0,0]),h=f(h,d(d(h)));for(c=0;c+4<b.length;c+=4)h=d(h),g=f(g,a.encrypt(f(h,b.slice(c,c+4))));c=b.slice(c);128>e.bitLength(c)&&(h=f(h,d(h)),c=e.concat(c,[-2147483648,0,0,0]));g=f(g,c);\nreturn a.encrypt(f(d(f(h,d(h))),g))},S:function(a){return[a[0]<<1^a[1]>>>31,a[1]<<1^a[2]>>>31,a[2]<<1^a[3]>>>31,a[3]<<1^135*(a[0]>>>31)]}};\nsjcl.mode.gcm={name:\"gcm\",encrypt:function(a,b,c,d,e){var f=b.slice(0);b=sjcl.bitArray;d=d||[];a=sjcl.mode.gcm.C(!0,a,f,d,c,e||128);return b.concat(a.data,a.tag)},decrypt:function(a,b,c,d,e){var f=b.slice(0),g=sjcl.bitArray,h=g.bitLength(f);e=e||128;d=d||[];e<=h?(b=g.bitSlice(f,h-e),f=g.bitSlice(f,0,h-e)):(b=f,f=[]);a=sjcl.mode.gcm.C(!1,a,f,d,c,e);if(!g.equal(a.tag,b))throw new sjcl.exception.corrupt(\"gcm: tag doesn't match\");return a.data},ka:function(a,b){var c,d,e,f,g,h=sjcl.bitArray.i;e=[0,0,\n0,0];f=b.slice(0);for(c=0;128>c;c++){(d=0!==(a[Math.floor(c/32)]&1<<31-c%32))&&(e=h(e,f));g=0!==(f[3]&1);for(d=3;0<d;d--)f[d]=f[d]>>>1|(f[d-1]&1)<<31;f[0]>>>=1;g&&(f[0]^=-0x1f000000)}return e},j:function(a,b,c){var d,e=c.length;b=b.slice(0);for(d=0;d<e;d+=4)b[0]^=0xffffffff&c[d],b[1]^=0xffffffff&c[d+1],b[2]^=0xffffffff&c[d+2],b[3]^=0xffffffff&c[d+3],b=sjcl.mode.gcm.ka(b,a);return b},C:function(a,b,c,d,e,f){var g,h,k,l,n,m,p,r,q=sjcl.bitArray;m=c.length;p=q.bitLength(c);r=q.bitLength(d);h=q.bitLength(e);\ng=b.encrypt([0,0,0,0]);96===h?(e=e.slice(0),e=q.concat(e,[1])):(e=sjcl.mode.gcm.j(g,[0,0,0,0],e),e=sjcl.mode.gcm.j(g,e,[0,0,Math.floor(h/0x100000000),h&0xffffffff]));h=sjcl.mode.gcm.j(g,[0,0,0,0],d);n=e.slice(0);d=h.slice(0);a||(d=sjcl.mode.gcm.j(g,h,c));for(l=0;l<m;l+=4)n[3]++,k=b.encrypt(n),c[l]^=k[0],c[l+1]^=k[1],c[l+2]^=k[2],c[l+3]^=k[3];c=q.clamp(c,p);a&&(d=sjcl.mode.gcm.j(g,h,c));a=[Math.floor(r/0x100000000),r&0xffffffff,Math.floor(p/0x100000000),p&0xffffffff];d=sjcl.mode.gcm.j(g,d,a);k=b.encrypt(e);\nd[0]^=k[0];d[1]^=k[1];d[2]^=k[2];d[3]^=k[3];return{tag:q.bitSlice(d,0,f),data:c}}};sjcl.misc.hmac=function(a,b){this.W=b=b||sjcl.hash.sha256;var c=[[],[]],d,e=b.prototype.blockSize/32;this.w=[new b,new b];a.length>e&&(a=b.hash(a));for(d=0;d<e;d++)c[0][d]=a[d]^909522486,c[1][d]=a[d]^1549556828;this.w[0].update(c[0]);this.w[1].update(c[1]);this.R=new b(this.w[0])};\nsjcl.misc.hmac.prototype.encrypt=sjcl.misc.hmac.prototype.mac=function(a){if(this.aa)throw new sjcl.exception.invalid(\"encrypt on already updated hmac called!\");this.update(a);return this.digest(a)};sjcl.misc.hmac.prototype.reset=function(){this.R=new this.W(this.w[0]);this.aa=!1};sjcl.misc.hmac.prototype.update=function(a){this.aa=!0;this.R.update(a)};sjcl.misc.hmac.prototype.digest=function(){var a=this.R.finalize(),a=(new this.W(this.w[1])).update(a).finalize();this.reset();return a};\nsjcl.misc.pbkdf2=function(a,b,c,d,e){c=c||1E4;if(0>d||0>c)throw new sjcl.exception.invalid(\"invalid params to pbkdf2\");\"string\"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));\"string\"===typeof b&&(b=sjcl.codec.utf8String.toBits(b));e=e||sjcl.misc.hmac;a=new e(a);var f,g,h,k,l=[],n=sjcl.bitArray;for(k=1;32*l.length<(d||1);k++){e=f=a.encrypt(n.concat(b,[k]));for(g=1;g<c;g++)for(f=a.encrypt(f),h=0;h<f.length;h++)e[h]^=f[h];l=l.concat(e)}d&&(l=n.clamp(l,d));return l};\nsjcl.prng=function(a){this.c=[new sjcl.hash.sha256];this.m=[0];this.P=0;this.H={};this.N=0;this.U={};this.Z=this.f=this.o=this.ha=0;this.b=[0,0,0,0,0,0,0,0];this.h=[0,0,0,0];this.L=void 0;this.M=a;this.D=!1;this.K={progress:{},seeded:{}};this.u=this.ga=0;this.I=1;this.J=2;this.ca=0x10000;this.T=[0,48,64,96,128,192,0x100,384,512,768,1024];this.da=3E4;this.ba=80};\nsjcl.prng.prototype={randomWords:function(a,b){var c=[],d;d=this.isReady(b);var e;if(d===this.u)throw new sjcl.exception.notReady(\"generator isn't seeded\");if(d&this.J){d=!(d&this.I);e=[];var f=0,g;this.Z=e[0]=(new Date).valueOf()+this.da;for(g=0;16>g;g++)e.push(0x100000000*Math.random()|0);for(g=0;g<this.c.length&&(e=e.concat(this.c[g].finalize()),f+=this.m[g],this.m[g]=0,d||!(this.P&1<<g));g++);this.P>=1<<this.c.length&&(this.c.push(new sjcl.hash.sha256),this.m.push(0));this.f-=f;f>this.o&&(this.o=\nf);this.P++;this.b=sjcl.hash.sha256.hash(this.b.concat(e));this.L=new sjcl.cipher.aes(this.b);for(d=0;4>d&&(this.h[d]=this.h[d]+1|0,!this.h[d]);d++);}for(d=0;d<a;d+=4)0===(d+1)%this.ca&&y(this),e=z(this),c.push(e[0],e[1],e[2],e[3]);y(this);return c.slice(0,a)},setDefaultParanoia:function(a,b){if(0===a&&\"Setting paranoia=0 will ruin your security; use it only for testing\"!==b)throw new sjcl.exception.invalid(\"Setting paranoia=0 will ruin your security; use it only for testing\");this.M=a},addEntropy:function(a,\nb,c){c=c||\"user\";var d,e,f=(new Date).valueOf(),g=this.H[c],h=this.isReady(),k=0;d=this.U[c];void 0===d&&(d=this.U[c]=this.ha++);void 0===g&&(g=this.H[c]=0);this.H[c]=(this.H[c]+1)%this.c.length;switch(typeof a){case \"number\":void 0===b&&(b=1);this.c[g].update([d,this.N++,1,b,f,1,a|0]);break;case \"object\":c=Object.prototype.toString.call(a);if(\"[object Uint32Array]\"===c){e=[];for(c=0;c<a.length;c++)e.push(a[c]);a=e}else for(\"[object Array]\"!==c&&(k=1),c=0;c<a.length&&!k;c++)\"number\"!==typeof a[c]&&\n(k=1);if(!k){if(void 0===b)for(c=b=0;c<a.length;c++)for(e=a[c];0<e;)b++,e=e>>>1;this.c[g].update([d,this.N++,2,b,f,a.length].concat(a))}break;case \"string\":void 0===b&&(b=a.length);this.c[g].update([d,this.N++,3,b,f,a.length]);this.c[g].update(a);break;default:k=1}if(k)throw new sjcl.exception.bug(\"random: addEntropy only supports number, array of numbers or string\");this.m[g]+=b;this.f+=b;h===this.u&&(this.isReady()!==this.u&&A(\"seeded\",Math.max(this.o,this.f)),A(\"progress\",this.getProgress()))},\nisReady:function(a){a=this.T[void 0!==a?a:this.M];return this.o&&this.o>=a?this.m[0]>this.ba&&(new Date).valueOf()>this.Z?this.J|this.I:this.I:this.f>=a?this.J|this.u:this.u},getProgress:function(a){a=this.T[a?a:this.M];return this.o>=a?1:this.f>a?1:this.f/a},startCollectors:function(){if(!this.D){this.a={loadTimeCollector:B(this,this.ma),mouseCollector:B(this,this.oa),keyboardCollector:B(this,this.la),accelerometerCollector:B(this,this.ea),touchCollector:B(this,this.qa)};if(window.addEventListener)window.addEventListener(\"load\",\nthis.a.loadTimeCollector,!1),window.addEventListener(\"mousemove\",this.a.mouseCollector,!1),window.addEventListener(\"keypress\",this.a.keyboardCollector,!1),window.addEventListener(\"devicemotion\",this.a.accelerometerCollector,!1),window.addEventListener(\"touchmove\",this.a.touchCollector,!1);else if(document.attachEvent)document.attachEvent(\"onload\",this.a.loadTimeCollector),document.attachEvent(\"onmousemove\",this.a.mouseCollector),document.attachEvent(\"keypress\",this.a.keyboardCollector);else throw new sjcl.exception.bug(\"can't attach event\");\nthis.D=!0}},stopCollectors:function(){this.D&&(window.removeEventListener?(window.removeEventListener(\"load\",this.a.loadTimeCollector,!1),window.removeEventListener(\"mousemove\",this.a.mouseCollector,!1),window.removeEventListener(\"keypress\",this.a.keyboardCollector,!1),window.removeEventListener(\"devicemotion\",this.a.accelerometerCollector,!1),window.removeEventListener(\"touchmove\",this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent(\"onload\",this.a.loadTimeCollector),document.detachEvent(\"onmousemove\",\nthis.a.mouseCollector),document.detachEvent(\"keypress\",this.a.keyboardCollector)),this.D=!1)},addEventListener:function(a,b){this.K[a][this.ga++]=b},removeEventListener:function(a,b){var c,d,e=this.K[a],f=[];for(d in e)e.hasOwnProperty(d)&&e[d]===b&&f.push(d);for(c=0;c<f.length;c++)d=f[c],delete e[d]},la:function(){C(this,1)},oa:function(a){var b,c;try{b=a.x||a.clientX||a.offsetX||0,c=a.y||a.clientY||a.offsetY||0}catch(d){c=b=0}0!=b&&0!=c&&this.addEntropy([b,c],2,\"mouse\");C(this,0)},qa:function(a){a=\na.touches[0]||a.changedTouches[0];this.addEntropy([a.pageX||a.clientX,a.pageY||a.clientY],1,\"touch\");C(this,0)},ma:function(){C(this,2)},ea:function(a){a=a.accelerationIncludingGravity.x||a.accelerationIncludingGravity.y||a.accelerationIncludingGravity.z;if(window.orientation){var b=window.orientation;\"number\"===typeof b&&this.addEntropy(b,1,\"accelerometer\")}a&&this.addEntropy(a,2,\"accelerometer\");C(this,0)}};\nfunction A(a,b){var c,d=sjcl.random.K[a],e=[];for(c in d)d.hasOwnProperty(c)&&e.push(d[c]);for(c=0;c<e.length;c++)e[c](b)}function C(a,b){\"undefined\"!==typeof window&&window.performance&&\"function\"===typeof window.performance.now?a.addEntropy(window.performance.now(),b,\"loadtime\"):a.addEntropy((new Date).valueOf(),b,\"loadtime\")}function y(a){a.b=z(a).concat(z(a));a.L=new sjcl.cipher.aes(a.b)}function z(a){for(var b=0;4>b&&(a.h[b]=a.h[b]+1|0,!a.h[b]);b++);return a.L.encrypt(a.h)}\nfunction B(a,b){return function(){b.apply(a,arguments)}}sjcl.random=new sjcl.prng(6);\na:try{var D,E,F,G;if(G=\"undefined\"!==typeof module&&module.exports){var H;try{H=require(\"crypto\")}catch(a){H=null}G=E=H}if(G&&E.randomBytes)D=E.randomBytes(128),D=new Uint32Array((new Uint8Array(D)).buffer),sjcl.random.addEntropy(D,1024,\"crypto['randomBytes']\");else if(\"undefined\"!==typeof window&&\"undefined\"!==typeof Uint32Array){F=new Uint32Array(32);if(window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(F);else if(window.msCrypto&&window.msCrypto.getRandomValues)window.msCrypto.getRandomValues(F);\nelse break a;sjcl.random.addEntropy(F,1024,\"crypto['getRandomValues']\")}}catch(a){\"undefined\"!==typeof window&&window.console&&(console.log(\"There was an error collecting entropy from the browser:\"),console.log(a))}\nsjcl.json={defaults:{v:1,iter:1E4,ks:128,ts:64,mode:\"ccm\",adata:\"\",cipher:\"aes\"},ja:function(a,b,c,d){c=c||{};d=d||{};var e=sjcl.json,f=e.g({iv:sjcl.random.randomWords(4,0)},e.defaults),g;e.g(f,c);c=f.adata;\"string\"===typeof f.salt&&(f.salt=sjcl.codec.base64.toBits(f.salt));\"string\"===typeof f.iv&&(f.iv=sjcl.codec.base64.toBits(f.iv));if(!sjcl.mode[f.mode]||!sjcl.cipher[f.cipher]||\"string\"===typeof a&&100>=f.iter||64!==f.ts&&96!==f.ts&&128!==f.ts||128!==f.ks&&192!==f.ks&&0x100!==f.ks||2>f.iv.length||\n4<f.iv.length)throw new sjcl.exception.invalid(\"json encrypt: invalid parameters\");\"string\"===typeof a?(g=sjcl.misc.cachedPbkdf2(a,f),a=g.key.slice(0,f.ks/32),f.salt=g.salt):sjcl.ecc&&a instanceof sjcl.ecc.elGamal.publicKey&&(g=a.kem(),f.kemtag=g.tag,a=g.key.slice(0,f.ks/32));\"string\"===typeof b&&(b=sjcl.codec.utf8String.toBits(b));\"string\"===typeof c&&(f.adata=c=sjcl.codec.utf8String.toBits(c));g=new sjcl.cipher[f.cipher](a);e.g(d,f);d.key=a;f.ct=\"ccm\"===f.mode&&sjcl.arrayBuffer&&sjcl.arrayBuffer.ccm&&\nb instanceof ArrayBuffer?sjcl.arrayBuffer.ccm.encrypt(g,b,f.iv,c,f.ts):sjcl.mode[f.mode].encrypt(g,b,f.iv,c,f.ts);return f},encrypt:function(a,b,c,d){var e=sjcl.json,f=e.ja.apply(e,arguments);return e.encode(f)},ia:function(a,b,c,d){c=c||{};d=d||{};var e=sjcl.json;b=e.g(e.g(e.g({},e.defaults),b),c,!0);var f,g;f=b.adata;\"string\"===typeof b.salt&&(b.salt=sjcl.codec.base64.toBits(b.salt));\"string\"===typeof b.iv&&(b.iv=sjcl.codec.base64.toBits(b.iv));if(!sjcl.mode[b.mode]||!sjcl.cipher[b.cipher]||\"string\"===\ntypeof a&&100>=b.iter||64!==b.ts&&96!==b.ts&&128!==b.ts||128!==b.ks&&192!==b.ks&&0x100!==b.ks||!b.iv||2>b.iv.length||4<b.iv.length)throw new sjcl.exception.invalid(\"json decrypt: invalid parameters\");\"string\"===typeof a?(g=sjcl.misc.cachedPbkdf2(a,b),a=g.key.slice(0,b.ks/32),b.salt=g.salt):sjcl.ecc&&a instanceof sjcl.ecc.elGamal.secretKey&&(a=a.unkem(sjcl.codec.base64.toBits(b.kemtag)).slice(0,b.ks/32));\"string\"===typeof f&&(f=sjcl.codec.utf8String.toBits(f));g=new sjcl.cipher[b.cipher](a);f=\"ccm\"===\nb.mode&&sjcl.arrayBuffer&&sjcl.arrayBuffer.ccm&&b.ct instanceof ArrayBuffer?sjcl.arrayBuffer.ccm.decrypt(g,b.ct,b.iv,b.tag,f,b.ts):sjcl.mode[b.mode].decrypt(g,b.ct,b.iv,f,b.ts);e.g(d,b);d.key=a;return 1===c.raw?f:sjcl.codec.utf8String.fromBits(f)},decrypt:function(a,b,c,d){var e=sjcl.json;return e.ia(a,e.decode(b),c,d)},encode:function(a){var b,c=\"{\",d=\"\";for(b in a)if(a.hasOwnProperty(b)){if(!b.match(/^[a-z0-9]+$/i))throw new sjcl.exception.invalid(\"json encode: invalid property name\");c+=d+'\"'+\nb+'\":';d=\",\";switch(typeof a[b]){case \"number\":case \"boolean\":c+=a[b];break;case \"string\":c+='\"'+escape(a[b])+'\"';break;case \"object\":c+='\"'+sjcl.codec.base64.fromBits(a[b],0)+'\"';break;default:throw new sjcl.exception.bug(\"json encode: unsupported type\");}}return c+\"}\"},decode:function(a){a=a.replace(/\\s/g,\"\");if(!a.match(/^\\{.*\\}$/))throw new sjcl.exception.invalid(\"json decode: this isn't json!\");a=a.replace(/^\\{|\\}$/g,\"\").split(/,/);var b={},c,d;for(c=0;c<a.length;c++){if(!(d=a[c].match(/^\\s*(?:([\"']?)([a-z][a-z0-9]*)\\1)\\s*:\\s*(?:(-?\\d+)|\"([a-z0-9+\\/%*_.@=\\-]*)\"|(true|false))$/i)))throw new sjcl.exception.invalid(\"json decode: this isn't json!\");\nnull!=d[3]?b[d[2]]=parseInt(d[3],10):null!=d[4]?b[d[2]]=d[2].match(/^(ct|adata|salt|iv)$/)?sjcl.codec.base64.toBits(d[4]):unescape(d[4]):null!=d[5]&&(b[d[2]]=\"true\"===d[5])}return b},g:function(a,b,c){void 0===a&&(a={});if(void 0===b)return a;for(var d in b)if(b.hasOwnProperty(d)){if(c&&void 0!==a[d]&&a[d]!==b[d])throw new sjcl.exception.invalid(\"required parameter overridden\");a[d]=b[d]}return a},sa:function(a,b){var c={},d;for(d in a)a.hasOwnProperty(d)&&a[d]!==b[d]&&(c[d]=a[d]);return c},ra:function(a,\nb){var c={},d;for(d=0;d<b.length;d++)void 0!==a[b[d]]&&(c[b[d]]=a[b[d]]);return c}};sjcl.encrypt=sjcl.json.encrypt;sjcl.decrypt=sjcl.json.decrypt;sjcl.misc.pa={};sjcl.misc.cachedPbkdf2=function(a,b){var c=sjcl.misc.pa,d;b=b||{};d=b.iter||1E3;c=c[a]=c[a]||{};d=c[d]=c[d]||{firstSalt:b.salt&&b.salt.length?b.salt.slice(0):sjcl.random.randomWords(2,0)};c=void 0===b.salt?d.firstSalt:b.salt;d[c]=d[c]||sjcl.misc.pbkdf2(a,c,b.iter);return{key:d[c].slice(0),salt:c.slice(0)}};\n\"undefined\"!==typeof module&&module.exports&&(module.exports=sjcl);\"function\"===typeof define&&define([],function(){return sjcl});\n","import { StateObject } from \"../StateObject\";\nimport { TiddlerStore } from \"./TiddlerStore\";\nimport { resolve } from \"path\";\nimport { createWriteStream, readFileSync } from \"fs\";\nimport sjcl from \"sjcl\";\nimport { createHash } from \"crypto\";\nimport { TiddlerFields } from \"./services/attachments\";\nimport { UserError } from \"../utils\";\n\n\nexport class TiddlerServer extends TiddlerStore {\n\n constructor(\n protected state: StateObject,\n prisma: PrismaTxnClient\n ) {\n super(state.commander, prisma);\n }\n\n private toTiddlyWebJson(info: { bag_name: string; tiddler_id: number; tiddler: TiddlerFields }) {\n const output: any = { fields: {} };\n const knownFields = [\n \"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n ];\n\n each(info.tiddler, (field, name) => {\n if (knownFields.indexOf(name) !== -1) {\n output[name] = field;\n } else {\n output.fields[name] = field;\n }\n });\n output.type = info.tiddler.type || \"text/vnd.tiddlywiki\";\n\n output.revision = `${info.tiddler_id}`;\n output.bag = info.bag_name;\n return output;\n }\n\n /** If neither bag_name nor bag_id are specified, the fallback will be sent. */\n async sendBagTiddler({ state, bag_name, bag_id, title }: {\n state: StateObject;\n bag_name?: PrismaField<\"Bags\", \"bag_name\">;\n bag_id?: PrismaField<\"Bags\", \"bag_id\">;\n title: PrismaField<\"Tiddlers\", \"title\">;\n }) {\n\n const tiddlerInfo = (bag_id || bag_name) && await this.getBagTiddler({ bag_name, bag_id, title });\n\n if (!tiddlerInfo || !tiddlerInfo.tiddler) {\n // Redirect to fallback URL if tiddler not found\n const fallback = state.queryParams.fallback?.[0];\n if (fallback) {\n // await state.pushStream(fallback);\n return state.redirect(fallback);\n } else {\n return state.sendEmpty(404, { \"x-reason\": \"tiddler not found (no fallback)\" });\n }\n }\n\n\n // If application/json is requested then this is an API request, and gets the response in JSON\n if (state.headers.accept && state.headers.accept.indexOf(\"application/json\") !== -1) {\n\n return state.sendResponse(200, {\n \"Etag\": state.makeTiddlerEtag(tiddlerInfo),\n \"Content-Type\": \"application/json\",\n \"X-Revision-Number\": tiddlerInfo.tiddler_id,\n \"X-Bag-Name\": tiddlerInfo.bag_name,\n }, JSON.stringify(tiddlerInfo.tiddler), \"utf8\");\n\n } else {\n\n // This is not a JSON API request, we should return the raw tiddler content\n const result = await this.getBagTiddlerStream(title, tiddlerInfo.bag_name);\n if (!result || !result.stream) return state.sendEmpty(404);\n\n return state.sendStream(200, {\n \"Etag\": state.makeTiddlerEtag(result),\n \"Content-Type\": result.type\n }, result.stream);\n\n }\n\n }\n\n\n /**\n * Process an incoming new multipart/form-data stream. Options include:\n *\n * @param {Object} options\n * @param {SqlTiddlerStore} options.store\n * @param {ServerState} options.state\n * @param {ServerResponse} options.response\n * @param {string} options.bag_name\n * @param {function} options.callback\n */\n async processIncomingStream(\n bag_name: PrismaField<\"Bags\", \"bag_name\">\n ): Promise<string[]> {\n\n // Process the incoming data\n const inboxName = new Date().toISOString().replace(/:/g, \"-\");\n const inboxPath = resolve(this.storePath, \"inbox\", inboxName);\n createDirectory(inboxPath);\n let fileStream: { write: (arg0: any) => void; end: () => void; } | null = null; // Current file being written\n let hash: { update: (arg0: any) => void; finalize: () => any; } | null = null; // Accumulating hash of current part\n let length = 0; // Accumulating length of current part\n const parts: any[] = []; // Array of {name:, headers:, value:, hash:} and/or {name:, filename:, headers:, inboxFilename:, hash:} \n\n await this.state.readMultipartData({\n cbPartStart: function (headers, name, filename) {\n const part: any = {\n name: name,\n filename: filename,\n headers: headers\n };\n if (filename) {\n const inboxFilename = (parts.length).toString();\n part.inboxFilename = resolve(inboxPath, inboxFilename);\n fileStream = createWriteStream(part.inboxFilename);\n } else {\n part.value = \"\";\n }\n hash = new sjcl.hash.sha256();\n length = 0;\n parts.push(part);\n },\n cbPartChunk: function (chunk) {\n if (fileStream) {\n fileStream.write(chunk);\n } else {\n parts[parts.length - 1].value += chunk;\n }\n length = length + chunk.length;\n hash!.update(chunk);\n },\n cbPartEnd: function () {\n if (fileStream) {\n fileStream.end();\n }\n fileStream = null;\n parts[parts.length - 1].hash = sjcl.codec.hex.fromBits(hash!.finalize()).slice(0, 64).toString();\n hash = null;\n },\n // if an error is given here, it will also be thrown in the promise\n cbFinished: (err) => { }\n });\n\n const partFile = parts.find(part => part.name === \"file-to-upload\" && !!part.filename);\n if (!partFile) {\n throw await this.state.sendSimple(400, \"Missing file to upload\");\n }\n\n const type = partFile.headers[\"content-type\"];\n const tiddlerFields = { title: partFile.filename, type };\n\n for (const part of parts) {\n const tiddlerFieldPrefix = \"tiddler-field-\";\n if (part.name.startsWith(tiddlerFieldPrefix)) {\n (tiddlerFields as any)[part.name.slice(tiddlerFieldPrefix.length)] = part.value.trim();\n }\n }\n\n await this.saveBagTiddlerWithAttachment(tiddlerFields, bag_name, {\n filepath: partFile.inboxFilename,\n type: type,\n hash: partFile.hash\n } as any).then(() => {\n deleteDirectory(inboxPath);\n return [tiddlerFields.title];\n }, err => {\n throw err;\n });\n\n return parts;\n }\n\n async getRecipeTiddlers(recipe_name: PrismaField<\"Recipes\", \"recipe_name\">) {\n // Get the recipe name from the parameters\n const bagTiddlers = await this.getRecipeTiddlersByBag(recipe_name);\n\n bagTiddlers.sort((a, b) => a.position - b.position);\n\n return Array.from(new Map(bagTiddlers.flatMap(bag =>\n bag.tiddlers.map(tiddler => [tiddler.title, {\n title: tiddler.title,\n tiddler_id: tiddler.tiddler_id,\n is_deleted: tiddler.is_deleted,\n is_plugin: false,\n bag_name: bag.bag_name,\n bag_id: bag.bag_id\n }])\n )).values());\n\n // SELECT title, tiddler_id, is_deleted, bag_name\n // FROM (\n // SELECT t.title, t.tiddler_id, t.is_deleted, b.bag_name, MAX(rb.position) AS position\n // FROM bags AS b\n // INNER JOIN recipe_bags AS rb ON b.bag_id = rb.bag_id\n // INNER JOIN tiddlers AS t ON b.bag_id = t.bag_id\n // WHERE rb.recipe_id = $recipe_id\n // ${options.include_deleted ? \"\" : \"AND t.is_deleted = FALSE\"}\n // ${options.last_known_tiddler_id ? \"AND tiddler_id > $last_known_tiddler_id\" : \"\"}\n // GROUP BY t.title\n // ORDER BY t.title, tiddler_id DESC\n // ${options.limit ? \"LIMIT $limit\" : \"\"}\n // )\n\n }\n async serveIndexFile(recipe_name: PrismaField<\"Recipes\", \"recipe_name\">) {\n const state = this.state;\n\n // Check request is valid\n if (!recipe_name) {\n return state.sendEmpty(404);\n }\n\n // const bagTiddlers = await this.getRecipeTiddlersByBag(recipe_name);\n const bagTiddlers = await this.prisma.recipe_bags.findMany({\n where: { recipe: { recipe_name } },\n select: {\n position: true,\n bag: {\n select: {\n bag_id: true,\n bag_name: true,\n is_plugin: true,\n tiddlers: {\n select: {\n title: true,\n tiddler_id: true,\n is_deleted: true,\n attachment_hash: true,\n fields: true,\n },\n where: {\n is_deleted: false,\n },\n }\n }\n }\n },\n });\n\n bagTiddlers.sort((a, b) => a.position - b.position);\n\n // const recipeTiddlers = await this.getRecipeTiddlers(recipe_name);\n const recipeTiddlers = Array.from(new Map(bagTiddlers.flatMap(bag =>\n bag.bag.tiddlers.map(tiddler => [tiddler.title, { bag: bag.bag, tiddler }])\n )).values());\n\n const template = readFileSync(resolve(this.state.config.wikiPath, \"tiddlywiki5.html\"), \"utf8\");\n const hash = createHash('md5');\n // Put everything into the hash that could change and invalidate the data that\n // the browser already stored. The headers the data and the encoding.\n hash.update(template);\n hash.update(recipeTiddlers.map(e => e.tiddler.tiddler_id).join(\"|\"));\n const contentDigest = hash.digest(\"hex\");\n\n\n state.writeHead(200, {\n \"Content-Type\": \"text/html\",\n \"Etag\": '\"' + contentDigest + '\"',\n \"Cache-Control\": \"max-age=0, must-revalidate\",\n });\n\n if (state.method === \"HEAD\") return state.end();\n // Get the tiddlers in the recipe\n // Render the template\n\n // Splice in our tiddlers\n var marker = `<` + `script class=\"tiddlywiki-tiddler-store\" type=\"application/json\">[`,\n markerPos = template.indexOf(marker);\n if (markerPos === -1) {\n throw new Error(\"Cannot find tiddler store in template\");\n }\n /**\n * \n * @param {Record<string, string>} tiddlerFields \n */\n function writeTiddler(tiddlerFields: Record<string, string>) {\n state.write(JSON.stringify(tiddlerFields).replace(/</g, \"\\\\u003c\"));\n state.write(\",\\n\");\n }\n state.write(template.substring(0, markerPos + marker.length));\n\n\n const\n bagInfo: Record<string, string> = {},\n revisionInfo: Record<string, string> = {};\n\n for (const recipeTiddlerInfo of recipeTiddlers) {\n // var result = await this.getRecipeTiddler(recipeTiddlerInfo.title, recipe_name);\n // const { title, bag_id, tiddler_id } = recipeTiddlerInfo;\n // var result = await this.getBagTiddler({ title, bag_id });\n\n const { title, tiddler_id, attachment_hash, fields } = recipeTiddlerInfo.tiddler;\n const { bag_name } = recipeTiddlerInfo.bag;\n\n const tiddler = Object.fromEntries([\n ...fields.map(e => [e.field_name, e.field_value] as const),\n [\"title\", title]\n ]) as TiddlerFields;\n\n const tiddler2 = this.attachService.processOutgoingTiddler({\n tiddler, tiddler_id, attachment_hash, bag_name\n });\n\n bagInfo[title] = bag_name;\n revisionInfo[title] = tiddler_id.toString();\n writeTiddler(tiddler2);\n }\n\n writeTiddler({\n title: \"$:/state/multiwikiclient/tiddlers/bag\",\n text: JSON.stringify(bagInfo),\n type: \"application/json\"\n });\n writeTiddler({\n title: \"$:/state/multiwikiclient/tiddlers/revision\",\n text: JSON.stringify(revisionInfo),\n type: \"application/json\"\n });\n writeTiddler({\n title: \"$:/config/multiwikiclient/recipe\",\n text: recipe_name\n });\n // get the latest tiddler id in the database. It doesn't have to be filtered.\n const lastTiddlerId = await this.prisma.tiddlers.aggregate({ _max: { tiddler_id: true } });\n writeTiddler({\n title: \"$:/state/multiwikiclient/recipe/last_tiddler_id\",\n text: (lastTiddlerId._max.tiddler_id ?? 0).toString()\n });\n state.write(template.substring(markerPos + marker.length))\n // Finish response\n return state.end();\n }\n\n}\n","import { StateObject } from \"../../StateObject\";\nimport { STREAM_ENDED } from \"../../streamer\";\nimport { tryParseJSON, ZodAssert as zodAssert } from \"../../utils\";\nimport { registerZodRoutes, zodRoute, RouterKeyMap, RouterRouteMap } from \"../router\";\nimport { TiddlerServer } from \"../bag-file-server\";\n\n\nexport const TiddlerKeyMap: RouterKeyMap<TiddlerRouter, true> = {\n handleCreateRecipeTiddler: true,\n handleDeleteRecipeTiddler: true,\n handleGetBagTiddler: true,\n handleGetBagTiddlerBlob: true,\n handleGetRecipeStatus: true,\n handleGetRecipeTiddler: true,\n handleListRecipeTiddlers: true,\n handleSaveRecipeTiddler: true,\n handleGetWikiIndex: true,\n}\n\nexport type TiddlerManagerMap = RouterRouteMap<TiddlerRouter>;\n\nexport class TiddlerRouter {\n static defineRoutes = (root: rootRoute) => {\n registerZodRoutes(root, new TiddlerRouter(), Object.keys(TiddlerKeyMap));\n }\n\n handleGetRecipeStatus = zodRoute(\n [\"GET\", \"HEAD\"],\n \"/recipes/:recipe_name/status\",\n z => ({\n recipe_name: z.prismaField(\"Recipes\", \"recipe_name\", \"string\"),\n }),\n \"ignore\",\n z => z.undefined(),\n async (state) => {\n\n const { recipe_name } = state.pathParams;\n\n const { recipe, canRead, canWrite } = await state.getRecipeACL(recipe_name, true);\n\n if (!recipe) throw state.sendEmpty(404, { \"x-reason\": \"recipe not found\" });\n if (!canRead) throw state.sendEmpty(403, { \"x-reason\": \"read access denied\" });\n\n const { isAdmin, user_id, username } = state.user;\n\n return {\n isAdmin,\n user_id,\n username,\n isLoggedIn: state.user.isLoggedIn,\n isReadOnly: !canWrite,\n allowAnonReads: state.config.allowAnonReads,\n allowAnonWrites: state.config.allowAnonWrites,\n };\n }\n );\n\n handleGetRecipeTiddler = zodRoute(\n [\"GET\", \"HEAD\"],\n \"/recipes/:recipe_name/tiddlers/:title\",\n z => ({\n recipe_name: z.prismaField(\"Recipes\", \"recipe_name\", \"string\"),\n title: z.prismaField(\"Tiddlers\", \"title\", \"string\"),\n }),\n \"ignore\",\n z => z.undefined(),\n async (state) => {\n const { recipe_name, title } = state.pathParams;\n\n await state.assertRecipeACL(recipe_name, false);\n\n throw await state.$transaction(async prisma => {\n const server = new TiddlerServer(state, prisma);\n const bag = await server.getRecipeBagWithTiddler({ recipe_name, title });\n return server.sendBagTiddler({ state, bag_id: bag?.bag_id, title });\n });\n\n }\n )\n\n handleGetBagTiddler = zodRoute(\n [\"GET\", \"HEAD\"],\n \"/bags/:bag_name/tiddlers/:title\",\n z => ({\n bag_name: z.prismaField(\"Bags\", \"bag_name\", \"string\"),\n title: z.prismaField(\"Tiddlers\", \"title\", \"string\"),\n }),\n \"ignore\",\n z => z.undefined(),\n async (state) => {\n\n await state.assertBagACL(state.pathParams.bag_name, false);\n\n throw await state.$transaction(async prisma => {\n const server = new TiddlerServer(state, prisma);\n // return await server.getBagTiddler(state.pathParams);\n return server.sendBagTiddler({ state, ...state.pathParams });\n });\n\n // return this.sendTiddlerInfo(state, tiddlerInfo);\n\n });\n\n handleGetBagTiddlerBlob = zodRoute(\n [\"GET\", \"HEAD\"],\n \"/bags/:bag_name/tiddlers/:title/blob\",\n z => ({\n bag_name: z.prismaField(\"Bags\", \"bag_name\", \"string\"),\n title: z.prismaField(\"Tiddlers\", \"title\", \"string\"),\n }),\n \"ignore\",\n z => z.undefined(),\n async (state) => {\n const { bag_name, title } = state.pathParams;\n\n await state.assertBagACL(bag_name, false);\n\n const result = await state.$transaction(async prisma => {\n const server = new TiddlerServer(state, prisma);\n return await server.getBagTiddlerStream(title, bag_name);\n });\n\n if (!result) throw state.sendEmpty(404, { \"x-reason\": \"no result\" });\n\n throw state.sendStream(200, {\n Etag: state.makeTiddlerEtag(result),\n \"Content-Type\": result.type\n }, result.stream);\n });\n\n handleListRecipeTiddlers = zodRoute(\n [\"GET\", \"HEAD\"],\n \"/recipes/:recipe_name/tiddlers.json\",\n z => ({\n recipe_name: z.prismaField(\"Recipes\", \"recipe_name\", \"string\"),\n }),\n \"ignore\",\n z => z.undefined(),\n async (state) => {\n zodAssert.queryParams(state, z => ({\n include_deleted: z.string().array().optional(),\n last_known_tiddler_id: z.string().array().optional(),\n }));\n\n const { recipe_name } = state.pathParams;\n const include_deleted = state.queryParams.include_deleted?.[0] === \"true\";\n const last_known_tiddler_id = +(state.queryParams.last_known_tiddler_id?.[0] ?? 0) || undefined;\n\n await state.assertRecipeACL(recipe_name, false);\n\n const result = await state.$transaction(async prisma => {\n const server = new TiddlerServer(state, prisma);\n const options = { include_deleted, last_known_tiddler_id };\n let result = await server.getRecipeTiddlers(recipe_name);\n return result\n .filter(tiddler => options.include_deleted || !tiddler.is_deleted)\n .filter(tiddler => !options.last_known_tiddler_id || tiddler.tiddler_id > options.last_known_tiddler_id);\n });\n return result;\n }\n )\n\n parseFields(input: string, ctype: string | undefined) {\n\n if (ctype?.startsWith(\"application/json\"))\n return tryParseJSON<any>(input);\n\n if (ctype?.startsWith(\"application/x-mws-tiddler\")) {\n //https://jsperf.app/mukuro\n // for a big text field (100k random characters)\n // splitting the string is 1000x faster!\n // but I don't really trust getFieldStringBlock \n // because it doesn't check for fields with colon names\n\n const headerEnd = input.indexOf(\"\\n\\n\");\n if (headerEnd === -1) return tryParseJSON<any>(input);\n const header = input.slice(0, headerEnd);\n const body = input.slice(headerEnd + 2);\n\n const fields = tryParseJSON<any>(header);\n if (!fields) return undefined;\n fields.text = body;\n return fields;\n }\n }\n\n handleSaveRecipeTiddler = zodRoute(\n [\"PUT\"],\n \"/recipes/:recipe_name/tiddlers/:title\",\n z => ({\n recipe_name: z.prismaField(\"Recipes\", \"recipe_name\", \"string\"),\n title: z.prismaField(\"Tiddlers\", \"title\", \"string\"),\n }),\n \"string\",\n z => z.string(),\n // z => z.object({\n // title: z.prismaField(\"Tiddlers\", \"title\", \"string\", false),\n // }).and(z.record(z.string())),\n async (state) => {\n\n const { recipe_name } = state.pathParams;\n\n await state.assertRecipeACL(recipe_name, true);\n\n const fields = this.parseFields(state.data, state.headers[\"content-type\"]);\n\n if (fields === undefined) throw state.sendEmpty(400, { \"x-reason\": \"PUT tiddler expects a valid json or x-mws-tiddler body\" })\n\n const { bag_name, tiddler_id } = await state.$transaction(async prisma => {\n const server = new TiddlerServer(state, prisma);\n return await server.saveRecipeTiddler(fields, state.pathParams.recipe_name);\n });\n\n return { bag_name, tiddler_id };\n\n });\n\n\n handleDeleteRecipeTiddler = zodRoute(\n [\"DELETE\"],\n \"/recipes/:recipe_name/tiddlers/:title\",\n z => ({\n recipe_name: z.prismaField(\"Recipes\", \"recipe_name\", \"string\"),\n title: z.prismaField(\"Tiddlers\", \"title\", \"string\"),\n }),\n \"json\",\n z => z.undefined(),\n async (state) => {\n\n const { recipe_name, title } = state.pathParams;\n if (!recipe_name || !title) throw state.sendEmpty(404, { \"x-reason\": \"bag_name or title not found\" });\n\n await state.assertRecipeACL(recipe_name, true);\n\n const { bag_name, tiddler_id } = await state.$transaction(async prisma => {\n const server = new TiddlerServer(state, prisma);\n return await server.deleteRecipeTiddler(recipe_name, title);\n });\n\n return { bag_name, tiddler_id };\n\n });\n\n // this is not used by the sync adaptor. I'm not sure what uses it.\n handleCreateRecipeTiddler = zodRoute(\n [\"POST\"],\n \"/recipes/:recipe_name/tiddlers\",\n z => ({\n recipe_name: z.prismaField(\"Recipes\", \"recipe_name\", \"string\"),\n }),\n \"json\",\n z => z.object({\n title: z.prismaField(\"Tiddlers\", \"title\", \"string\", false),\n }).and(z.record(z.string())),\n async (state) => {\n\n await state.assertRecipeACL(state.pathParams.recipe_name, true);\n\n const recipe_name = state.pathParams.recipe_name;\n\n return await state.$transaction(async prisma => {\n const server = new TiddlerServer(state, prisma);\n const { bag_name } = await server.getRecipeWritableBag(recipe_name) ?? {};\n if (!bag_name) throw state.sendEmpty(404, { \"x-reason\": \"bag not found\" });\n return { bag_name, results: await server.processIncomingStream(bag_name) };\n });\n\n });\n\n handleGetWikiIndex = zodRoute(\n [\"GET\", \"HEAD\"],\n \"/wiki/:recipe_name\",\n z => ({\n recipe_name: z.prismaField(\"Recipes\", \"recipe_name\", \"string\"),\n }),\n \"ignore\",\n z => z.undefined(),\n async (state) => {\n await state.assertRecipeACL(state.pathParams.recipe_name, false);\n\n await state.$transaction(async prisma => {\n const server = new TiddlerServer(state, prisma);\n await server.serveIndexFile(state.pathParams.recipe_name);\n });\n\n throw STREAM_ENDED;\n });\n\n private sendTiddlerInfo = async (\n state: StateObject,\n tiddlerInfo: Awaited<ReturnType<TiddlerServer[\"getBagTiddler\"]>>\n ) => {\n\n zodAssert.queryParams(state, z => ({\n fallback: z.array(z.string()).optional()\n }));\n // fallbacks are kind of slow, I'm not sure if this is a good idea\n if (!tiddlerInfo || !tiddlerInfo.tiddler) {\n // Redirect to fallback URL if tiddler not found\n const fallback = state.queryParams.fallback?.[0];\n if (fallback) {\n // await state.pushStream(fallback);\n throw state.redirect(fallback);\n } else {\n throw state.sendEmpty(404, { \"x-reason\": \"tiddler not found (no fallback)\" });\n }\n }\n\n return tiddlerInfo;\n }\n\n\n}\n","\nimport * as opaque from \"@serenity-kit/opaque\";\nimport { TypedGenerator } from \"../../utils\";\nimport { randomBytes } from \"node:crypto\";\nimport { ok } from \"node:assert\";\n\nexport type PasswordService = Awaited<ReturnType<typeof createPasswordService>>;\n\nexport async function createPasswordService(serverSetup: string) {\n await opaque.ready;\n\n const serverState = new Map<string, TypedGenerator<LoginGeneratorStates>>();\n\n const LoginGenerator = TypedGenerator.wrapper<LoginGeneratorStates>()(async function* ({\n user_id,\n startLoginRequest,\n registrationRecord,\n }: {\n user_id: PrismaField<\"Users\", \"user_id\">;\n startLoginRequest: string;\n registrationRecord: string;\n }): any {\n\n const { asV, asY } = TypedGenerator.checker<LoginGeneratorStates>();\n\n const { serverLoginState, loginResponse } = opaque.server.startLogin({\n serverSetup,\n userIdentifier: user_id.toString(),\n registrationRecord,\n startLoginRequest,\n });\n\n const timestamp = Date.now();\n\n const finishLoginRequest = asV(1, yield asY(0, loginResponse));\n\n // this is supposed to be programmatic\n // it should never last longer than five minutes\n if (timestamp + 1000 * 60 * 5 < Date.now()) return;\n\n // per the spec, the sessionKey will only be returned \n // if the client's session key has been verified.\n return asY(1, {\n session: opaque.server.finishLogin({\n finishLoginRequest,\n serverLoginState,\n }),\n user_id,\n });\n\n });\n\n /**\n * This code creates a password registration. It can be used for temporary passwords, if needed. \n */\n async function PasswordCreation(userID: string, password: string) {\n // client\n\n const { clientRegistrationState, registrationRequest } = opaque.client.startRegistration({ password });\n\n // server\n const userIdentifier = userID; // userId/email/username\n\n const { registrationResponse } = opaque.server.createRegistrationResponse({\n serverSetup,\n userIdentifier,\n registrationRequest,\n });\n\n // client\n const { registrationRecord } = opaque.client.finishRegistration({\n clientRegistrationState,\n registrationResponse,\n password,\n });\n\n return registrationRecord as PrismaField<\"Users\", \"password\">;\n\n }\n\n\n\n async function createRegistrationResponse({ userID, registrationRequest }: {\n userID: PrismaField<\"Users\", \"user_id\">;\n registrationRequest: string;\n }) {\n\n const { registrationResponse } = opaque.server.createRegistrationResponse({\n serverSetup,\n userIdentifier: userID.toString(),\n registrationRequest,\n });\n\n return registrationResponse;\n\n }\n\n async function startLoginSession(stater: TypedGenerator<LoginGeneratorStates>) {\n let loginSession;\n do { loginSession = randomBytes(16).toString(\"base64url\"); }\n while (serverState.has(loginSession));\n serverState.set(loginSession, stater);\n return loginSession;\n }\n\n async function finishLoginSession(loginSession: string) {\n const stater = serverState.get(loginSession);\n if (stater) serverState.delete(loginSession);\n return stater;\n }\n\n return {\n serverState,\n LoginGenerator,\n PasswordCreation,\n createRegistrationResponse,\n startLoginSession,\n finishLoginSession\n }\n\n}\n\n\ntype LoginGeneratorStates = [\n [void, loginResponse: string],\n [finishLoginRequest: string, {\n user_id: PrismaField<\"Users\", \"user_id\">,\n session: { sessionKey: string; } | undefined\n }]\n]\n\n\n\n\n/** \n * This code verifies plain text passwords. \n * It shouldn't be used in production, \n * but this is how it would be done. \n */\nfunction PasswordVerification(userID: string, registrationRecord: string, password: string, serverSetup: string) {\n\n const { clientLoginState, startLoginRequest } = opaque.client.startLogin({ password, });\n\n // server\n const userIdentifier = userID;\n\n const { serverLoginState, loginResponse } = opaque.server.startLogin({\n serverSetup,\n userIdentifier,\n registrationRecord,\n startLoginRequest,\n });\n\n // client\n const loginResult = opaque.client.finishLogin({\n clientLoginState,\n loginResponse,\n password,\n });\n\n if (!loginResult) { throw new Error(\"Login failed\"); }\n\n const { finishLoginRequest, sessionKey } = loginResult;\n\n // server\n // the server session key is only returned after verifying the client's response, \n // which validates that the client actually has the session key.\n const { sessionKey: serversessionkey } = opaque.server.finishLogin({\n finishLoginRequest,\n serverLoginState,\n });\n\n // This is never done in production, as the key must not be sent across the wire.\n ok(sessionKey === serversessionkey);\n\n return { sessionKey };\n\n}","import { tryParseJSON } from \"../../utils\";\nimport * as path from \"path\";\nimport * as fs from \"fs\";\nimport { SiteConfig } from \"../router\";\nimport sjcl from \"sjcl\";\nexport interface TiddlerFields extends Record<string, any> {\n title: PrismaField<\"Tiddlers\", \"title\">;\n}\nconst $tw: any = {};\n\n\n/*\n\nClass to handle the attachments in the filing system\n\nThe store folder looks like this:\n\nstore/\n\tinbox/ - files that are in the process of being uploaded via a multipart form upload\n\t\t202402282125432742/\n\t\t\t0\n\t\t\t1\n\t\t\t...\n\t\t...\n\tfiles/ - files that are the text content of large tiddlers\n\t\tb7def178-79c4-4d88-b7a4-39763014a58b/\n\t\t\tdata.jpg - the extension is provided for convenience when directly inspecting the file system\n\t\t\tmeta.json - contains:\n\t\t\t\t{\n\t\t\t\t\t\"filename\": \"data.jpg\",\n\t\t\t\t\t\"type\": \"video/mp4\",\n\t\t\t\t\t\"uploaded\": \"2024021821224823\"\n\t\t\t\t}\n\tdatabase.sql - The database file (managed by sql-tiddler-database.js)\n\n*/\n\nexport class AttachmentService {\n\n constructor(\n protected config: SiteConfig,\n protected prisma: PrismaTxnClient,\n ) { \n\n }\n\n makeCanonicalUri(bag_name: string, title: string) {\n return `/bags/${encodeURIComponentExtended(bag_name)}/tiddlers/${encodeURIComponentExtended(title)}/blob`;\n }\n /*\n Given tiddler fields, tiddler_id and a bag_name, return the tiddler fields after the following process:\n - Apply the tiddler_id as the revision field\n - Apply the bag_name as the bag field\n */\n processOutgoingTiddler({ tiddler, tiddler_id, bag_name, attachment_hash }: {\n tiddler: TiddlerFields;\n tiddler_id: any;\n bag_name: PrismaField<\"Bags\", \"bag_name\">;\n attachment_hash: PrismaField<\"Tiddlers\", \"attachment_hash\">;\n }) {\n if (attachment_hash !== null) {\n return Object.assign(\n {},\n tiddler,\n {\n text: undefined,\n _canonical_uri: this.makeCanonicalUri(bag_name, tiddler.title),\n revision: tiddler_id,\n bag: bag_name\n }\n );\n } else {\n return tiddler;\n }\n }\n /*\n */\n async processIncomingTiddler({\n tiddlerFields, existing_attachment_hash, existing_canonical_uri\n }: {\n tiddlerFields: TiddlerFields;\n existing_attachment_hash: PrismaField<\"Tiddlers\", \"attachment_hash\">;\n existing_canonical_uri: any;\n }) {\n const { attachmentSizeLimit, attachmentsEnabled, } = this.config;\n const contentTypeInfo = this.config.contentTypeInfo[tiddlerFields.type || \"text/vnd.tiddlywiki\"];\n const isBinary = !!contentTypeInfo && contentTypeInfo.encoding === \"base64\";\n\n let shouldProcessAttachment = tiddlerFields.text && tiddlerFields.text.length > attachmentSizeLimit;\n\n if (existing_attachment_hash) {\n const fileSize = await this.getAttachmentFileSize(existing_attachment_hash);\n if (fileSize && fileSize <= attachmentSizeLimit) {\n const existingAttachmentMeta = await this.getAttachmentMetadata(existing_attachment_hash);\n const hasCanonicalField = !!tiddlerFields._canonical_uri;\n const skipAttachment = hasCanonicalField && (tiddlerFields._canonical_uri === (existingAttachmentMeta ? existingAttachmentMeta._canonical_uri : existing_canonical_uri));\n shouldProcessAttachment = !skipAttachment;\n } else {\n shouldProcessAttachment = false;\n }\n }\n\n if (attachmentsEnabled && isBinary && shouldProcessAttachment) {\n const attachment_hash = existing_attachment_hash || await this.saveAttachment({\n text: tiddlerFields.text,\n type: tiddlerFields.type,\n reference: tiddlerFields.title,\n _canonical_uri: tiddlerFields._canonical_uri\n });\n\n if (tiddlerFields && tiddlerFields._canonical_uri) {\n delete tiddlerFields._canonical_uri;\n }\n\n return {\n tiddlerFields: Object.assign({}, tiddlerFields, { text: undefined }),\n attachment_hash: attachment_hash\n };\n } else {\n return {\n tiddlerFields: tiddlerFields,\n attachment_hash: existing_attachment_hash\n };\n }\n }\n\n /*\n Check if an attachment name is valid (is a 64 character hex string)\n */\n isValidAttachmentName(content_hash: string) {\n const re = new RegExp('^[a-f0-9]{64}$');\n return re.test(content_hash);\n }\n /*\n Saves an attachment to a file. Options include:\n \n text: text content (may be binary)\n type: MIME type of content\n reference: reference to use for debugging\n _canonical_uri: canonical uri of the content\n */\n async saveAttachment(options: {\n text: string;\n type: string;\n reference: string;\n _canonical_uri: string;\n }) {\n\n // Compute the content hash for naming the attachment\n const contentHash = sjcl.codec.hex.fromBits($tw.sjcl.hash.sha256.hash(options.text)).slice(0, 64).toString();\n // Choose the best file extension for the attachment given its type\n const contentTypeInfo = this.config.contentTypeInfo[options.type] || this.config.contentTypeInfo[\"application/octet-stream\"];\n // Creat the attachment directory\n const attachmentPath = path.resolve(this.config.storePath, \"files\", contentHash);\n createDirectory(attachmentPath);\n // Save the data file\n const dataFilename = \"data\" + contentTypeInfo.extension;\n fs.writeFileSync(path.resolve(attachmentPath, dataFilename), options.text, contentTypeInfo.encoding);\n // Save the meta.json file\n this.writeMetaFile(fs, path, attachmentPath, options, contentHash, dataFilename);\n return contentHash as PrismaField<\"Tiddlers\", \"attachment_hash\">;\n }\n private writeMetaFile(fs: any, path: any, attachmentPath: any, options: { text: string; type: string; reference: string; _canonical_uri: string; }, contentHash: any, dataFilename: string) {\n fs.writeFileSync(path.resolve(attachmentPath, \"meta.json\"), JSON.stringify({\n _canonical_uri: options._canonical_uri,\n created: new Date().toISOString(),\n modified: new Date().toISOString(),\n contentHash: contentHash,\n filename: dataFilename,\n type: options.type\n }, null, 4));\n }\n\n /*\n Adopts an attachment file into the store (e.g. move from a temp upload directory)\n */\n async adoptAttachment({ incomingFilepath, type, hash, _canonical_uri }: {\n incomingFilepath: any;\n type: string | number;\n hash: any;\n _canonical_uri: any;\n }) {\n // Choose the best file extension for the attachment given its type\n const contentTypeInfo = this.config.contentTypeInfo[type] || this.config.contentTypeInfo[\"application/octet-stream\"];\n // Creat the attachment directory\n const attachmentPath = path.resolve(this.config.storePath, \"files\", hash);\n createDirectory(attachmentPath);\n // Rename the data file\n const dataFilename = \"data\" + contentTypeInfo.extension, dataFilepath = path.resolve(attachmentPath, dataFilename);\n fs.renameSync(incomingFilepath, dataFilepath);\n // Save the meta.json file\n fs.writeFileSync(path.resolve(attachmentPath, \"meta.json\"), JSON.stringify({\n _canonical_uri: _canonical_uri,\n created: new Date().toISOString(),\n modified: new Date().toISOString(),\n contentHash: hash,\n filename: dataFilename,\n type: type\n }, null, 4));\n return hash;\n }\n /*\n Get an attachment ready to stream. Returns null if there is an error or:\n stream: filestream of file\n type: type of file\n */\n async getAttachmentStream(content_hash: string) {\n // Check the attachment name\n if (!this.isValidAttachmentName(content_hash)) return null;\n\n // Construct the path to the attachment directory\n const attachmentPath = path.resolve(this.config.storePath, \"files\", content_hash);\n\n // Read the meta.json file\n const metaJsonPath = path.resolve(attachmentPath, \"meta.json\");\n if (!fs.existsSync(metaJsonPath) || !fs.statSync(metaJsonPath).isFile()) return null;\n\n const meta = tryParseJSON<any>(fs.readFileSync(metaJsonPath, \"utf8\"));\n if (!meta) return null;\n\n const dataFilepath = path.resolve(attachmentPath, meta.filename);\n // Check if the data file exists\n if (!fs.existsSync(dataFilepath) || !fs.statSync(dataFilepath).isFile()) return null\n\n // Stream the file\n return {\n stream: fs.createReadStream(dataFilepath),\n type: meta.type\n };\n\n\n }\n /*\n Get the size of an attachment file given the contentHash.\n Returns the size in bytes, or null if the file doesn't exist.\n */\n async getAttachmentFileSize(content_hash: PrismaField<\"Tiddlers\", \"attachment_hash\"> & {}) {\n // Construct the path to the attachment directory\n const attachmentPath = path.resolve(this.config.storePath, \"files\", content_hash);\n // Read the meta.json file\n const metaJsonPath = path.resolve(attachmentPath, \"meta.json\");\n if (!(fs.existsSync(metaJsonPath) && fs.statSync(metaJsonPath).isFile())) return null\n const meta = tryParseJSON<any>(fs.readFileSync(metaJsonPath, \"utf8\"));\n if (!meta) return null;\n const dataFilepath = path.resolve(attachmentPath, meta.filename);\n // Check if the data file exists and return its size\n if (!(fs.existsSync(dataFilepath) && fs.statSync(dataFilepath).isFile())) return null;\n return fs.statSync(dataFilepath).size;\n }\n\n async getAttachmentMetadata(content_hash: PrismaField<\"Tiddlers\", \"attachment_hash\"> & {}) {\n const attachmentPath = path.resolve(this.config.storePath, \"files\", content_hash);\n const metaJsonPath = path.resolve(attachmentPath, \"meta.json\");\n if (!fs.existsSync(metaJsonPath)) return null;\n return JSON.parse(fs.readFileSync(metaJsonPath, \"utf8\"));\n }\n\n}\n\n","\nimport { Streamer } from \"../../streamer\";\nimport { randomBytes } from \"node:crypto\";\nimport { registerZodRoutes, Router, RouterKeyMap, RouterRouteMap, zodRoute, ZodState } from \"../router\";\nimport { StateObject } from \"../../StateObject\";\nimport { z } from \"zod\";\nimport { JsonValue, Z2 } from \"../../utils\";\n\nexport interface AuthUser {\n /** User ID. 0 if the user is not logged in. */\n user_id: PrismaField<\"Users\", \"user_id\">;\n /** User role_ids. This may have length even if the user isn't logged in, to allow ACL for anon. */\n role_ids: PrismaField<\"Roles\", \"role_id\">[];\n /** Username passed to the client */\n username: PrismaField<\"Users\", \"username\">;\n /** A session_id isn't guarenteed. There may be a session even if the user isn't logged in, and may not be even if they are, depending on the the situation. */\n sessionId: PrismaField<\"Sessions\", \"session_id\"> | undefined;\n /** Is this user considered a site-admin. This is determined by the auth service, not MWS. */\n isAdmin: boolean;\n /** Is the user logged in? This also means that user_id should be 0. role_ids may still be specified. */\n isLoggedIn: boolean;\n}\n\nexport const SessionKeyMap: RouterKeyMap<SessionManager, true> = {\n login1: true,\n login2: true,\n logout: true,\n}\n\n\n/**\n * \n * @param path path starting with a forward slash\n * @param zodRequest the zod for state.data\n * @param inner the handler to call\n * @returns the ZodRoute\n */\nexport function zodSession<T extends z.ZodTypeAny, R extends JsonValue>(\n path: string,\n zodRequest: (z: Z2<\"JSON\">) => T,\n inner: (state: ZodState<\"POST\", \"json\", Record<string, z.ZodTypeAny>, T>, prisma: PrismaTxnClient) => Promise<R>\n) {\n return zodRoute([\"POST\"], path, z => ({}), \"json\", zodRequest, async state => {\n return state.$transaction(async (prisma) => await inner(state, prisma));\n });\n}\n\n\nexport type SessionManagerMap = RouterRouteMap<SessionManager>;\n\nexport class SessionManager {\n\n static async defineRoutes(root: rootRoute) {\n registerZodRoutes(root, new SessionManager(), Object.keys(SessionKeyMap))\n }\n\n static async parseIncomingRequest(streamer: Streamer, router: Router): Promise<AuthUser> {\n\n const sessionId = streamer.cookies.session as PrismaField<\"Sessions\", \"session_id\"> | undefined;\n const session = sessionId && await router.engine.sessions.findUnique({\n where: { session_id: sessionId },\n select: { user: { select: { user_id: true, username: true, roles: { select: { role_id: true } } } } }\n });\n\n if (sessionId && session) return {\n user_id: session.user.user_id,\n username: session.user.username,\n isAdmin: session.user.roles.some(e => e.role_id === 1),\n role_ids: session.user.roles.map(e => e.role_id),\n sessionId,\n isLoggedIn: true,\n };\n else return {\n user_id: 0 as PrismaField<\"Users\", \"user_id\">,\n username: \"(anon)\" as PrismaField<\"Users\", \"username\">,\n isAdmin: false,\n role_ids: [] as PrismaField<\"Roles\", \"role_id\">[],\n sessionId: undefined as PrismaField<\"Sessions\", \"session_id\"> | undefined,\n isLoggedIn: false,\n };\n }\n\n login1 = zodSession(\"/login/1\", z => z.object({\n username: z.prismaField(\"Users\", \"username\", \"string\"),\n startLoginRequest: z.string(),\n }), async (state, prisma) => {\n const { username, startLoginRequest } = state.data;\n\n const user = await prisma.users.findUnique({\n where: { username },\n select: { user_id: true, password: true, }\n });\n\n if (!user) throw \"User not found.\";\n\n const { user_id, password } = user;\n\n const stater = state.PasswordService.LoginGenerator({\n user_id,\n startLoginRequest,\n registrationRecord: password,\n });\n\n const loginResponse = await stater.next(0);\n\n if (loginResponse.done) throw \"Login failed.\";\n\n const loginSession = await state.PasswordService.startLoginSession(stater);\n\n state.setCookie(\"loginsession\", loginSession, { httpOnly: true, path: \"/\", secure: state.isSecure, sameSite: \"Strict\" });\n\n return { loginResponse: loginResponse.value };\n\n })\n\n login2 = zodSession(\"/login/2\", z => z.object({\n finishLoginRequest: z.string()\n }), async (state, prisma) => {\n const { finishLoginRequest } = state.data;\n\n if (!state.cookies.loginsession) throw \"Login session not found.\";\n\n const stater = state.PasswordService.serverState.get(state.cookies.loginsession);\n\n if (!stater) throw \"Login session not found.\";\n\n const { done, value } = await stater.next(1, finishLoginRequest);\n\n if (!value?.session?.sessionKey) throw \"Login failed.\";\n\n const session_id = await this.createSession(prisma, value.user_id, value.session.sessionKey);\n\n state.setCookie(\"session\", session_id, { httpOnly: true, path: \"/\", secure: state.isSecure, sameSite: \"Strict\" });\n\n return null;\n\n })\n\n logout = zodSession(\"/logout\", z => z.undefined(), async (state, prisma) => {\n\n if (state.user.isLoggedIn) {\n await prisma.sessions.delete({ where: { session_id: state.user.sessionId } });\n }\n var cookies = state.headers.cookie ? state.headers.cookie.split(\";\") : [];\n for (var i = 0; i < cookies.length; i++) {\n var cookie = cookies[i]?.trim().split(\"=\")[0];\n if (!cookie) continue;\n // state.setHeader(\"Set-Cookie\", cookie + \"=; HttpOnly; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Strict\");\n state.setCookie(cookie, \"\", { httpOnly: true, path: \"/\", expires: new Date(0), secure: state.isSecure, sameSite: \"Strict\" });\n }\n\n return null;\n });\n\n async createSession(prisma: PrismaTxnClient, user_id: PrismaField<\"Users\", \"user_id\">, session_key: string) {\n const session_id = randomBytes(16).toString(\"base64url\");\n return await prisma.sessions.create({\n data: {\n user_id,\n session_key,\n session_id,\n last_accessed: new Date(),\n }\n }).then(({ session_id }) => session_id);\n }\n}","import { readdirSync, statSync } from \"fs\";\nimport { rootRoute, SiteConfig } from \"./router\";\nimport { ZodAssert } from \"../utils\";\nimport { Prisma, PrismaClient } from \"@prisma/client\";\nimport { ManagerRoutes } from \"./managers\";\nimport { TiddlerRouter } from \"./managers/router-tiddlers\";\n\ndeclare global { const ENABLE_UNSAFE_PRISMA_ROUTE: any; }\n\nexport default async function RootRoute(root: rootRoute, config: SiteConfig) {\n // TiddlerServer.defineRoutes(root);\n TiddlerRouter.defineRoutes(root);\n ManagerRoutes(root, config);\n if (typeof ENABLE_UNSAFE_PRISMA_ROUTE !== \"undefined\")\n root.defineRoute({\n method: [\"POST\"],\n path: /^\\/prisma$/,\n bodyFormat: \"json\",\n }, async state => {\n ZodAssert.data(state, z => z.object({\n table: z.string(),\n action: z.string(),\n arg: z.any(),\n }));\n return await state.$transaction(async prisma => {\n // DEV: this just lets the client directly call the database. \n // TODO: it's just for dev purposes and will be removed later. \n // DANGER: it circumvents all security and can totally rewrite the ACL.\n const p: any = prisma;\n const table = p[state.data.table];\n if (!table) throw new Error(`No such table`);\n const fn = table[state.data.action];\n if (!fn) throw new Error(`No such table or action`);\n console.log(state.data.arg);\n return state.sendJSON(200, await fn.call(table, state.data.arg));\n });\n });\n\n\n await importEsbuild(root);\n}\nasync function importDir(root: rootRoute, folder: string) {\n await Promise.all(readdirSync(`src/routes/${folder}`).map(async (item) => {\n const stat = statSync(`src/routes/${folder}/${item}`);\n if (stat.isFile()) {\n const e = await import(`./${folder}/${item}`);\n if (!e.route) throw new Error(`No route defined in ${item}`);\n e.route(root, ZodAssert);\n } else if (stat.isDirectory()) {\n await importDir(root, `${folder}/${item}`);\n }\n }));\n}\n\nasync function importEsbuild(root: rootRoute) {\n // \"build\": \"tsc -b; esbuild main=src/main.tsx \n // --outdir=public --bundle --target=es2020 \n // --platform=browser --jsx=automatic\"\n\n\n root.defineRoute({\n method: ['GET'],\n path: /^\\/(.*)/,\n pathParams: ['reqpath'],\n bodyFormat: \"stream\",\n }, async state => {\n await state.sendDevServer();\n });\n}\n\n\nclass ProxyPromise {\n static getErrorStack(t: ProxyPromise) { return t.#error.stack; }\n action: any;\n table: any;\n arg: any;\n #error = new Error(\"An error occured for this request\");\n constructor({ action, table, arg }: Omit<ProxyPromise, \"#error\">) {\n this.action = action;\n this.table = table;\n this.arg = arg;\n Object.defineProperty(this, \"toJSON\", {\n configurable: true,\n enumerable: true,\n value: () => ({\n action: this.action,\n table: this.table,\n arg: this.arg,\n dbnulls: this.arg.data && findValueInObject(this.arg.data, e => e === Prisma.DbNull),\n jsnulls: this.arg.data && findValueInObject(this.arg.data, e => e === Prisma.JsonNull),\n })\n })\n }\n}\n\nfunction findValueInObject(val: any, predicate: (val: any) => boolean, keys: string[] = [], paths: string[] = []): any {\n if (predicate(val)) {\n paths.push(keys.join(\"/\"));\n return paths;\n }\n if (val && typeof val === \"object\") {\n for (const key of Object.keys(val)) {\n if (!val.hasOwnProperty(key)) continue;\n findValueInObject(val[key], predicate, [...keys, key], paths);\n }\n }\n console.log(paths, keys);\n return paths;\n}\n\nfunction capitalize<T extends string>(table: T): Capitalize<T> {\n return table.slice(0, 1).toUpperCase() + table.slice(1) as any;\n}\n\n\nconst argproxy: {\n [Table in keyof PrismaClient]: {\n [Action in keyof PrismaClient[Table]]:\n PrismaClient[Table][Action] extends (...args: any) => any\n ? <T extends Parameters<PrismaClient[Table][Action]>[0]>(arg: T) => {\n table: Table,\n action: Action,\n arg: T,\n result: Awaited<ReturnType<PrismaClient[Table][Action]>>,\n }\n : never\n }\n} = (() => new Proxy<any>({}, {\n get(target: any, table: any) {\n return target[table] = target[table] || new Proxy<any>({}, {\n get(target: any, action: any) {\n return target[action] = target[action] || ((arg: any) => {\n return new ProxyPromise({ action, table: capitalize(table) as any, arg });\n })\n },\n })\n },\n}))();","\nimport { request } from \"http\";\nimport { resolve } from \"path\";\nimport { StateObject } from \"./StateObject\";\nimport { dist_resolve } from \"./utils\";\n\n\n\nexport async function setupDevServer<T extends StateObject>(enableDevServer: string | undefined) {\n\n if (!enableDevServer) {\n return async function sendProdServer(state: T) {\n\n const rootdir = dist_resolve('../react-user-mgmt/public');\n // use sendFile directly instead of having the dev server send it\n return state.sendFile(200, {}, {\n root: rootdir,\n reqpath: state.url === \"/\" ? \"/index.html\" : state.url,\n on404: () => state.sendFile(200, {}, { reqpath: \"/index.html\", root: rootdir, })\n });\n };\n } else {\n const esbuild = await import(\"esbuild\");\n\n const rootdir = resolve(enableDevServer, 'react-user-mgmt');\n\n let ctx = await esbuild.context({\n entryPoints: [resolve(rootdir, 'src/main.tsx')],\n bundle: true,\n target: 'es2020',\n platform: 'browser',\n jsx: 'automatic',\n outdir: resolve(rootdir, 'public'),\n minify: true,\n sourcemap: true,\n });\n\n const { port } = await ctx.serve({\n servedir: resolve(rootdir, 'public'),\n fallback: resolve(rootdir, 'public/index.html'),\n });\n\n return async function sendDevServer(state: T) {\n const proxyRes = await new Promise<import(\"http\").IncomingMessage>((resolve, reject) => {\n const headers = { ...state.headers };\n delete headers[\":method\"];\n delete headers[\":path\"];\n delete headers[\":authority\"];\n delete headers[\":scheme\"];\n headers.host = \"localhost\";\n const proxyReq = request({\n hostname: \"localhost\",\n port: port,\n path: state.url,\n method: state.method,\n headers,\n }, resolve);\n state.reader.pipe(proxyReq, { end: true });\n });\n\n const { statusCode, headers } = proxyRes;\n if (statusCode === 404 || !statusCode) {\n proxyRes.resume();\n return state.sendEmpty(404, { 'Content-Type': 'text/html' });\n } else {\n return state.sendStream(statusCode as number, headers, proxyRes);\n }\n\n };\n }\n}\n","import { ok } from \"assert\";\nimport { truthy } from \"../utils\";\nimport { Commander } from \"../commander\";\n\nexport async function startupCache(commander: Commander) {\n const $tw = commander.$tw;\n\n const bootTiddlers = $tw.loadTiddlersFromPath($tw.boot.bootPath).flatMap(file => file.tiddlers);\n const coreTiddler = $tw.loadPluginFolder($tw.boot.corePath);\n ok(coreTiddler);\n\n // map ( title -> content )\n const tiddlerMemoryCache = new Map<string, string>([\n ...bootTiddlers.map(e => e.title && [e.title, JSON.stringify(e)] as const).filter(truthy),\n [coreTiddler.title as string, JSON.stringify(coreTiddler)] as const,\n ]);\n\n // map ( title -> hash )\n // tiddler cache files are named [hash].json\n const tiddlerFileCache = new Map<string, string>();\n\n return { tiddlerFileCache, tiddlerMemoryCache };\n}\n\nexport type CacheState = ART<typeof startupCache>;\n","import { STREAM_ENDED, Streamer } from \"../streamer\";\nimport { StateObject } from \"../StateObject\";\nimport RootRoute from \".\";\nimport * as z from \"zod\";\nimport { createStrictAwaitProxy, JsonValue, truthy, Z2 } from \"../utils\";\nimport { Route, rootRoute, RouteOptAny, RouteMatch, } from \"../utils\";\nimport { MWSConfigConfig } from \"../server\";\nimport { setupDevServer } from \"../setupDevServer\";\nimport { Commander } from \"../commander\";\nimport { CacheState, startupCache } from \"./cache\";\n\nexport { RouteMatch, Route, rootRoute };\n\nexport const AllowedMethods = [...[\"GET\", \"HEAD\", \"OPTIONS\", \"POST\", \"PUT\", \"DELETE\"] as const];\nexport type AllowedMethod = typeof AllowedMethods[number];\n\nexport const BodyFormats = [\"stream\", \"string\", \"json\", \"buffer\", \"www-form-urlencoded\", \"www-form-urlencoded-urlsearchparams\", \"ignore\"] as const;\nexport type BodyFormat = typeof BodyFormats[number];\n\nexport const PermissionName = []\n\nconst zodTransformJSON = (arg: string, ctx: z.RefinementCtx) => {\n try {\n if (arg === \"\") return undefined;\n return JSON.parse(arg, (key, value) => {\n //https://github.com/fastify/secure-json-parse\n if (key === '__proto__')\n throw new Error('Invalid key: __proto__');\n if (key === 'constructor' && Object.prototype.hasOwnProperty.call(value, 'prototype'))\n throw new Error('Invalid key: constructor.prototype');\n return value;\n });\n } catch (e) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: e instanceof Error ? e.message : `${e}`,\n fatal: true,\n });\n return z.NEVER;\n }\n};\n\nexport interface SiteConfig extends MWSConfigConfig {\n wikiPath: string;\n attachmentSizeLimit: number;\n attachmentsEnabled: boolean;\n contentTypeInfo: Record<string, any>;\n saveLargeTextToFileSystem: never;\n storePath: string;\n}\n\nexport class Router {\n\n static async makeRouter(\n commander: Commander,\n enableDevServer: string | undefined\n ) {\n\n const sendDevServer = await setupDevServer(enableDevServer);\n\n const rootRoute = defineRoute(ROOT_ROUTE, {\n method: AllowedMethods,\n path: /^/,\n denyFinal: true,\n }, async (state: StateObject) => {\n state.sendDevServer = sendDevServer.bind(undefined, state);\n });\n\n await commander.SessionManager.defineRoutes(rootRoute);\n\n await RootRoute(rootRoute, commander.siteConfig);\n\n const cache = await startupCache(commander);\n\n return new Router(rootRoute, commander, cache);\n }\n\n\n pathPrefix: string = \"\";\n enableBrowserCache: boolean = true;\n enableGzip: boolean = false;\n csrfDisable: boolean = false;\n servername: string = \"\";\n variables = new Map();\n get(name: string): string {\n return this.variables.get(name) || \"\";\n }\n public engine: Commander[\"engine\"];\n private SessionManager: Commander[\"SessionManager\"];\n\n constructor(\n private rootRoute: rootRoute,\n private commander: Commander,\n private tiddlerCache: CacheState,\n ) {\n this.engine = commander.engine;\n this.SessionManager = commander.SessionManager;\n\n }\n\n async handle(streamer: Streamer) {\n\n if (!this.csrfDisable\n && [\"POST\", \"PUT\", \"DELETE\"].includes(streamer.method)\n && streamer.headers[\"x-requested-with\"] !== \"TiddlyWiki\"\n )\n throw streamer.sendString(403, { \"x-reason\": \"x-requested-with missing\" },\n `'X-Requested-With' header required to login to '${this.servername}'`, \"utf8\");\n\n const authUser = await this.SessionManager.parseIncomingRequest(streamer, this);\n\n /** This should always have a length of at least 1 because of the root route. */\n const routePath = this.findRoute(streamer);\n if (!routePath.length || routePath[routePath.length - 1]?.route.denyFinal)\n return streamer.sendEmpty(404, { \"x-reason\": \"no-route\" });\n\n // Optionally output debug info\n console.log(streamer.method, streamer.url);\n // if no bodyFormat is specified, we default to \"buffer\" since we do still need to recieve the body\n const bodyFormat = routePath.find(e => e.route.bodyFormat)?.route.bodyFormat || \"buffer\";\n\n type statetype = { [K in BodyFormat]: StateObject<K> }[BodyFormat]\n\n const state = createStrictAwaitProxy(\n new StateObject(\n streamer,\n routePath,\n bodyFormat,\n authUser,\n this.commander,\n this.tiddlerCache,\n ) as statetype\n );\n\n\n const method = streamer.method;\n\n // anything that sends a response before this should have thrown, but just in case\n if (streamer.headersSent) return;\n\n if ([\"GET\", \"HEAD\"].includes(method)) state.bodyFormat = \"ignore\";\n\n if (state.bodyFormat === \"stream\" || state.bodyFormat === \"ignore\") {\n // this starts dumping bytes early, rather than letting node do it once the res finishes.\n // the only advantage is that it eases congestion on the socket.\n if (state.bodyFormat === \"ignore\") streamer.reader.resume();\n\n return await this.handleRoute(state, routePath);\n }\n if (state.bodyFormat === \"string\" || state.bodyFormat === \"json\") {\n state.data = (await state.readBody()).toString(\"utf8\");\n if (state.bodyFormat === \"json\") {\n // make sure this parses as valid data\n const { success, data } = z.string().transform(zodTransformJSON).safeParse(state.data);\n if (!success) return state.sendEmpty(400, {});\n state.data = data;\n }\n } else if (state.bodyFormat === \"www-form-urlencoded-urlsearchparams\"\n || state.bodyFormat === \"www-form-urlencoded\") {\n const data = state.data = new URLSearchParams((await state.readBody()).toString(\"utf8\"));\n if (state.bodyFormat === \"www-form-urlencoded\") {\n state.data = Object.fromEntries(data);\n }\n } else if (state.bodyFormat === \"buffer\") {\n state.data = await state.readBody();\n } else {\n // because it's a union, state becomes never at this point if we matched every route correctly\n // make sure state is never by assigning it to a never const. This will error if something is missed.\n const t: never = state;\n const state2: StateObject = state as any;\n return state2.sendString(500, {}, \"Invalid bodyFormat: \" + state2.bodyFormat, \"utf8\");\n }\n\n return await this.handleRoute(state, routePath);\n\n }\n\n\n\n async handleRoute(state: StateObject<BodyFormat>, route: RouteMatch[]) {\n\n let result: any = state;\n for (const match of route) {\n await match.route.handler(result);\n if (state.headersSent) return;\n }\n if (!state.headersSent) {\n state.sendEmpty(404, {});\n console.log(\"No handler sent headers before the promise resolved.\");\n }\n\n }\n\n findRouteRecursive(\n routes: Route[],\n testPath: string,\n method: AllowedMethod\n ): RouteMatch[] {\n for (const potentialRoute of routes) {\n // Skip if the method doesn't match.\n if (!potentialRoute.method.includes(method)) continue;\n\n // Try to match the path.\n const match = potentialRoute.path.exec(testPath);\n\n if (match) {\n // The matched portion of the path.\n const matchedPortion = match[0];\n // Remove the matched portion from the testPath.\n const remainingPath = testPath.slice(matchedPortion.length) || \"/\";\n\n const result = {\n route: potentialRoute,\n params: match.slice(1),\n remainingPath,\n };\n const { childRoutes = [] } = potentialRoute as any; // see this.defineRoute\n // If there are inner routes, try to match them recursively.\n if (childRoutes.length > 0) {\n const innerMatch = this.findRouteRecursive(\n childRoutes,\n remainingPath,\n method\n );\n return [result, ...innerMatch];\n } else {\n return [result];\n }\n }\n }\n return [];\n }\n\n /**\n * \n * Top-level function that starts matching from the root routes.\n * Notice that the pathPrefix is assumed to have been handled beforehand.\n * \n * @param streamer \n * @returns The tree path matched\n */\n findRoute(streamer: Streamer): RouteMatch[] {\n const { method, urlInfo } = streamer;\n let testPath = urlInfo.pathname || \"/\";\n if (this.pathPrefix && testPath.startsWith(this.pathPrefix))\n testPath = testPath.slice(this.pathPrefix.length) || \"/\";\n return this.findRouteRecursive([this.rootRoute as any], testPath, method);\n }\n\n}\n\nconst ROOT_ROUTE: unique symbol = Symbol(\"ROOT_ROUTE\");\nfunction defineRoute(\n parent: { $o?: any, method: any } | typeof ROOT_ROUTE,\n route: RouteOptAny,\n handler: (state: any) => any,\n) {\n\n if (route.bodyFormat && !BodyFormats.includes(route.bodyFormat))\n throw new Error(\"Invalid bodyFormat: \" + route.bodyFormat);\n if (!route.method.every(e => (parent === ROOT_ROUTE ? AllowedMethods : parent.method).includes(e)))\n throw new Error(\"Invalid method: \" + route.method);\n if (route.path.source[0] !== \"^\")\n throw new Error(\"Path regex must start with ^\");\n\n if (parent !== ROOT_ROUTE) {\n // the typing is too complicated if we add childRoutes\n if (!(parent as any).childRoutes) (parent as any).childRoutes = [];\n (parent as any).childRoutes.push(route);\n }\n\n (route as any).defineRoute = (...args: [any, any]) => defineRoute(route, ...args);\n\n (route as Route).handler = handler;\n\n return route as any; // this is usually ignored except for the root route.\n}\n\n\nexport interface ZodAction<T extends z.ZodTypeAny, R extends JsonValue> {\n // (state: StateObject): Promise<typeof STREAM_ENDED>;\n inner: (route: z.output<T>) => Promise<R>\n zodRequest: (z: Z2<\"JSON\">) => T;\n zodResponse?: (z: Z2<\"JSON\">) => z.ZodType<R>;\n}\n\nexport interface ZodRoute<\n M extends AllowedMethod,\n B extends BodyFormat,\n P extends Record<string, z.ZodTypeAny>,\n T extends z.ZodTypeAny,\n R extends JsonValue\n> extends ZodAction<T, R> {\n zodPathParams: (z: Z2<\"STRING\">) => P;\n method: M[];\n path: string;\n bodyFormat: B;\n inner: (state: ZodState<M, B, P, T>) => Promise<R>,\n}\n\nexport class ZodState<\n M extends AllowedMethod,\n B extends BodyFormat,\n P extends Record<string, z.ZodTypeAny>,\n T extends z.ZodTypeAny\n> extends StateObject<B, M, string[][], z.output<T>> {\n declare pathParams: z.output<z.ZodObject<P>>;\n // declare data: z.output<T>;\n}\n\n\nexport type RouterRouteMap<T> = {\n [K in keyof T as T[K] extends ZodAction<any, any> ? K : never]:\n T[K] extends {\n zodRequest: (z: any) => infer REQ extends z.ZodTypeAny,\n zodResponse?: (z: any) => infer RES extends z.ZodType<JsonValue>\n } ? ((data: z.input<REQ>) => Promise<jsonify<z.output<RES>>>) : never;\n}\n\nexport type jsonify<T> =\n T extends void ? null :\n T extends Promise<any> ? unknown :\n T extends Date ? string :\n // T extends Map<infer K, infer V> ? [jsonify<K>, jsonify<V>][] :\n // T extends Set<infer U> ? jsonify<U>[] :\n T extends string | number | boolean | null | undefined ? T :\n T extends [...any[]] ? number extends T[\"length\"] ? jsonify<T[number]>[] : [...jsonifyTuple<T>] :\n T extends Array<infer U> ? jsonify<U>[] :\n T extends object ? { [K in keyof T]: jsonify<T[K]> } :\n unknown;\n\nexport type jsonifyTuple<T> = T extends [infer A, ...infer B] ? [jsonify<A>, ...jsonifyTuple<B>] : T extends [infer A] ? [jsonify<A>] : [];\n\n\n\nexport type RouterKeyMap<T, V> = {\n [K in keyof T as T[K] extends ZodAction<any, any> ? K : never]: V;\n}\n\n\n// this is definitely the better version of defineRoute, but that was the starting point\nexport function zodRoute<M extends AllowedMethod, B extends \"GET\" | \"HEAD\" extends M ? \"ignore\" : BodyFormat, P extends Record<string, z.ZodTypeAny>, T extends z.ZodTypeAny, R extends JsonValue>(\n method: M[],\n /** `\"path/to/route/:var/route/:var2\"` */\n path: string,\n zodPathParams: (z: Z2<\"STRING\">) => P,\n bodyFormat: B,\n zodRequest: (z: Z2<\"JSON\">) => T,\n inner: (state: ZodState<M, B, P, T>) => Promise<R>,\n): ZodRoute<M, B, P, T, R> {\n return {\n method,\n path,\n bodyFormat,\n inner,\n zodRequest,\n zodPathParams,\n } as ZodRoute<M, B, P, T, R>;\n}\n\nexport const registerZodRoutes = (root: rootRoute, router: any, keys: string[]) => {\n // const router = new TiddlerRouter();\n keys.forEach((key) => {\n const route = router[key as keyof typeof router] as ZodRoute<any, any, any, any, any>;\n const { method, path, bodyFormat, zodPathParams, zodRequest, inner } = route;\n const pathParams = path.split(\"/\").filter(e => e.startsWith(\":\")).map(e => e.substring(1));\n ///^\\/recipes\\/([^\\/]+)\\/tiddlers\\/(.+)$/,\n if (!path.startsWith(\"/\")) throw new Error(`Path ${path} must start with a forward slash`);\n if (key.startsWith(\":\")) throw new Error(`Key ${key} must not start with a colon`)\n const pathregex = \"^\" + path.split(\"/\").map(e =>\n e === \"$key\" ? key : e.startsWith(\":\") ? \"([^/]+)\" : e\n ).join(\"\\\\/\") + \"$\";\n\n root.defineRoute({\n method: [...method, \"OPTIONS\"],\n path: new RegExp(pathregex),\n pathParams,\n bodyFormat,\n }, async state => {\n if (state.method === \"OPTIONS\") {\n return state.sendEmpty(200, {\n // \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Methods\": method.join(\",\"),\n \"Access-Control-Allow-Headers\": \"Accept, Content-Type, X-Requested-With\",\n });\n }\n // return await (router[key] as ZodRoute<any, any, any, any, any>)(state);\n const pathCheck = Z2.object(zodPathParams(Z2)).safeParse(state.pathParams);\n if (!pathCheck.success) {\n console.log(pathCheck.error);\n throw state.sendEmpty(400, { \"x-reason\": \"zod-path\" });\n }\n\n const inputCheck = zodRequest(Z2).safeParse(state.data);\n if (!inputCheck.success) {\n console.log(inputCheck.error);\n throw state.sendEmpty(400, { \"x-reason\": \"zod-request\" });\n }\n\n const [good, error, res] = await inner(state)\n .then(e => [true, undefined, e] as const, e => [false, e, undefined] as const);\n\n if (!good) {\n if (error === STREAM_ENDED) {\n return error;\n } else if (typeof error === \"string\") {\n return state.sendString(400, { \"x-reason\": \"zod-handler\" }, error, \"utf8\");\n } else if (error instanceof Error && error.name === \"UserError\") {\n return state.sendString(400, { \"x-reason\": \"user-error\" }, error.message, \"utf8\");\n } else {\n throw error;\n }\n }\n\n return state.sendJSON(200, res);\n });\n });\n}\n\n\n\nexport function zodManage<T extends z.ZodTypeAny, R extends JsonValue>(\n zodRequest: (z: Z2<\"JSON\">) => T,\n inner: (state: ZodState<\"POST\", \"json\", Record<string, z.ZodTypeAny>, T>, prisma: PrismaTxnClient) => Promise<R>\n) {\n return zodRoute([\"POST\"], \"/manager/$key\", z => ({}), \"json\", zodRequest, async state => {\n return state.$transaction(async (prisma) => await inner(state, prisma));\n });\n}\n","import \"./routes/router\";\nimport \"./StateObject\";\nimport \"./streamer\";\nimport \"./global\";\nimport * as opaque from \"@serenity-kit/opaque\";\nimport { existsSync, mkdirSync, PathOrFileDescriptor, readFileSync, writeFileSync } from 'node:fs';\nimport * as sessions from \"./routes/services/sessions\";\nimport * as attacher from \"./routes/services/attachments\";\nimport { bootTiddlyWiki } from \"./tiddlywiki\";\nimport { Commander } from \"./commander\";\nimport { ListenerBase } from \"./commands/mws-listen\";\nimport { createPasswordService } from \"./routes/services/PasswordService\";\nimport { resolve } from \"node:path\";\n\nexport * from \"./routes/services/sessions\";\n\nexport interface MWSConfig {\n /** \n * Listener config for the mws-listen command. \n * This is extracted from the config early and passed directly to mws-listen. \n */\n listeners: {\n /** The key file for the HTTPS server. If either key or cert are set, both are required, and HTTPS is enforced. */\n key?: string\n /** The cert file for the HTTPS server. If either key or cert are set, both are required, and HTTPS is enforced. */\n cert?: string\n /** The port to listen on. If not specified, listen will not be called. */\n port?: number\n /** The hostname to listen on. If this is specified, then port is required. */\n host?: string\n }[]\n /**\n * Called and awaited by the mws-listen command. \n * This is extracted from the config early and passed directly to mws-listen. \n */\n onListenersCreated?: (listeners: ListenerBase[]) => Promise<void>;\n\n /** \n * Enables the dev configuration of the server.\n * The string is the absolute path to the dev repo. \n */\n enableDevServer?: string\n /** \n * Path or file descriptor to the password master key.\n * If this key changes, all passwords will be invalid and need to be changed.\n */\n passwordMasterKeyFile: string | number\n onPasswordKeyFileRead?: () => void;\n /** Path to the datafolder. */\n wikiPath: string\n /** MWS site configuration */\n config?: MWSConfigConfig\n /** \n * The session manager class registers the login handler routes and sets the auth user \n */\n SessionManager?: typeof sessions.SessionManager;\n /** \n * The attachment service class is used by routes to handle attachments\n */\n AttachmentService?: typeof attacher.AttachmentService;\n\n}\n\n\nexport interface MWSConfigConfig {\n /** If true, allow users that aren't logged in to read. */\n readonly allowAnonReads?: boolean\n /** If true, allow users that aren't logged in to write. */\n readonly allowAnonWrites?: boolean\n /** If true, recipes will allow access to a user who does not have read access to all its bags. */\n readonly allowUnreadableBags?: boolean\n /** If true, files larger than `this * 1024` will be saved to disk alongside the database instead of in the database. */\n readonly saveLargeTextToFileSystem?: number;\n readonly enableGzip?: boolean\n readonly enableBrowserCache?: boolean\n}\n\n\n\n/**\n * \n * The promise returned will resolve once the commander has completed.\n * It will reject if the commander or anything else throws an error.\n * \n```\nimport startServer from \"./src/server.ts\";\n\nstartServer({\n // enableDevServer: true,\n passwordMasterKey: \"./localpass.key\",\n listeners: [{\n key: \"./localhost.key\",\n cert: \"./localhost.crt\",\n port: 5000,\n }],\n config: {\n wikiPath: \"./editions/mws\",\n allowAnonReads: false,\n allowAnonWrites: false,\n allowUnreadableBags: false,\n },\n});\n\n```\n */\nexport default async function startServer(config: MWSConfig) {\n\n await opaque.ready;\n\n if (![\"string\", \"number\"].includes(typeof config.passwordMasterKeyFile)) {\n throw new Error(\"passwordMasterKeyFile must be a string or number\");\n }\n\n if (typeof config.passwordMasterKeyFile === \"string\"\n && config.passwordMasterKeyFile\n && !existsSync(config.passwordMasterKeyFile)\n ) {\n writeFileSync(config.passwordMasterKeyFile, opaque.server.createSetup());\n console.log(\"Password master key created at\", config.passwordMasterKeyFile);\n }\n\n const passwordMasterKey = readFileSync(config.passwordMasterKeyFile, \"utf8\").trim();\n\n config.onPasswordKeyFileRead?.();\n\n config.wikiPath = resolve(config.wikiPath);\n\n const commander = new Commander(\n config,\n await bootTiddlyWiki(config.wikiPath),\n await createPasswordService(passwordMasterKey)\n );\n\n await commander.init();\n const cli = process.argv.slice(2);\n // mws-command-separator prevents params after it from being applied to the command before it.\n // it throws an error if it ends up with any params.\n await commander.execute([\n ...cli.length ? cli : [\n \"--mws-init-store\",\n \"--mws-listen\"\n ],\n ]);\n\n if (commander.setupRequired) {\n console.log(\"MWS setup required. Please run either --mws-init-store or --mws-load-archive\");\n process.exit(1);\n }\n\n}\n\n","import { TiddlyWiki, TWBoot, TWBootBrowser, TWBootNode } from \"tiddlywiki\";\nimport { } from \"tiddlywiki/boot/bootprefix\";\nimport { $TW } from \"./commander\";\nimport { resolve } from \"node:path\";\nimport { dist_resolve, is } from \"./utils\";\nimport { ok } from \"node:assert\";\n\ndeclare module \"tiddlywiki\" {\n interface TWUtils {\n eachAsync: (array: any[], callback: (item: any, index: number) => Promise<void>) => Promise<void>;\n }\n interface TWBoot {\n\n }\n}\n\nexport async function bootTiddlyWiki(wikiPath: string) {\n\n const $tw = TiddlyWiki()\n\n $tw.utils.eachAsync = eachAsync;\n\n $tw.boot.boot = async (callback) => {\n // Initialise crypto object\n $tw.crypto = new $tw.utils.Crypto();\n // Initialise password prompter\n if ($tw.browser && !$tw.node) {\n $tw.passwordPrompt = new $tw.utils.PasswordPrompt();\n }\n // Preload any encrypted tiddlers\n await new Promise<void>(resolve =>\n $tw.boot.decryptEncryptedTiddlers(resolve)\n );\n\n // $tw.boot.startup();\n await new Promise<void>(callback => {\n const options = { callback };\n $tw.boot.initStartup(options);\n $tw.boot.loadStartup(options);\n $tw.boot.execStartup(options);\n });\n\n callback?.();\n\n };\n\n // creating a new tiddler with the same title as a shadow tiddler\n // prevents the shadow tiddler from defining modules\n\n $tw.preloadTiddler({ title: \"$:/core/modules/commander.js\" })\n $tw.modules.define(\"$:/core/modules/commander.js\", \"global\", {\n Commander: { initCommands: function () { } },\n });\n\n // disable the default commander. We'll use our own version of it.\n $tw.preloadTiddler({ title: \"$:/core/modules/startup/commands.js\" })\n $tw.modules.define(\"$:/core/modules/startup/commands.js\", \"startup\", {\n name: \"commands\",\n platforms: [\"node\"],\n after: [\"story\"],\n synchronous: true,\n startup: () => { },\n });\n\n\n\n $tw.preloadTiddler({ title: \"$:/plugins/tiddlywiki/multiwikiserver/startup.js\" })\n $tw.modules.define(\"$:/plugins/tiddlywiki/multiwikiserver/startup.js\", \"startup\", {\n name: \"multiwikiserver\",\n platforms: [\"node\"],\n after: [\"load-modules\"],\n before: [\"story\", \"commands\"],\n synchronous: true,\n startup: () => { },\n });\n\n // tiddlywiki [+<pluginname> | ++<pluginpath>] [<wikipath>] ...[--command ...args]\n $tw.boot.argv = [\n \"++\" + dist_resolve(\"../plugins/client\"),\n \"+plugins/tiddlywiki/tiddlyweb\",\n \"+themes/tiddlywiki/vanilla\",\n \"+themes/tiddlywiki/snowwhite\",\n wikiPath,\n ];\n\n // use callback to match the type signature\n await new Promise<void>(resolve => $tw.boot.boot(resolve));\n\n // this makes sure boot followed the node path\n ok(!$tw.boot.tasks.readBrowserTiddlers);\n\n return $tw;\n\n}","\nimport { SiteConfig } from \"./routes/router\";\nimport * as path from \"node:path\";\n\nimport { MWSConfig } from \"./server\";\nimport { Prisma, PrismaClient } from \"@prisma/client\";\nimport { createClient } from \"@libsql/client\";\nimport { PrismaLibSQL } from \"@prisma/adapter-libsql\";\nimport * as sessions from \"./routes/services/sessions\";\nimport * as attacher from \"./routes/services/attachments\";\nimport { PasswordService } from \"./routes/services/PasswordService\";\nimport { existsSync, mkdirSync, readFileSync } from \"node:fs\";\nimport { ITXClientDenyList } from \"@prisma/client/runtime/library\";\nimport { TiddlerFields, TW } from \"tiddlywiki\";\nimport { dist_resolve } from \"./utils\";\nimport { readdir, readFile } from \"node:fs/promises\";\nimport { createHash, randomUUID } from \"node:crypto\";\n\nimport { commands, mws_listen, divider } from \"./commands\";\n\nexport interface $TW {\n utils: any;\n wiki: any;\n config: any;\n boot: any;\n loadTiddlersFromPath: any;\n Tiddler: {\n // TW5-typed for some reason just types this as a record of modules, which is incorrect\n fieldModules: Record<string, {\n name: string;\n parse?: (value: any) => any;\n stringify?: (value: any) => string;\n }>;\n }\n}\n\nexport interface CommandInfo {\n name: string;\n /** \n * @default false\n * \n * @description\n * \n * - Regardless of the value of `synchronous`, the execute method is always awaited.\n * - Let `result` be any value thrown by the constructor or returned or thrown by the execute method. \n * ```\n * synchronous: false\n * ```\n * - `result` is awaited (if result is not then-able, this has no effect).\n * - If `result` is truthy, the command is failed without waiting for the callback.\n * - If `result` is falsy, the command waits for the callback result.\n * - The callback value is NOT awaited. \n * - if the callback value is truthy, the command is failed.\n * - if the callback value is falsy, the command is completed.\n * ```\n * synchronous: true\n * ```\n * - `result` is awaited (if result is not then-able, this has no effect).\n * - If `result` is truthy, the command is failed.\n * - If `result` is falsy, the command is completed.\n * \n * - The callback is not available if `synchronous` is true. \n * \n */\n synchronous?: boolean;\n namedParameterMode?: boolean;\n mandatoryParameters?: string[];\n}\n\n// move the startup logic into a separate class\nclass StartupCommander {\n\n constructor(\n public config: MWSConfig,\n public $tw: TW,\n public PasswordService: PasswordService,\n ) {\n\n // console.log(config.wikiPath);\n // this is already resolved to the cwd.\n this.wikiPath = config.wikiPath;\n this.storePath = path.resolve(this.wikiPath, \"store\");\n this.databasePath = path.resolve(this.storePath, \"database.sqlite\");\n this.outputPath = path.resolve($tw.boot.wikiPath, $tw.config.wikiOutputSubDir);\n this.cachePath = path.resolve(this.wikiPath, \"cache\");\n\n if (!existsSync(this.storePath)) {\n mkdirSync(this.storePath, { recursive: true });\n this.setupRequired = true;\n }\n\n // using the libsql adapter because for some reason prisma was \n // freezing when loading the system bag favicons.\n // the libsql adapter has an additional advantage of letting us specify pragma \n // and also gives us more control over connections. \n\n this.libsql = createClient({ url: \"file:\" + this.databasePath });\n // console.log(this.libsql.protocol, this.databasePath);\n // this.libsql.execute(\"pragma synchronous=off\");\n this.engine = new PrismaClient({\n log: [\"info\", \"warn\"],\n adapter: new PrismaLibSQL(this.libsql),\n // datasourceUrl: \"file:\" + this.databasePath\n });\n\n this.siteConfig = {\n wikiPath: this.wikiPath,\n allowAnonReads: !!config.config?.allowAnonReads,\n allowAnonWrites: !!config.config?.allowAnonWrites,\n allowUnreadableBags: !!config.config?.allowUnreadableBags,\n attachmentsEnabled: !!config.config?.saveLargeTextToFileSystem,\n attachmentSizeLimit: config.config?.saveLargeTextToFileSystem ?? 0,\n enableBrowserCache: !!config.config?.enableBrowserCache,\n enableGzip: !!config.config?.enableGzip,\n contentTypeInfo: $tw.config.contentTypeInfo,\n storePath: this.storePath,\n saveLargeTextToFileSystem: undefined as never\n };\n\n this.SessionManager = config.SessionManager || sessions.SessionManager;\n this.AttachmentService = config.AttachmentService || attacher.AttachmentService;\n\n }\n\n async init() {\n this.setupRequired = false;\n\n if (process.env.RUN_OLD_MWS_DB_SETUP_FOR_TESTING) {\n await this.libsql.executeMultiple(readFileSync(dist_resolve(\n \"../prisma/migrations/20250406213424_init/migration.sql\"\n ), \"utf8\"));\n }\n\n const tables = await this.libsql.batch([{\n sql: `SELECT tbl_name FROM sqlite_master WHERE type='table'`, args: [],\n }]).then(e => e[0]?.rows as { tbl_name: string }[] | undefined);\n\n const hasExisting = !!tables?.length;\n\n\n const hasMigrationsTable = !!tables?.length && !!tables?.some((e) => e.tbl_name === \"_prisma_migrations\");\n if (!hasMigrationsTable) await this.createMigrationsTable();\n await this.checkMigrationsTable(hasExisting && !hasMigrationsTable);\n\n\n const users = await this.engine.users.count();\n if (!users) { this.setupRequired = true; }\n }\n async createMigrationsTable() {\n await this.libsql.execute({\n sql:\n 'CREATE TABLE \"_prisma_migrations\" (\\n' +\n ' \"id\" TEXT PRIMARY KEY NOT NULL,\\n' +\n ' \"checksum\" TEXT NOT NULL,\\n' +\n ' \"finished_at\" DATETIME,\\n' +\n ' \"migration_name\" TEXT NOT NULL,\\n' +\n ' \"logs\" TEXT,\\n' +\n ' \"rolled_back_at\" DATETIME,\\n' +\n ' \"started_at\" DATETIME NOT NULL DEFAULT current_timestamp,\\n' +\n ' \"applied_steps_count\" INTEGER UNSIGNED NOT NULL DEFAULT 0\\n' +\n ')',\n args: [],\n })\n }\n async checkMigrationsTable(migrateExisting: boolean) {\n\n const applied_migrations = new Set(\n await this.libsql.batch([{\n sql: `Select migration_name from _prisma_migrations`, args: []\n }]).then(e => e[0]?.rows.map(e => e.migration_name))\n );\n\n const migrations = await readdir(dist_resolve(\"../prisma/migrations\"));\n migrations.sort();\n\n const new_migrations = migrations.filter(m => !applied_migrations.has(m) && m !== \"migration_lock.toml\");\n if (!new_migrations.length) return;\n\n function generateChecksum(fileContent: string) {\n return createHash('sha256').update(fileContent).digest('hex');\n }\n\n console.log(\"New migrations found\", new_migrations);\n\n for (const migration of new_migrations) {\n const migration_path = dist_resolve(`../prisma/migrations/${migration}/migration.sql`);\n if (!existsSync(migration_path)) continue;\n\n const fileContent = await readFile(migration_path, 'utf-8');\n // this is the hard-coded name of the first migration.\n if (migrateExisting && migration === \"20250406213424_init\") {\n console.log(\"Existing migration\", migration, \"is already applied\");\n } else {\n console.log(\"Applying migration\", migration);\n await this.libsql.executeMultiple(fileContent);\n }\n\n await this.libsql.execute({\n sql: 'INSERT INTO _prisma_migrations (' +\n 'id, migration_name, checksum, finished_at, logs, rolled_back_at, started_at, applied_steps_count' +\n ') VALUES (?, ?, ?, ?, ?, ?, ?, ?)',\n args: [randomUUID(), migration, generateChecksum(fileContent), Date.now(), null, null, Date.now(), 1]\n });\n\n }\n console.log(\"Migrations applied\", new_migrations);\n\n }\n wikiPath: string;\n storePath: string;\n databasePath: string;\n cachePath: string;\n\n libsql;\n engine: PrismaClient<Prisma.PrismaClientOptions, never, {\n result: {\n // this types every output field with PrismaField\n [T in Uncapitalize<Prisma.ModelName>]: {\n [K in keyof PrismaPayloadScalars<Capitalize<T>>]: () => {\n compute: () => PrismaField<Capitalize<T>, K>\n }\n }\n },\n client: {},\n model: {},\n query: {},\n }>;\n\n $transaction<R>(\n fn: (prisma: Omit<Commander[\"engine\"], ITXClientDenyList>) => Promise<R>,\n options?: {\n maxWait?: number,\n timeout?: number,\n isolationLevel?: Prisma.TransactionIsolationLevel\n }\n ): Promise<R> {\n // $transaction doesn't have the client extensions types,\n // but should have them available (were they not just types).\n return this.engine.$transaction(fn as (prisma: any) => Promise<any>, options);\n }\n\n\n siteConfig: SiteConfig;\n\n\n SessionManager: typeof sessions.SessionManager;\n AttachmentService: typeof attacher.AttachmentService;\n\n\n\n /** Signals that database setup is required. May be set to false by any qualified setup command. */\n setupRequired: boolean = true;\n outputPath: string;\n}\n/**\nParse a sequence of commands\n commandTokens: an array of command string tokens\n wiki: reference to the wiki store object\n streams: {output:, error:}, each of which has a write(string) method\n callback: a callback invoked as callback(err) where err is null if there was no error\n*/\nexport class Commander extends StartupCommander {\n\n constructor(\n config: MWSConfig,\n $tw: TW,\n PasswordService: PasswordService,\n ) {\n super(config, $tw, PasswordService);\n this.nextToken = 0;\n this.verbose = false;\n\n const { listeners, onListenersCreated } = config;\n config.listeners = [];\n config.onListenersCreated = undefined;\n // there's nothing that can't be hacked in a Node process,\n // but this just makes it a little bit harder for the listeners to be read.\n // this can be replaced, but it only recieves the listeners via closure.\n this.create_mws_listen = (params: string[]) => {\n return new mws_listen.Command(params, this, listeners, onListenersCreated);\n }\n }\n\n create_mws_listen;\n /** \n * The promise of the current execution. \n * It is created and returned by execute, \n * but also accessible here. \n * \n * After the promise is resolved, it will \n * be available until execute is called again. \n */\n promise!: Promise<void>;\n private callback!: (err?: any) => void;\n\n\n commandTokens!: string[];\n nextToken\n verbose\n\n static initCommands(moduleType?: string) {\n if (moduleType) throw new Error(\"moduleType is not implemented\");\n }\n /*\n Add a string of tokens to the command queue\n */\n addCommandTokens(params: string[]) {\n if (this.verbose) console.log(\"Commander addCommandTokens\", params);\n this.commandTokens.splice(this.nextToken, 0, ...params);\n }\n /*\n Execute the sequence of commands and invoke a callback on completion\n */\n execute(commandTokens: string[]) {\n console.log(\"Commander\", commandTokens);\n this.commandTokens = commandTokens;\n this.promise = new Promise<void>((resolve, reject) => {\n this.callback = (err: any) => {\n if (err) this.$tw.utils.error(\"Error: \" + err);\n err ? reject(err) : resolve();\n };\n });\n this.executeNextCommand();\n return this.promise;\n }\n /*\n Execute the next command in the sequence\n */\n executeNextCommand() {\n\n // Invoke the callback if there are no more commands\n if (this.nextToken >= this.commandTokens.length) {\n this.callback(null);\n return;\n }\n\n // Get and check the command token\n let commandName = this.commandTokens[this.nextToken++] as string;\n if (commandName.slice(0, 2) !== \"--\") {\n console.log(this.commandTokens);\n this.callback(\"Missing command: \" + commandName);\n return;\n }\n\n commandName = commandName.slice(2); // Trim off the --\n\n // Get the command info\n var command = commands[commandName], c, err;\n if (!command) {\n this.callback(\"Unknown command: \" + commandName);\n return;\n }\n\n // Accumulate the parameters to the command\n const nextCommand = this.commandTokens.findIndex((token, i) => i >= this.nextToken && token.startsWith(\"--\"));\n const params = this.commandTokens.slice(this.nextToken, nextCommand === -1 ? undefined : nextCommand);\n this.nextToken = nextCommand === -1 ? this.commandTokens.length : nextCommand;\n\n if (commandName !== divider.info.name)\n console.log(\"Commander executing\", commandName, params);\n\n\n // Parse named parameters if required\n const paramsIfMandetory = !command.info.mandatoryParameters ? params :\n this.extractNamedParameters(params, command.info.mandatoryParameters);\n if (typeof params === \"string\") { this.callback(params); return; }\n\n new Promise<any>(async (resolve) => {\n const { Command, info } = command!;\n try {\n c = info.name === \"mws-listen\"\n ? this.create_mws_listen(paramsIfMandetory)\n : new Command(paramsIfMandetory, this, info.synchronous ? undefined : resolve);\n err = await c.execute();\n if (err || info.synchronous) resolve(err);\n } catch (e) {\n resolve(e);\n }\n }).then((err: any) => {\n if (err) {\n console.log(err);\n this.callback(err);\n } else {\n this.executeNextCommand();\n }\n });\n\n }\n /*\n Given an array of parameter strings `params` in name=value format, and an array of mandatory parameter names in `mandatoryParameters`, returns a hashmap of values or a string if error\n */\n extractNamedParameters(params: string[], mandatoryParameters?: string[]) {\n mandatoryParameters = mandatoryParameters || [];\n var errors: any[] = [], paramsByName = Object.create(null);\n // Extract the parameters\n each(params, function (param: string) {\n var index = param.indexOf(\"=\");\n if (index < 1) {\n errors.push(\"malformed named parameter: '\" + param + \"'\");\n }\n paramsByName[param.slice(0, index)] = param.slice(index + 1).trim();\n });\n // Check the mandatory parameters are present\n each(mandatoryParameters, function (mandatoryParameter: string) {\n if (!hop(paramsByName, mandatoryParameter)) {\n errors.push(\"missing mandatory parameter: '\" + mandatoryParameter + \"'\");\n }\n });\n // Return any errors\n if (errors.length > 0) {\n return errors.join(\" and\\n\");\n } else {\n return paramsByName;\n }\n }\n}\n\n","import { resolve } from \"node:path\";\n\nimport { Commander, CommandInfo } from \"../commander\";\nimport { TiddlerStore } from \"../routes/TiddlerStore\";\nimport { TiddlerFields } from \"../routes/services/attachments\";\nimport { truthy, tryParseJSON } from \"../utils\";\nimport { Prisma, PrismaClient, PrismaPromise } from \"@prisma/client\";\n\nexport const info: CommandInfo = {\n\tname: \"mws-load-plugin-bags\",\n\tsynchronous: true,\n\n};\n\n\nexport class Command {\n\n\tget $tw() { return this.commander.$tw; }\n\tconstructor(\n\t\tpublic params: string[],\n\t\tpublic commander: Commander,\n\t\tpublic callback: (err?: any) => void\n\t) {\n\n\t}\n\tasync execute() {\n\t\tconsole.time(`${info.name} complete`);\n\t\tawait loadPluginBags(\n\t\t\tthis.$tw,\n\t\t\tnew TiddlerStore(this.commander, this.commander.engine),\n\t\t\tthis.commander.engine\n\t\t);\n\t\tconsole.timeEnd(`${info.name} complete`);\n\t}\n}\n\n\nasync function loadPluginBags($tw: any, store: TiddlerStore, engine: PrismaClient) {\n\n\t// Copy plugins\n\tfunction makePluginBagName(type: string, publisher: string | undefined, name: string) {\n\t\treturn \"$:/\" + type + \"/\" + (publisher ? publisher + \"/\" : \"\") + name;\n\t}\n\tfunction savePlugin(\n\t\tpluginFields: TiddlerFields,\n\t\t// tiddlers: Record<string, TiddlerFields>,\n\t\ttype: string,\n\t\tpublisher: string | undefined,\n\t\tname: string\n\t) {\n\n\t\tconst bagName = makePluginBagName(type, publisher, name) as PrismaField<\"Bags\", \"bag_name\">;\n\t\tconst description = (pluginFields.description ?? \"(no description)\") as PrismaField<\"Bags\", \"description\">;\n\t\tconst is_plugin = true as PrismaField<\"Bags\", \"is_plugin\">;\n\t\t// await store.saveBagTiddler(pluginFields, bagName);\n\t\treturn [\n\t\t\tstore.upsertBag_PrismaPromise(bagName, description, is_plugin, { allowPrivilegedCharacters: true }),\n\t\t\t...store.saveBagTiddlerFields_PrismaArray(pluginFields, bagName, null),\n\t\t\t// ...Object.values(tiddlers).flatMap((fields) => store.saveBagTiddlerFields_PrismaArray(fields, bagName, null))\n\t\t].filter(truthy);\n\n\t}\n\tfunction collectPlugins(folder: string, type: string, publisher?: string | undefined) {\n\t\tvar pluginFolders = $tw.utils.getSubdirectories(folder) || [];\n\t\tconst prismaPromiseArray: PrismaPromise<any>[] = [];\n\t\tfor (var p = 0; p < pluginFolders.length; p++) {\n\t\t\tconst pluginFolderName = pluginFolders[p];\n\t\t\tif ($tw.boot.excludeRegExp.test(pluginFolderName)) continue;\n\n\t\t\tconst pluginFields: TiddlerFields = $tw.loadPluginFolder(resolve(folder, pluginFolderName));\n\t\t\tif (!pluginFields?.title) continue;\n\n\t\t\t// const { tiddlers = {} } = tryParseJSON<{\n\t\t\t// \ttiddlers: Record<string, TiddlerFields>\n\t\t\t// }>(pluginFields.text) ?? {};\n\t\t\t// delete pluginFields.text;\n\n\t\t\tprismaPromiseArray.push(...savePlugin(pluginFields, type, publisher, pluginFolderName));\n\n\t\t\t// console.log(`Import plugin ${pluginFields.title}`);\n\t\t}\n\t\tprismaPromiseArray.forEach(e => {\n\t\t\tif (e[Symbol.toStringTag] !== \"PrismaPromise\") console.log(e)\n\t\t})\n\t\treturn prismaPromiseArray;\n\t}\n\tfunction collectPublisherPlugins(folder: string, type: string) {\n\t\tvar publisherFolders: string[] = $tw.utils.getSubdirectories(folder) || [];\n\t\treturn publisherFolders.flatMap((publisherFolderName) => {\n\t\t\tif ($tw.boot.excludeRegExp.test(publisherFolderName)) return [];\n\t\t\treturn collectPlugins(resolve(folder, publisherFolderName), type, publisherFolderName);\n\t\t});\n\t};\n\tconst plugins = $tw.getLibraryItemSearchPaths($tw.config.pluginsPath, $tw.config.pluginsEnvVar);\n\tconst themes = $tw.getLibraryItemSearchPaths($tw.config.themesPath, $tw.config.themesEnvVar);\n\tconst languages = $tw.getLibraryItemSearchPaths($tw.config.languagesPath, $tw.config.languagesEnvVar);\n\tconst prismaPromiseArray = [\n\t\t...plugins.flatMap((folder: string) => collectPublisherPlugins(folder, \"plugins\")),\n\t\t...themes.flatMap((folder: string) => collectPublisherPlugins(folder, \"themes\")),\n\t\t...languages.flatMap((folder: string) => collectPlugins(folder, \"languages\")),\n\t];\n\tprismaPromiseArray.forEach(e => {\n\t\tif (e[Symbol.toStringTag] !== \"PrismaPromise\") {\n\t\t\tif (Array.isArray(e)) console.log(e.length);\n\t\t\telse console.log(e);\n\t\t}\n\t})\n\tawait engine.$transaction(prismaPromiseArray);\n\n}\n\n\n\n// // these are the main type definitions for the generator function. \n// // Modify these if you use a typed sql framework.\n// type YieldInput = Prisma.PrismaPromise<any>;\n// type YieldOutput<Input extends YieldInput> = Awaited<Input>;\n// // this is the generator type\n// type PrismaGenerator<T> = Generator<YieldInput[], T, YieldOutput<YieldInput>[]>;\n\n// const prisma = new PrismaClient();\n// prisma.bagAcl.aggregate\n\n\n// type MapInputToOutput<T extends YieldInput[]> = T extends [\n// \tinfer First extends YieldInput,\n// \t...infer Rest extends YieldInput[]\n// ] ? [YieldOutput<First>, ...MapInputToOutput<Rest>] : [];\n\n// /** This just types the yield output according to the input. Make sure you call it with `yield*` */\n// function* Yielder<const I extends YieldInput[]>(...input: I)\n// \t: PrismaGenerator<MapInputToOutput<I>> { return (yield input) as MapInputToOutput<I>; }\n\n// function prismaYielder(prisma: PrismaClient) {\n// \treturn function* yielder<const I extends YieldInput[]>(...input: I)\n// \t\t: PrismaGenerator<MapInputToOutput<I>> { return (yield input) as MapInputToOutput<I>; }\n// }\n\n// // this section is an example usage of the above functions\n\n// function* prismaBatchTransaction(yielder: typeof Yielder): PrismaGenerator<{ titles: string[] }> {\n// \t// yield* is essentially a spread operator for generators \n// \t// yielder yeilds one value then returns the result.\n// \t// this just gives us a way to type the output of a yield according to the input\n// \t// so if we give it a typed sql query input, it can return a typed result\n\n// \tconst [result1] = yield* yielder(prisma.bagAcl.aggregate({}));\n\n// \treturn { titles: [] };\n\n// }\n","/*\\\ntitle: $:/plugins/tiddlywiki/multiwikiserver/commands/mws-render-tiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to create and load a bag for the specified core editions\n\n\n\n\\*/\n\n\nimport { resolve } from \"node:path\";\nimport { Commander, CommandInfo } from \"../commander\";\n\nconst { writeFileSync } = require(\"fs\");\n\nexport const info: CommandInfo = {\n name: \"mws-render-tiddlywiki5\",\n synchronous: true\n};\n\nexport class Command {\n\n constructor(\n public params: string[], \n public commander: Commander, \n public callback: (err?: any) => void\n ) {\n\n }\n async execute() {\n\n const result = this.commander.$tw.wiki.renderTiddler(\"text/plain\", \"$:/core/templates/tiddlywiki5.html\", {\n variables: {\n saveTiddlerFilter: `\n $:/boot/boot.css\n $:/boot/boot.js\n $:/boot/bootprefix.js\n $:/core\n $:/library/sjcl.js\n $:/plugins/tiddlywiki/tiddlyweb\n $:/plugins/tiddlywiki/multiwikiclient\n $:/themes/tiddlywiki/snowwhite\n $:/themes/tiddlywiki/vanilla\n `\n }\n });\n\n const filepath = resolve(this.commander.wikiPath, \"tiddlywiki5.html\")\n\n writeFileSync(filepath, result);\n }\n};\n\n","/*\\\ntitle: $:/plugins/tiddlywiki/multiwikiserver/commands/mws-load-wiki-folder.js\ntype: application/javascript\nmodule-type: command\n\nCommand to create and load a bag for the specified core editions\n\n--mws-load-wiki-folder <path> <bag-name> <bag-description> <recipe-name> <recipe-description>\n\n\\*/\n\n\nimport { resolve } from \"path\";\nimport { Commander, CommandInfo } from \"../commander\";\nimport { TiddlerStore } from \"../routes/TiddlerStore\";\nimport { TiddlerFields } from \"../routes/services/attachments\";\nimport { Prisma, PrismaClient } from \"@prisma/client\";\n\nexport const info: CommandInfo = {\n\tname: \"mws-load-wiki-folder\",\n\tsynchronous: true\n};\n// tiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder\nexport class Command {\n\tconstructor(\n\t\tpublic params: string[],\n\t\tpublic commander: Commander,\n\t\tpublic callback: (err?: any) => void\n\t) {\n\n\t}\n\tasync execute() {\n\n\t\t// Check parameters\n\t\tif (this.params.length < 5) {\n\t\t\treturn \"Missing parameters for --mws-load-wiki-folder command\";\n\t\t}\n\n\t\tawait this.commander.engine.$transaction(loadWikiFolder({\n\t\t\twikiPath: this.params[0] as string,\n\t\t\tbagName: this.params[1] as PrismaField<\"Bags\", \"bag_name\">,\n\t\t\tbagDescription: this.params[2] as PrismaField<\"Bags\", \"description\">,\n\t\t\trecipeName: this.params[3] as PrismaField<\"Recipes\", \"recipe_name\">,\n\t\t\trecipeDescription: this.params[4] as PrismaField<\"Recipes\", \"description\">,\n\t\t\tstore: new TiddlerStore(this.commander, this.commander.engine),\n\t\t\t$tw: this.commander.$tw\n\t\t}));\n\t\tconsole.log(info.name, \"complete:\", this.params[0])\n\t\treturn null;\n\t}\n}\n\n\n// Function to convert a plugin name to a bag name\nfunction makePluginBagName(type: string, publisher: string | undefined, name: string) {\n\treturn \"$:/\" + type + \"/\" + (publisher ? publisher + \"/\" : \"\") + name;\n}\n\n// Copy TiddlyWiki core editions\nfunction loadWikiFolder({ $tw, store, ...options }: {\n\twikiPath: string,\n\tbagName: PrismaField<\"Bags\", \"bag_name\">,\n\tbagDescription: PrismaField<\"Bags\", \"description\">,\n\trecipeName: PrismaField<\"Recipes\", \"recipe_name\">,\n\trecipeDescription: PrismaField<\"Recipes\", \"description\">,\n\tstore: TiddlerStore,\n\t$tw: any\n}) {\n\tconst path = require(\"path\"),\n\t\tfs = require(\"fs\");\n\t// Read the tiddlywiki.info file\n\tconst wikiInfoPath = path.resolve(options.wikiPath, $tw.config.wikiInfo);\n\tlet wikiInfo;\n\tif (fs.existsSync(wikiInfoPath)) {\n\t\twikiInfo = $tw.utils.parseJSONSafe(fs.readFileSync(wikiInfoPath, \"utf8\"), function () { return null; });\n\t}\n\tif (!wikiInfo) return [];\n\t// Add plugins to the recipe list\n\tconst recipeList = [];\n\tconst processPlugins = function (type: string, plugins: string[]) {\n\t\t$tw.utils.each(plugins, function (pluginName: string) {\n\t\t\tconst parts = pluginName.split(\"/\");\n\t\t\tlet publisher, name;\n\t\t\tif (parts.length === 2) {\n\t\t\t\tpublisher = parts[0];\n\t\t\t\tname = parts[1];\n\t\t\t} else {\n\t\t\t\tname = parts[0];\n\t\t\t}\n\t\t\trecipeList.push({ bag_name: makePluginBagName(type, publisher, name as string), with_acl: false });\n\t\t});\n\t};\n\tprocessPlugins(\"plugins\", wikiInfo.plugins);\n\tprocessPlugins(\"themes\", wikiInfo.themes);\n\tprocessPlugins(\"languages\", wikiInfo.languages);\n\t// Create the recipe\n\trecipeList.push({\n\t\tbag_name: options.bagName,\n\t\twith_acl: true as PrismaField<\"Recipe_bags\", \"with_acl\">,\n\t});\n\trecipeList.reverse()\n\n\n\tconst tiddler_files_path = path.resolve(options.wikiPath, $tw.config.wikiTiddlersSubDir)\n\tconst tiddlersFromPath: TiddlerInfo[] = $tw.loadTiddlersFromPath(\n\t\tresolve($tw.boot.corePath, $tw.config.editionsPath, tiddler_files_path)\n\t);\n\n\tconst is_plugin = false as PrismaField<\"Bags\", \"is_plugin\">;\n\treturn [\n\t\t// create the bag\n\t\tstore.upsertBag_PrismaPromise(options.bagName, options.bagDescription, is_plugin),\n\t\t// create the recipe and recipe_bags entries\n\t\t...store.upsertRecipe_PrismaArray(\n\t\t\toptions.recipeName,\n\t\t\toptions.recipeDescription,\n\t\t\trecipeList,\n\t\t),\n\t\t// save the tiddlers (this will skip attachments)\n\t\t...store.saveTiddlersFromPath_PrismaArray(tiddlersFromPath, options.bagName)\n\t];\n\n}\ninterface TiddlerInfo { tiddlers: TiddlerFields[], filepath: string, type: string, hasMetaFile: boolean }","/*\\\ntitle: $:/plugins/tiddlywiki/multiwikiserver/commands/mws-save-archive.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load an archive of recipes, bags and tiddlers to a directory\n\n\\*/\n\nimport { writeFileSync } from \"fs\";\nimport { Commander, CommandInfo } from \"../commander\";\nimport { TiddlerStore } from \"../routes/TiddlerStore\";\nimport { resolve } from \"path\";\nimport * as _fsp from \"fs/promises\";\nimport { createStrictAwaitProxy } from \"../utils\";\nconst fsp = createStrictAwaitProxy(_fsp);\n\nexport const info: CommandInfo = {\n\tname: \"mws-save-archive\",\n\tsynchronous: true\n};\nexport class Command {\n\tget $tw() { return this.commander.$tw as { utils: any }; }\n\tget archivePath() { return this.params[0] as string; }\n\tstore?: TiddlerStore;\n\tconstructor(\n\t\tpublic params: string[],\n\t\tpublic commander: Commander,\n\t\tpublic callback: (err?: any) => void\n\t) {\n\n\t}\n\tasync execute() {\n\t\t// Check parameters\n\t\tif (this.params.length < 1) throw \"Missing pathname\";\n\t\tawait this.commander.$transaction(async (prisma) => {\n\t\t\tthis.store = new TiddlerStore(this.commander, prisma);\n\t\t\tawait this.saveArchive();\n\t\t\tthis.store = undefined;\n\t\t});\n\t\tconsole.log(info.name, \"complete:\", this.params[0])\n\t\treturn null;\n\t}\n\n\tasync getRecipes() {\n\t\treturn await this.store!.prisma.recipes.findMany({\n\t\t\tinclude: { recipe_bags: true, acl: true },\n\t\t});\n\t}\n\tasync getBags() {\n\t\tconst bags = await this.store!.prisma.bags.findMany({\n\t\t\tinclude: { tiddlers: { include: { fields: true } }, acl: true }\n\t\t});\n\t\treturn bags.map(e => ({\n\t\t\t...e,\n\t\t\ttiddlers: e.tiddlers.map(t => ({\n\t\t\t\t...t,\n\t\t\t\tfields: Object.fromEntries(t.fields.map(f => [f.field_name, f.field_value]))\n\t\t\t}))\n\t\t}));\n\t}\n\tasync getUsers() {\n\t\treturn await this.store!.prisma.users.findMany({ include: { roles: true, sessions: true, groups: true } });\n\t}\n\tasync getGroups() {\n\t\treturn await this.store!.prisma.groups.findMany({ include: { roles: true } });\n\t}\n\tasync getRoles() {\n\t\treturn await this.store!.prisma.roles.findMany({});\n\t}\n\n\tasync saveArchive() {\n\t\tif (!this.store) throw new Error(\"Store not initialized\");\n\t\tconst uriC = encodeURIComponent;\n\t\tawait fsp.mkdir(resolve(this.archivePath, \"recipes\"), { recursive: true });\n\t\tconst recipes = await this.getRecipes();\n\t\tfor (const recipeInfo of recipes) {\n\t\t\t// console.log(`Recipe ${recipeInfo.recipe_name}`);\n\t\t\tconst recipeFile = `recipes/${uriC(recipeInfo.recipe_name)}.json`;\n\t\t\tawait fsp.writeFile(resolve(this.archivePath, recipeFile), JSON.stringify(recipeInfo, null, \"\\t\"));\n\t\t}\n\t\tawait fsp.mkdir(resolve(this.archivePath, \"bags\"), { recursive: true });\n\t\tconst bags = await this.getBags();\n\t\tawait Promise.all(bags.map(async bagInfo => {\n\t\t\tconst tiddlersFolder = `bags/${uriC(bagInfo.bag_name)}/tiddlers`;\n\t\t\tawait fsp.mkdir(resolve(this.archivePath, tiddlersFolder), { recursive: true });\n\t\t\t// console.log(`Bag ${bagInfo.bag_name}`);\n\t\t\tconst bagFile = `bags/${uriC(bagInfo.bag_name)}/meta.json`;\n\t\t\tawait fsp.writeFile(resolve(this.archivePath, bagFile), JSON.stringify({ ...bagInfo, tiddlers: undefined, }, null, \"\\t\"));\n\t\t\tfor (const tiddler of bagInfo.tiddlers) {\n\t\t\t\t// console.log(bagInfo.bag_name, tiddler.title, tiddler.tiddler_id);\n\t\t\t\tconst tiddlerFile = `bags/${uriC(bagInfo.bag_name)}/tiddlers/${tiddler.tiddler_id}.json`;\n\t\t\t\tawait fsp.writeFile(resolve(this.archivePath, tiddlerFile), JSON.stringify(tiddler, null, \"\\t\"));\n\t\t\t}\n\t\t}));\n\t\tconst users = await this.getUsers();\n\t\tawait fsp.writeFile(resolve(this.archivePath, \"users.json\"), JSON.stringify(users, null, \"\\t\"));\n\t\tconst groups = await this.getGroups();\n\t\tawait fsp.writeFile(resolve(this.archivePath, \"groups.json\"), JSON.stringify(groups, null, \"\\t\"));\n\t\tconst roles = await this.getRoles();\n\t\tawait fsp.writeFile(resolve(this.archivePath, \"roles.json\"), JSON.stringify(roles, null, \"\\t\"));\n\n\t\tawait fsp.writeFile(resolve(this.archivePath, \"index.json\"), JSON.stringify({\n\t\t\tversion: 2,\n\t\t\tcomment: \"The version is an internal identifier for the archive format. It is not the same as the version of TiddlyWiki or MWS.\",\n\t\t}, null, \"\\t\"));\n\t\t// Version 1: \n\t\t// is_plugin did not exist. A bag_name starting with $:/ was a plugin.\n\t}\n\n}\n","\nimport { Commander, CommandInfo } from \"../commander\";\nimport { TiddlerStore } from \"../routes/TiddlerStore\";\nimport { join, resolve } from \"path\";\nimport { Prisma } from \"@prisma/client\";\nimport { Command as SaveArchiveCommand } from \"./mws-save-archive\";\nimport * as _fsp from \"fs/promises\";\nimport { createStrictAwaitProxy } from \"../utils\";\nimport { PrismaClientKnownRequestError } from \"@prisma/client/runtime/library\";\nimport { existsSync } from \"fs\";\nconst fsp = createStrictAwaitProxy(_fsp);\n\nexport const info: CommandInfo = {\n\tname: \"mws-load-archive\",\n\tsynchronous: true\n};\nexport class Command {\n\n\tconstructor(\n\t\tpublic params: string[],\n\t\tpublic commander: Commander,\n\t\tpublic callback: (err?: any) => void\n\t) {\n\n\n\t}\n\n\tasync execute() {\n\t\tif (this.params.length < 1) throw \"Missing pathname\";\n\t\tconst archivePath = this.params[0] as string;\n\n\t\tconst index: { version: number } = existsSync(resolve(archivePath, \"index.json\"))\n\t\t\t? JSON.parse(await fsp.readFile(resolve(archivePath, \"index.json\"), \"utf8\"))\n\t\t\t: { version: 1 };\n\t\t// this is all the versions in this repo.\n\t\t// the multi-wiki-support branch from the TW5 repo is not supported.\n\t\tswitch (index.version) {\n\t\t\tcase 1:\n\t\t\t\tawait new Archiver1(this.commander).loadArchive(archivePath);\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tawait new Archiver2(this.commander).loadArchive(archivePath);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unsupported archive version ${index.version}`);\n\t\t}\n\n\t\tthis.commander.setupRequired = false;\n\n\t}\n\n}\n\nclass Archiver {\n\tconstructor(\n\t\tpublic commander: Commander,\n\t) {\n\n\t}\n}\n\n////////////////////////////////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////\n\nclass Archiver1 extends Archiver {\n\n\tasync loadArchive(archivePath: string) {\n\t\tawait this.commander.$transaction(async (prisma) => {\n\t\t\t// load roles from roles/roles.json\n\t\t\tconst roles = JSON.parse(await fsp.readFile(resolve(archivePath, \"roles\", \"roles.json\"), \"utf8\"));\n\t\t\tawait prisma.roles.createMany({ data: roles });\n\t\t\t// load users from users/{user_id}.json\n\t\t\tconst userFiles = await fsp.readdir(resolve(archivePath, \"users\"));\n\t\t\tconst users = await Promise.all(userFiles.map(async (userFile) => {\n\t\t\t\treturn JSON.parse(await fsp.readFile(resolve(archivePath, \"users\", userFile), \"utf8\"));\n\t\t\t}));\n\t\t\tawait prisma.users.createMany({ data: users });\n\t\t\t// Iterate the bags\n\t\t\tconst bagNames = await fsp.readdir(resolve(archivePath, \"bags\"));\n\t\t\tfor (const bagFilename of bagNames) {\n\t\t\t\tconst stat = await fsp.stat(resolve(archivePath, \"bags\", bagFilename));\n\t\t\t\tif (!stat.isDirectory()) continue;\n\t\t\t\tconsole.log(`Reading bag ${decodeURIComponent(bagFilename)}`);\n\t\t\t\tawait this.restoreBag(resolve(archivePath, \"bags\", bagFilename), prisma);\n\t\t\t}\n\t\t\t// Iterate the recipes\n\t\t\tconst recipeNames = await fsp.readdir(resolve(archivePath, \"recipes\"));\n\t\t\tfor (const recipeFilename of recipeNames) {\n\t\t\t\tif (!recipeFilename.endsWith(\".json\")) continue;\n\t\t\t\tconsole.log(`Reading recipe ${decodeURIComponent(recipeFilename)}`);\n\t\t\t\tawait this.restoreRecipe(resolve(archivePath, \"recipes\", recipeFilename), prisma);\n\t\t\t}\n\n\t\t}).catch(e => {\n\t\t\tif (e instanceof PrismaClientKnownRequestError) {\n\t\t\t\tconsole.log(e.code, e.meta, e.message);\n\t\t\t\tthrow e.message;\n\t\t\t} else {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t});\n\t}\n\tprivate async restoreRecipe(file: string, prisma: PrismaTxnClient) {\n\t\ttype RecipeInfo = Awaited<ReturnType<SaveArchiveCommand[\"getRecipes\"]>>[number];\n\t\tconst recipeInfo: RecipeInfo = JSON.parse(await fsp.readFile(file, \"utf8\"));\n\t\tawait prisma.recipes.create({\n\t\t\tdata: {\n\t\t\t\trecipe_id: recipeInfo.recipe_id,\n\t\t\t\trecipe_name: recipeInfo.recipe_name,\n\t\t\t\tdescription: recipeInfo.description,\n\t\t\t\towner_id: recipeInfo.owner_id,\n\t\t\t\tacl: { createMany: { data: recipeInfo.acl } },\n\t\t\t\trecipe_bags: {\n\t\t\t\t\tcreateMany: {\n\t\t\t\t\t\tdata: recipeInfo.recipe_bags.map(e => ({\n\t\t\t\t\t\t\tbag_id: e.bag_id,\n\t\t\t\t\t\t\tposition: e.position,\n\t\t\t\t\t\t\twith_acl: e.with_acl,\n\t\t\t\t\t\t}))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tprivate async restoreBag(folder: string, prisma: PrismaTxnClient) {\n\t\ttype BagInfo = Awaited<ReturnType<SaveArchiveCommand[\"getBags\"]>>[number];\n\t\tconst bagInfo: BagInfo = JSON.parse(await fsp.readFile(join(folder, \"meta.json\"), \"utf8\"));\n\t\tawait prisma.bags.create({\n\t\t\tdata: {\n\t\t\t\tbag_id: bagInfo.bag_id,\n\t\t\t\tbag_name: bagInfo.bag_name,\n\t\t\t\tdescription: bagInfo.description,\n\t\t\t\towner_id: bagInfo.owner_id,\n\t\t\t\tis_plugin: bagInfo.bag_name.startsWith(\"$:/\"),\n\t\t\t\tacl: { createMany: { data: bagInfo.acl } },\n\t\t\t}\n\t\t});\n\t\ttype TiddlerData = Awaited<ReturnType<SaveArchiveCommand[\"getBags\"]>>[number][\"tiddlers\"][number];\n\t\tconst tiddlerFiles = await fsp.readdir(join(folder, \"tiddlers\"));\n\t\tconst tiddlers: TiddlerData[] = await Promise.all(tiddlerFiles.map(async (tiddlerFilename) => {\n\t\t\tif (!tiddlerFilename.endsWith(\".json\")) return;\n\t\t\tconst value = await fsp.readFile(join(folder, \"tiddlers\", tiddlerFilename), \"utf8\");\n\t\t\treturn JSON.parse(value);\n\t\t}));\n\t\tawait prisma.tiddlers.createMany({\n\t\t\tdata: tiddlers.flatMap((tiddler): Prisma.TiddlersCreateManyInput => ({\n\t\t\t\tbag_id: bagInfo.bag_id,\n\t\t\t\ttitle: tiddler.title,\n\t\t\t\tis_deleted: tiddler.is_deleted,\n\t\t\t\tattachment_hash: tiddler.attachment_hash,\n\t\t\t\ttiddler_id: tiddler.tiddler_id,\n\t\t\t}))\n\t\t});\n\t\tawait prisma.fields.createMany({\n\t\t\tdata: tiddlers.flatMap(({ tiddler_id, fields }) => Object.entries(fields)\n\t\t\t\t.map(([field_name, field_value]): Prisma.FieldsCreateManyInput =>\n\t\t\t\t\t({ tiddler_id, field_name, field_value, })\n\t\t\t\t)\n\t\t\t)\n\t\t});\n\t}\n}\n\n\n////////////////////////////////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////\n\nclass Archiver2 extends Archiver {\n\n\tasync loadArchive(archivePath: string) {\n\t\tawait this.commander.$transaction(async (prisma) => {\n\t\t\tconst roles = JSON.parse(await fsp.readFile(resolve(archivePath, \"roles.json\"), \"utf8\"));\n\t\t\tawait prisma.roles.createMany({ data: roles });\n\t\t\tconst users: Awaited<ReturnType<SaveArchiveCommand[\"getUsers\"]>> = JSON.parse(await fsp.readFile(resolve(archivePath, \"users.json\"), \"utf8\"));\n\t\t\tawait Promise.all(users.map(e => prisma.users.create({\n\t\t\t\tdata: ({\n\t\t\t\t\tuser_id: e.user_id,\n\t\t\t\t\temail: e.email,\n\t\t\t\t\tpassword: e.password,\n\t\t\t\t\tusername: e.username,\n\t\t\t\t\tcreated_at: e.created_at,\n\t\t\t\t\tlast_login: e.last_login,\n\t\t\t\t\troles: ({ connect: e.roles.map(e => ({ role_id: e.role_id })) }),\n\t\t\t\t} satisfies Prisma.UsersUncheckedCreateInput)\n\t\t\t})));\n\n\t\t\t// Iterate the bags\n\t\t\tconst bagNames = await fsp.readdir(resolve(archivePath, \"bags\"));\n\t\t\tfor (const bagFilename of bagNames) {\n\t\t\t\tconst stat = await fsp.stat(resolve(archivePath, \"bags\", bagFilename));\n\t\t\t\tif (!stat.isDirectory()) continue;\n\t\t\t\tconsole.log(`Reading bag ${decodeURIComponent(bagFilename)}`);\n\t\t\t\tawait this.restoreBag(resolve(archivePath, \"bags\", bagFilename), prisma);\n\t\t\t}\n\t\t\t// Iterate the recipes\n\t\t\tconst recipeNames = await fsp.readdir(resolve(archivePath, \"recipes\"));\n\t\t\tfor (const recipeFilename of recipeNames) {\n\t\t\t\tif (!recipeFilename.endsWith(\".json\")) continue;\n\t\t\t\tconsole.log(`Reading recipe ${decodeURIComponent(recipeFilename)}`);\n\t\t\t\tawait this.restoreRecipe(resolve(archivePath, \"recipes\", recipeFilename), prisma);\n\t\t\t}\n\n\t\t}).catch(e => {\n\t\t\tif (e instanceof PrismaClientKnownRequestError) {\n\t\t\t\tconsole.log(e.code, e.meta, e.message);\n\t\t\t\tthrow e.message;\n\t\t\t} else {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t});\n\t}\n\tprivate async restoreRecipe(file: string, prisma: PrismaTxnClient) {\n\t\ttype RecipeInfo = Awaited<ReturnType<SaveArchiveCommand[\"getRecipes\"]>>[number];\n\t\tconst recipeInfo: RecipeInfo = JSON.parse(await fsp.readFile(file, \"utf8\"));\n\t\tawait prisma.recipes.create({\n\t\t\tdata: {\n\t\t\t\trecipe_id: recipeInfo.recipe_id,\n\t\t\t\trecipe_name: recipeInfo.recipe_name,\n\t\t\t\tdescription: recipeInfo.description,\n\t\t\t\towner_id: recipeInfo.owner_id,\n\t\t\t\tacl: { createMany: { data: recipeInfo.acl } },\n\t\t\t\trecipe_bags: {\n\t\t\t\t\tcreateMany: {\n\t\t\t\t\t\tdata: recipeInfo.recipe_bags.map(e => ({\n\t\t\t\t\t\t\tbag_id: e.bag_id,\n\t\t\t\t\t\t\tposition: e.position,\n\t\t\t\t\t\t\twith_acl: e.with_acl,\n\t\t\t\t\t\t}))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tprivate async restoreBag(folder: string, prisma: PrismaTxnClient) {\n\t\ttype BagInfo = Awaited<ReturnType<SaveArchiveCommand[\"getBags\"]>>[number];\n\t\tconst bagInfo: BagInfo = JSON.parse(await fsp.readFile(join(folder, \"meta.json\"), \"utf8\"));\n\t\tawait prisma.bags.create({\n\t\t\tdata: {\n\t\t\t\tbag_id: bagInfo.bag_id,\n\t\t\t\tbag_name: bagInfo.bag_name,\n\t\t\t\tdescription: bagInfo.description,\n\t\t\t\towner_id: bagInfo.owner_id,\n\t\t\t\tis_plugin: bagInfo.is_plugin,\n\t\t\t\tacl: { createMany: { data: bagInfo.acl } },\n\t\t\t}\n\t\t});\n\t\ttype TiddlerData = Awaited<ReturnType<SaveArchiveCommand[\"getBags\"]>>[number][\"tiddlers\"][number];\n\t\tconst tiddlerFiles = await fsp.readdir(join(folder, \"tiddlers\"));\n\t\tconst tiddlers: TiddlerData[] = await Promise.all(tiddlerFiles.map(async (tiddlerFilename) => {\n\t\t\tif (!tiddlerFilename.endsWith(\".json\")) return;\n\t\t\tconst value = await fsp.readFile(join(folder, \"tiddlers\", tiddlerFilename), \"utf8\");\n\t\t\treturn JSON.parse(value);\n\t\t}));\n\t\tawait prisma.tiddlers.createMany({\n\t\t\tdata: tiddlers.flatMap((tiddler): Prisma.TiddlersCreateManyInput => ({\n\t\t\t\tbag_id: bagInfo.bag_id,\n\t\t\t\ttitle: tiddler.title,\n\t\t\t\tis_deleted: tiddler.is_deleted,\n\t\t\t\tattachment_hash: tiddler.attachment_hash,\n\t\t\t\ttiddler_id: tiddler.tiddler_id,\n\t\t\t}))\n\t\t});\n\t\tawait prisma.fields.createMany({\n\t\t\tdata: tiddlers.flatMap(({ tiddler_id, fields }) => Object.entries(fields)\n\t\t\t\t.map(([field_name, field_value]): Prisma.FieldsCreateManyInput =>\n\t\t\t\t\t({ tiddler_id, field_name, field_value, })\n\t\t\t\t)\n\t\t\t)\n\t\t});\n\t}\n}\n","import { resolve } from \"node:path\";\n\nimport { Commander, CommandInfo } from \"../commander\";\nimport { TiddlerStore } from \"../routes/TiddlerStore\";\nimport { readFileSync } from \"node:fs\";\nimport { dist_require_resolve, dist_resolve } from \"../utils\";\n\nexport const info: CommandInfo = {\n\tname: \"mws-init-store\",\n\tsynchronous: true,\n};\n\n\nexport class Command {\n\n\tget $tw() { return this.commander.$tw; }\n\tconstructor(\n\t\tpublic params: string[],\n\t\tpublic commander: Commander,\n\t\tpublic callback: (err?: any) => void\n\t) {\n\n\t}\n\tasync execute() {\n\n\t\tif (!this.commander.setupRequired) return;\n\n\t\tawait this.commander.$transaction(async (prisma) => {\n\t\t\tconst userCount = await prisma.users.count();\n\n\t\t\tif (!userCount) {\n\n\t\t\t\tawait prisma.roles.createMany({\n\t\t\t\t\tdata: [\n\t\t\t\t\t\t{ role_id: 1, role_name: \"ADMIN\", description: \"System Administrator\" },\n\t\t\t\t\t\t{ role_id: 2, role_name: \"USER\", description: \"Basic User\" },\n\t\t\t\t\t]\n\t\t\t\t});\n\n\t\t\t\tconst user = await prisma.users.create({\n\t\t\t\t\tdata: { username: \"admin\", email: \"\", password: \"\", roles: { connect: { role_id: 1 } } },\n\t\t\t\t\tselect: { user_id: true }\n\t\t\t\t});\n\n\t\t\t\tconst password = await this.commander.PasswordService.PasswordCreation(user.user_id.toString(), \"1234\");\n\n\t\t\t\tawait prisma.users.update({\n\t\t\t\t\twhere: { user_id: user.user_id },\n\t\t\t\t\tdata: { password: password }\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t});\n\t\t// should give us the path to boot.js\n\t\tconst tweditions = resolve(dist_require_resolve(\"tiddlywiki\"), \"../../editions\");\n\t\tthis.commander.addCommandTokens([\n\t\t\t\"--mws-load-plugin-bags\",\n\t\t\t\"--mws-load-wiki-folder\", dist_resolve(\"../editions/mws-docs\"),\n\t\t\t\"mws-docs\", \"MWS Documentation from https://mws.tiddlywiki.com\",\n\t\t\t\"mws-docs\", \"MWS Documentation from https://mws.tiddlywiki.com\",\n\t\t\t\"--mws-load-wiki-folder\", resolve(tweditions, \"tw5.com\"),\n\t\t\t\"docs\", \"TiddlyWiki Documentation from https://tiddlywiki.com\",\n\t\t\t\"docs\", \"TiddlyWiki Documentation from https://tiddlywiki.com\",\n\t\t\t\"--mws-load-wiki-folder\", resolve(tweditions, \"dev\"),\n\t\t\t\"dev\", \"TiddlyWiki Developer Documentation from https://tiddlywiki.com/dev\",\n\t\t\t\"dev-docs\", \"TiddlyWiki Developer Documentation from https://tiddlywiki.com/dev\",\n\t\t\t\"--mws-load-wiki-folder\", resolve(tweditions, \"tour\"),\n\t\t\t\"tour\", \"TiddlyWiki Interactive Tour from https://tiddlywiki.com\",\n\t\t\t\"tour\", \"TiddlyWiki Interactive Tour from https://tiddlywiki.com\",\n\t\t\t\"--divider\",\n\t\t]);\n\n\t\tthis.commander.setupRequired = false;\n\t}\n}\n\n","\nimport { Commander, CommandInfo } from \"../commander\";\nimport { ok } from \"assert\";\nimport { existsSync, readFileSync } from \"fs\";\nimport { Server, IncomingMessage, ServerResponse, createServer } from \"http\";\nimport * as http2 from \"node:http2\";\nimport { Router } from \"../routes/router\";\nimport { MWSConfig } from \"../server\";\nimport { Streamer } from \"../streamer\";\n\n\nexport class ListenerBase {\n constructor(\n public server: http2.Http2SecureServer | Server,\n public router: Router,\n public bindInfo: string\n ) {\n this.server.on(\"request\", (\n req: IncomingMessage | http2.Http2ServerRequest,\n res: ServerResponse | http2.Http2ServerResponse\n ) => {\n this.handleRequest(req, res);\n });\n this.server.on('error', (error: NodeJS.ErrnoException) => {\n\n if (error.syscall !== 'listen') {\n throw error;\n }\n\n // handle specific listen errors with friendly messages\n switch (error.code) {\n case 'EACCES':\n console.error(bindInfo + ' requires elevated privileges');\n process.exit();\n break;\n case 'EADDRINUSE':\n console.error(bindInfo + ' is already in use');\n process.exit();\n break;\n default:\n throw error;\n }\n\n });\n this.server.on('listening', () => {\n const address = this.server.address();\n console.log(`Listening on`, address);\n });\n }\n\n handleRequest(\n req: IncomingMessage | http2.Http2ServerRequest,\n res: ServerResponse | http2.Http2ServerResponse\n ) {\n const streamer = new Streamer(req, res, this.router);\n this.router.handle(streamer).catch(streamer.catcher);\n }\n}\n\nexport class ListenerHTTPS extends ListenerBase {\n constructor(router: Router, config: MWSConfig[\"listeners\"][number]) {\n const { port, host } = config;\n if (port && typeof port !== \"number\") throw new Error(\"If specified, port must be a number\");\n const bindInfo = host ? `HTTPS ${host} ${port}` : `HTTPS ${port}`;\n ok(config.key && existsSync(config.key), \"Key file not found\");\n ok(config.cert && existsSync(config.cert), \"Cert file not found\");\n const key = readFileSync(config.key);\n const cert = readFileSync(config.cert);\n super(http2.createSecureServer({ key, cert, allowHTTP1: true, }), router, bindInfo);\n if (port) this.server.listen(port, host);\n }\n\n}\n\nexport class ListenerHTTP extends ListenerBase {\n /** Create an http1 server */\n constructor(router: Router, config: MWSConfig[\"listeners\"][number]) {\n const { port, host } = config;\n if (port && typeof port !== \"number\") throw new Error(\"If specified, port must be a number\");\n const bindInfo = host ? `HTTP ${host} ${port}` : `HTTP ${port}`;\n super(createServer(), router, bindInfo);\n if (port) this.server.listen(port, host);\n }\n}\n\n\nexport const info: CommandInfo = {\n name: \"mws-listen\",\n synchronous: true,\n};\n\n\nexport class Command {\n execute;\n get $tw() { return this.commander.$tw; }\n constructor(\n public params: string[],\n public commander: Commander,\n listenConfig: MWSConfig[\"listeners\"],\n onListenersCreated: MWSConfig[\"onListenersCreated\"]\n ) {\n if (this.params.length) throw `${info.name}: No parameters allowed. Please put listener options in the config file.`;\n\n this.execute = async () => {\n\n this.commander.addCommandTokens([\n \"--mws-render-tiddlywiki5\",\n \"--divider\",\n ]);\n\n const router = await Router.makeRouter(\n this.commander,\n this.commander.config.enableDevServer,\n ).catch(e => {\n console.log(e.stack);\n throw \"Router failed to load\";\n });\n\n const listeners = listenConfig.map(e => {\n if (!e.key !== !e.cert) {\n throw new Error(\"Both key and cert are required for HTTPS\");\n }\n\n const listener = e.key && e.cert\n ? new ListenerHTTPS(router, e)\n : new ListenerHTTP(router, e);\n\n return listener;\n });\n\n await onListenersCreated?.(listeners);\n };\n\n }\n\n}","import { Commander, CommandInfo } from \"../commander\";\n\nexport const info: CommandInfo = {\n name: \"divider\",\n synchronous: true,\n};\n\n\nexport class Command {\n\n constructor(\n public params: string[],\n public commander: Commander,\n ) {\n if (this.params.length) throw `${info.name}: No parameters allowed. This is a no-op command.`;\n }\n execute() {\n // Do nothing\n }\n}","import { Commander, CommandInfo } from \"../commander\";\n\nexport const info: CommandInfo = {\n name: \"tests-complete\",\n synchronous: true,\n};\n\n\nexport class Command {\n\n constructor(\n public params: string[],\n public commander: Commander,\n ) {\n // if (this.params.length) throw `${info.name}: No parameters allowed. This is a no-op command.`;\n }\n execute() {\n console.log(\"Tests completed successfully.\");\n process.exit(0);\n }\n}","import * as mws_load_plugin_bags from \"./mws-load-plugin-bags\";\nimport * as mws_render_tiddler from \"./mws-render-tiddlywiki5\";\nimport * as mws_load_wiki_folder from \"./mws-load-wiki-folder\";\nimport * as mws_save_archive from \"./mws-save-archive\";\nimport * as mws_load_archive from \"./mws-load-archive\";\nimport * as mws_init_store from \"./mws-init-store\";\nimport * as mws_listen from \"./mws-listen\";\nimport * as divider from \"./divider\";\nimport * as tests_complete from \"./tests-complete\";\nimport { CommandInfo } from \"../commander\";\n\nexport { mws_listen, divider };\n\nexport const commands: Record<string, { info: CommandInfo, Command: any }> = {\n [mws_load_plugin_bags.info.name]: mws_load_plugin_bags,\n [mws_render_tiddler.info.name]: mws_render_tiddler,\n [mws_load_wiki_folder.info.name]: mws_load_wiki_folder,\n [mws_save_archive.info.name]: mws_save_archive,\n [mws_load_archive.info.name]: mws_load_archive,\n [mws_init_store.info.name]: mws_init_store,\n [mws_listen.info.name]: mws_listen,\n [divider.info.name]: divider,\n [tests_complete.info.name]: tests_complete,\n};\n"],"mappings":"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","names":["object","deleteDirectory","ok","exports","module","exports","module","exports","module","exports","module","codes","status","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","useColors","exports","module","exports","module","exports","module","exports","module","string","escape","exports","module","exports","module","exports","module","exports","module","exports","charset","path","extension","exports","module","i","fn","exports","module","exports","module","exports","module","fs","path","join","resolve","sep","send","etag","match","err","stream","type","resolve","path","import_node_assert","test","z2","ZodAssert","data","init_utils","init_utils","resolve","path","send","z","init_utils","init_utils","z","acl","bags","z","init_utils","exports","module","sjcl","a","z","info","sjcl","init_utils","z","server","result","import_node_crypto","import_node_assert","init_utils","path","fs","import_sjcl","init_utils","sjcl","path","z","import_node_crypto","session_id","z","init_utils","target","resolve","headers","import_path","init_utils","$tw","import_assert","init_utils","path","z","Router","init_utils","rootRoute","opaque","import_node_fs","init_utils","import_node_assert","$tw","resolve","callback","path","import_client","import_node_fs","init_utils","import_node_crypto","init_utils","$tw","makePluginBagName","prismaPromiseArray","Command","info","import_node_path","writeFileSync","info","_Command","Command","Command","info","import_path","info","_Command","Command","$tw","path","fs","Command","info","import_path","init_utils","info","_Command","Command","Command","info","import_path","_fsp","init_utils","import_fs","fsp","_fsp","info","_Command","Command","e","Command","info","import_node_path","init_utils","info","_Command","Command","Command","info","import_assert","import_fs","import_http","http2","server","info","_Command","Router","Command","Command","info","info","_Command","Command","Command","info","info","_Command","Command","info","$tw","e","resolve","Command","info","err","import_node_path"]}
|