@spica-devkit/database 0.9.12 → 0.9.16

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/mongo.mjs","../src/check.mjs","../src/objectid.mjs","../src/database.mjs"],"sourcesContent":["let mongodb = globalThis[Symbol.for(\"kDatabaseDevkit\")] = globalThis[Symbol.for(\"kDatabaseDevkit\")] || require(\"mongodb\");\n;\nexport { mongodb };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ28uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdGFja3MvYXBpL2Z1bmN0aW9uL3BhY2thZ2VzL2RhdGFiYXNlL3NyYy9tb25nby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxJQUFJLE9BQU8sR0FBNkIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFBQSxDQUFDO0FBQ3JKLE9BQU8sRUFBQyxPQUFPLEVBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgX21vbmdvZGIgZnJvbSBcIm1vbmdvZGJcIjtcblxubGV0IG1vbmdvZGI6IHR5cGVvZiBpbXBvcnQoXCJtb25nb2RiXCIpID0gZ2xvYmFsVGhpc1tTeW1ib2wuZm9yKFwia0RhdGFiYXNlRGV2a2l0XCIpXSA9IGdsb2JhbFRoaXNbU3ltYm9sLmZvcihcImtEYXRhYmFzZURldmtpdFwiKV0gfHzCoHJlcXVpcmUoXCJtb25nb2RiXCIpOztcbmV4cG9ydCB7bW9uZ29kYiwgX21vbmdvZGJ9O1xuXG5cbiJdfQ==","import { mongodb } from \"./mongo\";\nfunction emitWarning(path) {\n process.emitWarning(`Property in the document path '${path}' contains an ObjectId value.\\n` +\n `This may lead to some inconsistencies within the system.\\n` +\n `You may want to cast it to string before using it.`);\n}\nexport function checkDocument(document, path = undefined) {\n if (document instanceof mongodb.ObjectId) {\n // Check if the path is alike 0._id or _id or $set._id\n if (/^(\\d\\._id|_id|\\$.*?\\._id)$/.test(path)) {\n return;\n }\n emitWarning(path);\n }\n else if (Array.isArray(document)) {\n for (const [index, subDocument] of document.entries()) {\n const subPath = [path, index].filter(r => r != undefined).join(\".\");\n checkDocument(subDocument, subPath);\n }\n }\n else if (typeof document == \"object\") {\n for (const key in document) {\n const subDocument = document[key];\n const subPath = [path, key].filter(r => r != undefined).join(\".\");\n checkDocument(subDocument, subPath);\n }\n }\n}\nexport function checkDocuments(documents) {\n for (const [index, document] of documents.entries()) {\n checkDocument(document, String(index));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdGFja3MvYXBpL2Z1bmN0aW9uL3BhY2thZ2VzL2RhdGFiYXNlL3NyYy9jaGVjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBRWhDLFNBQVMsV0FBVyxDQUFDLElBQVk7SUFDL0IsT0FBTyxDQUFDLFdBQVcsQ0FDakIsa0NBQWtDLElBQUksaUNBQWlDO1FBQ3JFLDREQUE0RDtRQUM1RCxvREFBb0QsQ0FDdkQsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLFFBQWdCLEVBQUUsT0FBZSxTQUFTO0lBQ3RFLElBQUksUUFBUSxZQUFZLE9BQU8sQ0FBQyxRQUFRLEVBQUU7UUFDeEMsc0RBQXNEO1FBQ3RELElBQUksNEJBQTRCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzNDLE9BQU87U0FDUjtRQUNELFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNuQjtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUNsQyxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3JELE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEUsYUFBYSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNyQztLQUNGO1NBQU0sSUFBSSxPQUFPLFFBQVEsSUFBSSxRQUFRLEVBQUU7UUFDdEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxRQUFRLEVBQUU7WUFDMUIsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEUsYUFBYSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNyQztLQUNGO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsU0FBbUI7SUFDaEQsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNuRCxhQUFhLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ3hDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bW9uZ29kYn0gZnJvbSBcIi4vbW9uZ29cIjtcblxuZnVuY3Rpb24gZW1pdFdhcm5pbmcocGF0aDogc3RyaW5nKSB7XG4gIHByb2Nlc3MuZW1pdFdhcm5pbmcoXG4gICAgYFByb3BlcnR5IGluIHRoZSBkb2N1bWVudCBwYXRoICcke3BhdGh9JyBjb250YWlucyBhbiBPYmplY3RJZCB2YWx1ZS5cXG5gICtcbiAgICAgIGBUaGlzIG1heSBsZWFkIHRvIHNvbWUgaW5jb25zaXN0ZW5jaWVzIHdpdGhpbiB0aGUgc3lzdGVtLlxcbmAgK1xuICAgICAgYFlvdSBtYXkgd2FudCB0byBjYXN0IGl0IHRvIHN0cmluZyBiZWZvcmUgdXNpbmcgaXQuYFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tEb2N1bWVudChkb2N1bWVudDogb2JqZWN0LCBwYXRoOiBzdHJpbmcgPSB1bmRlZmluZWQpOiB2b2lkIHtcbiAgaWYgKGRvY3VtZW50IGluc3RhbmNlb2YgbW9uZ29kYi5PYmplY3RJZCkge1xuICAgIC8vIENoZWNrIGlmIHRoZSBwYXRoIGlzIGFsaWtlIDAuX2lkIG9yIF9pZCBvciAkc2V0Ll9pZFxuICAgIGlmICgvXihcXGRcXC5faWR8X2lkfFxcJC4qP1xcLl9pZCkkLy50ZXN0KHBhdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVtaXRXYXJuaW5nKHBhdGgpO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZG9jdW1lbnQpKSB7XG4gICAgZm9yIChjb25zdCBbaW5kZXgsIHN1YkRvY3VtZW50XSBvZiBkb2N1bWVudC5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IHN1YlBhdGggPSBbcGF0aCwgaW5kZXhdLmZpbHRlcihyID0+IHIgIT0gdW5kZWZpbmVkKS5qb2luKFwiLlwiKTtcbiAgICAgIGNoZWNrRG9jdW1lbnQoc3ViRG9jdW1lbnQsIHN1YlBhdGgpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgZG9jdW1lbnQgPT0gXCJvYmplY3RcIikge1xuICAgIGZvciAoY29uc3Qga2V5IGluIGRvY3VtZW50KSB7XG4gICAgICBjb25zdCBzdWJEb2N1bWVudCA9IGRvY3VtZW50W2tleV07XG4gICAgICBjb25zdCBzdWJQYXRoID0gW3BhdGgsIGtleV0uZmlsdGVyKHIgPT4gciAhPSB1bmRlZmluZWQpLmpvaW4oXCIuXCIpO1xuICAgICAgY2hlY2tEb2N1bWVudChzdWJEb2N1bWVudCwgc3ViUGF0aCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0RvY3VtZW50cyhkb2N1bWVudHM6IG9iamVjdFtdKTogdm9pZCB7XG4gIGZvciAoY29uc3QgW2luZGV4LCBkb2N1bWVudF0gb2YgZG9jdW1lbnRzLmVudHJpZXMoKSkge1xuICAgIGNoZWNrRG9jdW1lbnQoZG9jdW1lbnQsIFN0cmluZyhpbmRleCkpO1xuICB9XG59XG4iXX0=","import * as util from \"util\";\nimport { mongodb } from \"./mongo\";\nexport const objectId = util.deprecate((id) => {\n return new mongodb.ObjectId(id);\n}, \"objectId is deprecated, please replace it with ObjectId class.\");\nexport const ObjectId = mongodb.ObjectId;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0aWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdGFja3MvYXBpL2Z1bmN0aW9uL3BhY2thZ2VzL2RhdGFiYXNlL3NyYy9vYmplY3RpZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUMsT0FBTyxFQUFXLE1BQU0sU0FBUyxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBd0MsRUFBRSxFQUFFO0lBQ2xGLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xDLENBQUMsRUFBRSxnRUFBZ0UsQ0FBQyxDQUFDO0FBRXJFLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwidXRpbFwiO1xuaW1wb3J0IHttb25nb2RiLCBfbW9uZ29kYn0gZnJvbSBcIi4vbW9uZ29cIjtcblxuZXhwb3J0IGNvbnN0IG9iamVjdElkID0gdXRpbC5kZXByZWNhdGUoKGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgX21vbmdvZGIuT2JqZWN0SWQpID0+IHtcbiAgcmV0dXJuIG5ldyBtb25nb2RiLk9iamVjdElkKGlkKTtcbn0sIFwib2JqZWN0SWQgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHJlcGxhY2UgaXQgd2l0aCBPYmplY3RJZCBjbGFzcy5cIik7XG5cbmV4cG9ydCBjb25zdCBPYmplY3RJZCA9IG1vbmdvZGIuT2JqZWN0SWQ7XG4iXX0=","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as util from \"util\";\nimport { checkDocument, checkDocuments } from \"./check\";\nimport { mongodb } from \"./mongo\";\nimport { ObjectId } from \"./objectid\";\nprocess.once(\"SIGTERM\", () => {\n close(false, () => process.exit());\n});\nlet connection = globalThis[Symbol.for(\"kDatabaseDevkitConn\")];\nfunction ignoreWarnings() {\n return \"NO_DEVKIT_DATABASE_WARNING\" in process.env;\n}\nfunction checkEnvironment() {\n if (!process.env.RUNTIME) {\n process.emitWarning(`Seems like you are not under spica/functions environment.` +\n `This module is only designed to work with spica/functions.`);\n }\n const { __INTERNAL__SPICA__MONGOURL__: url, __INTERNAL__SPICA__MONGODBNAME__: dbName } = process.env;\n if (!url || !dbName) {\n throw new Error(`The <__INTERNAL__SPICA__MONGOURL__> or <__INTERNAL__SPICA__MONGODBNAME__> variables was not given.`);\n }\n}\nfunction connect() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!connected()) {\n connection = new mongodb.MongoClient(process.env.__INTERNAL__SPICA__MONGOURL__, {\n replicaSet: process.env.__INTERNAL__SPICA__MONGOREPL__,\n appname: `Functions on ${process.env.RUNTIME || \"unknown\"} runtime.`,\n useNewUrlParser: true,\n // @ts-ignore\n useUnifiedTopology: true\n });\n }\n if (!connection.isConnected()) {\n yield connection.connect();\n }\n return connection;\n });\n}\nexport function database() {\n return __awaiter(this, void 0, void 0, function* () {\n checkEnvironment();\n const connection = (globalThis[Symbol.for(\"kDatabaseDevkitConn\")] = yield connect());\n if (!ignoreWarnings() && \"TIMEOUT\" in process.env) {\n process.emitWarning(`As the structure of the data in the database is subject to change in any future release, we encourage you not to interact with the database directly.\\n` +\n `As an alternative, we recommend you to interact with the APIs through an API Key to do the same. \\n` +\n `Set NO_DEVKIT_DATABASE_WARNING environment variable to ignore this warning.`, \"FootgunWarning\");\n }\n const db = connection.db(process.env.__INTERNAL__SPICA__MONGODBNAME__);\n const collection = db.collection;\n db.collection = (...args) => {\n const coll = collection.call(db, ...args);\n coll.watch = util.deprecate(coll.watch, `It is not advised to use 'watch' under spica/functions environment. I hope that you know what you are doing.`);\n const findById = coll.findOne;\n coll[\"findById\"] = (id, ...args) => {\n const objectId = new ObjectId(id);\n return findById.bind(coll)({ _id: objectId }, ...args);\n };\n const findOne = coll.findOne;\n coll.findOne = (filter, ...args) => {\n validateDocs(filter);\n return findOne.bind(coll)(filter, ...args);\n };\n const find = coll.find;\n coll.find = (filter, ...args) => {\n validateDocs(filter);\n return find.bind(coll)(filter, ...args);\n };\n const findOneAndUpdate = coll.findOneAndUpdate;\n coll.findOneAndUpdate = (filter, update, ...args) => {\n validateDocs(filter);\n validateDocs(update);\n return findOneAndUpdate.bind(coll)(filter, update, ...args);\n };\n const findOneAndReplace = coll.findOneAndReplace;\n coll.findOneAndReplace = (filter, update, ...args) => {\n validateDocs(filter);\n validateDocs(update);\n return findOneAndReplace.bind(coll)(filter, update, ...args);\n };\n const findOneAndDelete = coll.findOneAndDelete;\n coll.findOneAndDelete = (filter, ...args) => {\n validateDocs(filter);\n return findOneAndDelete.bind(coll)(filter, ...args);\n };\n const insertOne = coll.insertOne;\n coll.insertOne = (doc, ...args) => {\n validateDocs(doc);\n return insertOne.bind(coll)(doc, ...args);\n };\n const insertMany = coll.insertMany;\n coll.insertMany = (docs, ...args) => {\n validateDocs(docs);\n return insertMany.bind(coll)(docs, ...args);\n };\n const updateOne = coll.updateOne;\n coll.updateOne = (filter, update, ...args) => {\n validateDocs(filter);\n validateDocs(update);\n return updateOne.bind(coll)(filter, update, ...args);\n };\n const updateMany = coll.updateMany;\n coll.updateMany = (filter, update, ...args) => {\n validateDocs(filter);\n validateDocs(update);\n return updateMany.bind(coll)(filter, update, ...args);\n };\n const deleteOne = coll.deleteOne;\n coll.deleteOne = (filter, ...args) => {\n validateDocs(filter);\n return deleteOne.bind(coll)(filter, ...args);\n };\n const deleteMany = coll.deleteMany;\n coll.deleteMany = (filter, ...args) => {\n validateDocs(filter);\n return deleteMany.bind(coll)(filter, ...args);\n };\n return coll;\n };\n return db;\n });\n}\nfunction validateDocs(doc) {\n if (!ignoreWarnings()) {\n Array.isArray(doc) ? checkDocuments(doc) : checkDocument(doc);\n }\n}\nexport function close(force, cb) {\n if (connection) {\n globalThis[Symbol.for(\"kDatabaseDevkitConn\")] = undefined;\n return connection.close(force, cb);\n }\n return typeof cb == \"function\" ? cb() : Promise.resolve();\n}\nexport function connected() {\n return connection && connection.isConnected();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdGFja3MvYXBpL2Z1bmN0aW9uL3BhY2thZ2VzL2RhdGFiYXNlL3NyYy9kYXRhYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUMsYUFBYSxFQUFFLGNBQWMsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUN0RCxPQUFPLEVBQUMsT0FBTyxFQUFXLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFFcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBQzNCLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLFVBQVUsR0FBeUIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0FBRXJGLFNBQVMsY0FBYztJQUNyQixPQUFPLDRCQUE0QixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7QUFDckQsQ0FBQztBQUVELFNBQVMsZ0JBQWdCO0lBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRTtRQUN4QixPQUFPLENBQUMsV0FBVyxDQUNqQiwyREFBMkQ7WUFDekQsNERBQTRELENBQy9ELENBQUM7S0FDSDtJQUVELE1BQU0sRUFDSiw2QkFBNkIsRUFBRSxHQUFHLEVBQ2xDLGdDQUFnQyxFQUFFLE1BQU0sRUFDekMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBRWhCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FDYixvR0FBb0csQ0FDckcsQ0FBQztLQUNIO0FBQ0gsQ0FBQztBQUVELFNBQWUsT0FBTzs7UUFDcEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ2hCLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRTtnQkFDOUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCO2dCQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLFNBQVMsV0FBVztnQkFDcEUsZUFBZSxFQUFFLElBQUk7Z0JBQ3JCLGFBQWE7Z0JBQ2Isa0JBQWtCLEVBQUUsSUFBSTthQUN6QixDQUFDLENBQUM7U0FDSjtRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDNUI7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQUE7QUFFRCxNQUFNLFVBQWdCLFFBQVE7O1FBQzVCLGdCQUFnQixFQUFFLENBQUM7UUFFbkIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEdBQUcsTUFBTSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRXJGLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxTQUFTLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUNqRCxPQUFPLENBQUMsV0FBVyxDQUNqQix5SkFBeUo7Z0JBQ3ZKLHFHQUFxRztnQkFDckcsNkVBQTZFLEVBQy9FLGdCQUFnQixDQUNqQixDQUFDO1NBQ0g7UUFFRCxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUV2RSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDO1FBRWpDLEVBQUUsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFO1lBQzFCLE1BQU0sSUFBSSxHQUF3QixVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FDekIsSUFBSSxDQUFDLEtBQUssRUFDViw4R0FBOEcsQ0FDL0csQ0FBQztZQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUU7Z0JBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNsQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN2RCxDQUFDLENBQUM7WUFFRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRTtnQkFDakMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDN0MsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUU7Z0JBQzlCLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQztZQUNGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQy9DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRTtnQkFDbEQsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQixZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3JCLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUM5RCxDQUFDLENBQUM7WUFFRixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUNqRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUU7Z0JBQ25ELFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDckIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQixPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDL0QsQ0FBQyxDQUFDO1lBRUYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDL0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUU7Z0JBQzFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDckIsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDdEQsQ0FBQyxDQUFDO1lBRUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUU7Z0JBQ2hDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbEIsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzVDLENBQUMsQ0FBQztZQUNGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFO2dCQUNsQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25CLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUM5QyxDQUFDLENBQUM7WUFDRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUU7Z0JBQzNDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDckIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3ZELENBQUMsQ0FBQztZQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRTtnQkFDNUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQixZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3JCLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDeEQsQ0FBQyxDQUFDO1lBRUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUU7Z0JBQ25DLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDckIsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQy9DLENBQUMsQ0FBQztZQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFO2dCQUNwQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3JCLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUM7WUFFRixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztRQUVGLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUFBO0FBRUQsU0FBUyxZQUFZLENBQUMsR0FBc0I7SUFDMUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO1FBQ3JCLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQy9EO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxLQUFLLENBQUMsS0FBZSxFQUFFLEVBQTJCO0lBQ2hFLElBQUksVUFBVSxFQUFFO1FBQ2QsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUMxRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQ3BDO0lBQ0QsT0FBTyxPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDNUQsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTO0lBQ3ZCLE9BQU8sVUFBVSxJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwidXRpbFwiO1xuaW1wb3J0IHtjaGVja0RvY3VtZW50LCBjaGVja0RvY3VtZW50c30gZnJvbSBcIi4vY2hlY2tcIjtcbmltcG9ydCB7bW9uZ29kYiwgX21vbmdvZGJ9IGZyb20gXCIuL21vbmdvXCI7XG5pbXBvcnQge09iamVjdElkfSBmcm9tIFwiLi9vYmplY3RpZFwiO1xuXG5wcm9jZXNzLm9uY2UoXCJTSUdURVJNXCIsICgpID0+IHtcbiAgY2xvc2UoZmFsc2UsICgpID0+IHByb2Nlc3MuZXhpdCgpKTtcbn0pO1xuXG5sZXQgY29ubmVjdGlvbjogX21vbmdvZGIuTW9uZ29DbGllbnQgPSBnbG9iYWxUaGlzW1N5bWJvbC5mb3IoXCJrRGF0YWJhc2VEZXZraXRDb25uXCIpXTtcblxuZnVuY3Rpb24gaWdub3JlV2FybmluZ3MoKSB7XG4gIHJldHVybiBcIk5PX0RFVktJVF9EQVRBQkFTRV9XQVJOSU5HXCIgaW4gcHJvY2Vzcy5lbnY7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRW52aXJvbm1lbnQoKSB7XG4gIGlmICghcHJvY2Vzcy5lbnYuUlVOVElNRSkge1xuICAgIHByb2Nlc3MuZW1pdFdhcm5pbmcoXG4gICAgICBgU2VlbXMgbGlrZSB5b3UgYXJlIG5vdCB1bmRlciBzcGljYS9mdW5jdGlvbnMgZW52aXJvbm1lbnQuYCArXG4gICAgICAgIGBUaGlzIG1vZHVsZSBpcyBvbmx5IGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBzcGljYS9mdW5jdGlvbnMuYFxuICAgICk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgX19JTlRFUk5BTF9fU1BJQ0FfX01PTkdPVVJMX186IHVybCxcbiAgICBfX0lOVEVSTkFMX19TUElDQV9fTU9OR09EQk5BTUVfXzogZGJOYW1lXG4gIH0gPSBwcm9jZXNzLmVudjtcblxuICBpZiAoIXVybCB8fCAhZGJOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFRoZSA8X19JTlRFUk5BTF9fU1BJQ0FfX01PTkdPVVJMX18+IG9yIDxfX0lOVEVSTkFMX19TUElDQV9fTU9OR09EQk5BTUVfXz4gdmFyaWFibGVzIHdhcyBub3QgZ2l2ZW4uYFxuICAgICk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY29ubmVjdCgpOiBQcm9taXNlPF9tb25nb2RiLk1vbmdvQ2xpZW50PiB7XG4gIGlmICghY29ubmVjdGVkKCkpIHtcbiAgICBjb25uZWN0aW9uID0gbmV3IG1vbmdvZGIuTW9uZ29DbGllbnQocHJvY2Vzcy5lbnYuX19JTlRFUk5BTF9fU1BJQ0FfX01PTkdPVVJMX18sIHtcbiAgICAgIHJlcGxpY2FTZXQ6IHByb2Nlc3MuZW52Ll9fSU5URVJOQUxfX1NQSUNBX19NT05HT1JFUExfXyxcbiAgICAgIGFwcG5hbWU6IGBGdW5jdGlvbnMgb24gJHtwcm9jZXNzLmVudi5SVU5USU1FIHx8IFwidW5rbm93blwifSBydW50aW1lLmAsXG4gICAgICB1c2VOZXdVcmxQYXJzZXI6IHRydWUsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB1c2VVbmlmaWVkVG9wb2xvZ3k6IHRydWVcbiAgICB9KTtcbiAgfVxuICBpZiAoIWNvbm5lY3Rpb24uaXNDb25uZWN0ZWQoKSkge1xuICAgIGF3YWl0IGNvbm5lY3Rpb24uY29ubmVjdCgpO1xuICB9XG4gIHJldHVybiBjb25uZWN0aW9uO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGF0YWJhc2UoKTogUHJvbWlzZTxfbW9uZ29kYi5EYj4ge1xuICBjaGVja0Vudmlyb25tZW50KCk7XG5cbiAgY29uc3QgY29ubmVjdGlvbiA9IChnbG9iYWxUaGlzW1N5bWJvbC5mb3IoXCJrRGF0YWJhc2VEZXZraXRDb25uXCIpXSA9IGF3YWl0IGNvbm5lY3QoKSk7XG5cbiAgaWYgKCFpZ25vcmVXYXJuaW5ncygpICYmIFwiVElNRU9VVFwiIGluIHByb2Nlc3MuZW52KSB7XG4gICAgcHJvY2Vzcy5lbWl0V2FybmluZyhcbiAgICAgIGBBcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBkYXRhIGluIHRoZSBkYXRhYmFzZSBpcyBzdWJqZWN0IHRvIGNoYW5nZSBpbiBhbnkgZnV0dXJlIHJlbGVhc2UsIHdlIGVuY291cmFnZSB5b3Ugbm90IHRvIGludGVyYWN0IHdpdGggdGhlIGRhdGFiYXNlIGRpcmVjdGx5LlxcbmAgK1xuICAgICAgICBgQXMgYW4gYWx0ZXJuYXRpdmUsIHdlIHJlY29tbWVuZCB5b3UgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgQVBJcyB0aHJvdWdoIGFuIEFQSSBLZXkgdG8gZG8gdGhlIHNhbWUuIFxcbmAgK1xuICAgICAgICBgU2V0IE5PX0RFVktJVF9EQVRBQkFTRV9XQVJOSU5HIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGlnbm9yZSB0aGlzIHdhcm5pbmcuYCxcbiAgICAgIFwiRm9vdGd1bldhcm5pbmdcIlxuICAgICk7XG4gIH1cblxuICBjb25zdCBkYiA9IGNvbm5lY3Rpb24uZGIocHJvY2Vzcy5lbnYuX19JTlRFUk5BTF9fU1BJQ0FfX01PTkdPREJOQU1FX18pO1xuXG4gIGNvbnN0IGNvbGxlY3Rpb24gPSBkYi5jb2xsZWN0aW9uO1xuXG4gIGRiLmNvbGxlY3Rpb24gPSAoLi4uYXJncykgPT4ge1xuICAgIGNvbnN0IGNvbGw6IF9tb25nb2RiLkNvbGxlY3Rpb24gPSBjb2xsZWN0aW9uLmNhbGwoZGIsIC4uLmFyZ3MpO1xuICAgIGNvbGwud2F0Y2ggPSB1dGlsLmRlcHJlY2F0ZShcbiAgICAgIGNvbGwud2F0Y2gsXG4gICAgICBgSXQgaXMgbm90IGFkdmlzZWQgdG8gdXNlICd3YXRjaCcgdW5kZXIgc3BpY2EvZnVuY3Rpb25zIGVudmlyb25tZW50LiBJIGhvcGUgdGhhdCB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuYFxuICAgICk7XG5cbiAgICBjb25zdCBmaW5kQnlJZCA9IGNvbGwuZmluZE9uZTtcbiAgICBjb2xsW1wiZmluZEJ5SWRcIl0gPSAoaWQsIC4uLmFyZ3MpID0+IHtcbiAgICAgIGNvbnN0IG9iamVjdElkID0gbmV3IE9iamVjdElkKGlkKTtcbiAgICAgIHJldHVybiBmaW5kQnlJZC5iaW5kKGNvbGwpKHtfaWQ6IG9iamVjdElkfSwgLi4uYXJncyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGZpbmRPbmUgPSBjb2xsLmZpbmRPbmU7XG4gICAgY29sbC5maW5kT25lID0gKGZpbHRlciwgLi4uYXJncykgPT4ge1xuICAgICAgdmFsaWRhdGVEb2NzKGZpbHRlcik7XG4gICAgICByZXR1cm4gZmluZE9uZS5iaW5kKGNvbGwpKGZpbHRlciwgLi4uYXJncyk7XG4gICAgfTtcbiAgICBjb25zdCBmaW5kID0gY29sbC5maW5kO1xuICAgIGNvbGwuZmluZCA9IChmaWx0ZXIsIC4uLmFyZ3MpID0+IHtcbiAgICAgIHZhbGlkYXRlRG9jcyhmaWx0ZXIpO1xuICAgICAgcmV0dXJuIGZpbmQuYmluZChjb2xsKShmaWx0ZXIsIC4uLmFyZ3MpO1xuICAgIH07XG4gICAgY29uc3QgZmluZE9uZUFuZFVwZGF0ZSA9IGNvbGwuZmluZE9uZUFuZFVwZGF0ZTtcbiAgICBjb2xsLmZpbmRPbmVBbmRVcGRhdGUgPSAoZmlsdGVyLCB1cGRhdGUsIC4uLmFyZ3MpID0+IHtcbiAgICAgIHZhbGlkYXRlRG9jcyhmaWx0ZXIpO1xuICAgICAgdmFsaWRhdGVEb2NzKHVwZGF0ZSk7XG4gICAgICByZXR1cm4gZmluZE9uZUFuZFVwZGF0ZS5iaW5kKGNvbGwpKGZpbHRlciwgdXBkYXRlLCAuLi5hcmdzKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZmluZE9uZUFuZFJlcGxhY2UgPSBjb2xsLmZpbmRPbmVBbmRSZXBsYWNlO1xuICAgIGNvbGwuZmluZE9uZUFuZFJlcGxhY2UgPSAoZmlsdGVyLCB1cGRhdGUsIC4uLmFyZ3MpID0+IHtcbiAgICAgIHZhbGlkYXRlRG9jcyhmaWx0ZXIpO1xuICAgICAgdmFsaWRhdGVEb2NzKHVwZGF0ZSk7XG4gICAgICByZXR1cm4gZmluZE9uZUFuZFJlcGxhY2UuYmluZChjb2xsKShmaWx0ZXIsIHVwZGF0ZSwgLi4uYXJncyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGZpbmRPbmVBbmREZWxldGUgPSBjb2xsLmZpbmRPbmVBbmREZWxldGU7XG4gICAgY29sbC5maW5kT25lQW5kRGVsZXRlID0gKGZpbHRlciwgLi4uYXJncykgPT4ge1xuICAgICAgdmFsaWRhdGVEb2NzKGZpbHRlcik7XG4gICAgICByZXR1cm4gZmluZE9uZUFuZERlbGV0ZS5iaW5kKGNvbGwpKGZpbHRlciwgLi4uYXJncyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGluc2VydE9uZSA9IGNvbGwuaW5zZXJ0T25lO1xuICAgIGNvbGwuaW5zZXJ0T25lID0gKGRvYywgLi4uYXJncykgPT4ge1xuICAgICAgdmFsaWRhdGVEb2NzKGRvYyk7XG4gICAgICByZXR1cm4gaW5zZXJ0T25lLmJpbmQoY29sbCkoZG9jLCAuLi5hcmdzKTtcbiAgICB9O1xuICAgIGNvbnN0IGluc2VydE1hbnkgPSBjb2xsLmluc2VydE1hbnk7XG4gICAgY29sbC5pbnNlcnRNYW55ID0gKGRvY3MsIC4uLmFyZ3MpID0+IHtcbiAgICAgIHZhbGlkYXRlRG9jcyhkb2NzKTtcbiAgICAgIHJldHVybiBpbnNlcnRNYW55LmJpbmQoY29sbCkoZG9jcywgLi4uYXJncyk7XG4gICAgfTtcbiAgICBjb25zdCB1cGRhdGVPbmUgPSBjb2xsLnVwZGF0ZU9uZTtcbiAgICBjb2xsLnVwZGF0ZU9uZSA9IChmaWx0ZXIsIHVwZGF0ZSwgLi4uYXJncykgPT4ge1xuICAgICAgdmFsaWRhdGVEb2NzKGZpbHRlcik7XG4gICAgICB2YWxpZGF0ZURvY3ModXBkYXRlKTtcbiAgICAgIHJldHVybiB1cGRhdGVPbmUuYmluZChjb2xsKShmaWx0ZXIsIHVwZGF0ZSwgLi4uYXJncyk7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZU1hbnkgPSBjb2xsLnVwZGF0ZU1hbnk7XG4gICAgY29sbC51cGRhdGVNYW55ID0gKGZpbHRlciwgdXBkYXRlLCAuLi5hcmdzKSA9PiB7XG4gICAgICB2YWxpZGF0ZURvY3MoZmlsdGVyKTtcbiAgICAgIHZhbGlkYXRlRG9jcyh1cGRhdGUpO1xuICAgICAgcmV0dXJuIHVwZGF0ZU1hbnkuYmluZChjb2xsKShmaWx0ZXIsIHVwZGF0ZSwgLi4uYXJncyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGRlbGV0ZU9uZSA9IGNvbGwuZGVsZXRlT25lO1xuICAgIGNvbGwuZGVsZXRlT25lID0gKGZpbHRlciwgLi4uYXJncykgPT4ge1xuICAgICAgdmFsaWRhdGVEb2NzKGZpbHRlcik7XG4gICAgICByZXR1cm4gZGVsZXRlT25lLmJpbmQoY29sbCkoZmlsdGVyLCAuLi5hcmdzKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZGVsZXRlTWFueSA9IGNvbGwuZGVsZXRlTWFueTtcbiAgICBjb2xsLmRlbGV0ZU1hbnkgPSAoZmlsdGVyLCAuLi5hcmdzKSA9PiB7XG4gICAgICB2YWxpZGF0ZURvY3MoZmlsdGVyKTtcbiAgICAgIHJldHVybiBkZWxldGVNYW55LmJpbmQoY29sbCkoZmlsdGVyLCAuLi5hcmdzKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbGw7XG4gIH07XG5cbiAgcmV0dXJuIGRiO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZURvY3MoZG9jOiBvYmplY3QgfCBvYmplY3RbXSkge1xuICBpZiAoIWlnbm9yZVdhcm5pbmdzKCkpIHtcbiAgICBBcnJheS5pc0FycmF5KGRvYykgPyBjaGVja0RvY3VtZW50cyhkb2MpIDogY2hlY2tEb2N1bWVudChkb2MpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZShmb3JjZT86IGJvb2xlYW4sIGNiPzogKC4uLmFyZ3M6IGFueSkgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4gfCB2b2lkIHtcbiAgaWYgKGNvbm5lY3Rpb24pIHtcbiAgICBnbG9iYWxUaGlzW1N5bWJvbC5mb3IoXCJrRGF0YWJhc2VEZXZraXRDb25uXCIpXSA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gY29ubmVjdGlvbi5jbG9zZShmb3JjZSwgY2IpO1xuICB9XG4gIHJldHVybiB0eXBlb2YgY2IgPT0gXCJmdW5jdGlvblwiID8gY2IoKSA6IFByb21pc2UucmVzb2x2ZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29ubmVjdGVkKCkge1xuICByZXR1cm4gY29ubmVjdGlvbiAmJiBjb25uZWN0aW9uLmlzQ29ubmVjdGVkKCk7XG59XG4iXX0="],"names":["util.deprecate","this"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../publish/src/mongo.js","../publish/src/check.js","../publish/src/objectid.js","../publish/src/database.js"],"sourcesContent":["let mongodb = globalThis[Symbol.for(\"kDatabaseDevkit\")] = globalThis[Symbol.for(\"kDatabaseDevkit\")] || require(\"mongodb\");\n;\nexport { mongodb };\n//# sourceMappingURL=mongo.js.map","import { mongodb } from \"./mongo\";\nfunction emitWarning(path) {\n process.emitWarning(`Property in the document path '${path}' contains an ObjectId value.\\n` +\n `This may lead to some inconsistencies within the system.\\n` +\n `You may want to cast it to string before using it.`);\n}\nexport function checkDocument(document, path = undefined) {\n if (document instanceof mongodb.ObjectId) {\n // Check if the path is alike 0._id or _id or $set._id\n if (/^(\\d\\._id|_id|\\$.*?\\._id)$/.test(path)) {\n return;\n }\n emitWarning(path);\n }\n else if (Array.isArray(document)) {\n for (const [index, subDocument] of document.entries()) {\n const subPath = [path, index].filter(r => r != undefined).join(\".\");\n checkDocument(subDocument, subPath);\n }\n }\n else if (typeof document == \"object\") {\n for (const key in document) {\n const subDocument = document[key];\n const subPath = [path, key].filter(r => r != undefined).join(\".\");\n checkDocument(subDocument, subPath);\n }\n }\n}\nexport function checkDocuments(documents) {\n for (const [index, document] of documents.entries()) {\n checkDocument(document, String(index));\n }\n}\n//# sourceMappingURL=check.js.map","import * as util from \"util\";\nimport { mongodb } from \"./mongo\";\nexport const objectId = util.deprecate((id) => {\n return new mongodb.ObjectId(id);\n}, \"objectId is deprecated, please replace it with ObjectId class.\");\nexport const ObjectId = mongodb.ObjectId;\n//# sourceMappingURL=objectid.js.map","import * as util from \"util\";\nimport { checkDocument, checkDocuments } from \"./check\";\nimport { mongodb } from \"./mongo\";\nimport { ObjectId } from \"./objectid\";\nprocess.once(\"SIGTERM\", () => {\n close(false, () => process.exit());\n});\nlet connection = globalThis[Symbol.for(\"kDatabaseDevkitConn\")];\nfunction ignoreWarnings() {\n return \"NO_DEVKIT_DATABASE_WARNING\" in process.env;\n}\nfunction checkEnvironment() {\n if (!process.env.RUNTIME) {\n process.emitWarning(`Seems like you are not under spica/functions environment.` +\n `This module is only designed to work with spica/functions.`);\n }\n const { __INTERNAL__SPICA__MONGOURL__: url, __INTERNAL__SPICA__MONGODBNAME__: dbName } = process.env;\n if (!url || !dbName) {\n throw new Error(`The <__INTERNAL__SPICA__MONGOURL__> or <__INTERNAL__SPICA__MONGODBNAME__> variables was not given.`);\n }\n}\nasync function connect() {\n if (!connected()) {\n connection = new mongodb.MongoClient(process.env.__INTERNAL__SPICA__MONGOURL__, {\n replicaSet: process.env.__INTERNAL__SPICA__MONGOREPL__,\n appname: `Functions on ${process.env.RUNTIME || \"unknown\"} runtime.`,\n useNewUrlParser: true,\n // @ts-ignore\n useUnifiedTopology: true\n });\n }\n if (!connection.isConnected()) {\n await connection.connect();\n }\n return connection;\n}\nexport async function database() {\n checkEnvironment();\n const connection = (globalThis[Symbol.for(\"kDatabaseDevkitConn\")] = await connect());\n if (!ignoreWarnings() && \"TIMEOUT\" in process.env) {\n process.emitWarning(`As the structure of the data in the database is subject to change in any future release, we encourage you not to interact with the database directly.\\n` +\n `As an alternative, we recommend you to interact with the APIs through an API Key to do the same. \\n` +\n `Set NO_DEVKIT_DATABASE_WARNING environment variable to ignore this warning.`, \"FootgunWarning\");\n }\n const db = connection.db(process.env.__INTERNAL__SPICA__MONGODBNAME__);\n const collection = db.collection;\n db.collection = (...args) => {\n const coll = collection.call(db, ...args);\n coll.watch = util.deprecate(coll.watch, `It is not advised to use 'watch' under spica/functions environment. I hope that you know what you are doing.`);\n const findById = coll.findOne;\n coll[\"findById\"] = (id, ...args) => {\n const objectId = new ObjectId(id);\n return findById.bind(coll)({ _id: objectId }, ...args);\n };\n const findOne = coll.findOne;\n coll.findOne = (filter, ...args) => {\n validateDocs(filter);\n return findOne.bind(coll)(filter, ...args);\n };\n const find = coll.find;\n coll.find = (filter, ...args) => {\n validateDocs(filter);\n return find.bind(coll)(filter, ...args);\n };\n const findOneAndUpdate = coll.findOneAndUpdate;\n coll.findOneAndUpdate = (filter, update, ...args) => {\n validateDocs(filter);\n validateDocs(update);\n return findOneAndUpdate.bind(coll)(filter, update, ...args);\n };\n const findOneAndReplace = coll.findOneAndReplace;\n coll.findOneAndReplace = (filter, update, ...args) => {\n validateDocs(filter);\n validateDocs(update);\n return findOneAndReplace.bind(coll)(filter, update, ...args);\n };\n const findOneAndDelete = coll.findOneAndDelete;\n coll.findOneAndDelete = (filter, ...args) => {\n validateDocs(filter);\n return findOneAndDelete.bind(coll)(filter, ...args);\n };\n const insertOne = coll.insertOne;\n coll.insertOne = (doc, ...args) => {\n validateDocs(doc);\n return insertOne.bind(coll)(doc, ...args);\n };\n const insertMany = coll.insertMany;\n coll.insertMany = (docs, ...args) => {\n validateDocs(docs);\n return insertMany.bind(coll)(docs, ...args);\n };\n const updateOne = coll.updateOne;\n coll.updateOne = (filter, update, ...args) => {\n validateDocs(filter);\n validateDocs(update);\n return updateOne.bind(coll)(filter, update, ...args);\n };\n const updateMany = coll.updateMany;\n coll.updateMany = (filter, update, ...args) => {\n validateDocs(filter);\n validateDocs(update);\n return updateMany.bind(coll)(filter, update, ...args);\n };\n const deleteOne = coll.deleteOne;\n coll.deleteOne = (filter, ...args) => {\n validateDocs(filter);\n return deleteOne.bind(coll)(filter, ...args);\n };\n const deleteMany = coll.deleteMany;\n coll.deleteMany = (filter, ...args) => {\n validateDocs(filter);\n return deleteMany.bind(coll)(filter, ...args);\n };\n return coll;\n };\n return db;\n}\nfunction validateDocs(doc) {\n if (!ignoreWarnings()) {\n Array.isArray(doc) ? checkDocuments(doc) : checkDocument(doc);\n }\n}\nexport function close(force, cb) {\n if (connection) {\n globalThis[Symbol.for(\"kDatabaseDevkitConn\")] = undefined;\n return connection.close(force, cb);\n }\n return typeof cb == \"function\" ? cb() : Promise.resolve();\n}\nexport function connected() {\n return connection && connection.isConnected();\n}\n//# sourceMappingURL=database.js.map"],"names":["util.deprecate"],"mappings":";;AAAA,IAAI,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC;;ACCzH,SAAS,WAAW,CAAC,IAAI,EAAE;AAC3B,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,+BAA+B,EAAE,IAAI,CAAC,+BAA+B,CAAC;AAC/F,QAAQ,CAAC,0DAA0D,CAAC;AACpE,QAAQ,CAAC,kDAAkD,CAAC,CAAC,CAAC;AAC9D,CAAC;AACM,SAAS,aAAa,CAAC,QAAQ,EAAE,IAAI,GAAG,SAAS,EAAE;AAC1D,IAAI,IAAI,QAAQ,YAAY,OAAO,CAAC,QAAQ,EAAE;AAC9C;AACA,QAAQ,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,KAAK;AACL,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACtC,QAAQ,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;AAC/D,YAAY,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChF,YAAY,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAChD,SAAS;AACT,KAAK;AACL,SAAS,IAAI,OAAO,QAAQ,IAAI,QAAQ,EAAE;AAC1C,QAAQ,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;AACpC,YAAY,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9C,YAAY,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9E,YAAY,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAChD,SAAS;AACT,KAAK;AACL,CAAC;AACM,SAAS,cAAc,CAAC,SAAS,EAAE;AAC1C,IAAI,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;AACzD,QAAQ,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,KAAK;AACL;;AC9BY,MAAC,QAAQ,GAAGA,SAAc,CAAC,CAAC,EAAE,KAAK;AAC/C,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpC,CAAC,EAAE,gEAAgE,EAAE;AACzD,MAAC,QAAQ,GAAG,OAAO,CAAC;;ACDhC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM;AAC9B,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AACH,IAAI,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC/D,SAAS,cAAc,GAAG;AAC1B,IAAI,OAAO,4BAA4B,IAAI,OAAO,CAAC,GAAG,CAAC;AACvD,CAAC;AACD,SAAS,gBAAgB,GAAG;AAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE;AAC9B,QAAQ,OAAO,CAAC,WAAW,CAAC,CAAC,yDAAyD,CAAC;AACvF,YAAY,CAAC,0DAA0D,CAAC,CAAC,CAAC;AAC1E,KAAK;AACL,IAAI,MAAM,EAAE,6BAA6B,EAAE,GAAG,EAAE,gCAAgC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AACzG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,kGAAkG,CAAC,CAAC,CAAC;AAC9H,KAAK;AACL,CAAC;AACD,eAAe,OAAO,GAAG;AACzB,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACtB,QAAQ,UAAU,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE;AACxF,YAAY,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B;AAClE,YAAY,OAAO,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC;AAChF,YAAY,eAAe,EAAE,IAAI;AACjC;AACA,YAAY,kBAAkB,EAAE,IAAI;AACpC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;AACnC,QAAQ,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,UAAU,CAAC;AACtB,CAAC;AACM,eAAe,QAAQ,GAAG;AACjC,IAAI,gBAAgB,EAAE,CAAC;AACvB,IAAI,MAAM,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,GAAG,MAAM,OAAO,EAAE,CAAC,CAAC;AACzF,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE;AACvD,QAAQ,OAAO,CAAC,WAAW,CAAC,CAAC,uJAAuJ,CAAC;AACrL,YAAY,CAAC,mGAAmG,CAAC;AACjH,YAAY,CAAC,2EAA2E,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAC7G,KAAK;AACL,IAAI,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;AAC3E,IAAI,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC;AACrC,IAAI,EAAE,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,KAAK;AACjC,QAAQ,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,KAAK,GAAGA,SAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,4GAA4G,CAAC,CAAC,CAAC;AAChK,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;AACtC,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,KAAK;AAC5C,YAAY,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9C,YAAY,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;AACnE,SAAS,CAAC;AACV,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACrC,QAAQ,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,KAAK;AAC5C,YAAY,YAAY,CAAC,MAAM,CAAC,CAAC;AACjC,YAAY,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AACvD,SAAS,CAAC;AACV,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,KAAK;AACzC,YAAY,YAAY,CAAC,MAAM,CAAC,CAAC;AACjC,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AACpD,SAAS,CAAC;AACV,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACvD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,KAAK;AAC7D,YAAY,YAAY,CAAC,MAAM,CAAC,CAAC;AACjC,YAAY,YAAY,CAAC,MAAM,CAAC,CAAC;AACjC,YAAY,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AACxE,SAAS,CAAC;AACV,QAAQ,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACzD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,KAAK;AAC9D,YAAY,YAAY,CAAC,MAAM,CAAC,CAAC;AACjC,YAAY,YAAY,CAAC,MAAM,CAAC,CAAC;AACjC,YAAY,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AACzE,SAAS,CAAC;AACV,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACvD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,KAAK;AACrD,YAAY,YAAY,CAAC,MAAM,CAAC,CAAC;AACjC,YAAY,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AAChE,SAAS,CAAC;AACV,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACzC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK;AAC3C,YAAY,YAAY,CAAC,GAAG,CAAC,CAAC;AAC9B,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACtD,SAAS,CAAC;AACV,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAC3C,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,KAAK;AAC7C,YAAY,YAAY,CAAC,IAAI,CAAC,CAAC;AAC/B,YAAY,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AACxD,SAAS,CAAC;AACV,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACzC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,KAAK;AACtD,YAAY,YAAY,CAAC,MAAM,CAAC,CAAC;AACjC,YAAY,YAAY,CAAC,MAAM,CAAC,CAAC;AACjC,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AACjE,SAAS,CAAC;AACV,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAC3C,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,KAAK;AACvD,YAAY,YAAY,CAAC,MAAM,CAAC,CAAC;AACjC,YAAY,YAAY,CAAC,MAAM,CAAC,CAAC;AACjC,YAAY,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AAClE,SAAS,CAAC;AACV,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACzC,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,KAAK;AAC9C,YAAY,YAAY,CAAC,MAAM,CAAC,CAAC;AACjC,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AACzD,SAAS,CAAC;AACV,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAC3C,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,KAAK;AAC/C,YAAY,YAAY,CAAC,MAAM,CAAC,CAAC;AACjC,YAAY,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AAC1D,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN,IAAI,OAAO,EAAE,CAAC;AACd,CAAC;AACD,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AAC3B,QAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AACtE,KAAK;AACL,CAAC;AACM,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE;AACjC,IAAI,IAAI,UAAU,EAAE;AACpB,QAAQ,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,GAAG,SAAS,CAAC;AAClE,QAAQ,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,OAAO,OAAO,EAAE,IAAI,UAAU,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;AAC9D,CAAC;AACM,SAAS,SAAS,GAAG;AAC5B,IAAI,OAAO,UAAU,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;AAClD;;;;"}
@@ -1,3 +1,2 @@
1
- /// <amd-module name="@spica-devkit/database/src/check" />
2
1
  export declare function checkDocument(document: object, path?: string): void;
3
2
  export declare function checkDocuments(documents: object[]): void;
@@ -1,4 +1,3 @@
1
- /// <amd-module name="@spica-devkit/database/src/database" />
2
1
  import { _mongodb } from "./mongo";
3
2
  export declare function database(): Promise<_mongodb.Db>;
4
3
  export declare function close(force?: boolean, cb?: (...args: any) => void): Promise<void> | void;
@@ -1,3 +1,2 @@
1
- /// <amd-module name="@spica-devkit/database/src/index" />
2
1
  export * from "./database";
3
2
  export * from "./objectid";
@@ -1,4 +1,3 @@
1
- /// <amd-module name="@spica-devkit/database/src/mongo" />
2
1
  import type * as _mongodb from "mongodb";
3
2
  declare let mongodb: typeof import("mongodb");
4
3
  export { mongodb, _mongodb };
@@ -1,4 +1,3 @@
1
- /// <amd-module name="@spica-devkit/database/src/objectid" />
2
1
  import { _mongodb } from "./mongo";
3
2
  export declare const objectId: (id?: string | number | _mongodb.ObjectId) => _mongodb.ObjectID;
4
3
  export declare const ObjectId: typeof _mongodb.ObjectID;
package/index.d.ts CHANGED
@@ -1,2 +1 @@
1
- /// <amd-module name="@spica-devkit/database" />
2
1
  export * from "./src/index";
package/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
2
3
  if (k2 === undefined) k2 = k;
3
4
  Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
@@ -8,17 +9,6 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
8
9
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
9
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
10
11
  };
11
- (function (factory) {
12
- if (typeof module === "object" && typeof module.exports === "object") {
13
- var v = factory(require, exports);
14
- if (v !== undefined) module.exports = v;
15
- }
16
- else if (typeof define === "function" && define.amd) {
17
- define("@spica-devkit/database", ["require", "exports", "@spica-devkit/database/src/index"], factory);
18
- }
19
- })(function (require, exports) {
20
- "use strict";
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- __exportStar(require("@spica-devkit/database/src/index"), exports);
23
- });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdGFja3MvYXBpL2Z1bmN0aW9uL3BhY2thZ2VzL2RhdGFiYXNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLG1FQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3NyYy9pbmRleFwiO1xuIl19
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./src/index"), exports);
14
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../stacks/api/function/packages/database/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@spica-devkit/database",
3
3
  "license": "AGPLv3",
4
- "version": "0.9.12",
4
+ "version": "0.9.16",
5
5
  "description": "Database package for Spica functions.",
6
6
  "author": "spica",
7
7
  "keywords": ["spica", "devkit"],
package/src/check.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- /// <amd-module name="@spica-devkit/database/src/check" />
2
1
  export declare function checkDocument(document: object, path?: string): void;
3
2
  export declare function checkDocuments(documents: object[]): void;
package/src/check.js CHANGED
@@ -1,49 +1,39 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define("@spica-devkit/database/src/check", ["require", "exports", "@spica-devkit/database/src/mongo"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.checkDocuments = exports.checkDocument = void 0;
13
- const mongo_1 = require("@spica-devkit/database/src/mongo");
14
- function emitWarning(path) {
15
- process.emitWarning(`Property in the document path '${path}' contains an ObjectId value.\n` +
16
- `This may lead to some inconsistencies within the system.\n` +
17
- `You may want to cast it to string before using it.`);
18
- }
19
- function checkDocument(document, path = undefined) {
20
- if (document instanceof mongo_1.mongodb.ObjectId) {
21
- // Check if the path is alike 0._id or _id or $set._id
22
- if (/^(\d\._id|_id|\$.*?\._id)$/.test(path)) {
23
- return;
24
- }
25
- emitWarning(path);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkDocuments = exports.checkDocument = void 0;
4
+ const mongo_1 = require("./mongo");
5
+ function emitWarning(path) {
6
+ process.emitWarning(`Property in the document path '${path}' contains an ObjectId value.\n` +
7
+ `This may lead to some inconsistencies within the system.\n` +
8
+ `You may want to cast it to string before using it.`);
9
+ }
10
+ function checkDocument(document, path = undefined) {
11
+ if (document instanceof mongo_1.mongodb.ObjectId) {
12
+ // Check if the path is alike 0._id or _id or $set._id
13
+ if (/^(\d\._id|_id|\$.*?\._id)$/.test(path)) {
14
+ return;
26
15
  }
27
- else if (Array.isArray(document)) {
28
- for (const [index, subDocument] of document.entries()) {
29
- const subPath = [path, index].filter(r => r != undefined).join(".");
30
- checkDocument(subDocument, subPath);
31
- }
32
- }
33
- else if (typeof document == "object") {
34
- for (const key in document) {
35
- const subDocument = document[key];
36
- const subPath = [path, key].filter(r => r != undefined).join(".");
37
- checkDocument(subDocument, subPath);
38
- }
16
+ emitWarning(path);
17
+ }
18
+ else if (Array.isArray(document)) {
19
+ for (const [index, subDocument] of document.entries()) {
20
+ const subPath = [path, index].filter(r => r != undefined).join(".");
21
+ checkDocument(subDocument, subPath);
39
22
  }
40
23
  }
41
- exports.checkDocument = checkDocument;
42
- function checkDocuments(documents) {
43
- for (const [index, document] of documents.entries()) {
44
- checkDocument(document, String(index));
24
+ else if (typeof document == "object") {
25
+ for (const key in document) {
26
+ const subDocument = document[key];
27
+ const subPath = [path, key].filter(r => r != undefined).join(".");
28
+ checkDocument(subDocument, subPath);
45
29
  }
46
30
  }
47
- exports.checkDocuments = checkDocuments;
48
- });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdGFja3MvYXBpL2Z1bmN0aW9uL3BhY2thZ2VzL2RhdGFiYXNlL3NyYy9jaGVjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFBQSw0REFBZ0M7SUFFaEMsU0FBUyxXQUFXLENBQUMsSUFBWTtRQUMvQixPQUFPLENBQUMsV0FBVyxDQUNqQixrQ0FBa0MsSUFBSSxpQ0FBaUM7WUFDckUsNERBQTREO1lBQzVELG9EQUFvRCxDQUN2RCxDQUFDO0lBQ0osQ0FBQztJQUVELFNBQWdCLGFBQWEsQ0FBQyxRQUFnQixFQUFFLE9BQWUsU0FBUztRQUN0RSxJQUFJLFFBQVEsWUFBWSxlQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3hDLHNEQUFzRDtZQUN0RCxJQUFJLDRCQUE0QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDM0MsT0FBTzthQUNSO1lBQ0QsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25CO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2xDLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ3JELE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3BFLGFBQWEsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDckM7U0FDRjthQUFNLElBQUksT0FBTyxRQUFRLElBQUksUUFBUSxFQUFFO1lBQ3RDLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFO2dCQUMxQixNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xDLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xFLGFBQWEsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDckM7U0FDRjtJQUNILENBQUM7SUFuQkQsc0NBbUJDO0lBRUQsU0FBZ0IsY0FBYyxDQUFDLFNBQW1CO1FBQ2hELEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkQsYUFBYSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFKRCx3Q0FJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bW9uZ29kYn0gZnJvbSBcIi4vbW9uZ29cIjtcblxuZnVuY3Rpb24gZW1pdFdhcm5pbmcocGF0aDogc3RyaW5nKSB7XG4gIHByb2Nlc3MuZW1pdFdhcm5pbmcoXG4gICAgYFByb3BlcnR5IGluIHRoZSBkb2N1bWVudCBwYXRoICcke3BhdGh9JyBjb250YWlucyBhbiBPYmplY3RJZCB2YWx1ZS5cXG5gICtcbiAgICAgIGBUaGlzIG1heSBsZWFkIHRvIHNvbWUgaW5jb25zaXN0ZW5jaWVzIHdpdGhpbiB0aGUgc3lzdGVtLlxcbmAgK1xuICAgICAgYFlvdSBtYXkgd2FudCB0byBjYXN0IGl0IHRvIHN0cmluZyBiZWZvcmUgdXNpbmcgaXQuYFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tEb2N1bWVudChkb2N1bWVudDogb2JqZWN0LCBwYXRoOiBzdHJpbmcgPSB1bmRlZmluZWQpOiB2b2lkIHtcbiAgaWYgKGRvY3VtZW50IGluc3RhbmNlb2YgbW9uZ29kYi5PYmplY3RJZCkge1xuICAgIC8vIENoZWNrIGlmIHRoZSBwYXRoIGlzIGFsaWtlIDAuX2lkIG9yIF9pZCBvciAkc2V0Ll9pZFxuICAgIGlmICgvXihcXGRcXC5faWR8X2lkfFxcJC4qP1xcLl9pZCkkLy50ZXN0KHBhdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVtaXRXYXJuaW5nKHBhdGgpO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZG9jdW1lbnQpKSB7XG4gICAgZm9yIChjb25zdCBbaW5kZXgsIHN1YkRvY3VtZW50XSBvZiBkb2N1bWVudC5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IHN1YlBhdGggPSBbcGF0aCwgaW5kZXhdLmZpbHRlcihyID0+IHIgIT0gdW5kZWZpbmVkKS5qb2luKFwiLlwiKTtcbiAgICAgIGNoZWNrRG9jdW1lbnQoc3ViRG9jdW1lbnQsIHN1YlBhdGgpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgZG9jdW1lbnQgPT0gXCJvYmplY3RcIikge1xuICAgIGZvciAoY29uc3Qga2V5IGluIGRvY3VtZW50KSB7XG4gICAgICBjb25zdCBzdWJEb2N1bWVudCA9IGRvY3VtZW50W2tleV07XG4gICAgICBjb25zdCBzdWJQYXRoID0gW3BhdGgsIGtleV0uZmlsdGVyKHIgPT4gciAhPSB1bmRlZmluZWQpLmpvaW4oXCIuXCIpO1xuICAgICAgY2hlY2tEb2N1bWVudChzdWJEb2N1bWVudCwgc3ViUGF0aCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0RvY3VtZW50cyhkb2N1bWVudHM6IG9iamVjdFtdKTogdm9pZCB7XG4gIGZvciAoY29uc3QgW2luZGV4LCBkb2N1bWVudF0gb2YgZG9jdW1lbnRzLmVudHJpZXMoKSkge1xuICAgIGNoZWNrRG9jdW1lbnQoZG9jdW1lbnQsIFN0cmluZyhpbmRleCkpO1xuICB9XG59XG4iXX0=
31
+ }
32
+ exports.checkDocument = checkDocument;
33
+ function checkDocuments(documents) {
34
+ for (const [index, document] of documents.entries()) {
35
+ checkDocument(document, String(index));
36
+ }
37
+ }
38
+ exports.checkDocuments = checkDocuments;
39
+ //# sourceMappingURL=check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../../../../../../stacks/api/function/packages/database/src/check.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,CAAC,WAAW,CACjB,kCAAkC,IAAI,iCAAiC;QACrE,4DAA4D;QAC5D,oDAAoD,CACvD,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,QAAgB,EAAE,OAAe,SAAS;IACtE,IAAI,QAAQ,YAAY,eAAO,CAAC,QAAQ,EAAE;QACxC,sDAAsD;QACtD,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC3C,OAAO;SACR;QACD,WAAW,CAAC,IAAI,CAAC,CAAC;KACnB;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAClC,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;YACrD,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpE,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;SACrC;KACF;SAAM,IAAI,OAAO,QAAQ,IAAI,QAAQ,EAAE;QACtC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;YAC1B,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClE,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;SACrC;KACF;AACH,CAAC;AAnBD,sCAmBC;AAED,SAAgB,cAAc,CAAC,SAAmB;IAChD,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;QACnD,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;KACxC;AACH,CAAC;AAJD,wCAIC"}
package/src/database.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <amd-module name="@spica-devkit/database/src/database" />
2
1
  import { _mongodb } from "./mongo";
3
2
  export declare function database(): Promise<_mongodb.Db>;
4
3
  export declare function close(force?: boolean, cb?: (...args: any) => void): Promise<void> | void;