@spica-devkit/database 0.0.0-PLACEHOLDER

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.
@@ -0,0 +1 @@
1
+ export * from "./src/index";
package/dist/index.js ADDED
@@ -0,0 +1,267 @@
1
+ 'use strict';
2
+
3
+ var util = require('util');
4
+ var require$$0 = require('mongodb');
5
+
6
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
+
8
+ var util__default = /*#__PURE__*/_interopDefaultLegacy(util);
9
+ var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);
10
+
11
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
12
+
13
+ function getDefaultExportFromCjs (x) {
14
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
15
+ }
16
+
17
+ function createCommonjsModule(fn, basedir, module) {
18
+ return module = {
19
+ path: basedir,
20
+ exports: {},
21
+ require: function (path, base) {
22
+ return commonjsRequire(path, (base === undefined || base === null) ? module.path : base);
23
+ }
24
+ }, fn(module, module.exports), module.exports;
25
+ }
26
+
27
+ function commonjsRequire () {
28
+ throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
29
+ }
30
+
31
+ var mongo = createCommonjsModule(function (module, exports) {
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.mongodb = void 0;
34
+ let mongodb = globalThis[Symbol.for("kDatabaseDevkit")] = globalThis[Symbol.for("kDatabaseDevkit")] || require$$0__default['default'];
35
+ exports.mongodb = mongodb;
36
+
37
+ });
38
+
39
+ var check = createCommonjsModule(function (module, exports) {
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.checkDocuments = exports.checkDocument = void 0;
42
+
43
+ function emitWarning(path) {
44
+ process.emitWarning(`Property in the document path '${path}' contains an ObjectId value.\n` +
45
+ `This may lead to some inconsistencies within the system.\n` +
46
+ `You may want to cast it to string before using it.`);
47
+ }
48
+ function checkDocument(document, path = undefined) {
49
+ if (document instanceof mongo.mongodb.ObjectId) {
50
+ if (/^(\d\._id|_id|\$.*?\._id)$/.test(path)) {
51
+ return;
52
+ }
53
+ emitWarning(path);
54
+ }
55
+ else if (Array.isArray(document)) {
56
+ for (const [index, subDocument] of document.entries()) {
57
+ const subPath = [path, index].filter(r => r != undefined).join(".");
58
+ checkDocument(subDocument, subPath);
59
+ }
60
+ }
61
+ else if (typeof document == "object") {
62
+ for (const key in document) {
63
+ const subDocument = document[key];
64
+ const subPath = [path, key].filter(r => r != undefined).join(".");
65
+ checkDocument(subDocument, subPath);
66
+ }
67
+ }
68
+ }
69
+ exports.checkDocument = checkDocument;
70
+ function checkDocuments(documents) {
71
+ for (const [index, document] of documents.entries()) {
72
+ checkDocument(document, String(index));
73
+ }
74
+ }
75
+ exports.checkDocuments = checkDocuments;
76
+
77
+ });
78
+
79
+ var objectid = createCommonjsModule(function (module, exports) {
80
+ Object.defineProperty(exports, "__esModule", { value: true });
81
+ exports.ObjectId = exports.objectId = void 0;
82
+
83
+
84
+ exports.objectId = util__default['default'].deprecate((id) => {
85
+ return new mongo.mongodb.ObjectId(id);
86
+ }, "objectId is deprecated, please replace it with ObjectId class.");
87
+ exports.ObjectId = mongo.mongodb.ObjectId;
88
+
89
+ });
90
+
91
+ var database_1 = createCommonjsModule(function (module, exports) {
92
+ Object.defineProperty(exports, "__esModule", { value: true });
93
+ exports.connected = exports.close = exports.database = void 0;
94
+
95
+
96
+
97
+
98
+ process.once("SIGTERM", () => {
99
+ close(false, () => process.exit());
100
+ });
101
+ let connection = globalThis[Symbol.for("kDatabaseDevkitConn")];
102
+ function ignoreWarnings() {
103
+ return "NO_DEVKIT_DATABASE_WARNING" in process.env;
104
+ }
105
+ function checkEnvironment() {
106
+ if (!process.env.RUNTIME) {
107
+ process.emitWarning(`Seems like you are not under spica/functions environment.` +
108
+ `This module is only designed to work with spica/functions.`);
109
+ }
110
+ const { __INTERNAL__SPICA__MONGOURL__: url, __INTERNAL__SPICA__MONGODBNAME__: dbName } = process.env;
111
+ if (!url || !dbName) {
112
+ throw new Error(`The <__INTERNAL__SPICA__MONGOURL__> or <__INTERNAL__SPICA__MONGODBNAME__> variables was not given.`);
113
+ }
114
+ }
115
+ async function connect() {
116
+ if (!connected()) {
117
+ connection = new mongo.mongodb.MongoClient(process.env.__INTERNAL__SPICA__MONGOURL__, {
118
+ replicaSet: process.env.__INTERNAL__SPICA__MONGOREPL__,
119
+ appname: `Functions on ${process.env.RUNTIME || "unknown"} runtime.`,
120
+ useNewUrlParser: true,
121
+ useUnifiedTopology: true
122
+ });
123
+ }
124
+ if (!connection.isConnected()) {
125
+ await connection.connect();
126
+ }
127
+ return connection;
128
+ }
129
+ async function database() {
130
+ checkEnvironment();
131
+ const connection = (globalThis[Symbol.for("kDatabaseDevkitConn")] = await connect());
132
+ if (!ignoreWarnings() && "TIMEOUT" in process.env) {
133
+ 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` +
134
+ `As an alternative, we recommend you to interact with the APIs through an API Key to do the same. \n` +
135
+ `Set NO_DEVKIT_DATABASE_WARNING environment variable to ignore this warning.`, "FootgunWarning");
136
+ }
137
+ const db = connection.db(process.env.__INTERNAL__SPICA__MONGODBNAME__);
138
+ const collection = db.collection;
139
+ db.collection = (...args) => {
140
+ const coll = collection.call(db, ...args);
141
+ coll.watch = util__default['default'].deprecate(coll.watch, `It is not advised to use 'watch' under spica/functions environment. I hope that you know what you are doing.`);
142
+ const findById = coll.findOne;
143
+ coll["findById"] = (id, ...args) => {
144
+ const objectId = new objectid.ObjectId(id);
145
+ return findById.bind(coll)({ _id: objectId }, ...args);
146
+ };
147
+ const findOne = coll.findOne;
148
+ coll.findOne = (filter, ...args) => {
149
+ validateDocs(filter);
150
+ return findOne.bind(coll)(filter, ...args);
151
+ };
152
+ const find = coll.find;
153
+ coll.find = (filter, ...args) => {
154
+ validateDocs(filter);
155
+ return find.bind(coll)(filter, ...args);
156
+ };
157
+ const findOneAndUpdate = coll.findOneAndUpdate;
158
+ coll.findOneAndUpdate = (filter, update, ...args) => {
159
+ validateDocs(filter);
160
+ validateDocs(update);
161
+ return findOneAndUpdate.bind(coll)(filter, update, ...args);
162
+ };
163
+ const findOneAndReplace = coll.findOneAndReplace;
164
+ coll.findOneAndReplace = (filter, update, ...args) => {
165
+ validateDocs(filter);
166
+ validateDocs(update);
167
+ return findOneAndReplace.bind(coll)(filter, update, ...args);
168
+ };
169
+ const findOneAndDelete = coll.findOneAndDelete;
170
+ coll.findOneAndDelete = (filter, ...args) => {
171
+ validateDocs(filter);
172
+ return findOneAndDelete.bind(coll)(filter, ...args);
173
+ };
174
+ const insertOne = coll.insertOne;
175
+ coll.insertOne = (doc, ...args) => {
176
+ validateDocs(doc);
177
+ return insertOne.bind(coll)(doc, ...args);
178
+ };
179
+ const insertMany = coll.insertMany;
180
+ coll.insertMany = (docs, ...args) => {
181
+ validateDocs(docs);
182
+ return insertMany.bind(coll)(docs, ...args);
183
+ };
184
+ const updateOne = coll.updateOne;
185
+ coll.updateOne = (filter, update, ...args) => {
186
+ validateDocs(filter);
187
+ validateDocs(update);
188
+ return updateOne.bind(coll)(filter, update, ...args);
189
+ };
190
+ const updateMany = coll.updateMany;
191
+ coll.updateMany = (filter, update, ...args) => {
192
+ validateDocs(filter);
193
+ validateDocs(update);
194
+ return updateMany.bind(coll)(filter, update, ...args);
195
+ };
196
+ const deleteOne = coll.deleteOne;
197
+ coll.deleteOne = (filter, ...args) => {
198
+ validateDocs(filter);
199
+ return deleteOne.bind(coll)(filter, ...args);
200
+ };
201
+ const deleteMany = coll.deleteMany;
202
+ coll.deleteMany = (filter, ...args) => {
203
+ validateDocs(filter);
204
+ return deleteMany.bind(coll)(filter, ...args);
205
+ };
206
+ return coll;
207
+ };
208
+ return db;
209
+ }
210
+ exports.database = database;
211
+ function validateDocs(doc) {
212
+ if (!ignoreWarnings()) {
213
+ Array.isArray(doc) ? check.checkDocuments(doc) : check.checkDocument(doc);
214
+ }
215
+ }
216
+ function close(force, cb) {
217
+ if (connection) {
218
+ globalThis[Symbol.for("kDatabaseDevkitConn")] = undefined;
219
+ return connection.close(force, cb);
220
+ }
221
+ return typeof cb == "function" ? cb() : Promise.resolve();
222
+ }
223
+ exports.close = close;
224
+ function connected() {
225
+ return connection && connection.isConnected();
226
+ }
227
+ exports.connected = connected;
228
+
229
+ });
230
+
231
+ var src = createCommonjsModule(function (module, exports) {
232
+ var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
233
+ if (k2 === undefined) k2 = k;
234
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
235
+ }) : (function(o, m, k, k2) {
236
+ if (k2 === undefined) k2 = k;
237
+ o[k2] = m[k];
238
+ }));
239
+ var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
240
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
241
+ };
242
+ Object.defineProperty(exports, "__esModule", { value: true });
243
+ __exportStar(database_1, exports);
244
+ __exportStar(objectid, exports);
245
+
246
+ });
247
+
248
+ var database = createCommonjsModule(function (module, exports) {
249
+ var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
250
+ if (k2 === undefined) k2 = k;
251
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
252
+ }) : (function(o, m, k, k2) {
253
+ if (k2 === undefined) k2 = k;
254
+ o[k2] = m[k];
255
+ }));
256
+ var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
257
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
258
+ };
259
+ Object.defineProperty(exports, "__esModule", { value: true });
260
+ __exportStar(src, exports);
261
+
262
+ });
263
+
264
+ var index = /*@__PURE__*/getDefaultExportFromCjs(database);
265
+
266
+ module.exports = index;
267
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/mongo.js","../src/check.js","../src/objectid.js","../src/database.js","../src/index.js","../index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mongodb = void 0;\nlet mongodb = globalThis[Symbol.for(\"kDatabaseDevkit\")] = globalThis[Symbol.for(\"kDatabaseDevkit\")] || require(\"mongodb\");\nexports.mongodb = mongodb;\n;\n//# sourceMappingURL=mongo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkDocuments = exports.checkDocument = void 0;\nconst mongo_1 = require(\"./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}\nfunction checkDocument(document, path = undefined) {\n if (document instanceof mongo_1.mongodb.ObjectId) {\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}\nexports.checkDocument = checkDocument;\nfunction checkDocuments(documents) {\n for (const [index, document] of documents.entries()) {\n checkDocument(document, String(index));\n }\n}\nexports.checkDocuments = checkDocuments;\n//# sourceMappingURL=check.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObjectId = exports.objectId = void 0;\nconst util = require(\"util\");\nconst mongo_1 = require(\"./mongo\");\nexports.objectId = util.deprecate((id) => {\n return new mongo_1.mongodb.ObjectId(id);\n}, \"objectId is deprecated, please replace it with ObjectId class.\");\nexports.ObjectId = mongo_1.mongodb.ObjectId;\n//# sourceMappingURL=objectid.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.connected = exports.close = exports.database = void 0;\nconst util = require(\"util\");\nconst check_1 = require(\"./check\");\nconst mongo_1 = require(\"./mongo\");\nconst objectid_1 = require(\"./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 mongo_1.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 useUnifiedTopology: true\n });\n }\n if (!connection.isConnected()) {\n await connection.connect();\n }\n return connection;\n}\nasync 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_1.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}\nexports.database = database;\nfunction validateDocs(doc) {\n if (!ignoreWarnings()) {\n Array.isArray(doc) ? check_1.checkDocuments(doc) : check_1.checkDocument(doc);\n }\n}\nfunction 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}\nexports.close = close;\nfunction connected() {\n return connection && connection.isConnected();\n}\nexports.connected = connected;\n//# sourceMappingURL=database.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./database\"), exports);\n__exportStar(require(\"./objectid\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./src/index\"), exports);\n//# sourceMappingURL=index.js.map"],"names":["require$$0","mongo_1","util","objectid_1","check_1","this","require$$1"],"mappings":"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"}
package/dist/index.mjs ADDED
@@ -0,0 +1,260 @@
1
+ import util from 'util';
2
+ import require$$0 from 'mongodb';
3
+
4
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
5
+
6
+ function getDefaultExportFromCjs (x) {
7
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
8
+ }
9
+
10
+ function createCommonjsModule(fn, basedir, module) {
11
+ return module = {
12
+ path: basedir,
13
+ exports: {},
14
+ require: function (path, base) {
15
+ return commonjsRequire(path, (base === undefined || base === null) ? module.path : base);
16
+ }
17
+ }, fn(module, module.exports), module.exports;
18
+ }
19
+
20
+ function commonjsRequire () {
21
+ throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
22
+ }
23
+
24
+ var mongo = createCommonjsModule(function (module, exports) {
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.mongodb = void 0;
27
+ let mongodb = globalThis[Symbol.for("kDatabaseDevkit")] = globalThis[Symbol.for("kDatabaseDevkit")] || require$$0;
28
+ exports.mongodb = mongodb;
29
+
30
+ });
31
+
32
+ var check = createCommonjsModule(function (module, exports) {
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.checkDocuments = exports.checkDocument = void 0;
35
+
36
+ function emitWarning(path) {
37
+ process.emitWarning(`Property in the document path '${path}' contains an ObjectId value.\n` +
38
+ `This may lead to some inconsistencies within the system.\n` +
39
+ `You may want to cast it to string before using it.`);
40
+ }
41
+ function checkDocument(document, path = undefined) {
42
+ if (document instanceof mongo.mongodb.ObjectId) {
43
+ if (/^(\d\._id|_id|\$.*?\._id)$/.test(path)) {
44
+ return;
45
+ }
46
+ emitWarning(path);
47
+ }
48
+ else if (Array.isArray(document)) {
49
+ for (const [index, subDocument] of document.entries()) {
50
+ const subPath = [path, index].filter(r => r != undefined).join(".");
51
+ checkDocument(subDocument, subPath);
52
+ }
53
+ }
54
+ else if (typeof document == "object") {
55
+ for (const key in document) {
56
+ const subDocument = document[key];
57
+ const subPath = [path, key].filter(r => r != undefined).join(".");
58
+ checkDocument(subDocument, subPath);
59
+ }
60
+ }
61
+ }
62
+ exports.checkDocument = checkDocument;
63
+ function checkDocuments(documents) {
64
+ for (const [index, document] of documents.entries()) {
65
+ checkDocument(document, String(index));
66
+ }
67
+ }
68
+ exports.checkDocuments = checkDocuments;
69
+
70
+ });
71
+
72
+ var objectid = createCommonjsModule(function (module, exports) {
73
+ Object.defineProperty(exports, "__esModule", { value: true });
74
+ exports.ObjectId = exports.objectId = void 0;
75
+
76
+
77
+ exports.objectId = util.deprecate((id) => {
78
+ return new mongo.mongodb.ObjectId(id);
79
+ }, "objectId is deprecated, please replace it with ObjectId class.");
80
+ exports.ObjectId = mongo.mongodb.ObjectId;
81
+
82
+ });
83
+
84
+ var database_1 = createCommonjsModule(function (module, exports) {
85
+ Object.defineProperty(exports, "__esModule", { value: true });
86
+ exports.connected = exports.close = exports.database = void 0;
87
+
88
+
89
+
90
+
91
+ process.once("SIGTERM", () => {
92
+ close(false, () => process.exit());
93
+ });
94
+ let connection = globalThis[Symbol.for("kDatabaseDevkitConn")];
95
+ function ignoreWarnings() {
96
+ return "NO_DEVKIT_DATABASE_WARNING" in process.env;
97
+ }
98
+ function checkEnvironment() {
99
+ if (!process.env.RUNTIME) {
100
+ process.emitWarning(`Seems like you are not under spica/functions environment.` +
101
+ `This module is only designed to work with spica/functions.`);
102
+ }
103
+ const { __INTERNAL__SPICA__MONGOURL__: url, __INTERNAL__SPICA__MONGODBNAME__: dbName } = process.env;
104
+ if (!url || !dbName) {
105
+ throw new Error(`The <__INTERNAL__SPICA__MONGOURL__> or <__INTERNAL__SPICA__MONGODBNAME__> variables was not given.`);
106
+ }
107
+ }
108
+ async function connect() {
109
+ if (!connected()) {
110
+ connection = new mongo.mongodb.MongoClient(process.env.__INTERNAL__SPICA__MONGOURL__, {
111
+ replicaSet: process.env.__INTERNAL__SPICA__MONGOREPL__,
112
+ appname: `Functions on ${process.env.RUNTIME || "unknown"} runtime.`,
113
+ useNewUrlParser: true,
114
+ useUnifiedTopology: true
115
+ });
116
+ }
117
+ if (!connection.isConnected()) {
118
+ await connection.connect();
119
+ }
120
+ return connection;
121
+ }
122
+ async function database() {
123
+ checkEnvironment();
124
+ const connection = (globalThis[Symbol.for("kDatabaseDevkitConn")] = await connect());
125
+ if (!ignoreWarnings() && "TIMEOUT" in process.env) {
126
+ 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` +
127
+ `As an alternative, we recommend you to interact with the APIs through an API Key to do the same. \n` +
128
+ `Set NO_DEVKIT_DATABASE_WARNING environment variable to ignore this warning.`, "FootgunWarning");
129
+ }
130
+ const db = connection.db(process.env.__INTERNAL__SPICA__MONGODBNAME__);
131
+ const collection = db.collection;
132
+ db.collection = (...args) => {
133
+ const coll = collection.call(db, ...args);
134
+ 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.`);
135
+ const findById = coll.findOne;
136
+ coll["findById"] = (id, ...args) => {
137
+ const objectId = new objectid.ObjectId(id);
138
+ return findById.bind(coll)({ _id: objectId }, ...args);
139
+ };
140
+ const findOne = coll.findOne;
141
+ coll.findOne = (filter, ...args) => {
142
+ validateDocs(filter);
143
+ return findOne.bind(coll)(filter, ...args);
144
+ };
145
+ const find = coll.find;
146
+ coll.find = (filter, ...args) => {
147
+ validateDocs(filter);
148
+ return find.bind(coll)(filter, ...args);
149
+ };
150
+ const findOneAndUpdate = coll.findOneAndUpdate;
151
+ coll.findOneAndUpdate = (filter, update, ...args) => {
152
+ validateDocs(filter);
153
+ validateDocs(update);
154
+ return findOneAndUpdate.bind(coll)(filter, update, ...args);
155
+ };
156
+ const findOneAndReplace = coll.findOneAndReplace;
157
+ coll.findOneAndReplace = (filter, update, ...args) => {
158
+ validateDocs(filter);
159
+ validateDocs(update);
160
+ return findOneAndReplace.bind(coll)(filter, update, ...args);
161
+ };
162
+ const findOneAndDelete = coll.findOneAndDelete;
163
+ coll.findOneAndDelete = (filter, ...args) => {
164
+ validateDocs(filter);
165
+ return findOneAndDelete.bind(coll)(filter, ...args);
166
+ };
167
+ const insertOne = coll.insertOne;
168
+ coll.insertOne = (doc, ...args) => {
169
+ validateDocs(doc);
170
+ return insertOne.bind(coll)(doc, ...args);
171
+ };
172
+ const insertMany = coll.insertMany;
173
+ coll.insertMany = (docs, ...args) => {
174
+ validateDocs(docs);
175
+ return insertMany.bind(coll)(docs, ...args);
176
+ };
177
+ const updateOne = coll.updateOne;
178
+ coll.updateOne = (filter, update, ...args) => {
179
+ validateDocs(filter);
180
+ validateDocs(update);
181
+ return updateOne.bind(coll)(filter, update, ...args);
182
+ };
183
+ const updateMany = coll.updateMany;
184
+ coll.updateMany = (filter, update, ...args) => {
185
+ validateDocs(filter);
186
+ validateDocs(update);
187
+ return updateMany.bind(coll)(filter, update, ...args);
188
+ };
189
+ const deleteOne = coll.deleteOne;
190
+ coll.deleteOne = (filter, ...args) => {
191
+ validateDocs(filter);
192
+ return deleteOne.bind(coll)(filter, ...args);
193
+ };
194
+ const deleteMany = coll.deleteMany;
195
+ coll.deleteMany = (filter, ...args) => {
196
+ validateDocs(filter);
197
+ return deleteMany.bind(coll)(filter, ...args);
198
+ };
199
+ return coll;
200
+ };
201
+ return db;
202
+ }
203
+ exports.database = database;
204
+ function validateDocs(doc) {
205
+ if (!ignoreWarnings()) {
206
+ Array.isArray(doc) ? check.checkDocuments(doc) : check.checkDocument(doc);
207
+ }
208
+ }
209
+ function close(force, cb) {
210
+ if (connection) {
211
+ globalThis[Symbol.for("kDatabaseDevkitConn")] = undefined;
212
+ return connection.close(force, cb);
213
+ }
214
+ return typeof cb == "function" ? cb() : Promise.resolve();
215
+ }
216
+ exports.close = close;
217
+ function connected() {
218
+ return connection && connection.isConnected();
219
+ }
220
+ exports.connected = connected;
221
+
222
+ });
223
+
224
+ var src = createCommonjsModule(function (module, exports) {
225
+ var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
226
+ if (k2 === undefined) k2 = k;
227
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
228
+ }) : (function(o, m, k, k2) {
229
+ if (k2 === undefined) k2 = k;
230
+ o[k2] = m[k];
231
+ }));
232
+ var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
233
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
234
+ };
235
+ Object.defineProperty(exports, "__esModule", { value: true });
236
+ __exportStar(database_1, exports);
237
+ __exportStar(objectid, exports);
238
+
239
+ });
240
+
241
+ var database = createCommonjsModule(function (module, exports) {
242
+ var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
243
+ if (k2 === undefined) k2 = k;
244
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
245
+ }) : (function(o, m, k, k2) {
246
+ if (k2 === undefined) k2 = k;
247
+ o[k2] = m[k];
248
+ }));
249
+ var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
250
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
251
+ };
252
+ Object.defineProperty(exports, "__esModule", { value: true });
253
+ __exportStar(src, exports);
254
+
255
+ });
256
+
257
+ var index = /*@__PURE__*/getDefaultExportFromCjs(database);
258
+
259
+ export default index;
260
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../src/mongo.js","../src/check.js","../src/objectid.js","../src/database.js","../src/index.js","../index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mongodb = void 0;\nlet mongodb = globalThis[Symbol.for(\"kDatabaseDevkit\")] = globalThis[Symbol.for(\"kDatabaseDevkit\")] || require(\"mongodb\");\nexports.mongodb = mongodb;\n;\n//# sourceMappingURL=mongo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkDocuments = exports.checkDocument = void 0;\nconst mongo_1 = require(\"./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}\nfunction checkDocument(document, path = undefined) {\n if (document instanceof mongo_1.mongodb.ObjectId) {\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}\nexports.checkDocument = checkDocument;\nfunction checkDocuments(documents) {\n for (const [index, document] of documents.entries()) {\n checkDocument(document, String(index));\n }\n}\nexports.checkDocuments = checkDocuments;\n//# sourceMappingURL=check.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObjectId = exports.objectId = void 0;\nconst util = require(\"util\");\nconst mongo_1 = require(\"./mongo\");\nexports.objectId = util.deprecate((id) => {\n return new mongo_1.mongodb.ObjectId(id);\n}, \"objectId is deprecated, please replace it with ObjectId class.\");\nexports.ObjectId = mongo_1.mongodb.ObjectId;\n//# sourceMappingURL=objectid.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.connected = exports.close = exports.database = void 0;\nconst util = require(\"util\");\nconst check_1 = require(\"./check\");\nconst mongo_1 = require(\"./mongo\");\nconst objectid_1 = require(\"./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 mongo_1.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 useUnifiedTopology: true\n });\n }\n if (!connection.isConnected()) {\n await connection.connect();\n }\n return connection;\n}\nasync 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_1.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}\nexports.database = database;\nfunction validateDocs(doc) {\n if (!ignoreWarnings()) {\n Array.isArray(doc) ? check_1.checkDocuments(doc) : check_1.checkDocument(doc);\n }\n}\nfunction 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}\nexports.close = close;\nfunction connected() {\n return connection && connection.isConnected();\n}\nexports.connected = connected;\n//# sourceMappingURL=database.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./database\"), exports);\n__exportStar(require(\"./objectid\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./src/index\"), exports);\n//# sourceMappingURL=index.js.map"],"names":["mongo_1","objectid_1","check_1","this","require$$0","require$$1"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function checkDocument(document: object, path?: string): void;
2
+ export declare function checkDocuments(documents: object[]): void;
@@ -0,0 +1,4 @@
1
+ import { _mongodb } from "./mongo";
2
+ export declare function database(): Promise<_mongodb.Db>;
3
+ export declare function close(force?: boolean, cb?: (...args: any) => void): Promise<void> | void;
4
+ export declare function connected(): boolean;
@@ -0,0 +1,2 @@
1
+ export * from "./database";
2
+ export * from "./objectid";
@@ -0,0 +1,3 @@
1
+ import type * as _mongodb from "mongodb";
2
+ declare let mongodb: typeof import("mongodb");
3
+ export { mongodb, _mongodb };
@@ -0,0 +1,3 @@
1
+ import { _mongodb } from "./mongo";
2
+ export declare const objectId: (id?: string | number | _mongodb.ObjectId) => _mongodb.ObjectID;
3
+ export declare const ObjectId: typeof _mongodb.ObjectID;
package/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./src/index";
package/index.js ADDED
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
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 ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "@spica-devkit/database",
3
+ "license": "AGPLv3",
4
+ "version": "0.0.0-PLACEHOLDER",
5
+ "description": "Database package for Spica functions.",
6
+ "author": "spica",
7
+ "keywords": ["spica", "devkit"],
8
+ "main": "dist/index",
9
+ "module": "dist/index.mjs",
10
+ "sideEffects": false,
11
+ "types": "dist/index.d.ts",
12
+ "typings": "dist/index.d.ts",
13
+ "dependencies": {
14
+ "mongodb": "^3.5.4",
15
+ "@types/mongodb": "^3.3.16"
16
+ },
17
+ "scripts": {
18
+ "postinstall": "node ./scripts/postinstall.js"
19
+ }
20
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Symlinks database as @internal/database for backward-compatibility.
3
+ */
4
+ const path = require("path");
5
+ const fs = require("fs");
6
+
7
+ const modulePath = path.dirname(require.resolve("@spica-devkit/database/package.json"));
8
+ const nodeModulesRoot = path.join(modulePath, "..", "..");
9
+ const targetPath = path.join(nodeModulesRoot, "@internal");
10
+
11
+ try {
12
+ fs.mkdirSync(targetPath);
13
+ fs.symlinkSync(modulePath, path.join(targetPath, "database"), "dir");
14
+ } catch (error) {
15
+ if (error.code != "EEXIST") {
16
+ throw error;
17
+ }
18
+ }
package/src/check.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function checkDocument(document: object, path?: string): void;
2
+ export declare function checkDocuments(documents: object[]): void;
package/src/check.js ADDED
@@ -0,0 +1,38 @@
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
+ if (/^(\d\._id|_id|\$.*?\._id)$/.test(path)) {
13
+ return;
14
+ }
15
+ emitWarning(path);
16
+ }
17
+ else if (Array.isArray(document)) {
18
+ for (const [index, subDocument] of document.entries()) {
19
+ const subPath = [path, index].filter(r => r != undefined).join(".");
20
+ checkDocument(subDocument, subPath);
21
+ }
22
+ }
23
+ else if (typeof document == "object") {
24
+ for (const key in document) {
25
+ const subDocument = document[key];
26
+ const subPath = [path, key].filter(r => r != undefined).join(".");
27
+ checkDocument(subDocument, subPath);
28
+ }
29
+ }
30
+ }
31
+ exports.checkDocument = checkDocument;
32
+ function checkDocuments(documents) {
33
+ for (const [index, document] of documents.entries()) {
34
+ checkDocument(document, String(index));
35
+ }
36
+ }
37
+ exports.checkDocuments = checkDocuments;
38
+ //# 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;QAExC,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"}
@@ -0,0 +1,4 @@
1
+ import { _mongodb } from "./mongo";
2
+ export declare function database(): Promise<_mongodb.Db>;
3
+ export declare function close(force?: boolean, cb?: (...args: any) => void): Promise<void> | void;
4
+ export declare function connected(): boolean;
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.connected = exports.close = exports.database = void 0;
4
+ const util = require("util");
5
+ const check_1 = require("./check");
6
+ const mongo_1 = require("./mongo");
7
+ const objectid_1 = require("./objectid");
8
+ process.once("SIGTERM", () => {
9
+ close(false, () => process.exit());
10
+ });
11
+ let connection = globalThis[Symbol.for("kDatabaseDevkitConn")];
12
+ function ignoreWarnings() {
13
+ return "NO_DEVKIT_DATABASE_WARNING" in process.env;
14
+ }
15
+ function checkEnvironment() {
16
+ if (!process.env.RUNTIME) {
17
+ process.emitWarning(`Seems like you are not under spica/functions environment.` +
18
+ `This module is only designed to work with spica/functions.`);
19
+ }
20
+ const { __INTERNAL__SPICA__MONGOURL__: url, __INTERNAL__SPICA__MONGODBNAME__: dbName } = process.env;
21
+ if (!url || !dbName) {
22
+ throw new Error(`The <__INTERNAL__SPICA__MONGOURL__> or <__INTERNAL__SPICA__MONGODBNAME__> variables was not given.`);
23
+ }
24
+ }
25
+ async function connect() {
26
+ if (!connected()) {
27
+ connection = new mongo_1.mongodb.MongoClient(process.env.__INTERNAL__SPICA__MONGOURL__, {
28
+ replicaSet: process.env.__INTERNAL__SPICA__MONGOREPL__,
29
+ appname: `Functions on ${process.env.RUNTIME || "unknown"} runtime.`,
30
+ useNewUrlParser: true,
31
+ useUnifiedTopology: true
32
+ });
33
+ }
34
+ if (!connection.isConnected()) {
35
+ await connection.connect();
36
+ }
37
+ return connection;
38
+ }
39
+ async function database() {
40
+ checkEnvironment();
41
+ const connection = (globalThis[Symbol.for("kDatabaseDevkitConn")] = await connect());
42
+ if (!ignoreWarnings() && "TIMEOUT" in process.env) {
43
+ 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` +
44
+ `As an alternative, we recommend you to interact with the APIs through an API Key to do the same. \n` +
45
+ `Set NO_DEVKIT_DATABASE_WARNING environment variable to ignore this warning.`, "FootgunWarning");
46
+ }
47
+ const db = connection.db(process.env.__INTERNAL__SPICA__MONGODBNAME__);
48
+ const collection = db.collection;
49
+ db.collection = (...args) => {
50
+ const coll = collection.call(db, ...args);
51
+ 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.`);
52
+ const findById = coll.findOne;
53
+ coll["findById"] = (id, ...args) => {
54
+ const objectId = new objectid_1.ObjectId(id);
55
+ return findById.bind(coll)({ _id: objectId }, ...args);
56
+ };
57
+ const findOne = coll.findOne;
58
+ coll.findOne = (filter, ...args) => {
59
+ validateDocs(filter);
60
+ return findOne.bind(coll)(filter, ...args);
61
+ };
62
+ const find = coll.find;
63
+ coll.find = (filter, ...args) => {
64
+ validateDocs(filter);
65
+ return find.bind(coll)(filter, ...args);
66
+ };
67
+ const findOneAndUpdate = coll.findOneAndUpdate;
68
+ coll.findOneAndUpdate = (filter, update, ...args) => {
69
+ validateDocs(filter);
70
+ validateDocs(update);
71
+ return findOneAndUpdate.bind(coll)(filter, update, ...args);
72
+ };
73
+ const findOneAndReplace = coll.findOneAndReplace;
74
+ coll.findOneAndReplace = (filter, update, ...args) => {
75
+ validateDocs(filter);
76
+ validateDocs(update);
77
+ return findOneAndReplace.bind(coll)(filter, update, ...args);
78
+ };
79
+ const findOneAndDelete = coll.findOneAndDelete;
80
+ coll.findOneAndDelete = (filter, ...args) => {
81
+ validateDocs(filter);
82
+ return findOneAndDelete.bind(coll)(filter, ...args);
83
+ };
84
+ const insertOne = coll.insertOne;
85
+ coll.insertOne = (doc, ...args) => {
86
+ validateDocs(doc);
87
+ return insertOne.bind(coll)(doc, ...args);
88
+ };
89
+ const insertMany = coll.insertMany;
90
+ coll.insertMany = (docs, ...args) => {
91
+ validateDocs(docs);
92
+ return insertMany.bind(coll)(docs, ...args);
93
+ };
94
+ const updateOne = coll.updateOne;
95
+ coll.updateOne = (filter, update, ...args) => {
96
+ validateDocs(filter);
97
+ validateDocs(update);
98
+ return updateOne.bind(coll)(filter, update, ...args);
99
+ };
100
+ const updateMany = coll.updateMany;
101
+ coll.updateMany = (filter, update, ...args) => {
102
+ validateDocs(filter);
103
+ validateDocs(update);
104
+ return updateMany.bind(coll)(filter, update, ...args);
105
+ };
106
+ const deleteOne = coll.deleteOne;
107
+ coll.deleteOne = (filter, ...args) => {
108
+ validateDocs(filter);
109
+ return deleteOne.bind(coll)(filter, ...args);
110
+ };
111
+ const deleteMany = coll.deleteMany;
112
+ coll.deleteMany = (filter, ...args) => {
113
+ validateDocs(filter);
114
+ return deleteMany.bind(coll)(filter, ...args);
115
+ };
116
+ return coll;
117
+ };
118
+ return db;
119
+ }
120
+ exports.database = database;
121
+ function validateDocs(doc) {
122
+ if (!ignoreWarnings()) {
123
+ Array.isArray(doc) ? check_1.checkDocuments(doc) : check_1.checkDocument(doc);
124
+ }
125
+ }
126
+ function close(force, cb) {
127
+ if (connection) {
128
+ globalThis[Symbol.for("kDatabaseDevkitConn")] = undefined;
129
+ return connection.close(force, cb);
130
+ }
131
+ return typeof cb == "function" ? cb() : Promise.resolve();
132
+ }
133
+ exports.close = close;
134
+ function connected() {
135
+ return connection && connection.isConnected();
136
+ }
137
+ exports.connected = connected;
138
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../../../../../../../stacks/api/function/packages/database/src/database.ts"],"names":[],"mappings":"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"}
package/src/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./database";
2
+ export * from "./objectid";
package/src/index.js ADDED
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./database"), exports);
14
+ __exportStar(require("./objectid"), exports);
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../stacks/api/function/packages/database/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA2B;AAC3B,6CAA2B"}
package/src/mongo.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import type * as _mongodb from "mongodb";
2
+ declare let mongodb: typeof import("mongodb");
3
+ export { mongodb, _mongodb };
package/src/mongo.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mongodb = void 0;
4
+ let mongodb = globalThis[Symbol.for("kDatabaseDevkit")] = globalThis[Symbol.for("kDatabaseDevkit")] || require("mongodb");
5
+ exports.mongodb = mongodb;
6
+ ;
7
+ //# sourceMappingURL=mongo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../../../../../../../../stacks/api/function/packages/database/src/mongo.ts"],"names":[],"mappings":";;;AAEA,IAAI,OAAO,GAA6B,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;AAC5I,0BAAO;AADqI,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { _mongodb } from "./mongo";
2
+ export declare const objectId: (id?: string | number | _mongodb.ObjectId) => _mongodb.ObjectID;
3
+ export declare const ObjectId: typeof _mongodb.ObjectID;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObjectId = exports.objectId = void 0;
4
+ const util = require("util");
5
+ const mongo_1 = require("./mongo");
6
+ exports.objectId = util.deprecate((id) => {
7
+ return new mongo_1.mongodb.ObjectId(id);
8
+ }, "objectId is deprecated, please replace it with ObjectId class.");
9
+ exports.ObjectId = mongo_1.mongodb.ObjectId;
10
+ //# sourceMappingURL=objectid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectid.js","sourceRoot":"","sources":["../../../../../../../../../stacks/api/function/packages/database/src/objectid.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAC7B,mCAA0C;AAE7B,QAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAwC,EAAE,EAAE;IAClF,OAAO,IAAI,eAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClC,CAAC,EAAE,gEAAgE,CAAC,CAAC;AAExD,QAAA,QAAQ,GAAG,eAAO,CAAC,QAAQ,CAAC"}