You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					159 lines
				
				3.1 KiB
			
		
		
			
		
	
	
					159 lines
				
				3.1 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								/* eslint-env browser */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require('./driver').set(require('./drivers/browser'));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const DocumentProvider = require('./document_provider.js');
							 | 
						||
| 
								 | 
							
								const PromiseProvider = require('./promise_provider');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DocumentProvider.setBrowser(true);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * The Mongoose [Promise](#promise_Promise) constructor.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @method Promise
							 | 
						||
| 
								 | 
							
								 * @api public
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, 'Promise', {
							 | 
						||
| 
								 | 
							
								  get: function() {
							 | 
						||
| 
								 | 
							
								    return PromiseProvider.get();
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  set: function(lib) {
							 | 
						||
| 
								 | 
							
								    PromiseProvider.set(lib);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Storage layer for mongoose promises
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @method PromiseProvider
							 | 
						||
| 
								 | 
							
								 * @api public
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exports.PromiseProvider = PromiseProvider;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * The [MongooseError](#error_MongooseError) constructor.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @method Error
							 | 
						||
| 
								 | 
							
								 * @api public
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exports.Error = require('./error/index');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * The Mongoose [Schema](#schema_Schema) constructor
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ####Example:
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *     const mongoose = require('mongoose');
							 | 
						||
| 
								 | 
							
								 *     const Schema = mongoose.Schema;
							 | 
						||
| 
								 | 
							
								 *     const CatSchema = new Schema(..);
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @method Schema
							 | 
						||
| 
								 | 
							
								 * @api public
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exports.Schema = require('./schema');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * The various Mongoose Types.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ####Example:
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *     const mongoose = require('mongoose');
							 | 
						||
| 
								 | 
							
								 *     const array = mongoose.Types.Array;
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ####Types:
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * - [Array](/docs/schematypes.html#arrays)
							 | 
						||
| 
								 | 
							
								 * - [Buffer](/docs/schematypes.html#buffers)
							 | 
						||
| 
								 | 
							
								 * - [Embedded](/docs/schematypes.html#schemas)
							 | 
						||
| 
								 | 
							
								 * - [DocumentArray](/docs/api/documentarraypath.html)
							 | 
						||
| 
								 | 
							
								 * - [Decimal128](/docs/api.html#mongoose_Mongoose-Decimal128)
							 | 
						||
| 
								 | 
							
								 * - [ObjectId](/docs/schematypes.html#objectids)
							 | 
						||
| 
								 | 
							
								 * - [Map](/docs/schematypes.html#maps)
							 | 
						||
| 
								 | 
							
								 * - [Subdocument](/docs/schematypes.html#schemas)
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Using this exposed access to the `ObjectId` type, we can construct ids on demand.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *     const ObjectId = mongoose.Types.ObjectId;
							 | 
						||
| 
								 | 
							
								 *     const id1 = new ObjectId;
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @property Types
							 | 
						||
| 
								 | 
							
								 * @api public
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								exports.Types = require('./types');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * The Mongoose [VirtualType](#virtualtype_VirtualType) constructor
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @method VirtualType
							 | 
						||
| 
								 | 
							
								 * @api public
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								exports.VirtualType = require('./virtualtype');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * The various Mongoose SchemaTypes.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ####Note:
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * _Alias of mongoose.Schema.Types for backwards compatibility._
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @property SchemaTypes
							 | 
						||
| 
								 | 
							
								 * @see Schema.SchemaTypes #schema_Schema.Types
							 | 
						||
| 
								 | 
							
								 * @api public
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exports.SchemaType = require('./schematype.js');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Internal utils
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @property utils
							 | 
						||
| 
								 | 
							
								 * @api private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exports.utils = require('./utils.js');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * The Mongoose browser [Document](/api/document.html) constructor.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @method Document
							 | 
						||
| 
								 | 
							
								 * @api public
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								exports.Document = DocumentProvider();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Return a new browser model. In the browser, a model is just
							 | 
						||
| 
								 | 
							
								 * a simplified document with a schema - it does **not** have
							 | 
						||
| 
								 | 
							
								 * functions like `findOne()`, etc.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @method model
							 | 
						||
| 
								 | 
							
								 * @api public
							 | 
						||
| 
								 | 
							
								 * @param {String} name
							 | 
						||
| 
								 | 
							
								 * @param {Schema} schema
							 | 
						||
| 
								 | 
							
								 * @return Class
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								exports.model = function(name, schema) {
							 | 
						||
| 
								 | 
							
								  class Model extends exports.Document {
							 | 
						||
| 
								 | 
							
								    constructor(obj, fields) {
							 | 
						||
| 
								 | 
							
								      super(obj, schema, fields);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  Model.modelName = name;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return Model;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*!
							 | 
						||
| 
								 | 
							
								 * Module exports.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (typeof window !== 'undefined') {
							 | 
						||
| 
								 | 
							
								  window.mongoose = module.exports;
							 | 
						||
| 
								 | 
							
								  window.Buffer = Buffer;
							 | 
						||
| 
								 | 
							
								}
							 |