@spica-devkit/database 0.9.14 → 0.9.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +0 -1
- package/dist/index.js +93 -106
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +93 -106
- package/dist/index.mjs.map +1 -1
- package/dist/src/check.d.ts +0 -1
- package/dist/src/database.d.ts +0 -1
- package/dist/src/index.d.ts +0 -1
- package/dist/src/mongo.d.ts +0 -1
- package/dist/src/objectid.d.ts +0 -1
- package/index.d.ts +0 -1
- package/index.js +4 -14
- package/index.js.map +1 -0
- package/package.json +1 -1
- package/src/check.d.ts +0 -1
- package/src/check.js +34 -44
- package/src/check.js.map +1 -0
- package/src/database.d.ts +0 -1
- package/src/database.js +131 -154
- package/src/database.js.map +1 -0
- package/src/index.d.ts +0 -1
- package/src/index.js +5 -15
- package/src/index.js.map +1 -0
- package/src/mongo.d.ts +0 -1
- package/src/mongo.js +7 -17
- package/src/mongo.js.map +1 -0
- package/src/objectid.d.ts +0 -1
- package/src/objectid.js +10 -20
- package/src/objectid.js.map +1 -0
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -44,15 +44,6 @@ const objectId = util.deprecate((id) => {
|
|
|
44
44
|
}, "objectId is deprecated, please replace it with ObjectId class.");
|
|
45
45
|
const ObjectId = mongodb.ObjectId;
|
|
46
46
|
|
|
47
|
-
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
48
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
49
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
50
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
51
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
52
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
53
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
54
|
-
});
|
|
55
|
-
};
|
|
56
47
|
process.once("SIGTERM", () => {
|
|
57
48
|
close(false, () => process.exit());
|
|
58
49
|
});
|
|
@@ -70,105 +61,101 @@ function checkEnvironment() {
|
|
|
70
61
|
throw new Error(`The <__INTERNAL__SPICA__MONGOURL__> or <__INTERNAL__SPICA__MONGODBNAME__> variables was not given.`);
|
|
71
62
|
}
|
|
72
63
|
}
|
|
73
|
-
function connect() {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
return connection;
|
|
88
|
-
});
|
|
64
|
+
async function connect() {
|
|
65
|
+
if (!connected()) {
|
|
66
|
+
connection = new mongodb.MongoClient(process.env.__INTERNAL__SPICA__MONGOURL__, {
|
|
67
|
+
replicaSet: process.env.__INTERNAL__SPICA__MONGOREPL__,
|
|
68
|
+
appname: `Functions on ${process.env.RUNTIME || "unknown"} runtime.`,
|
|
69
|
+
useNewUrlParser: true,
|
|
70
|
+
// @ts-ignore
|
|
71
|
+
useUnifiedTopology: true
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
if (!connection.isConnected()) {
|
|
75
|
+
await connection.connect();
|
|
76
|
+
}
|
|
77
|
+
return connection;
|
|
89
78
|
}
|
|
90
|
-
function database() {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
return deleteMany.bind(coll)(filter, ...args);
|
|
167
|
-
};
|
|
168
|
-
return coll;
|
|
79
|
+
async function database() {
|
|
80
|
+
checkEnvironment();
|
|
81
|
+
const connection = (globalThis[Symbol.for("kDatabaseDevkitConn")] = await connect());
|
|
82
|
+
if (!ignoreWarnings() && "TIMEOUT" in process.env) {
|
|
83
|
+
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` +
|
|
84
|
+
`As an alternative, we recommend you to interact with the APIs through an API Key to do the same. \n` +
|
|
85
|
+
`Set NO_DEVKIT_DATABASE_WARNING environment variable to ignore this warning.`, "FootgunWarning");
|
|
86
|
+
}
|
|
87
|
+
const db = connection.db(process.env.__INTERNAL__SPICA__MONGODBNAME__);
|
|
88
|
+
const collection = db.collection;
|
|
89
|
+
db.collection = (...args) => {
|
|
90
|
+
const coll = collection.call(db, ...args);
|
|
91
|
+
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.`);
|
|
92
|
+
const findById = coll.findOne;
|
|
93
|
+
coll["findById"] = (id, ...args) => {
|
|
94
|
+
const objectId = new ObjectId(id);
|
|
95
|
+
return findById.bind(coll)({ _id: objectId }, ...args);
|
|
96
|
+
};
|
|
97
|
+
const findOne = coll.findOne;
|
|
98
|
+
coll.findOne = (filter, ...args) => {
|
|
99
|
+
validateDocs(filter);
|
|
100
|
+
return findOne.bind(coll)(filter, ...args);
|
|
101
|
+
};
|
|
102
|
+
const find = coll.find;
|
|
103
|
+
coll.find = (filter, ...args) => {
|
|
104
|
+
validateDocs(filter);
|
|
105
|
+
return find.bind(coll)(filter, ...args);
|
|
106
|
+
};
|
|
107
|
+
const findOneAndUpdate = coll.findOneAndUpdate;
|
|
108
|
+
coll.findOneAndUpdate = (filter, update, ...args) => {
|
|
109
|
+
validateDocs(filter);
|
|
110
|
+
validateDocs(update);
|
|
111
|
+
return findOneAndUpdate.bind(coll)(filter, update, ...args);
|
|
112
|
+
};
|
|
113
|
+
const findOneAndReplace = coll.findOneAndReplace;
|
|
114
|
+
coll.findOneAndReplace = (filter, update, ...args) => {
|
|
115
|
+
validateDocs(filter);
|
|
116
|
+
validateDocs(update);
|
|
117
|
+
return findOneAndReplace.bind(coll)(filter, update, ...args);
|
|
118
|
+
};
|
|
119
|
+
const findOneAndDelete = coll.findOneAndDelete;
|
|
120
|
+
coll.findOneAndDelete = (filter, ...args) => {
|
|
121
|
+
validateDocs(filter);
|
|
122
|
+
return findOneAndDelete.bind(coll)(filter, ...args);
|
|
123
|
+
};
|
|
124
|
+
const insertOne = coll.insertOne;
|
|
125
|
+
coll.insertOne = (doc, ...args) => {
|
|
126
|
+
validateDocs(doc);
|
|
127
|
+
return insertOne.bind(coll)(doc, ...args);
|
|
128
|
+
};
|
|
129
|
+
const insertMany = coll.insertMany;
|
|
130
|
+
coll.insertMany = (docs, ...args) => {
|
|
131
|
+
validateDocs(docs);
|
|
132
|
+
return insertMany.bind(coll)(docs, ...args);
|
|
133
|
+
};
|
|
134
|
+
const updateOne = coll.updateOne;
|
|
135
|
+
coll.updateOne = (filter, update, ...args) => {
|
|
136
|
+
validateDocs(filter);
|
|
137
|
+
validateDocs(update);
|
|
138
|
+
return updateOne.bind(coll)(filter, update, ...args);
|
|
139
|
+
};
|
|
140
|
+
const updateMany = coll.updateMany;
|
|
141
|
+
coll.updateMany = (filter, update, ...args) => {
|
|
142
|
+
validateDocs(filter);
|
|
143
|
+
validateDocs(update);
|
|
144
|
+
return updateMany.bind(coll)(filter, update, ...args);
|
|
145
|
+
};
|
|
146
|
+
const deleteOne = coll.deleteOne;
|
|
147
|
+
coll.deleteOne = (filter, ...args) => {
|
|
148
|
+
validateDocs(filter);
|
|
149
|
+
return deleteOne.bind(coll)(filter, ...args);
|
|
150
|
+
};
|
|
151
|
+
const deleteMany = coll.deleteMany;
|
|
152
|
+
coll.deleteMany = (filter, ...args) => {
|
|
153
|
+
validateDocs(filter);
|
|
154
|
+
return deleteMany.bind(coll)(filter, ...args);
|
|
169
155
|
};
|
|
170
|
-
return
|
|
171
|
-
}
|
|
156
|
+
return coll;
|
|
157
|
+
};
|
|
158
|
+
return db;
|
|
172
159
|
}
|
|
173
160
|
function validateDocs(doc) {
|
|
174
161
|
if (!ignoreWarnings()) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdGFja3MvYXBpL2Z1bmN0aW9uL3BhY2thZ2VzL2RhdGFiYXNlL3NyYy9kYXRhYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUMsYUFBYSxFQUFFLGNBQWMsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUN0RCxPQUFPLEVBQUMsT0FBTyxFQUFXLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFFcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBQzNCLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLFVBQVUsR0FBeUIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0FBRXJGLFNBQVMsY0FBYztJQUNyQixPQUFPLDRCQUE0QixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7QUFDckQsQ0FBQztBQUVELFNBQVMsZ0JBQWdCO0lBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRTtRQUN4QixPQUFPLENBQUMsV0FBVyxDQUNqQiwyREFBMkQ7WUFDekQsNERBQTRELENBQy9ELENBQUM7S0FDSDtJQUVELE1BQU0sRUFDSiw2QkFBNkIsRUFBRSxHQUFHLEVBQ2xDLGdDQUFnQyxFQUFFLE1BQU0sRUFDekMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBRWhCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDbkIsTUFBTSxJQUFJLEtBQUss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LEVBQUUsQ0FBQyxDQUFDO0tBQ3BDO0lBQ0QsT0FBTyxPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDNUQsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTO0lBQ3ZCLE9BQU8sVUFBVSxJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwidXRpbFwiO1xuaW1wb3J0IHtjaGVja0RvY3VtZW50LCBjaGVja0RvY3VtZW50c30gZnJvbSBcIi4vY2hlY2tcIjtcbmltcG9ydCB7bW9uZ29kYiwgX21vbmdvZGJ9IGZyb20gXCIuL21vbmdvXCI7XG5pbXBvcnQge09iamVjdElkfSBmcm9tIFwiLi9vYmplY3RpZFwiO1xuXG5wcm9jZXNzLm9uY2UoXCJTSUdURVJNXCIsICgpID0+IHtcbiAgY2xvc2UoZmFsc2UsICgpID0+IHByb2Nlc3MuZXhpdCgpKTtcbn0pO1xuXG5sZXQgY29ubmVjdGlvbjogX21vbmdvZGIuTW9uZ29DbGllbnQgPSBnbG9iYWxUaGlzW1N5bWJvbC5mb3IoXCJrRGF0YWJhc2VEZXZraXRDb25uXCIpXTtcblxuZnVuY3Rpb24gaWdub3JlV2FybmluZ3MoKSB7XG4gIHJldHVybiBcIk5PX0RFVktJVF9EQVRBQkFTRV9XQVJOSU5HXCIgaW4gcHJvY2Vzcy5lbnY7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRW52aXJvbm1lbnQoKSB7XG4gIGlmICghcHJvY2Vzcy5lbnYuUlVOVElNRSkge1xuICAgIHByb2Nlc3MuZW1pdFdhcm5pbmcoXG4gICAgICBgU2VlbXMgbGlrZSB5b3UgYXJlIG5vdCB1bmRlciBzcGljYS9mdW5jdGlvbnMgZW52aXJvbm1lbnQuYCArXG4gICAgICAgIGBUaGlzIG1vZHVsZSBpcyBvbmx5IGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBzcGljYS9mdW5jdGlvbnMuYFxuICAgICk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgX19JTlRFUk5BTF9fU1BJQ0FfX01PTkdPVVJMX186IHVybCxcbiAgICBfX0lOVEVSTkFMX19TUElDQV9fTU9OR09EQk5BTUVfXzogZGJOYW1lXG4gIH0gPSBwcm9jZXNzLmVudjtcblxuICBpZiAoIXVybCB8fCAhZGJOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFRoZSA8X19JTlRFUk5BTF9fU1BJQ0FfX01PTkdPVVJMX18+IG9yIDxfX0lOVEVSTkFMX19TUElDQV9fTU9OR09EQk5BTUVfXz4gdmFyaWFibGVzIHdhcyBub3QgZ2l2ZW4uYFxuICAgICk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY29ubmVjdCgpOiBQcm9taXNlPF9tb25nb2RiLk1vbmdvQ2xpZW50PiB7XG4gIGlmICghY29ubmVjdGVkKCkpIHtcbiAgICBjb25uZWN0aW9uID0gbmV3IG1vbmdvZGIuTW9uZ29DbGllbnQocHJvY2Vzcy5lbnYuX19JTlRFUk5BTF9fU1BJQ0FfX01PTkdPVVJMX18sIHtcbiAgICAgIHJlcGxpY2FTZXQ6IHByb2Nlc3MuZW52Ll9fSU5URVJOQUxfX1NQSUNBX19NT05HT1JFUExfXyxcbiAgICAgIGFwcG5hbWU6IGBGdW5jdGlvbnMgb24gJHtwcm9jZXNzLmVudi5SVU5USU1FIHx8IFwidW5rbm93blwifSBydW50aW1lLmAsXG4gICAgICB1c2VOZXdVcmxQYXJzZXI6IHRydWUsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB1c2VVbmlmaWVkVG9wb2xvZ3k6IHRydWVcbiAgICB9KTtcbiAgfVxuICBpZiAoIWNvbm5lY3Rpb24uaXNDb25uZWN0ZWQoKSkge1xuICAgIGF3YWl0IGNvbm5lY3Rpb24uY29ubmVjdCgpO1xuICB9XG4gIHJldHVybiBjb25uZWN0aW9uO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGF0YWJhc2UoKTogUHJvbWlzZTxfbW9uZ29kYi5EYj4ge1xuICBjaGVja0Vudmlyb25tZW50KCk7XG5cbiAgY29uc3QgY29ubmVjdGlvbiA9IChnbG9iYWxUaGlzW1N5bWJvbC5mb3IoXCJrRGF0YWJhc2VEZXZraXRDb25uXCIpXSA9IGF3YWl0IGNvbm5lY3QoKSk7XG5cbiAgaWYgKCFpZ25vcmVXYXJuaW5ncygpICYmIFwiVElNRU9VVFwiIGluIHByb2Nlc3MuZW52KSB7XG4gICAgcHJvY2Vzcy5lbWl0V2FybmluZyhcbiAgICAgIGBBcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBkYXRhIGluIHRoZSBkYXRhYmFzZSBpcyBzdWJqZWN0IHRvIGNoYW5nZSBpbiBhbnkgZnV0dXJlIHJlbGVhc2UsIHdlIGVuY291cmFnZSB5b3Ugbm90IHRvIGludGVyYWN0IHdpdGggdGhlIGRhdGFiYXNlIGRpcmVjdGx5LlxcbmAgK1xuICAgICAgICBgQXMgYW4gYWx0ZXJuYXRpdmUsIHdlIHJlY29tbWVuZCB5b3UgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgQVBJcyB0aHJvdWdoIGFuIEFQSSBLZXkgdG8gZG8gdGhlIHNhbWUuIFxcbmAgK1xuICAgICAgICBgU2V0IE5PX0RFVktJVF9EQVRBQkFTRV9XQVJOSU5HIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGlnbm9yZSB0aGlzIHdhcm5pbmcuYCxcbiAgICAgIFwiRm9vdGd1bldhcm5pbmdcIlxuICAgICk7XG4gIH1cblxuICBjb25zdCBkYiA9IGNvbm5lY3Rpb24uZGIocHJvY2Vzcy5lbnYuX19JTlRFUk5BTF9fU1BJQ0FfX01PTkdPREJOQU1FX18pO1xuXG4gIGNvbnN0IGNvbGxlY3Rpb24gPSBkYi5jb2xsZWN0aW9uO1xuXG4gIGRiLmNvbGxlY3Rpb24gPSAoLi4uYXJncykgPT4ge1xuICAgIGNvbnN0IGNvbGw6IF9tb25nb2RiLkNvbGxlY3Rpb24gPSBjb2xsZWN0aW9uLmNhbGwoZGIsIC4uLmFyZ3MpO1xuICAgIGNvbGwud2F0Y2ggPSB1dGlsLmRlcHJlY2F0ZShcbiAgICAgIGNvbGwud2F0Y2gsXG4gICAgICBgSXQgaXMgbm90IGFkdmlzZWQgdG8gdXNlICd3YXRjaCcgdW5kZXIgc3BpY2EvZnVuY3Rpb25zIGVudmlyb25tZW50LiBJIGhvcGUgdGhhdCB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuYFxuICAgICk7XG5cbiAgICBjb25zdCBmaW5kQnlJZCA9IGNvbGwuZmluZE9uZTtcbiAgICBjb2xsW1wiZmluZEJ5SWRcIl0gPSAoaWQsIC4uLmFyZ3MpID0+IHtcbiAgICAgIGNvbnN0IG9iamVjdElkID0gbmV3IE9iamVjdElkKGlkKTtcbiAgICAgIHJldHVybiBmaW5kQnlJZC5iaW5kKGNvbGwpKHtfaWQ6IG9iamVjdElkfSwgLi4uYXJncyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGZpbmRPbmUgPSBjb2xsLmZpbmRPbmU7XG4gICAgY29sbC5maW5kT25lID0gKGZpbHRlciwgLi4uYXJncykgPT4ge1xuICAgICAgdmFsaWRhdGVEb2NzKGZpbHRlcik7XG4gICAgICByZXR1cm4gZmluZE9uZS5iaW5kKGNvbGwpKGZpbHRlciwgLi4uYXJncyk7XG4gICAgfTtcbiAgICBjb25zdCBmaW5kID0gY29sbC5maW5kO1xuICAgIGNvbGwuZmluZCA9IChmaWx0ZXIsIC4uLmFyZ3MpID0+IHtcbiAgICAgIHZhbGlkYXRlRG9jcyhmaWx0ZXIpO1xuICAgICAgcmV0dXJuIGZpbmQuYmluZChjb2xsKShmaWx0ZXIsIC4uLmFyZ3MpO1xuICAgIH07XG4gICAgY29uc3QgZmluZE9uZUFuZFVwZGF0ZSA9IGNvbGwuZmluZE9uZUFuZFVwZGF0ZTtcbiAgICBjb2xsLmZpbmRPbmVBbmRVcGRhdGUgPSAoZmlsdGVyLCB1cGRhdGUsIC4uLmFyZ3MpID0+IHtcbiAgICAgIHZhbGlkYXRlRG9jcyhmaWx0ZXIpO1xuICAgICAgdmFsaWRhdGVEb2NzKHVwZGF0ZSk7XG4gICAgICByZXR1cm4gZmluZE9uZUFuZFVwZGF0ZS5iaW5kKGNvbGwpKGZpbHRlciwgdXBkYXRlLCAuLi5hcmdzKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZmluZE9uZUFuZFJlcGxhY2UgPSBjb2xsLmZpbmRPbmVBbmRSZXBsYWNlO1xuICAgIGNvbGwuZmluZE9uZUFuZFJlcGxhY2UgPSAoZmlsdGVyLCB1cGRhdGUsIC4uLmFyZ3MpID0+IHtcbiAgICAgIHZhbGlkYXRlRG9jcyhmaWx0ZXIpO1xuICAgICAgdmFsaWRhdGVEb2NzKHVwZGF0ZSk7XG4gICAgICByZXR1cm4gZmluZE9uZUFuZFJlcGxhY2UuYmluZChjb2xsKShmaWx0ZXIsIHVwZGF0ZSwgLi4uYXJncyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGZpbmRPbmVBbmREZWxldGUgPSBjb2xsLmZpbmRPbmVBbmREZWxldGU7XG4gICAgY29sbC5maW5kT25lQW5kRGVsZXRlID0gKGZpbHRlciwgLi4uYXJncykgPT4ge1xuICAgICAgdmFsaWRhdGVEb2NzKGZpbHRlcik7XG4gICAgICByZXR1cm4gZmluZE9uZUFuZERlbGV0ZS5iaW5kKGNvbGwpKGZpbHRlciwgLi4uYXJncyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGluc2VydE9uZSA9IGNvbGwuaW5zZXJ0T25lO1xuICAgIGNvbGwuaW5zZXJ0T25lID0gKGRvYywgLi4uYXJncykgPT4ge1xuICAgICAgdmFsaWRhdGVEb2NzKGRvYyk7XG4gICAgICByZXR1cm4gaW5zZXJ0T25lLmJpbmQoY29sbCkoZG9jLCAuLi5hcmdzKTtcbiAgICB9O1xuICAgIGNvbnN0IGluc2VydE1hbnkgPSBjb2xsLmluc2VydE1hbnk7XG4gICAgY29sbC5pbnNlcnRNYW55ID0gKGRvY3MsIC4uLmFyZ3MpID0+IHtcbiAgICAgIHZhbGlkYXRlRG9jcyhkb2NzKTtcbiAgICAgIHJldHVybiBpbnNlcnRNYW55LmJpbmQoY29sbCkoZG9jcywgLi4uYXJncyk7XG4gICAgfTtcbiAgICBjb25zdCB1cGRhdGVPbmUgPSBjb2xsLnVwZGF0ZU9uZTtcbiAgICBjb2xsLnVwZGF0ZU9uZSA9IChmaWx0ZXIsIHVwZGF0ZSwgLi4uYXJncykgPT4ge1xuICAgICAgdmFsaWRhdGVEb2NzKGZpbHRlcik7XG4gICAgICB2YWxpZGF0ZURvY3ModXBkYXRlKTtcbiAgICAgIHJldHVybiB1cGRhdGVPbmUuYmluZChjb2xsKShmaWx0ZXIsIHVwZGF0ZSwgLi4uYXJncyk7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZU1hbnkgPSBjb2xsLnVwZGF0ZU1hbnk7XG4gICAgY29sbC51cGRhdGVNYW55ID0gKGZpbHRlciwgdXBkYXRlLCAuLi5hcmdzKSA9PiB7XG4gICAgICB2YWxpZGF0ZURvY3MoZmlsdGVyKTtcbiAgICAgIHZhbGlkYXRlRG9jcyh1cGRhdGUpO1xuICAgICAgcmV0dXJuIHVwZGF0ZU1hbnkuYmluZChjb2xsKShmaWx0ZXIsIHVwZGF0ZSwgLi4uYXJncyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGRlbGV0ZU9uZSA9IGNvbGwuZGVsZXRlT25lO1xuICAgIGNvbGwuZGVsZXRlT25lID0gKGZpbHRlciwgLi4uYXJncykgPT4ge1xuICAgICAgdmFsaWRhdGVEb2NzKGZpbHRlcik7XG4gICAgICByZXR1cm4gZGVsZXRlT25lLmJpbmQoY29sbCkoZmlsdGVyLCAuLi5hcmdzKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZGVsZXRlTWFueSA9IGNvbGwuZGVsZXRlTWFueTtcbiAgICBjb2xsLmRlbGV0ZU1hbnkgPSAoZmlsdGVyLCAuLi5hcmdzKSA9PiB7XG4gICAgICB2YWxpZGF0ZURvY3MoZmlsdGVyKTtcbiAgICAgIHJldHVybiBkZWxldGVNYW55LmJpbmQoY29sbCkoZmlsdGVyLCAuLi5hcmdzKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbGw7XG4gIH07XG5cbiAgcmV0dXJuIGRiO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZURvY3MoZG9jOiBvYmplY3QgfCBvYmplY3RbXSkge1xuICBpZiAoIWlnbm9yZVdhcm5pbmdzKCkpIHtcbiAgICBBcnJheS5pc0FycmF5KGRvYykgPyBjaGVja0RvY3VtZW50cyhkb2MpIDogY2hlY2tEb2N1bWVudChkb2MpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZShmb3JjZT86IGJvb2xlYW4sIGNiPzogKC4uLmFyZ3M6IGFueSkgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4gfCB2b2lkIHtcbiAgaWYgKGNvbm5lY3Rpb24pIHtcbiAgICBnbG9iYWxUaGlzW1N5bWJvbC5mb3IoXCJrRGF0YWJhc2VEZXZraXRDb25uXCIpXSA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gY29ubmVjdGlvbi5jbG9zZShmb3JjZSwgY2IpO1xuICB9XG4gIHJldHVybiB0eXBlb2YgY2IgPT0gXCJmdW5jdGlvblwiID8gY2IoKSA6IFByb21pc2UucmVzb2x2ZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29ubmVjdGVkKCkge1xuICByZXR1cm4gY29ubmVjdGlvbiAmJiBjb25uZWN0aW9uLmlzQ29ubmVjdGVkKCk7XG59XG4iXX0="],"names":["util.deprecate","this"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","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":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -40,15 +40,6 @@ const objectId = deprecate((id) => {
|
|
|
40
40
|
}, "objectId is deprecated, please replace it with ObjectId class.");
|
|
41
41
|
const ObjectId = mongodb.ObjectId;
|
|
42
42
|
|
|
43
|
-
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
44
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
45
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
46
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
47
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
48
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
49
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
43
|
process.once("SIGTERM", () => {
|
|
53
44
|
close(false, () => process.exit());
|
|
54
45
|
});
|
|
@@ -66,105 +57,101 @@ function checkEnvironment() {
|
|
|
66
57
|
throw new Error(`The <__INTERNAL__SPICA__MONGOURL__> or <__INTERNAL__SPICA__MONGODBNAME__> variables was not given.`);
|
|
67
58
|
}
|
|
68
59
|
}
|
|
69
|
-
function connect() {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
return connection;
|
|
84
|
-
});
|
|
60
|
+
async function connect() {
|
|
61
|
+
if (!connected()) {
|
|
62
|
+
connection = new mongodb.MongoClient(process.env.__INTERNAL__SPICA__MONGOURL__, {
|
|
63
|
+
replicaSet: process.env.__INTERNAL__SPICA__MONGOREPL__,
|
|
64
|
+
appname: `Functions on ${process.env.RUNTIME || "unknown"} runtime.`,
|
|
65
|
+
useNewUrlParser: true,
|
|
66
|
+
// @ts-ignore
|
|
67
|
+
useUnifiedTopology: true
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (!connection.isConnected()) {
|
|
71
|
+
await connection.connect();
|
|
72
|
+
}
|
|
73
|
+
return connection;
|
|
85
74
|
}
|
|
86
|
-
function database() {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
return deleteMany.bind(coll)(filter, ...args);
|
|
163
|
-
};
|
|
164
|
-
return coll;
|
|
75
|
+
async function database() {
|
|
76
|
+
checkEnvironment();
|
|
77
|
+
const connection = (globalThis[Symbol.for("kDatabaseDevkitConn")] = await connect());
|
|
78
|
+
if (!ignoreWarnings() && "TIMEOUT" in process.env) {
|
|
79
|
+
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` +
|
|
80
|
+
`As an alternative, we recommend you to interact with the APIs through an API Key to do the same. \n` +
|
|
81
|
+
`Set NO_DEVKIT_DATABASE_WARNING environment variable to ignore this warning.`, "FootgunWarning");
|
|
82
|
+
}
|
|
83
|
+
const db = connection.db(process.env.__INTERNAL__SPICA__MONGODBNAME__);
|
|
84
|
+
const collection = db.collection;
|
|
85
|
+
db.collection = (...args) => {
|
|
86
|
+
const coll = collection.call(db, ...args);
|
|
87
|
+
coll.watch = deprecate(coll.watch, `It is not advised to use 'watch' under spica/functions environment. I hope that you know what you are doing.`);
|
|
88
|
+
const findById = coll.findOne;
|
|
89
|
+
coll["findById"] = (id, ...args) => {
|
|
90
|
+
const objectId = new ObjectId(id);
|
|
91
|
+
return findById.bind(coll)({ _id: objectId }, ...args);
|
|
92
|
+
};
|
|
93
|
+
const findOne = coll.findOne;
|
|
94
|
+
coll.findOne = (filter, ...args) => {
|
|
95
|
+
validateDocs(filter);
|
|
96
|
+
return findOne.bind(coll)(filter, ...args);
|
|
97
|
+
};
|
|
98
|
+
const find = coll.find;
|
|
99
|
+
coll.find = (filter, ...args) => {
|
|
100
|
+
validateDocs(filter);
|
|
101
|
+
return find.bind(coll)(filter, ...args);
|
|
102
|
+
};
|
|
103
|
+
const findOneAndUpdate = coll.findOneAndUpdate;
|
|
104
|
+
coll.findOneAndUpdate = (filter, update, ...args) => {
|
|
105
|
+
validateDocs(filter);
|
|
106
|
+
validateDocs(update);
|
|
107
|
+
return findOneAndUpdate.bind(coll)(filter, update, ...args);
|
|
108
|
+
};
|
|
109
|
+
const findOneAndReplace = coll.findOneAndReplace;
|
|
110
|
+
coll.findOneAndReplace = (filter, update, ...args) => {
|
|
111
|
+
validateDocs(filter);
|
|
112
|
+
validateDocs(update);
|
|
113
|
+
return findOneAndReplace.bind(coll)(filter, update, ...args);
|
|
114
|
+
};
|
|
115
|
+
const findOneAndDelete = coll.findOneAndDelete;
|
|
116
|
+
coll.findOneAndDelete = (filter, ...args) => {
|
|
117
|
+
validateDocs(filter);
|
|
118
|
+
return findOneAndDelete.bind(coll)(filter, ...args);
|
|
119
|
+
};
|
|
120
|
+
const insertOne = coll.insertOne;
|
|
121
|
+
coll.insertOne = (doc, ...args) => {
|
|
122
|
+
validateDocs(doc);
|
|
123
|
+
return insertOne.bind(coll)(doc, ...args);
|
|
124
|
+
};
|
|
125
|
+
const insertMany = coll.insertMany;
|
|
126
|
+
coll.insertMany = (docs, ...args) => {
|
|
127
|
+
validateDocs(docs);
|
|
128
|
+
return insertMany.bind(coll)(docs, ...args);
|
|
129
|
+
};
|
|
130
|
+
const updateOne = coll.updateOne;
|
|
131
|
+
coll.updateOne = (filter, update, ...args) => {
|
|
132
|
+
validateDocs(filter);
|
|
133
|
+
validateDocs(update);
|
|
134
|
+
return updateOne.bind(coll)(filter, update, ...args);
|
|
135
|
+
};
|
|
136
|
+
const updateMany = coll.updateMany;
|
|
137
|
+
coll.updateMany = (filter, update, ...args) => {
|
|
138
|
+
validateDocs(filter);
|
|
139
|
+
validateDocs(update);
|
|
140
|
+
return updateMany.bind(coll)(filter, update, ...args);
|
|
141
|
+
};
|
|
142
|
+
const deleteOne = coll.deleteOne;
|
|
143
|
+
coll.deleteOne = (filter, ...args) => {
|
|
144
|
+
validateDocs(filter);
|
|
145
|
+
return deleteOne.bind(coll)(filter, ...args);
|
|
146
|
+
};
|
|
147
|
+
const deleteMany = coll.deleteMany;
|
|
148
|
+
coll.deleteMany = (filter, ...args) => {
|
|
149
|
+
validateDocs(filter);
|
|
150
|
+
return deleteMany.bind(coll)(filter, ...args);
|
|
165
151
|
};
|
|
166
|
-
return
|
|
167
|
-
}
|
|
152
|
+
return coll;
|
|
153
|
+
};
|
|
154
|
+
return db;
|
|
168
155
|
}
|
|
169
156
|
function validateDocs(doc) {
|
|
170
157
|
if (!ignoreWarnings()) {
|