meadow-endpoints 4.0.16 → 4.0.18
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/meadow-endpoints.js +443 -366
- package/dist/meadow-endpoints.js.map +1 -1
- package/dist/meadow-endpoints.min.js +28 -28
- package/dist/meadow-endpoints.min.js.map +1 -1
- package/package.json +1 -1
- package/source/Meadow-Endpoints.js +2 -0
- package/source/endpoints/create/Meadow-Endpoint-BulkCreate.js +6 -0
- package/source/endpoints/create/Meadow-Endpoint-Create.js +8 -0
- package/source/endpoints/delete/Meadow-Endpoint-Delete.js +6 -0
- package/source/endpoints/delete/Meadow-Endpoint-Undelete.js +5 -0
- package/source/endpoints/read/Meadow-Endpoint-ReadDistinctList.js +7 -0
- package/source/endpoints/read/Meadow-Endpoint-ReadLiteList.js +6 -0
- package/source/endpoints/read/Meadow-Endpoint-ReadSelectList.js +6 -0
- package/source/endpoints/update/Meadow-Operation-Update.js +8 -0
- package/source/endpoints/upsert/Meadow-Endpoint-BulkUpsert.js +25 -1
- package/source/endpoints/upsert/Meadow-Endpoint-BulkUpsertDetailed.js +96 -0
- package/source/endpoints/upsert/Meadow-Operation-Upsert.js +15 -0
- package/test/MeadowEndpoints_basic_tests.js +332 -0
package/dist/meadow-endpoints.js
CHANGED
|
@@ -1,4 +1,332 @@
|
|
|
1
|
-
"use strict";(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f();}else if(typeof define==="function"&&define.amd){define([],f);}else{var g;if(typeof window!=="undefined"){g=window;}else if(typeof global!=="undefined"){g=global;}else if(typeof self!=="undefined"){g=self;}else{g=this;}g.MeadowEndpoints=f();}})(function(){var define,module,exports;return function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a;}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r);},p,p.exports,r,e,n,t);}return n[i].exports;}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o;}return r;}()({1:[function(require,module,exports){
|
|
1
|
+
"use strict";(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f();}else if(typeof define==="function"&&define.amd){define([],f);}else{var g;if(typeof window!=="undefined"){g=window;}else if(typeof global!=="undefined"){g=global;}else if(typeof self!=="undefined"){g=self;}else{g=this;}g.MeadowEndpoints=f();}})(function(){var define,module,exports;return function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a;}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r);},p,p.exports,r,e,n,t);}return n[i].exports;}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o;}return r;}()({1:[function(require,module,exports){/**
|
|
2
|
+
* Meadow Endpoints Service Data Broker Library
|
|
3
|
+
*
|
|
4
|
+
* @license MIT
|
|
5
|
+
* @author Steven Velozo <steven@velozo.com>
|
|
6
|
+
*/const libMeadowEndpointsControllerBase=require('./controller/Meadow-Endpoints-Controller-Base.js');const libMeadow=require('meadow');class MeadowEndpoints{constructor(pMeadow,pControllerOptions){this._Meadow=pMeadow;// This is for backwards compatibility
|
|
7
|
+
this.DAL=this._Meadow;this._Controller=false;this._ControllerOptions=typeof pControllerOptions=='object'?pControllerOptions:{};if(typeof pMeadow!='object'){throw new Error('Meadow endpoints requires a valid Meadow DAL object as the first parameter of the constructor.');}if(this._ControllerOptions.hasOwnProperty('ControllerInstance')){// Passed in already instantiated controller instance
|
|
8
|
+
this._Controller=this._ControllerOptions.ControllerInstance;}else if(this._ControllerOptions.hasOwnProperty('ControllerClass')){// Passed in controller class, ready to initialize
|
|
9
|
+
this._Controller=new this._ControllerOptions.ControllerClass(this);}else{this._Controller=new libMeadowEndpointsControllerBase(this);}// Pull version from the settings; default to 1.0
|
|
10
|
+
this.EndpointVersion=this._Controller.settings.MeadowEndpointVersion||'1.0';// Pull endpoint name from settings if the user to override the endpoint "name" eventually.
|
|
11
|
+
this.EndpointName=this.DAL.scope;// This allows a wily developer to change what this prefix is....
|
|
12
|
+
this.EndpointPrefix=`/${this.EndpointVersion}/${this.EndpointName}`;// The default behavior sets available.
|
|
13
|
+
// Turning these off before wiring the endpoints up will result in their counterpart endpoints not being available.
|
|
14
|
+
this._EnabledBehaviorSets={Create:true,Read:true,Reads:true,Update:true,Delete:true,Count:true,Schema:true,Validate:true,New:true};// The default endpoints
|
|
15
|
+
this._Endpoints={Create:require('./endpoints/create/Meadow-Endpoint-Create.js'),Creates:require('./endpoints/create/Meadow-Endpoint-BulkCreate.js'),Read:require('./endpoints/read/Meadow-Endpoint-Read.js'),ReadMax:require('./endpoints/read/Meadow-Endpoint-ReadMax.js'),Reads:require('./endpoints/read/Meadow-Endpoint-Reads.js'),ReadsBy:require('./endpoints/read/Meadow-Endpoint-ReadsBy.js'),ReadSelectList:require('./endpoints/read/Meadow-Endpoint-ReadSelectList.js'),ReadLiteList:require('./endpoints/read/Meadow-Endpoint-ReadLiteList.js'),ReadDistinctList:require('./endpoints/read/Meadow-Endpoint-ReadDistinctList.js'),Update:require('./endpoints/update/Meadow-Endpoint-Update.js'),Updates:require('./endpoints/update/Meadow-Endpoint-BulkUpdate.js'),Upsert:require('./endpoints/upsert/Meadow-Endpoint-Upsert.js'),Upserts:require('./endpoints/upsert/Meadow-Endpoint-BulkUpsert.js'),UpsertsDetailed:require('./endpoints/upsert/Meadow-Endpoint-BulkUpsertDetailed.js'),Delete:require('./endpoints/delete/Meadow-Endpoint-Delete.js'),Undelete:require('./endpoints/delete/Meadow-Endpoint-Undelete.js'),Count:require('./endpoints/count/Meadow-Endpoint-Count.js'),CountBy:require('./endpoints/count/Meadow-Endpoint-CountBy.js'),// Get the JSONSchema spec schema
|
|
16
|
+
/* http://json-schema.org/examples.html
|
|
17
|
+
* http://json-schema.org/latest/json-schema-core.html
|
|
18
|
+
*/Schema:require('./endpoints/schema/Meadow-Endpoint-Schema.js'),// Validate a passed-in JSON object for if it matches the schema
|
|
19
|
+
Validate:require('./endpoints/schema/Meadow-Endpoint-Validate.js'),// Get an empty initialized JSON object for this.
|
|
20
|
+
New:require('./endpoints/schema/Meadow-Endpoint-New.js')};}/**
|
|
21
|
+
* @return {import('./controller/Meadow-Endpoints-Controller-Base.js')} The controller instance
|
|
22
|
+
*/get controller(){return this._Controller;}/**
|
|
23
|
+
* @param {import('./controller/Meadow-Endpoints-Controller-Base.js')} pController - The controller instance
|
|
24
|
+
*/set controller(pController){this._Controller=pController;}/**
|
|
25
|
+
* Customize a default endpoint (or create more)
|
|
26
|
+
*
|
|
27
|
+
* @method setEndpoint
|
|
28
|
+
*/setBehaviorEndpoint(pEndpointHash,fEndpoint){if(typeof fEndpoint==='function'){this._Endpoints[pEndpointHash]=fEndpoint;}return this;}connectRoute(pServiceServer,pRequestMethod,pRoutePartial,pEndpointProcessingFunction,pBehaviorName){let tmpRoute=`${this.EndpointPrefix}${pRoutePartial}`;let tmpBehaviorName=typeof pBehaviorName=='string'?pBehaviorName:'an unnamed custom behavior';this._Controller.log.trace(`...meadow-endpoints mapping a ${pRequestMethod} endpoint for scope ${this.DAL.scope} on route [${tmpRoute}] which runs ${tmpBehaviorName}.`);try{pServiceServer[pRequestMethod](tmpRoute,pEndpointProcessingFunction.bind(this._Controller));}catch(pServiceServerRouteConnectError){this._Controller.log.error(`...error mapping ${pBehaviorName} to method ${pRequestMethod} for scope ${this.DAL.scope} to route [${tmpRoute}]: ${pServiceServerRouteConnectError}`,pServiceServerRouteConnectError.stack);}return true;}connectRoutes(pServiceServer){this._Controller.log.trace(`Creating automatic meadow endpoints at prefix [${this.EndpointPrefix}] for scope ${this.DAL.scope}...`);// These special schema services must come in the route table before the READ because they
|
|
29
|
+
// technically block out the routes for the IDRecord 'Schema' (e.g. GET[/1.0/EntityName/Schema] ==NEEDS=> GET[/1.0/EntityName/100])
|
|
30
|
+
if(this._EnabledBehaviorSets.Schema){this.connectRoute(pServiceServer,'get',`/Schema`,this._Endpoints.Schema,`the internal behavior _Endpoints.Schema`);}if(this._EnabledBehaviorSets.New){this.connectRoute(pServiceServer,'get',`/Schema/New`,this._Endpoints.New,`the internal behavior _Endpoints.New`);}if(this._EnabledBehaviorSets.Validate){this.connectRoute(pServiceServer,'postWithBodyParser',`/Schema/Validate`,this._Endpoints.Validate,`the internal behavior _Endpoints.Validate`);}// Standard CRUD and Count endpoints
|
|
31
|
+
if(this._EnabledBehaviorSets.Create){this.connectRoute(pServiceServer,'postWithBodyParser',``,this._Endpoints.Create,`the internal behavior _Endpoints.Create`);this.connectRoute(pServiceServer,'postWithBodyParser',`s`,this._Endpoints.Creates,`the internal behavior _Endpoints.Creates`);}if(this._EnabledBehaviorSets.Read){this.connectRoute(pServiceServer,'get',`/Max/:ColumnName`,this._Endpoints.ReadMax,`the internal behavior _Endpoints.ReadMax`);this.connectRoute(pServiceServer,'get',`/:IDRecord`,this._Endpoints.Read,`the internal behavior _Endpoints.Read`);}if(this._EnabledBehaviorSets.Reads){this.connectRoute(pServiceServer,'get',`s`,this._Endpoints.Reads,`the internal behavior _Endpoints.Reads`);this.connectRoute(pServiceServer,'get',`s/By/:ByField/:ByValue`,this._Endpoints.ReadsBy,`the internal behavior _Endpoints.ReadsBy`);this.connectRoute(pServiceServer,'get',`s/By/:ByField/:ByValue/:Begin/:Cap`,this._Endpoints.ReadsBy,`the internal behavior _Endpoints.ReadsBy`);this.connectRoute(pServiceServer,'get',`s/FilteredTo/:Filter`,this._Endpoints.Reads,`the internal behavior _Endpoints.Reads`);this.connectRoute(pServiceServer,'get',`s/FilteredTo/:Filter/:Begin/:Cap`,this._Endpoints.Reads,`the internal behavior _Endpoints.Reads`);this.connectRoute(pServiceServer,'get',`Select`,this._Endpoints.ReadSelectList,`the internal behavior _Endpoints.ReadSelectList`);this.connectRoute(pServiceServer,'get',`Select/FilteredTo/:Filter`,this._Endpoints.ReadSelectList,`the internal behavior _Endpoints.ReadSelectList`);this.connectRoute(pServiceServer,'get',`Select/FilteredTo/:Filter/:Begin/:Cap`,this._Endpoints.ReadSelectList,`the internal behavior _Endpoints.ReadSelectList`);this.connectRoute(pServiceServer,'get',`Select/:Begin/:Cap`,this._Endpoints.ReadSelectList,`the internal behavior _Endpoints.ReadSelectList`);this.connectRoute(pServiceServer,'get',`s/Lite`,this._Endpoints.ReadLiteList,`the internal behavior _Endpoints.ReadLiteList`);this.connectRoute(pServiceServer,'get',`s/Lite/FilteredTo/:Filter`,this._Endpoints.ReadLiteList,`the internal behavior _Endpoints.ReadLiteList`);this.connectRoute(pServiceServer,'get',`s/Lite/FilteredTo/:Filter/:Begin/:Cap`,this._Endpoints.ReadLiteList,`the internal behavior _Endpoints.ReadLiteList`);this.connectRoute(pServiceServer,'get',`s/Lite/:Begin/:Cap`,this._Endpoints.ReadLiteList,`the internal behavior _Endpoints.ReadLiteList`);this.connectRoute(pServiceServer,'get',`s/LiteExtended/:ExtraColumns`,this._Endpoints.ReadLiteList,`the internal behavior _Endpoints.ReadLiteList`);this.connectRoute(pServiceServer,'get',`s/LiteExtended/:ExtraColumns/FilteredTo/:Filter`,this._Endpoints.ReadLiteList,`the internal behavior _Endpoints.ReadLiteList`);this.connectRoute(pServiceServer,'get',`s/LiteExtended/:ExtraColumns/FilteredTo/:Filter/:Begin/:Cap`,this._Endpoints.ReadLiteList,`the internal behavior _Endpoints.ReadLiteList`);this.connectRoute(pServiceServer,'get',`s/LiteExtended/:ExtraColumns/:Begin/:Cap`,this._Endpoints.ReadLiteList,`the internal behavior _Endpoints.ReadLiteList`);this.connectRoute(pServiceServer,'get',`s/Distinct/:Columns`,this._Endpoints.ReadDistinctList,`the internal behavior _Endpoints.ReadDistinctList`);this.connectRoute(pServiceServer,'get',`s/Distinct/:Columns/FilteredTo/:Filter`,this._Endpoints.ReadDistinctList,`the internal behavior _Endpoints.ReadDistinctList`);this.connectRoute(pServiceServer,'get',`s/Distinct/:Columns/FilteredTo/:Filter/:Begin/:Cap`,this._Endpoints.ReadDistinctList,`the internal behavior _Endpoints.ReadDistinctList`);this.connectRoute(pServiceServer,'get',`s/Distinct/:Columns/:Begin/:Cap`,this._Endpoints.ReadDistinctList,`the internal behavior _Endpoints.ReadDistinctList`);this.connectRoute(pServiceServer,'get',`s/:Begin/:Cap`,this._Endpoints.Reads,`the internal behavior _Endpoints.Reads`);}if(this._EnabledBehaviorSets.Update){this.connectRoute(pServiceServer,'putWithBodyParser',``,this._Endpoints.Update,`the internal behavior _Endpoints.Update`);this.connectRoute(pServiceServer,'putWithBodyParser',`s`,this._Endpoints.Updates,`the internal behavior _Endpoints.Updates`);this.connectRoute(pServiceServer,'putWithBodyParser',`/Upsert`,this._Endpoints.Upsert,`the internal behavior _Endpoints.Upsert`);this.connectRoute(pServiceServer,'putWithBodyParser',`/Upserts`,this._Endpoints.Upserts,`the internal behavior _Endpoints.Upserts`);this.connectRoute(pServiceServer,'putWithBodyParser',`/Upserts/Detailed`,this._Endpoints.UpsertsDetailed,`the internal behavior _Endpoints.UpsertsDetailed`);}if(this._EnabledBehaviorSets.Delete){this.connectRoute(pServiceServer,'del',``,this._Endpoints.Delete,`the internal behavior _Endpoints.Delete`);this.connectRoute(pServiceServer,'del',`/:IDRecord`,this._Endpoints.Delete,`the internal behavior _Endpoints.Delete`);this.connectRoute(pServiceServer,'get',`/Undelete/:IDRecord`,this._Endpoints.Undelete,`the internal behavior _Endpoints.Undelete`);}if(this._EnabledBehaviorSets.Count){this.connectRoute(pServiceServer,'get',`s/Count`,this._Endpoints.Count,`the internal behavior _Endpoints.Count`);this.connectRoute(pServiceServer,'get',`s/Count/By/:ByField/:ByValue`,this._Endpoints.CountBy,`the internal behavior _Endpoints.CountBy`);this.connectRoute(pServiceServer,'get',`s/Count/FilteredTo/:Filter`,this._Endpoints.Count,`the internal behavior _Endpoints.Count`);}}}// This is for backwards compatibility
|
|
32
|
+
function autoConstruct(pMeadow,pControllerOptions){return new MeadowEndpoints(pMeadow,pControllerOptions);}module.exports=MeadowEndpoints;module.exports.new=autoConstruct;module.exports.Meadow=libMeadow;module.exports.BaseController=libMeadowEndpointsControllerBase;},{"./controller/Meadow-Endpoints-Controller-Base.js":2,"./endpoints/count/Meadow-Endpoint-Count.js":9,"./endpoints/count/Meadow-Endpoint-CountBy.js":10,"./endpoints/create/Meadow-Endpoint-BulkCreate.js":11,"./endpoints/create/Meadow-Endpoint-Create.js":12,"./endpoints/delete/Meadow-Endpoint-Delete.js":14,"./endpoints/delete/Meadow-Endpoint-Undelete.js":15,"./endpoints/read/Meadow-Endpoint-Read.js":16,"./endpoints/read/Meadow-Endpoint-ReadDistinctList.js":17,"./endpoints/read/Meadow-Endpoint-ReadLiteList.js":18,"./endpoints/read/Meadow-Endpoint-ReadMax.js":19,"./endpoints/read/Meadow-Endpoint-ReadSelectList.js":20,"./endpoints/read/Meadow-Endpoint-Reads.js":21,"./endpoints/read/Meadow-Endpoint-ReadsBy.js":22,"./endpoints/schema/Meadow-Endpoint-New.js":25,"./endpoints/schema/Meadow-Endpoint-Schema.js":26,"./endpoints/schema/Meadow-Endpoint-Validate.js":27,"./endpoints/update/Meadow-Endpoint-BulkUpdate.js":28,"./endpoints/update/Meadow-Endpoint-Update.js":29,"./endpoints/upsert/Meadow-Endpoint-BulkUpsert.js":31,"./endpoints/upsert/Meadow-Endpoint-BulkUpsertDetailed.js":32,"./endpoints/upsert/Meadow-Endpoint-Upsert.js":33,"meadow":137}],2:[function(require,module,exports){const libAsyncWaterfall=require('async/waterfall');const libBaseLogController=require('./components/Meadow-Endpoints-Controller-Log.js');const libBaseErrorController=require('./components/Meadow-Endpoints-Controller-Error.js');const libBaseBehaviorInjectionController=require('./components/Meadow-Endpoints-Controller-BehaviorInjection.js');const libMeadowEndpointsFilterParser=require('./utility/Meadow-Endpoints-Filter-Parser.js');const libMeadowEndpointsSessionMarshaler=require('./utility/Meadow-Endpoints-Session-Marshaler.js');const libMeadowEndpointsStreamRecordArray=require('./utility/Meadow-Endpoints-Stream-RecordArray.js');class MeadowEndpointControllerBase{/**
|
|
33
|
+
* @param {import('../Meadow-Endpoints.js')} pMeadowEndpoints
|
|
34
|
+
*/constructor(pMeadowEndpoints){this.DAL=pMeadowEndpoints.DAL;this.ControllerOptions=pMeadowEndpoints._ControllerOptions;// Application Services
|
|
35
|
+
this._Settings=null;this._LogController=null;// Logic and Behavior
|
|
36
|
+
this._BehaviorInjectionController=null;this._ErrorController=null;// Internal async utility functions
|
|
37
|
+
this.waterfall=this.DAL.fable.Utility.waterfall;this.eachLimit=this.DAL.fable.Utility.eachLimit;this.extend=this.DAL.fable.Utility.extend;//FIXME: not sure what this is supposed to do, it was broken before
|
|
38
|
+
//if ((typeof(this.ControllerOptions) != 'object') || this.ControllerOptions.hasOwnProperty('ControllerClass'))
|
|
39
|
+
{this.initializeDefaultUnsetControllers(this);}// Behavior functions
|
|
40
|
+
this._FilterParser=new libMeadowEndpointsFilterParser(this);this._SessionMarshaler=new libMeadowEndpointsSessionMarshaler(this);this._StreamRecordArray=new libMeadowEndpointsStreamRecordArray(this);}/**
|
|
41
|
+
* @param {import('./Meadow-Endpoints-Controller-Base.js')} pController
|
|
42
|
+
*/initializeDefaultUnsetControllers(pController){// Application Services
|
|
43
|
+
if(!this._Settings){this._Settings=pController.DAL.fable.settings;}if(!this._Settings.hasOwnProperty('MeadowEndpointsDefaultSessionObject')){this._Settings.MeadowEndpointsDefaultSessionObject={CustomerID:0,SessionID:'0x0000',DeviceID:'Unset',UserID:0,UserRole:'None',UserRoleIndex:0,LoggedIn:false};}if(!this._LogController){this._LogController=new libBaseLogController(pController);}if(!this._BehaviorInjectionController){this._BehaviorInjectionController=new libBaseBehaviorInjectionController(pController);}if(!this._ErrorController){this._ErrorController=new libBaseErrorController(pController);}}initializeRequestState(pRequest,pVerb){let tmpRequestState={};tmpRequestState.Verb=typeof pVerb=='string'?pVerb:'Unnamed_Custom_Behavior';tmpRequestState.SessionData=this.getSessionData(pRequest);return tmpRequestState;}// Clone the session data and verb to a new request state object
|
|
44
|
+
cloneAsyncSafeRequestState(pRequestState,pNewVerb){let tmpSafeRequestState={ParentRequestState:pRequestState,SessionData:pRequestState.SessionData};tmpSafeRequestState.Verb=typeof pNewVerb=='string'?pNewVerb:pRequestState.Verb;return tmpSafeRequestState;}// Override this to provide an alternate ending function that is run with every endpoint.
|
|
45
|
+
_BeginDataRequestFunction(pRequest,pResponse,fNext){return fNext();}beginMeadowRequest(pRequest,pResponse,fNext){this._BeginDataRequestFunction(pRequest,pResponse,fNext);}// Override this to provide an alternate ending function that is run with every endpoint.
|
|
46
|
+
_EndDataRequestFunction(pRequest,pResponse,fNext){return fNext();}endMeadowRequest(pRequest,pResponse,fNext){this._EndDataRequestFunction(pRequest,pResponse,fNext);}// Application Services
|
|
47
|
+
get settings(){return this._Settings;}set settings(pSettings){this._Settings=pSettings;}get log(){return this._LogController;}set log(pLogController){this._LogController=pLogController;}// Logic and Behavior
|
|
48
|
+
get BehaviorInjection(){return this._BehaviorInjectionController;}set BehaviorInjection(pBehaviorInjectionController){this._BehaviorInjectionController=pBehaviorInjectionController;}get ErrorHandler(){return this._ErrorController;}set ErrorHandler(pErrorController){this._ErrorController=pErrorController;}parseFilter(pFilterString,pQuery){return this._FilterParser.parseFilter(pFilterString,pQuery);}doStreamRecordArray(pResponse,pRecords,fCallback){return this._StreamRecordArray.streamRecordArray(pResponse,pRecords,fCallback);}getSessionData(pRequest){return this._SessionMarshaler.getSessionData(pRequest);}}module.exports=MeadowEndpointControllerBase;// Export the base classes for the controller components, for inheritance
|
|
49
|
+
module.exports.BaseErrorController=libBaseErrorController;module.exports.BaseBehaviorInjectionController=libBaseBehaviorInjectionController;module.exports.BaseFilterParser=libMeadowEndpointsFilterParser;module.exports.BaseSessionMarshaler=libMeadowEndpointsSessionMarshaler;module.exports.BaseStreamRecordArray=libMeadowEndpointsStreamRecordArray;},{"./components/Meadow-Endpoints-Controller-BehaviorInjection.js":3,"./components/Meadow-Endpoints-Controller-Error.js":4,"./components/Meadow-Endpoints-Controller-Log.js":5,"./utility/Meadow-Endpoints-Filter-Parser.js":6,"./utility/Meadow-Endpoints-Session-Marshaler.js":7,"./utility/Meadow-Endpoints-Stream-RecordArray.js":8,"async/waterfall":52}],3:[function(require,module,exports){//TODO: This is only being referenced to allow compatibility with service_pieces
|
|
50
|
+
//TODO: There is risk of other incompatibilities until service_pieces is updated
|
|
51
|
+
const libUnderscore=require('underscore');class MeadowEndpointsControllerBehaviorInjectionBase{/**
|
|
52
|
+
* @param {import('../Meadow-Endpoints-Controller-Base.js')} pController
|
|
53
|
+
*/constructor(pController){this._Controller=pController;// The template compilation function
|
|
54
|
+
//this.template = this._Controller.DAL.fable.Utility.template;
|
|
55
|
+
this.template=libUnderscore.template;// An object to hold modifications to specific behaviors.
|
|
56
|
+
this._BehaviorFunctions={};// A set of objects to hold the specific templates and their compiled functions
|
|
57
|
+
this._Templates={};this._TemplateFunctions={};}/**
|
|
58
|
+
* Set a specific behavior.
|
|
59
|
+
*
|
|
60
|
+
* The anatomy of a behavior function is as follows:
|
|
61
|
+
*
|
|
62
|
+
* var someBehavior = function(pRequest, fCallback)
|
|
63
|
+
* {
|
|
64
|
+
* // Do some stuff with pRequest...
|
|
65
|
+
* if (pRequest.UserSession.UserRoleIndex < 5)
|
|
66
|
+
* tmpRequestState.Query.addFilter('Customer', pRequest.UserSession.IDCustomer);
|
|
67
|
+
* return fCallback(false);
|
|
68
|
+
* }
|
|
69
|
+
*
|
|
70
|
+
* It is important to note that the fCallback function expects false if no error, or a string message if there is one.
|
|
71
|
+
*/setBehavior(pBehaviorHash,fBehavior){this._BehaviorFunctions[pBehaviorHash]=fBehavior;}/**
|
|
72
|
+
* This method runs a behavior at a specific hash, and returns true.
|
|
73
|
+
* Or it returns false if there was no behavior there.
|
|
74
|
+
* Behaviors should expect their state to be in the pRequest object, per the example in setBehavior
|
|
75
|
+
*/runBehavior(pBehaviorHash,pController,pRequest,pRequestState,fCallback){// Run an injected behavior (if it exists)
|
|
76
|
+
if(this._BehaviorFunctions.hasOwnProperty(pBehaviorHash)){try{// Call the behavior with the scoped [this] of the Meadow behavior
|
|
77
|
+
// NOTE: If you define a behavior with lambda arrow syntax, it will *not* respect the call
|
|
78
|
+
return this._BehaviorFunctions[pBehaviorHash].call(pController,pRequest,pRequestState,fCallback);}catch(pInjectedBehaviorError){return fCallback(pInjectedBehaviorError);}}return fCallback();}/**
|
|
79
|
+
* Get a template.
|
|
80
|
+
*/getTemplate(pTemplateHash){if(this._Templates.hasOwnProperty(pTemplateHash)){return this._Templates[pTemplateHash];}else{return false;}}/**
|
|
81
|
+
* Set a template.
|
|
82
|
+
*/setTemplate(pTemplateHash,pTemplate){// Store both the cached text as well as the function
|
|
83
|
+
this._Templates[pTemplateHash]=pTemplate;this._TemplateFunctions[pTemplateHash]=this.template(pTemplate);}/**
|
|
84
|
+
* Get a template function.
|
|
85
|
+
*/getTemplateFunction(pTemplateHash){if(this._TemplateFunctions.hasOwnProperty(pTemplateHash)){return this._TemplateFunctions[pTemplateHash];}else{return false;}}/**
|
|
86
|
+
* Process a template at a hash, and return the result.
|
|
87
|
+
*/processTemplate(pTemplateHash,pTemplateData,pDefaultTemplate){var tmpTemplateFunction=this.getTemplateFunction(pTemplateHash);var tmpTemplateData=typeof pTemplateData==='undefined'?{}:pTemplateData;// This makes the function fairly laziliy loading.
|
|
88
|
+
if(tmpTemplateFunction===false){// If the template doesn't exist, try to use the passed-in default and set that as the template.
|
|
89
|
+
// Otherwise make it empty.
|
|
90
|
+
this.setTemplate(pTemplateHash,typeof pDefaultTemplate==='undefined'?'':pDefaultTemplate);tmpTemplateFunction=this.getTemplateFunction(pTemplateHash);}// Now process and return the underscore template.
|
|
91
|
+
return tmpTemplateFunction(tmpTemplateData);}}module.exports=MeadowEndpointsControllerBehaviorInjectionBase;},{"underscore":216}],4:[function(require,module,exports){/**
|
|
92
|
+
* Error object extended with the extra response-shape metadata
|
|
93
|
+
* meadow-endpoints attaches: an HTTP StatusCode and a flag telling
|
|
94
|
+
* the error handler whether to include a stack trace in the response.
|
|
95
|
+
*
|
|
96
|
+
* @typedef {Error & { StatusCode?: number, SuppressSoftwareTrace?: boolean, code?: string }} MeadowEndpointError
|
|
97
|
+
*/class MeadowEndpointsControllerErrorBase{/**
|
|
98
|
+
* @param {import('../Meadow-Endpoints-Controller-Base.js')} pController
|
|
99
|
+
*/constructor(pController){this._Controller=pController;}// Get the error object
|
|
100
|
+
getError(pMessage,pStatusCode,pSuppressSoftwareTrace){const tmpError=/** @type {MeadowEndpointError} */new Error(pMessage);// Default the error status code to 400 if none is passed
|
|
101
|
+
tmpError.StatusCode=typeof pStatusCode=='number'?pStatusCode:400;// This suppresses the stack trace from being sent back or logged.
|
|
102
|
+
// And by default it does not send a stack trace, as we expect errors created this way to be protocol, schema or data related.
|
|
103
|
+
tmpError.SuppressSoftwareTrace=typeof pSuppressSoftwareTrace!='undefined'?pSuppressSoftwareTrace:true;return tmpError;}// Handle an error if set -- some errors don't send the response back because they aren't fully errory errors.
|
|
104
|
+
handleErrorIfSet(pRequest,pRequestState,pResponse,pError,fCallback){if(pError){return this.sendError(pRequest,pRequestState,pResponse,pError,fCallback);}return fCallback();}// Send an error object
|
|
105
|
+
sendError(pRequest,pRequestState,pResponse,pError,fCallback){this._Controller.log.logRequestError(pRequest,pRequestState,pError);// TODO: Detect if we've already sent headers?
|
|
106
|
+
if(!this._Controller.ControllerOptions.SendErrorStatusCodes){let tmpStatusCode=pError.hasOwnProperty('StatusCode')?pError.StatusCode:500;pResponse.status(tmpStatusCode);}let tmpResponseObject={Error:pError.message,StatusCode:pError.StatusCode};tmpResponseObject=this._Controller.ErrorHandler.prepareRequestContextOutputObject(tmpResponseObject,pRequest,pRequestState,pError);pResponse.send(tmpResponseObject);fCallback(pError);}// This looks for some generic markers in the request state and puts them into a log or send object
|
|
107
|
+
prepareRequestContextOutputObject(pObjectToPopulate,pRequest,pRequestState,pError){// Internally created errors supress stack traces
|
|
108
|
+
if(pError){pObjectToPopulate.Error=pError.message;pObjectToPopulate.Code=pError.code;pObjectToPopulate.StatusCode=pError.StatusCode;if(!pError.SuppressSoftwareTrace){pObjectToPopulate.Stack=pError.stack;}if(pRequestState.hasOwnProperty('Record')){pObjectToPopulate.Record=pRequestState.Record;}if(pRequestState.hasOwnProperty('Query')&&typeof pRequestState.Query=='object'){if(pRequestState.Query.query){if(typeof pRequestState.Query.query.body=='string'){pObjectToPopulate.Query=pRequestState.Query.query.body;}if(typeof pRequestState.Query.query.parameters=='object'){pObjectToPopulate.QueryParameters=pRequestState.Query.query.parameters;pObjectToPopulate.RebuiltQueryString=typeof pObjectToPopulate.Query=='string'?pObjectToPopulate.Query:'';// This gnarly bit of code attempts to reconstruct a non prepared string version of the query, to help.
|
|
109
|
+
let tmpQueryParameterSet=Object.keys(pObjectToPopulate.QueryParameters);for(let i=0;i<tmpQueryParameterSet.length;i++){switch(typeof tmpQueryParameterSet[i]){case'number':pObjectToPopulate.RebuiltQueryString=pObjectToPopulate.RebuiltQueryString.replace(new RegExp(`:${tmpQueryParameterSet[i]}\\b`,'g'),`'${pObjectToPopulate.QueryParameters[tmpQueryParameterSet[i]]}'`);break;case'string':// TODO: This may need more ... nuance...
|
|
110
|
+
default:pObjectToPopulate.RebuiltQueryString=pObjectToPopulate.RebuiltQueryString.replace(new RegExp(`:${tmpQueryParameterSet[i]}\\b`,'g'),pObjectToPopulate.QueryParameters[tmpQueryParameterSet[i]]);break;}}}}}}return pObjectToPopulate;}}module.exports=MeadowEndpointsControllerErrorBase;},{}],5:[function(require,module,exports){class MeadowEndpointsControllerLogBase{/**
|
|
111
|
+
* @param {import('../Meadow-Endpoints-Controller-Base.js')} pController
|
|
112
|
+
*/constructor(pController){this._Controller=pController;}// This is called for every successful request log line. Be careful what you add in overloads!
|
|
113
|
+
prepareLogData(pRequest,pRequestState,pLogData){// TODO: Discuss if these should be configurations
|
|
114
|
+
if(pRequestState.hasOwnProperty('Record')){if(pRequestState.Record.hasOwnProperty(this._Controller.DAL.defaultIdentifier)){pLogData[this._Controller.DAL.defaultIdentifier]=pRequestState.Record[this._Controller.DAL.defaultIdentifier];}if(pRequestState.Record.hasOwnProperty(this._Controller.DAL.defaultGUIdentifier)){pLogData[this._Controller.DAL.defaultGUIdentifier]=pRequestState.Record[this._Controller.DAL.defaultGUIdentifier];}}if(pRequestState.hasOwnProperty('UpdatedRecords')){pLogData.UpdatedRecordCount=pRequestState.UpdatedRecords.length;}if(pRequestState.hasOwnProperty('CreatedRecords')){pLogData.UpdatedRecordCount=pRequestState.CreatedRecords.length;}if(pRequestState.hasOwnProperty('UpsertedRecords')){pLogData.UpdatedRecordCount=pRequestState.UpsertedRecords.length;}return pLogData;}// This is called whenever an endpoint is completed successfully
|
|
115
|
+
requestCompletedSuccessfully(pRequest,pRequestState,pActionSummary){let tmpLogData={SessionID:pRequestState.SessionData.SessionID,RequestID:pRequest.RequestUUID,RequestURL:pRequest.url,Scope:this._Controller.DAL.scope,Action:`${this._Controller.DAL.scope}-${pRequestState.Verb}`,Verb:pRequestState.Verb};this._Controller.log.info(pActionSummary,this.prepareLogData(pRequest,pRequestState,tmpLogData));}// This is called whenever an endpoint is completed successfully
|
|
116
|
+
logRequestError(pRequest,pRequestState,pError){let tmpErrorLogData={SessionID:pRequestState.SessionData.SessionID,RequestID:pRequest.RequestUUID,RequestURL:pRequest.url,Scope:this._Controller.DAL.scope,Action:`${this._Controller.DAL.scope}-${pRequestState.Verb}`,Verb:pRequestState.Verb};tmpErrorLogData=this._Controller.ErrorHandler.prepareRequestContextOutputObject(tmpErrorLogData,pRequest,pRequestState,pError);this._Controller.log.error(pError.message,this.prepareLogData(pRequest,pRequestState,tmpErrorLogData));}trace(pLogText,pLogObject){this._Controller.DAL.log.trace(pLogText,pLogObject);}debug(pLogText,pLogObject){this._Controller.DAL.log.debug(pLogText,pLogObject);}info(pLogText,pLogObject){this._Controller.DAL.log.info(pLogText,pLogObject);}warn(pLogText,pLogObject){this._Controller.DAL.log.warn(pLogText,pLogObject);}error(pLogText,pLogObject){this._Controller.DAL.log.error(pLogText,pLogObject);}fatal(pLogText,pLogObject){this._Controller.DAL.log.fatal(pLogText,pLogObject);}}module.exports=MeadowEndpointsControllerLogBase;},{}],6:[function(require,module,exports){/**
|
|
117
|
+
* Meadow Endpoint Utility Class - Parse a Filter String and put it into a Query.
|
|
118
|
+
*
|
|
119
|
+
* @license MIT
|
|
120
|
+
*
|
|
121
|
+
* @author Steven Velozo <steven@velozo.com>
|
|
122
|
+
* @module Meadow
|
|
123
|
+
*/const{parse}=require('meadow-filter');class MeadowEndpointsFilterParser{/**
|
|
124
|
+
* @param {import('../Meadow-Endpoints-Controller-Base.js')} pController - The controller instance to which this parser belongs.
|
|
125
|
+
*/constructor(pController){this._Controller=pController;}/**
|
|
126
|
+
* @param {string} pFilterString - The filter string to parse.
|
|
127
|
+
* @param {any} pQuery - The foxhound query object to populate.
|
|
128
|
+
*
|
|
129
|
+
* @return {boolean} - True if the filter was parsed successfully, false otherwise.
|
|
130
|
+
*/parseFilter(pFilterString,pQuery){return parse(pFilterString,pQuery);}}module.exports=MeadowEndpointsFilterParser;},{"meadow-filter":132}],7:[function(require,module,exports){class MeadowEndpointsSessionMarshaler{/**
|
|
131
|
+
* @param {import('../Meadow-Endpoints-Controller-Base.js')} pController
|
|
132
|
+
*/constructor(pController){this._Controller=pController;}getSessionData(pRequest){let tmpSession=Object.assign({},this._Controller.settings.MeadowEndpointsDefaultSessionObject);let tmpHeaderSessionString;switch(this._Controller.settings.MeadowEndpointsSessionDataSource||'Request'){default:this._Controller.log.warn(`Unknown session source configured: ${this._Controller.settings.MeadowEndpointsSessionDataSource} - defaulting to Request for backward compatibility`);case'Request':// noop - already set by orator-session
|
|
133
|
+
tmpSession=this._Controller.extend(tmpSession,pRequest.UserSession);break;case'None':break;case'Header':try{tmpHeaderSessionString=pRequest.headers['x-trusted-session'];if(!tmpHeaderSessionString){break;}const tmpHeaderSession=JSON.parse(tmpHeaderSessionString);tmpSession=this._Controller.extend(tmpSession,tmpHeaderSession);}catch(pError){this._Controller.log.error(`Meadow Endpoints attempted to process a Header Session String with value [${tmpHeaderSessionString}] and failed -- likely culprit is bad JSON.`);}break;}// Do we keep this here for backwards compatibility?
|
|
134
|
+
// Yes this makes sense here.
|
|
135
|
+
pRequest.UserSession=tmpSession;return tmpSession;}}module.exports=MeadowEndpointsSessionMarshaler;},{}],8:[function(require,module,exports){/**
|
|
136
|
+
* Meadow Endpoint Streamer - Stream an array of recods as JSON to an output stream.
|
|
137
|
+
*/const libAsyncEachSeries=require('async/eachSeries');const JSONStream=require('JSONStream');class MeadowEndpointsStreamRecordArray{/**
|
|
138
|
+
* @param {import('../Meadow-Endpoints-Controller-Base.js')} pController
|
|
139
|
+
*/constructor(pController){this._Controller=pController;}chunk(pInput,pChunkSize,pChunkCache){let tmpInputArray=[...pInput];// Note lodash defaults to 1, underscore defaults to 0
|
|
140
|
+
let tmpChunkSize=typeof pChunkSize=='number'?pChunkSize:0;let tmpChunkCache=typeof pChunkCache!='undefined'?pChunkCache:[];if(tmpChunkSize<=0){return tmpChunkCache;}while(tmpInputArray.length){tmpChunkCache.push(tmpInputArray.splice(0,tmpChunkSize));}return tmpChunkCache;}streamRecordArray(pResponse,pRecords,fCallback){// for meadow invoke, writeHead isn't provided, so just call send(), which is the shim it uses...
|
|
141
|
+
// also, for small arrays, don't bother with the async serialization; this threshold could use tuning
|
|
142
|
+
if(!pResponse.writeHead||!Array.isArray(pRecords)||pRecords.length<2500){pResponse.send(pRecords);return fCallback();}pResponse.writeHead(200,{'content-type':'application/json'});const recordJsonMarshaller=JSONStream.stringify();recordJsonMarshaller.pipe(pResponse);// we write the records in chunks; doing one per loop is very inefficient, doing all is the same as not doing this at all
|
|
143
|
+
libAsyncEachSeries(this.chunk(pRecords,1000),(pRecordChunk,fNext)=>{pRecordChunk.forEach(recordJsonMarshaller.write);setTimeout(fNext,0);},error=>{recordJsonMarshaller.end();fCallback(error);});}}module.exports=MeadowEndpointsStreamRecordArray;},{"JSONStream":35,"async/eachSeries":38}],9:[function(require,module,exports){/**
|
|
144
|
+
* Meadow Endpoint - Count a Record
|
|
145
|
+
*/const doAPIEndpointCount=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Count');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{tmpRequestState.Query=this.DAL.query;if(typeof pRequest.params.Filter==='string'){// If a filter has been passed in, parse it and add the values to the query.
|
|
146
|
+
this.parseFilter(pRequest.params.Filter,tmpRequestState.Query);}else if(pRequest.params.Filter){tmpRequestState.Query.setFilter(pRequest.params.Filter);}return fStageComplete();},fBehaviorInjector(`Count-QueryConfiguration`),fStageComplete=>{this.DAL.doCount(tmpRequestState.Query,(pError,pQuery,pCount)=>{tmpRequestState.Result={Count:pCount};return fStageComplete(pError);});},fStageComplete=>{pResponse.send(tmpRequestState.Result);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Delivered recordset count of ${tmpRequestState.Result.Count} for ${this.DAL.scope}.`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointCount;},{}],10:[function(require,module,exports){/**
|
|
147
|
+
* Meadow Endpoint - Count a Record filtered by a single value
|
|
148
|
+
*/const doAPIEndpointCountBy=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'CountBy');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{tmpRequestState.Query=this.DAL.query;tmpRequestState.Query.addFilter(pRequest.params.ByField,pRequest.params.ByValue,'=','AND','RequestByField');return fStageComplete();},fBehaviorInjector(`CountBy-QueryConfiguration`),fStageComplete=>{this.DAL.doCount(tmpRequestState.Query,(pError,pQuery,pCount)=>{tmpRequestState.Result={Count:pCount};return fStageComplete(pError);});},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,'Delivered recordset count of '+tmpRequestState.Result.Count+'.');pResponse.send(tmpRequestState.Result);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointCountBy;},{}],11:[function(require,module,exports){/**
|
|
149
|
+
* Meadow Endpoint - Create a set of Record in Bulk
|
|
150
|
+
*/const doCreate=require('./Meadow-Operation-Create.js');const doAPIEndpointBulkCreate=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'CreateBulk');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};tmpRequestState.CreatedRecords=[];this.waterfall([fStageComplete=>{if(!Array.isArray(pRequest.body)){return fStageComplete(this.ErrorHandler.getError('Bulk record create failure - a valid array of records to create is required.',500));}pRequest.RecordsToBulkCreate=pRequest.body;return fStageComplete();},// Endpoint-level pre-request hook for bulk creates. Mirror of
|
|
151
|
+
// Create-PreRequest in the singular Create endpoint — fires
|
|
152
|
+
// after body-array validation and before any per-record
|
|
153
|
+
// operation. Use cases include bulk idempotency suppression /
|
|
154
|
+
// dedup across the incoming batch.
|
|
155
|
+
fBehaviorInjector(`CreateBulk-PreRequest`),fBehaviorInjector(`CreateBulk-PreOperation`),fStageComplete=>{// TODO: Research parallelism opportunities from custom routes
|
|
156
|
+
this.eachLimit(pRequest.RecordsToBulkCreate,1,(pRecord,fCallback)=>{doCreate.call(this,pRecord,pRequest,tmpRequestState,pResponse,fCallback);},fStageComplete);},fBehaviorInjector(`CreateBulk-PostOperation`),fStageComplete=>{return this.doStreamRecordArray(pResponse,tmpRequestState.CreatedRecords,fStageComplete);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Bulk created ${tmpRequestState.CreatedRecords.length} records`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointBulkCreate;},{"./Meadow-Operation-Create.js":13}],12:[function(require,module,exports){/**
|
|
157
|
+
* Meadow Endpoint - Create a Record
|
|
158
|
+
*/const doCreate=require('./Meadow-Operation-Create.js');const doAPIEndpointCreate=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Create');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{if(typeof pRequest.body!=='object'){return fStageComplete(this.ErrorHandler.getError('Record create failure - a valid record is required.',500));}return fStageComplete();},// Endpoint-level pre-request hook. Runs after the body-type check
|
|
159
|
+
// but before any operation work, mirroring ME 2.x's
|
|
160
|
+
// Create-PreRequest stage. Use cases include idempotency
|
|
161
|
+
// suppression (e.g. look up by primary GUID and short-circuit
|
|
162
|
+
// if the row already exists). Handlers can abort the operation
|
|
163
|
+
// by calling fStageComplete with a truthy error or by fully
|
|
164
|
+
// writing pResponse and returning a sentinel.
|
|
165
|
+
fBehaviorInjector(`Create-PreRequest`),fStageComplete=>{doCreate.call(this,pRequest.body,pRequest,tmpRequestState,pResponse,fStageComplete);},fStageComplete=>{if(tmpRequestState.RecordCreateError){return fStageComplete(tmpRequestState.RecordCreateErrorObject);}if(tmpRequestState.CreatedRecords.length<1){return fStageComplete(this.ErrorHandler.getError('Unknown record create failure - no created records returned.',500));}tmpRequestState.Record=tmpRequestState.CreatedRecords[0];return fStageComplete();},fStageComplete=>{pResponse.send(tmpRequestState.Record);return fStageComplete();},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Created a ${this.DAL.scope} record ID ${tmpRequestState.Record[this.DAL.defaultIdentifier]}`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointCreate;},{"./Meadow-Operation-Create.js":13}],13:[function(require,module,exports){/**
|
|
166
|
+
* Meadow Operation - Create a record function
|
|
167
|
+
*/const doCreate=function(pRecord,pRequest,pRequestState,pResponse,fCallback){// This is a virtual operation
|
|
168
|
+
let tmpRequestState=this.cloneAsyncSafeRequestState(pRequestState,'doCreate');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};if(!Array.isArray(tmpRequestState.ParentRequestState.CreatedRecords)){tmpRequestState.ParentRequestState.CreatedRecords=[];}this.waterfall([fStageComplete=>{tmpRequestState.RecordToCreate=pRecord;//Make sure record gets created with a customerID
|
|
169
|
+
if(!tmpRequestState.RecordToCreate.hasOwnProperty('IDCustomer')&&this.DAL.jsonSchema&&this.DAL.jsonSchema.properties&&this.DAL.jsonSchema.properties.hasOwnProperty('IDCustomer')){tmpRequestState.RecordToCreate.IDCustomer=tmpRequestState.SessionData.CustomerID||0;}return fStageComplete();},fStageComplete=>{this.BehaviorInjection.runBehavior(`Create-PreOperation`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{// Prepare create query
|
|
170
|
+
tmpRequestState.Query=this.DAL.query;tmpRequestState.Query.setIDUser(tmpRequestState.SessionData.UserID);tmpRequestState.Query.addRecord(tmpRequestState.RecordToCreate);return fStageComplete();},fStageComplete=>{this.BehaviorInjection.runBehavior(`Create-QueryConfiguration`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{// Do the actual create operation with the DAL
|
|
171
|
+
this.DAL.doCreate(tmpRequestState.Query,(pError,pQuery,pReadQuery,pNewRecord)=>{if(pError){return fStageComplete(pError);}if(!pNewRecord){return fStageComplete(this.ErrorHandler.getError(`Error in DAL Create: No record returned from persistence engine.`,500));}tmpRequestState.Record=pNewRecord;return fStageComplete();});},fStageComplete=>{return this.BehaviorInjection.runBehavior(`Create-PostOperation`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{tmpRequestState.ParentRequestState.CreatedRecords.push(tmpRequestState.Record);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Created a record with ${this.DAL.defaultIdentifier} = ${tmpRequestState.Record[this.DAL.defaultIdentifier]}`);return fStageComplete();}],pError=>{if(pError){tmpRequestState.RecordToCreate.Error=pError;tmpRequestState.ParentRequestState.RecordCreateError=true;tmpRequestState.ParentRequestState.RecordCreateErrorObject=pError;tmpRequestState.ParentRequestState.CreatedRecords.push(tmpRequestState.RecordToCreate);}return fCallback();});};module.exports=doCreate;},{}],14:[function(require,module,exports){/**
|
|
172
|
+
* Meadow Endpoint - Delete a Record
|
|
173
|
+
*/const doAPIEndpointDelete=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Delete');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};tmpRequestState.IDRecord=0;tmpRequestState.RecordCount={Count:0};this.waterfall([fStageComplete=>{if(typeof pRequest.params.IDRecord==='string'){tmpRequestState.IDRecord=pRequest.params.IDRecord;}else if(typeof pRequest.body[this.DAL.defaultIdentifier]==='number'){tmpRequestState.IDRecord=pRequest.body[this.DAL.defaultIdentifier];}else if(typeof pRequest.body[this.DAL.defaultIdentifier]==='string'){tmpRequestState.IDRecord=pRequest.body[this.DAL.defaultIdentifier];}// Although the Meadow delete behavior does allow multiple deletes, we require an identifier.
|
|
174
|
+
// If a developer wants bulk delete, it will require a custom endpoint.
|
|
175
|
+
if(tmpRequestState.IDRecord<1){return fStageComplete(this.ErrorHandler.getError('Record delete failure - a valid record ID is required in the passed-in record.',500));}return fStageComplete();},fStageComplete=>{tmpRequestState.Query=this.DAL.query;tmpRequestState.Query.addFilter(this.DAL.defaultIdentifier,tmpRequestState.IDRecord);tmpRequestState.Query.setIDUser(tmpRequestState.SessionData.UserID);return fStageComplete();},fStageComplete=>{return this.BehaviorInjection.runBehavior(`Delete-QueryConfiguration`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{// Load the record so we can do security checks on it
|
|
176
|
+
this.DAL.doRead(tmpRequestState.Query,(pError,pQuery,pRecord)=>{if(!pRecord){return fStageComplete(this.ErrorHandler.getError('Record not found.',404));}tmpRequestState.Record=pRecord;// Alias the loaded pre-delete row for symmetry
|
|
177
|
+
// with Update (see Meadow-Operation-Update.js).
|
|
178
|
+
// Post-op hooks that compare pre/post values can
|
|
179
|
+
// reliably read OriginalRecord without having to
|
|
180
|
+
// know which stage overwrote Record.
|
|
181
|
+
tmpRequestState.OriginalRecord=pRecord;return fStageComplete();});},fStageComplete=>{return this.BehaviorInjection.runBehavior(`Delete-PreOperation`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{// Do the delete
|
|
182
|
+
this.DAL.doDelete(tmpRequestState.Query,(pError,pQuery,pCount)=>{// MySQL returns the number of rows deleted
|
|
183
|
+
tmpRequestState.RecordCount.Count=pCount;return fStageComplete(pError);});},fStageComplete=>{return this.BehaviorInjection.runBehavior(`Delete-PostOperation`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{pResponse.send(tmpRequestState.RecordCount);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Deleted ${tmpRequestState.RecordCount.Count} ${this.DAL.scope} records with ID ${tmpRequestState.IDRecord}`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointDelete;},{}],15:[function(require,module,exports){/**
|
|
184
|
+
* Meadow Endpoint - Undelete a Record
|
|
185
|
+
*/const doAPIEndpointUndelete=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Undelete');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};var tmpIDRecord=0;if(typeof pRequest.params.IDRecord==='string'){tmpIDRecord=pRequest.params.IDRecord;}else if(typeof pRequest.body[this.DAL.defaultIdentifier]==='number'){tmpIDRecord=pRequest.body[this.DAL.defaultIdentifier];}else if(typeof pRequest.body[this.DAL.defaultIdentifier]==='string'){tmpIDRecord=pRequest.body[this.DAL.defaultIdentifier];}// Although the undelete request does allow multiple undeletes, we require an identifier.
|
|
186
|
+
// TODO: Decide if we want to keep this pattern similar to Delete, or, if we want to change it to allow bulk undeletes.
|
|
187
|
+
if(tmpIDRecord<1){return fNext(this.ErrorHandler.getError('Record undelete failure - a valid record ID is required.',500));}tmpRequestState.RecordCount={Count:0};this.waterfall([fStageComplete=>{// Validate that the schema has a deleted bit
|
|
188
|
+
var tmpSchema=this.DAL.schema;var tmpHasDeletedBit=false;for(let i=0;i<tmpSchema.length;i++){if(tmpSchema[i].Type=='Deleted'){tmpHasDeletedBit=true;}}if(!tmpHasDeletedBit){return fStageComplete(this.ErrorHandler.getError('No undelete bit on record.',500));}return fStageComplete();},fStageComplete=>{// Now see if the record, with this identifier, for this user, exists with the deleted bit set to 1
|
|
189
|
+
tmpRequestState.Query=this.DAL.query;tmpRequestState.Query.addFilter(this.DAL.defaultIdentifier,tmpIDRecord);tmpRequestState.Query.addFilter('Deleted',1);tmpRequestState.Query.setIDUser(tmpRequestState.SessionData.UserID);return fStageComplete();},fStageComplete=>{// Load the record so we can do security checks on it
|
|
190
|
+
this.DAL.doRead(tmpRequestState.Query,(pError,pQuery,pRecord)=>{if(!pRecord){return fStageComplete(this.ErrorHandler.getError('Record not found.',404));}tmpRequestState.Record=pRecord;// Alias the loaded pre-undelete row for symmetry
|
|
191
|
+
// with Update / Delete (see their endpoints). Post-op
|
|
192
|
+
// hooks that compare pre/post values can reliably
|
|
193
|
+
// read OriginalRecord.
|
|
194
|
+
tmpRequestState.OriginalRecord=pRecord;return fStageComplete();});},fStageComplete=>{return this.BehaviorInjection.runBehavior(`Undelete-PreOperation`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{// Do the undelete
|
|
195
|
+
this.DAL.doUndelete(tmpRequestState.Query,(pError,pQuery,pCount)=>{// MySQL returns the number of rows deleted
|
|
196
|
+
tmpRequestState.RecordCount={Count:pCount};return fStageComplete(pError);});},fStageComplete=>{return this.BehaviorInjection.runBehavior(`Undelete-PostOperation`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{pResponse.send(tmpRequestState.RecordCount);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,'Undeleted '+tmpRequestState.RecordCount.Count+' records with ID '+tmpIDRecord+'.');return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointUndelete;},{}],16:[function(require,module,exports){/**
|
|
197
|
+
* Meadow Endpoint - Read a Record
|
|
198
|
+
*/const doAPIEndpointRead=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Read');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{tmpRequestState.Query=this.DAL.query;return fStageComplete();},fBehaviorInjector(`Read-PreOperation`),fStageComplete=>{if(!pRequest.params.IDRecord&&pRequest.params.GUIDRecord){// We use a custom name for this (RequestDefaultIdentifier) in case there is a query with a dot in the default identifier.
|
|
199
|
+
tmpRequestState.RecordSearchCriteria=`${this.DAL.defaultGUIdentifier} = ${pRequest.params.GUIDRecord}`;tmpRequestState.Query.addFilter(this.DAL.defaultGUIdentifier,pRequest.params.GUIDRecord,'=','AND','RequestDefaultIdentifier');}else if(pRequest.params.IDRecord){// We use a custon name for this (RequestDefaultIdentifier) in case there is a query with a dot in the default identifier.
|
|
200
|
+
tmpRequestState.RecordSearchCriteria=`${this.DAL.defaultIdentifier} = ${pRequest.params.IDRecord}`;tmpRequestState.Query.addFilter(this.DAL.defaultIdentifier,pRequest.params.IDRecord,'=','AND','RequestDefaultIdentifier');}else{return fStageComplete(this.ErrorHandler.getError('No ID Provided',400));}return fStageComplete();},fBehaviorInjector(`Read-QueryConfiguration`),fStageComplete=>{try{this.DAL.doRead(tmpRequestState.Query,(pError,pQuery,pRecord)=>{if(!pRecord){return fStageComplete(this.ErrorHandler.getError('Record not Found',404));}tmpRequestState.Record=pRecord;return fStageComplete();});}catch(pQueryError){return fStageComplete(pQueryError);}},fBehaviorInjector(`Read-PostOperation`),fStageComplete=>{pResponse.send(tmpRequestState.Record);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Read Record Where ${tmpRequestState.RecordSearchCriteria}`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointRead;},{}],17:[function(require,module,exports){/**
|
|
201
|
+
* Meadow Endpoint - Read a list of Records with a specified set of columns, distinct by those columns.
|
|
202
|
+
*/const marshalDistinctList=require('./Meadow-Marshal-DistinctList.js');const doAPIEndpointReadDistinct=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'ReadDistinct');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};tmpRequestState.DistinctColumns;this.waterfall([fStageComplete=>{tmpRequestState.Query=this.DAL.query.setDistinct(true);/** @type {number | boolean} */let tmpCap=false;/** @type {number | boolean} */let tmpBegin=false;if(typeof pRequest.params.Begin==='string'||typeof pRequest.params.Begin==='number'){tmpBegin=parseInt(pRequest.params.Begin,10);}if(typeof pRequest.params.Cap==='string'||typeof pRequest.params.Cap==='number'){tmpCap=parseInt(pRequest.params.Cap,10);}else{//maximum number of records to return by default on Read queries. Override via "MeadowDefaultMaxCap" fable setting.
|
|
203
|
+
tmpCap=this.settings['MeadowDefaultMaxCap']||250;}tmpRequestState.Query.setCap(tmpCap).setBegin(tmpBegin);if(typeof pRequest.params.Filter==='string'){// If a filter has been passed in, parse it and add the values to the query.
|
|
204
|
+
this.parseFilter(pRequest.params.Filter,tmpRequestState.Query);}else if(pRequest.params.Filter){tmpRequestState.Query.setFilter(pRequest.params.Filter);}if(typeof pRequest.params.Columns==='string'){tmpRequestState.DistinctColumns=pRequest.params.Columns.split(',');if(!tmpRequestState.DistinctColumns){return fStageComplete({Code:400,Message:'Columns to distinct on must be provided.'});}tmpRequestState.Query.setDataElements(tmpRequestState.DistinctColumns);}return fStageComplete();},fBehaviorInjector(`Reads-QueryConfiguration`),fStageComplete=>{this.DAL.doReads(tmpRequestState.Query,fStageComplete);},(pQuery,pRecords,fStageComplete)=>{if(pRecords.length<1){pRecords=[];}tmpRequestState.Records=pRecords;return fStageComplete();},// Stage-specific post-op hook. Fires after DAL read but BEFORE
|
|
205
|
+
// the records are projected to distinct-column shape, so
|
|
206
|
+
// handlers can run against full rows. Separate from
|
|
207
|
+
// Reads-PostOperation so registering one doesn't unintentionally
|
|
208
|
+
// fire on the other. Hash matches the endpoint's action label
|
|
209
|
+
// (initializeRequestState(..., 'ReadDistinct')).
|
|
210
|
+
fBehaviorInjector(`ReadDistinct-PostOperation`),fStageComplete=>{tmpRequestState.ResultRecords=marshalDistinctList.call(this,tmpRequestState.Records,pRequest,tmpRequestState.DistinctColumns);return fStageComplete();},fStageComplete=>{return this.doStreamRecordArray(pResponse,tmpRequestState.ResultRecords,fStageComplete);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Read a recordset distinct lite list with ${tmpRequestState.ResultRecords.length} results.`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointReadDistinct;},{"./Meadow-Marshal-DistinctList.js":23}],18:[function(require,module,exports){/**
|
|
211
|
+
* Meadow Endpoint - Read a list of lite Records (for Drop-downs and such)
|
|
212
|
+
*/const marshalLiteList=require('./Meadow-Marshal-LiteList.js');const doAPIEndpointReadLite=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'ReadsLite');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([// 1a. Get the records
|
|
213
|
+
fStageComplete=>{tmpRequestState.Query=this.DAL.query;// TODO: Limit the query to the columns we need for the templated expression
|
|
214
|
+
/** @type {number | boolean} */var tmpCap=false;/** @type {number | boolean} */var tmpBegin=false;if(typeof pRequest.params.Begin==='string'||typeof pRequest.params.Begin==='number'){tmpBegin=parseInt(pRequest.params.Begin,10);}if(typeof pRequest.params.Cap==='string'||typeof pRequest.params.Cap==='number'){tmpCap=parseInt(pRequest.params.Cap,10);}else{//maximum number of records to return by default on Read queries. Override via "MeadowDefaultMaxCap" fable setting.
|
|
215
|
+
tmpCap=this.settings['MeadowDefaultMaxCap']||250;}tmpRequestState.Query.setCap(tmpCap).setBegin(tmpBegin);if(typeof pRequest.params.Filter==='string'){// If a filter has been passed in, parse it and add the values to the query.
|
|
216
|
+
this.parseFilter(pRequest.params.Filter,tmpRequestState.Query);}else if(pRequest.params.Filter){tmpRequestState.Query.setFilter(pRequest.params.Filter);}return fStageComplete();},fBehaviorInjector(`Reads-QueryConfiguration`),fStageComplete=>{this.DAL.doReads(tmpRequestState.Query,fStageComplete);},(pQuery,pRecords,fStageComplete)=>{if(pRecords.length<1){pRecords=[];}tmpRequestState.RawRecords=pRecords;// Expose the loaded records under pRequestState.Records
|
|
217
|
+
// so post-op hooks operate on the same shape regular
|
|
218
|
+
// Reads uses. Marshalling to lite shape runs AFTER the
|
|
219
|
+
// hook so hooks see full rows.
|
|
220
|
+
tmpRequestState.Records=pRecords;return fStageComplete();},fBehaviorInjector(`ReadsLite-PostOperation`),fStageComplete=>{tmpRequestState.Records=marshalLiteList.call(this,tmpRequestState.RawRecords,pRequest,typeof pRequest.params.ExtraColumns==='string'?pRequest.params.ExtraColumns.split(','):[]);return fStageComplete();},fStageComplete=>{return this.doStreamRecordArray(pResponse,tmpRequestState.Records,fNext);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Read a recordset lite list with ${tmpRequestState.Records.length} results`);return fStageComplete();}],(pError,pResultRecords)=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointReadLite;},{"./Meadow-Marshal-LiteList.js":24}],19:[function(require,module,exports){/**
|
|
221
|
+
* Meadow Endpoint - Read the Max Value of a Column in a Set
|
|
222
|
+
*/const doAPIEndpointReadMax=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'ReadMax');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{tmpRequestState.Query=this.DAL.query;return fStageComplete();},fStageComplete=>{tmpRequestState.ColumnName=pRequest.params.ColumnName;tmpRequestState.Query.setSort({Column:tmpRequestState.ColumnName,Direction:'Descending'});tmpRequestState.Query.setCap(1);return fStageComplete();},fBehaviorInjector(`ReadMax-QueryConfiguration`),fStageComplete=>{this.DAL.doRead(tmpRequestState.Query,fStageComplete);},(pQuery,pRecord,fStageComplete)=>{if(!pRecord){return fStageComplete(this.ErrorHandler.getError('Record not Found',404));}tmpRequestState.Record=pRecord;return fStageComplete();},fStageComplete=>{this.BehaviorInjection.runBehavior(`ReadMax-PostOperation`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Read max record of ${this.DAL.scope} on ${tmpRequestState.ColumnName}`);pResponse.send(tmpRequestState.Record);}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointReadMax;},{}],20:[function(require,module,exports){/**
|
|
223
|
+
* Meadow Endpoint - Read a select list of Records (for Drop-downs and such)
|
|
224
|
+
*/const doAPIEndpointReadSelectList=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'ReadsBy');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{tmpRequestState.Query=this.DAL.query;/** @type {number | boolean} */var tmpCap=false;/** @type {number | boolean} */var tmpBegin=false;if(typeof pRequest.params.Begin==='string'||typeof pRequest.params.Begin==='number'){tmpBegin=parseInt(pRequest.params.Begin);}if(typeof pRequest.params.Cap==='string'||typeof pRequest.params.Cap==='number'){tmpCap=parseInt(pRequest.params.Cap);}else{tmpCap=this.settings['MeadowDefaultMaxCap']||250;}tmpRequestState.Query.setCap(tmpCap).setBegin(tmpBegin);if(typeof pRequest.params.Filter==='string'){this.parseFilter(pRequest.params.Filter,tmpRequestState.Query);}return fStageComplete();},fBehaviorInjector(`Reads-QueryConfiguration`),fStageComplete=>{this.DAL.doReads(tmpRequestState.Query,fStageComplete);},(pQuery,pRecords,fStageComplete)=>{if(pRecords.length<1){pRecords=[];}tmpRequestState.Records=pRecords;return fStageComplete();},// Stage-specific post-op hook. Fires after DAL read but
|
|
225
|
+
// BEFORE the records are projected to select-list
|
|
226
|
+
// (Hash/Value) shape, so handlers can run against full
|
|
227
|
+
// rows. Separate from Reads-PostOperation so registering
|
|
228
|
+
// one doesn't unintentionally fire on the other.
|
|
229
|
+
fBehaviorInjector(`ReadSelectList-PostOperation`),fStageComplete=>{tmpRequestState.SelectList=[];for(var i=0;i<tmpRequestState.Records.length;i++){tmpRequestState.SelectList.push({Hash:tmpRequestState.Records[i][this.DAL.defaultIdentifier],Value:this.BehaviorInjection.processTemplate('SelectList',{Record:tmpRequestState.Records[i]},this.DAL.scope+' #<%= Record.'+this.DAL.defaultIdentifier+'%>')});}return fStageComplete();},fStageComplete=>{return this.doStreamRecordArray(pResponse,tmpRequestState.SelectList,fStageComplete);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Read a recordset lite list with ${tmpRequestState.SelectList.length} results.`);return fStageComplete();}],(pError,pResultRecords)=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointReadSelectList;},{}],21:[function(require,module,exports){/**
|
|
230
|
+
* Meadow Endpoint - Read a Set of Records
|
|
231
|
+
*/const doAPIEndpointReads=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Reads');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{tmpRequestState.Query=this.DAL.query;/** @type {number | boolean} */var tmpCap=false;/** @type {number | boolean} */var tmpBegin=false;if(typeof pRequest.params.Begin==='string'||typeof pRequest.params.Begin==='number'){tmpBegin=parseInt(pRequest.params.Begin);}if(typeof pRequest.params.Cap==='string'||typeof pRequest.params.Cap==='number'){tmpCap=parseInt(pRequest.params.Cap);}else{tmpCap=this.settings['MeadowDefaultMaxCap']||250;}tmpRequestState.Query.setCap(tmpCap).setBegin(tmpBegin);if(typeof pRequest.params.Filter==='string'){// If a filter has been passed in, parse it and add the values to the query.
|
|
232
|
+
this.parseFilter(pRequest.params.Filter,tmpRequestState.Query);}else if(pRequest.params.Filter){tmpRequestState.Query.setFilter(pRequest.params.Filter);}return fStageComplete();},fBehaviorInjector(`Reads-QueryConfiguration`),fStageComplete=>{this.DAL.doReads(tmpRequestState.Query,fStageComplete);},(pQuery,pRecords,fStageComplete)=>{if(!pRecords){return fStageComplete(this.ErrorHandler.getError('No records found.',404));}tmpRequestState.Records=pRecords;return fStageComplete();},fBehaviorInjector(`Reads-PostOperation`),fStageComplete=>{this.doStreamRecordArray(pResponse,tmpRequestState.Records,fStageComplete);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,'Read a list of records.');return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointReads;},{}],22:[function(require,module,exports){/**
|
|
233
|
+
* Meadow Endpoint - Read a Record
|
|
234
|
+
*/const doAPIEndpointReadsBy=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'ReadsBy');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([// 1. Construct the Query
|
|
235
|
+
fStageComplete=>{tmpRequestState.Query=this.DAL.query;/** @type {number | boolean} */var tmpCap=false;/** @type {number | boolean} */var tmpBegin=false;if(typeof pRequest.params.Begin==='string'||typeof pRequest.params.Begin==='number'){tmpBegin=parseInt(pRequest.params.Begin);}if(typeof pRequest.params.Cap==='string'||typeof pRequest.params.Cap==='number'){tmpCap=parseInt(pRequest.params.Cap);}else{//maximum number of records to return by default on Read queries. Override via "MeadowDefaultMaxCap" fable setting.
|
|
236
|
+
tmpCap=this.settings['MeadowDefaultMaxCap']||250;}tmpRequestState.Query.setCap(tmpCap).setBegin(tmpBegin);return fStageComplete();},fStageComplete=>{function addField(pByField,pByValue){if(pByValue.constructor===Array){tmpRequestState.Query.addFilter(pByField,pByValue,'IN','AND','RequestByField');}else{tmpRequestState.Query.addFilter(pByField,pByValue,'=','AND','RequestByField');}}var tmpFilters=pRequest.params.Filters;if(tmpFilters&&tmpFilters.constructor===Array){tmpFilters.forEach(function(filter){addField(filter.ByField,filter.ByValue);});}else{addField(pRequest.params.ByField,pRequest.params.ByValue);}return fStageComplete();},fBehaviorInjector(`Reads-QueryConfiguration`),fStageComplete=>{this.DAL.doReads(tmpRequestState.Query,(pError,pQuery,pRecords)=>{if(!pRecords){return fStageComplete(this.ErrorHandler.getError('No records found.',404));}tmpRequestState.Records=pRecords;return fStageComplete();});},fBehaviorInjector(`Reads-PostOperation`),fStageComplete=>{return this.doStreamRecordArray(pResponse,tmpRequestState.Records,fStageComplete);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Read a list of records by ${pRequest.params.ByField} = ${pRequest.params.ByValue}`);return fStageComplete();}],// 7. Return the results to the user
|
|
237
|
+
pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointReadsBy;},{}],23:[function(require,module,exports){/**
|
|
238
|
+
* Meadow Operation - Marshal an array of records into a distinct list
|
|
239
|
+
*/const marshalDistinctList=function(pRecords,pRequest,pFieldList){if(pRecords.length<1)return[];let tmpDistinctList=[];// Allow the caller to pass in a list of fields.
|
|
240
|
+
let tmpFieldList=typeof pFieldList!=='undefined'?pFieldList:[];// See if this record has a GUID in the schema
|
|
241
|
+
let tmpGUID=this.DAL.defaultGUIdentifier&&this.DAL.defaultGUIdentifier.length>0?this.DAL.defaultGUIdentifier:false;// Peek at the first record to check for updatedate
|
|
242
|
+
let tmpHasUpdateDate=pRecords[0].hasOwnProperty('UpdateDate')?true:false;//Include all GUID and ID fields on the record
|
|
243
|
+
let tmpRecordFields=Object.keys(pRecords[0]);let h=0;while(h<tmpFieldList.length){// Remove any fields in the list that aren't in the first record.
|
|
244
|
+
if(!pRecords[0].hasOwnProperty(tmpFieldList[0]))tmpFieldList.splice(h,1);else h++;}for(let i=0;i<pRecords.length;i++){let tmpDistinctRecord={};tmpFieldList.forEach(pField=>{tmpDistinctRecord[pField]=pRecords[i][pField];});tmpDistinctList.push(tmpDistinctRecord);}return tmpDistinctList;};module.exports=marshalDistinctList;},{}],24:[function(require,module,exports){/**
|
|
245
|
+
* Meadow Operation - Marshal an array of records into a lite list
|
|
246
|
+
*/const marshalLiteList=function(pRecords,pRequest,pFieldList){if(pRecords.length<1)return[];let tmpLiteList=[];// Allow the caller to pass in a list of fields.
|
|
247
|
+
let tmpFieldList=typeof pFieldList!=='undefined'?pFieldList:[];// See if this record has a GUID in the schema
|
|
248
|
+
let tmpGUID=this.DAL.defaultGUIdentifier&&this.DAL.defaultGUIdentifier.length>0?this.DAL.defaultGUIdentifier:false;// Peek at the first record to check for updatedate
|
|
249
|
+
let tmpHasUpdateDate=pRecords[0].hasOwnProperty('UpdateDate')?true:false;//Include all GUID and ID fields on the record
|
|
250
|
+
let tmpRecordFields=Object.keys(pRecords[0]);tmpRecordFields.forEach(pField=>{if(pField.indexOf('ID')===0||pField.indexOf('GUID')===0||pField=='CreatingIDUser')//we should always include owner info
|
|
251
|
+
{tmpFieldList.push(pField);}});let h=0;while(h<tmpFieldList.length){// Remove any fields in the list that aren't in the first record.
|
|
252
|
+
if(!pRecords[0].hasOwnProperty(tmpFieldList[0]))tmpFieldList.splice(h,1);else h++;}for(let i=0;i<pRecords.length;i++){let tmpLiteRecord={Value:this.BehaviorInjection.processTemplate('SelectList',{Record:pRecords[i]},this.DAL.scope+' #<%= Record.'+this.DAL.defaultIdentifier+'%>')};tmpLiteRecord[this.DAL.defaultIdentifier]=pRecords[i][this.DAL.defaultIdentifier];if(tmpGUID)tmpLiteRecord[tmpGUID]=pRecords[i][tmpGUID];if(tmpHasUpdateDate)tmpLiteRecord['UpdateDate']=pRecords[i].UpdateDate;tmpFieldList.forEach(pField=>{tmpLiteRecord[pField]=pRecords[i][pField];});tmpLiteList.push(tmpLiteRecord);}return tmpLiteList;};module.exports=marshalLiteList;},{}],25:[function(require,module,exports){/**
|
|
253
|
+
* Meadow Endpoint - Get a New, empty Record
|
|
254
|
+
*/const doAPIEndpointNew=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'New');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fBehaviorInjector(`New-PreOperation`),fStageComplete=>{// If during the PreOperation this was set, we can
|
|
255
|
+
if(!tmpRequestState.EmptyEntityRecord){tmpRequestState.EmptyEntityRecord=this.extend({},this.DAL.schemaFull.defaultObject);}return fStageComplete();},fBehaviorInjector(`New-PostOperation`),fStageComplete=>{pResponse.send(tmpRequestState.EmptyEntityRecord);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Delivered New ${this.DAL.scope} Record`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointNew;},{}],26:[function(require,module,exports){/**
|
|
256
|
+
* Meadow Endpoint - Get the Record Schema
|
|
257
|
+
*/const doAPIEndpointSchema=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Schema');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fBehaviorInjector(`Schema-PreOperation`),fStageComplete=>{// If during the PreOperation this was set, we won't overwrite
|
|
258
|
+
if(!pRequest.JSONSchema){tmpRequestState.JSONSchema=this.extend({},this.DAL.jsonSchema);}return fStageComplete();},fBehaviorInjector(`Schema-PostOperation`),fStageComplete=>{pResponse.send(tmpRequestState.JSONSchema);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Delivered JSONSchema for ${this.DAL.scope}`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointSchema;},{}],27:[function(require,module,exports){/**
|
|
259
|
+
* Meadow Endpoint - Validate a Record
|
|
260
|
+
*/const doAPIEndpointValidate=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Validate');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fBehaviorInjector(`Validate-PreOperation`),fStageComplete=>{if(typeof pRequest.body!=='object'){return fStageComplete(this.ErrorHandler.getError('Record validate failure - a valid JSON object is required.',500));}tmpRequestState.Record=pRequest.body;return fStageComplete();},fStageComplete=>{tmpRequestState.RecordValidation=this.DAL.schemaFull.validateObject(tmpRequestState.Record);return fStageComplete();},fBehaviorInjector(`Validate-PostOperation`),fStageComplete=>{pResponse.send(tmpRequestState.RecordValidation);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Validated Record for ${this.DAL.scope} - ${JSON.stringify(tmpRequestState.RecordValidation)}`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointValidate;},{}],28:[function(require,module,exports){/**
|
|
261
|
+
* Meadow Endpoint - Update a set of Records
|
|
262
|
+
*/const doUpdate=require('./Meadow-Operation-Update.js');const doAPIEndpointUpdate=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'UpdateBulk');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};tmpRequestState.UpdatedRecords=[];this.waterfall([fStageComplete=>{if(!Array.isArray(pRequest.body)){return fStageComplete(this.ErrorHandler.getError('Record update failure - a valid record is required.',500));}tmpRequestState.BulkRecords=pRequest.body;return fStageComplete();},fBehaviorInjector(`UpdateBulk-PreOperation`),fStageComplete=>{this.eachLimit(tmpRequestState.BulkRecords,1,(pRecord,fCallback)=>{doUpdate.call(this,pRecord,pRequest,tmpRequestState,pResponse,fCallback);},fStageComplete);},fBehaviorInjector(`UpdateBulk-PostOperation`),fStageComplete=>{return this.doStreamRecordArray(pResponse,tmpRequestState.UpdatedRecords,fStageComplete);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Bulk updated ${tmpRequestState.UpdatedRecords.length} records`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointUpdate;},{"./Meadow-Operation-Update.js":30}],29:[function(require,module,exports){/**
|
|
263
|
+
* Meadow Endpoint - Update a Record
|
|
264
|
+
*/const doUpdate=require('./Meadow-Operation-Update.js');const doAPIEndpointUpdate=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Update');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{if(typeof pRequest.body!=='object'){return fStageComplete(this.ErrorHandler.getError('Record update failure - a valid record is required.',400));}if(pRequest.body[this.DAL.defaultIdentifier]<1){return fStageComplete(this.ErrorHandler.getError('Record update failure - a valid record ID is required in the passed-in record.',400));}tmpRequestState.Record=pRequest.body;return fStageComplete();},fStageComplete=>{doUpdate.call(this,pRequest.body,pRequest,tmpRequestState,pResponse,fStageComplete);},fStageComplete=>{if(tmpRequestState.RecordUpdateError){return fStageComplete(tmpRequestState.RecordUpdateErrorObject);}if(tmpRequestState.UpdatedRecords.length<1){return fStageComplete(this.ErrorHandler.getError('Unknown record update failure - no updated records returned.',500));}tmpRequestState.Record=tmpRequestState.UpdatedRecords[0];return fStageComplete();},fStageComplete=>{pResponse.send(tmpRequestState.Record);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointUpdate;},{"./Meadow-Operation-Update.js":30}],30:[function(require,module,exports){/**
|
|
265
|
+
* Meadow Operation - Update a record
|
|
266
|
+
*/const doUpdate=function(pRecordToModify,pRequest,pRequestState,pResponse,fCallback,pOptionalCachedUpdatingRecord){// This is a virtual operation
|
|
267
|
+
let tmpRequestState=this.cloneAsyncSafeRequestState(pRequestState,'doUpdate');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};// If there is not a default identifier or cached record, fail
|
|
268
|
+
if(pRecordToModify[this.DAL.defaultIdentifier]<1&&typeof pOptionalCachedUpdatingRecord==='undefined'){return fCallback('Record update failure - a valid record ID is required in the passed-in record.');}if(!Array.isArray(tmpRequestState.ParentRequestState.UpdatedRecords)){tmpRequestState.ParentRequestState.UpdatedRecords=[];}this.waterfall([fStageComplete=>{tmpRequestState.RecordToModify=pRecordToModify;if(typeof pOptionalCachedUpdatingRecord!=='undefined'){// Use the cached updating record instead of reading a record.
|
|
269
|
+
tmpRequestState.OriginalRecord=pOptionalCachedUpdatingRecord;return fStageComplete();}else{tmpRequestState.Query=this.DAL.query;tmpRequestState.Query.addFilter(this.DAL.defaultIdentifier,tmpRequestState.RecordToModify[this.DAL.defaultIdentifier]);// Load the record so we can do security checks on it
|
|
270
|
+
this.DAL.doRead(tmpRequestState.Query,(pError,pQuery,pRecord)=>{if(pError){return fStageComplete(pError);}if(!pRecord){return fStageComplete(this.ErrorHandler.getError('Record not Found',404));}tmpRequestState.Record=pRecord;// Alias the loaded pre-update row under an
|
|
271
|
+
// unambiguous name. pRequestState.Record gets
|
|
272
|
+
// overwritten with the POST-update row later in
|
|
273
|
+
// this waterfall; OriginalRecord preserves the
|
|
274
|
+
// PRE-update reference for post-op hooks that
|
|
275
|
+
// need to compare before/after values (change
|
|
276
|
+
// logs, customer-boundary checks, etc.).
|
|
277
|
+
tmpRequestState.OriginalRecord=pRecord;return fStageComplete();});}},fStageComplete=>{tmpRequestState.Query=this.DAL.query;return fStageComplete();},fBehaviorInjector(`Update-PreOperation`),fStageComplete=>{tmpRequestState.Query.setIDUser(tmpRequestState.SessionData.UserID);tmpRequestState.Query.addRecord(tmpRequestState.RecordToModify);return fStageComplete();},fBehaviorInjector(`Update-QueryConfiguration`),fStageComplete=>{this.DAL.doUpdate(tmpRequestState.Query,(pError,pQuery,pReadQuery,pRecord)=>{if(pError){if(typeof pError=='string'){return fStageComplete(this.ErrorHandler.getError(pError,500));}else{return fStageComplete(pError);}}if(!pRecord){return fStageComplete(this.ErrorHandler.getError(`Error in DAL Update: No record returned from persistence engine.`,500));}tmpRequestState.Record=pRecord;return fStageComplete();});},fStageComplete=>{return this.BehaviorInjection.runBehavior(`Update-PostOperation`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{tmpRequestState.ParentRequestState.UpdatedRecords.push(tmpRequestState.Record);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Updated record with ID ${tmpRequestState.Record[this.DAL.defaultIdentifier]}`);return fStageComplete();}],pError=>{if(pError){// Ensure we have a record object to attach the error to
|
|
278
|
+
if(tmpRequestState.Record){tmpRequestState.Record.Error=pError;}else{tmpRequestState.Record={Error:pError};}tmpRequestState.ParentRequestState.RecordUpdateError=true;tmpRequestState.ParentRequestState.RecordUpdateErrorObject=pError;tmpRequestState.ParentRequestState.UpdatedRecords.push(tmpRequestState.Record);}return fCallback();});};module.exports=doUpdate;},{}],31:[function(require,module,exports){/**
|
|
279
|
+
* Meadow Endpoint - Upsert a set of Records
|
|
280
|
+
*/const doUpsert=require('./Meadow-Operation-Upsert.js');const marshalLiteList=require('../read/Meadow-Marshal-LiteList.js');const doAPIEndpointUpserts=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'UpsertBulk');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};tmpRequestState.CreatedRecords=[];tmpRequestState.UpdatedRecords=[];tmpRequestState.UpsertedRecords=[];tmpRequestState.ErrorRecords=[];this.waterfall([fStageComplete=>{if(!Array.isArray(pRequest.body)){return fStageComplete(this.ErrorHandler.getError(`Record bulk upsert failure - a valid array of records is required.`,500));}tmpRequestState.BulkRecords=pRequest.body;return fStageComplete();},fBehaviorInjector(`UpsertBulk-PreOperation`),fStageComplete=>{this.eachLimit(tmpRequestState.BulkRecords,1,(pRecord,fCallback)=>{doUpsert.call(this,pRecord,pRequest,tmpRequestState,pResponse,fCallback);},fStageComplete);},fBehaviorInjector(`UpsertBulk-PostOperation`),fStageComplete=>{// Surface per-row error counts to the caller via response
|
|
281
|
+
// headers BEFORE streaming the success array. Without these,
|
|
282
|
+
// callers can only see "N records came back" and have no
|
|
283
|
+
// signal that other records were silently dropped (e.g.
|
|
284
|
+
// from a NOT NULL constraint or a column-too-long error).
|
|
285
|
+
// We keep the response body shape stable (bare array of
|
|
286
|
+
// upserted records) for back-compat — the headers are the
|
|
287
|
+
// non-breaking surface for the failure count + total.
|
|
288
|
+
let tmpInputCount=tmpRequestState.BulkRecords&&tmpRequestState.BulkRecords.length||0;let tmpErrorCount=tmpRequestState.ErrorRecords&&tmpRequestState.ErrorRecords.length||0;let tmpUpsertedCount=tmpRequestState.UpsertedRecords&&tmpRequestState.UpsertedRecords.length||0;try{pResponse.header('X-Meadow-Upsert-Total',String(tmpInputCount));pResponse.header('X-Meadow-Upsert-Succeeded',String(tmpUpsertedCount));pResponse.header('X-Meadow-Upsert-Errored',String(tmpErrorCount));}catch(pHdrErr){/* response.header may not exist on all servers; degrade silently */}return this.doStreamRecordArray(pResponse,marshalLiteList.call(this,tmpRequestState.UpsertedRecords,pRequest),fStageComplete);},fStageComplete=>{let tmpUpsertedCount=tmpRequestState.UpsertedRecords&&tmpRequestState.UpsertedRecords.length||0;let tmpErrorCount=tmpRequestState.ErrorRecords&&tmpRequestState.ErrorRecords.length||0;let tmpMessage=tmpErrorCount>0?`Bulk upsert complete -- ${tmpUpsertedCount} records succeeded, ${tmpErrorCount} errored`:`Bulk upsert complete -- ${tmpUpsertedCount} records processed`;this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,tmpMessage);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointUpserts;},{"../read/Meadow-Marshal-LiteList.js":24,"./Meadow-Operation-Upsert.js":34}],32:[function(require,module,exports){/**
|
|
289
|
+
* Meadow Endpoint - Upsert a set of Records, with detailed envelope response.
|
|
290
|
+
*
|
|
291
|
+
* Same upsert pipeline as Meadow-Endpoint-BulkUpsert.js, but the
|
|
292
|
+
* response body is an envelope:
|
|
293
|
+
*
|
|
294
|
+
* {
|
|
295
|
+
* "Counts": { "Total": N, "Succeeded": K, "Errored": M },
|
|
296
|
+
* "UpsertedRecords": [ ... lite-marshaled successes ... ],
|
|
297
|
+
* "ErrorRecords": [ { "Record": {...}, "Operation": "...", "Error": "..." }, ... ]
|
|
298
|
+
* }
|
|
299
|
+
*
|
|
300
|
+
* The vanilla `/Upserts` endpoint streams a bare array of successes for
|
|
301
|
+
* back-compat; this `/Upserts/Detailed` variant trades that compatibility
|
|
302
|
+
* for full per-row error visibility. Same X-Meadow-Upsert-* response
|
|
303
|
+
* headers are set on both.
|
|
304
|
+
*/const doUpsert=require('./Meadow-Operation-Upsert.js');const marshalLiteList=require('../read/Meadow-Marshal-LiteList.js');const doAPIEndpointUpsertsDetailed=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'UpsertBulkDetailed');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};tmpRequestState.CreatedRecords=[];tmpRequestState.UpdatedRecords=[];tmpRequestState.UpsertedRecords=[];tmpRequestState.ErrorRecords=[];this.waterfall([fStageComplete=>{if(!Array.isArray(pRequest.body)){return fStageComplete(this.ErrorHandler.getError(`Record bulk upsert (detailed) failure - a valid array of records is required.`,500));}tmpRequestState.BulkRecords=pRequest.body;return fStageComplete();},fBehaviorInjector(`UpsertBulk-PreOperation`),fStageComplete=>{this.eachLimit(tmpRequestState.BulkRecords,1,(pRecord,fCallback)=>{doUpsert.call(this,pRecord,pRequest,tmpRequestState,pResponse,fCallback);},fStageComplete);},fBehaviorInjector(`UpsertBulk-PostOperation`),fStageComplete=>{let tmpInputCount=tmpRequestState.BulkRecords&&tmpRequestState.BulkRecords.length||0;let tmpErrorCount=tmpRequestState.ErrorRecords&&tmpRequestState.ErrorRecords.length||0;let tmpUpsertedCount=tmpRequestState.UpsertedRecords&&tmpRequestState.UpsertedRecords.length||0;// Mirror the X-Meadow-Upsert-* headers from /Upserts so a
|
|
305
|
+
// caller can dispatch to either endpoint and read the same
|
|
306
|
+
// summary surface. The body envelope adds the per-row
|
|
307
|
+
// detail; the headers stay the structured summary.
|
|
308
|
+
try{pResponse.header('X-Meadow-Upsert-Total',String(tmpInputCount));pResponse.header('X-Meadow-Upsert-Succeeded',String(tmpUpsertedCount));pResponse.header('X-Meadow-Upsert-Errored',String(tmpErrorCount));}catch(pHdrErr){/* response.header may not exist on all servers; degrade silently */}let tmpEnvelope={Counts:{Total:tmpInputCount,Succeeded:tmpUpsertedCount,Errored:tmpErrorCount},UpsertedRecords:marshalLiteList.call(this,tmpRequestState.UpsertedRecords,pRequest),ErrorRecords:tmpRequestState.ErrorRecords||[]};pResponse.send(tmpEnvelope);return fStageComplete();},fStageComplete=>{let tmpUpsertedCount=tmpRequestState.UpsertedRecords&&tmpRequestState.UpsertedRecords.length||0;let tmpErrorCount=tmpRequestState.ErrorRecords&&tmpRequestState.ErrorRecords.length||0;let tmpMessage=tmpErrorCount>0?`Bulk upsert (detailed) complete -- ${tmpUpsertedCount} records succeeded, ${tmpErrorCount} errored`:`Bulk upsert (detailed) complete -- ${tmpUpsertedCount} records processed`;this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,tmpMessage);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointUpsertsDetailed;},{"../read/Meadow-Marshal-LiteList.js":24,"./Meadow-Operation-Upsert.js":34}],33:[function(require,module,exports){/**
|
|
309
|
+
* Meadow Endpoint - Upsert (Insert OR Update) a Record
|
|
310
|
+
*/var doUpsert=require('./Meadow-Operation-Upsert.js');var doAPIEndpointUpsert=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Upsert');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};// Configure the request for the generic create & update operations
|
|
311
|
+
tmpRequestState.CreatedRecords=[];tmpRequestState.UpdatedRecords=[];tmpRequestState.UpsertedRecords=[];tmpRequestState.ErrorRecords=[];this.waterfall([fStageComplete=>{//1. Validate request body to ensure it is a valid record
|
|
312
|
+
if(typeof pRequest.body!=='object'){return fStageComplete(this.ErrorHandler.getError('Record upsert failure - a valid record is required.',500));}tmpRequestState.RecordToUpsert=pRequest.body;return fStageComplete();},fStageComplete=>{doUpsert.call(this,tmpRequestState.RecordToUpsert,pRequest,tmpRequestState,pResponse,fStageComplete);},fStageComplete=>{if(tmpRequestState.RecordUpsertError){return fStageComplete(tmpRequestState.RecordUpsertErrorMessage);}if(tmpRequestState.UpsertedRecords.length<1){return fStageComplete(this.ErrorHandler.getError('Record upsert unknown failure - no record back from Upsert operation.',500));}tmpRequestState.Record=tmpRequestState.UpsertedRecords[0];pResponse.send(tmpRequestState.Record);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointUpsert;},{"./Meadow-Operation-Upsert.js":34}],34:[function(require,module,exports){/**
|
|
313
|
+
* Meadow Operation - Upsert a record
|
|
314
|
+
*/const doCreate=require('../create/Meadow-Operation-Create.js');const doUpdate=require('../update/Meadow-Operation-Update.js');const doUpsert=function(pRecordToUpsert,pRequest,pRequestState,pResponse,fCallback){let tmpRequestState=this.cloneAsyncSafeRequestState(pRequestState,'Upsert');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{tmpRequestState.Query=this.DAL.query;// Prepare to gather requirements for upserting
|
|
315
|
+
tmpRequestState.Record=pRecordToUpsert;// This operation will be create only if there is no GUID or ID in the record bundle
|
|
316
|
+
tmpRequestState.UpsertCreateOnly=true;// See if there is a default identifier or default GUIdentifier
|
|
317
|
+
if(typeof tmpRequestState.Record[this.DAL.defaultGUIdentifier]!=='undefined'&&tmpRequestState.Record[this.DAL.defaultGUIdentifier].length>0){tmpRequestState.Query.addFilter(this.DAL.defaultGUIdentifier,tmpRequestState.Record[this.DAL.defaultGUIdentifier]);tmpRequestState.UpsertCreateOnly=false;}if(typeof tmpRequestState.Record[this.DAL.defaultIdentifier]!=='undefined'&&tmpRequestState.Record[this.DAL.defaultIdentifier]>0){tmpRequestState.Query.addFilter(this.DAL.defaultIdentifier,tmpRequestState.Record[this.DAL.defaultIdentifier]);tmpRequestState.UpsertCreateOnly=false;}return fStageComplete();},fStageComplete=>{if(tmpRequestState.UpsertCreateOnly){tmpRequestState.Operation='Create';doCreate.call(this,tmpRequestState.Record,pRequest,tmpRequestState,pResponse,fStageComplete);}else{this.DAL.doRead(tmpRequestState.Query,(pError,pQuery,pRecord)=>{if(pError){if(typeof pError=='string'){return fStageComplete(this.ErrorHandler.getError(pError,500));}else{return fStageComplete(pError);}}else if(!pRecord){// Record not found -- do a create.
|
|
318
|
+
tmpRequestState.Operation='Create';doCreate.call(this,tmpRequestState.Record,pRequest,tmpRequestState,pResponse,fStageComplete);}else{// Set the default ID in the passed-in record if it doesn't exist
|
|
319
|
+
// or is zero (which is never a valid ID).
|
|
320
|
+
if(!tmpRequestState.Record.hasOwnProperty(this.DAL.defaultIdentifier)||!tmpRequestState.Record[this.DAL.defaultIdentifier]){tmpRequestState.Record[this.DAL.defaultIdentifier]=pRecord[this.DAL.defaultIdentifier];}// If the found record does not match the passed ID --- what the heck?!
|
|
321
|
+
if(tmpRequestState.Record[this.DAL.defaultIdentifier]!=pRecord[this.DAL.defaultIdentifier]){return fStageComplete(this.ErrorHandler.getError('Record IDs do not match',500));}// Record found -- do an update. Use the cached record, though.
|
|
322
|
+
tmpRequestState.Operation='Update';doUpdate.call(this,tmpRequestState.Record,pRequest,tmpRequestState,pResponse,fStageComplete,pRecord);}});}},fStageComplete=>{// Now stuff the record into the upserted array
|
|
323
|
+
if(tmpRequestState.Operation=='Update'){if(tmpRequestState.RecordUpdateError){return fStageComplete(tmpRequestState.RecordUpdateErrorObject);}if(tmpRequestState.UpdatedRecords.length<1){return fStageComplete(this.ErrorHandler.getError('Unknown record update failure - no updated records returned.',500));}tmpRequestState.Record=tmpRequestState.UpdatedRecords[0];}else if(tmpRequestState.Operation=='Create'){if(tmpRequestState.RecordCreateError){return fStageComplete(tmpRequestState.RecordCreateErrorObject);}if(tmpRequestState.CreatedRecords.length<1){return fStageComplete(this.ErrorHandler.getError('Unknown record create failure - no created records returned.',500));}tmpRequestState.Record=tmpRequestState.CreatedRecords[0];}else{return fStageComplete(this.ErrorHandler.getError('Unkknown record upsert failure = no records returned from doUpsert.',500));}tmpRequestState.ParentRequestState.UpsertedRecords.push(tmpRequestState.Record);return fStageComplete();}],pError=>{if(pError){tmpRequestState.Record.Error=pError;// Surface per-row failures back to the bulk caller. The
|
|
324
|
+
// parent BulkUpsert endpoint reads this array to count
|
|
325
|
+
// errors and signal partial-success to clients via a
|
|
326
|
+
// response header. Without this push, individual upsert
|
|
327
|
+
// failures vanish silently and the bulk response only
|
|
328
|
+
// reflects what survived.
|
|
329
|
+
if(tmpRequestState.ParentRequestState&&Array.isArray(tmpRequestState.ParentRequestState.ErrorRecords)){let tmpErrorMessage=pError&&(pError.message||pError.Error)?pError.message||pError.Error:String(pError);tmpRequestState.ParentRequestState.ErrorRecords.push({Record:tmpRequestState.Record,Operation:tmpRequestState.Operation||'Unknown',Error:tmpErrorMessage});}}return fCallback();});};module.exports=doUpsert;},{"../create/Meadow-Operation-Create.js":13,"../update/Meadow-Operation-Update.js":30}],35:[function(require,module,exports){(function(Buffer){(function(){'use strict';var Parser=require('jsonparse'),through=require('through');var bufferFrom=Buffer.from&&Buffer.from!==Uint8Array.from;/*
|
|
2
330
|
|
|
3
331
|
the value of this.stack that creationix's jsonparse has is weird.
|
|
4
332
|
|
|
@@ -13,7 +341,7 @@ if(header){stream.emit('header',header);header=false;}if(j!==this.stack.length)r
|
|
|
13
341
|
if(header!==false){header=header||{};header[key]=value;}// footer has not been emitted yet but header has
|
|
14
342
|
if(footer!==false&&header===false){footer=footer||{};footer[key]=value;}}};function check(x,y){if('string'===typeof x)return y==x;else if(x&&'function'===typeof x.exec)return x.exec(y);else if('boolean'===typeof x||'object'===typeof x)return x;else if('function'===typeof x)return x(y);return false;}exports.stringify=function(op,sep,cl,indent){indent=indent||0;if(op===false){op='';sep='\n';cl='';}else if(op==null){op='[\n';sep='\n,\n';cl='\n]\n';}//else, what ever you like
|
|
15
343
|
var stream,first=true,anyData=false;stream=through(function(data){anyData=true;try{var json=JSON.stringify(data,null,indent);}catch(err){return stream.emit('error',err);}if(first){first=false;stream.queue(op+json);}else stream.queue(sep+json);},function(data){if(!anyData)stream.queue(op);stream.queue(cl);stream.queue(null);});return stream;};exports.stringifyObject=function(op,sep,cl,indent){indent=indent||0;if(op===false){op='';sep='\n';cl='';}else if(op==null){op='{\n';sep='\n,\n';cl='\n}\n';}//else, what ever you like
|
|
16
|
-
var first=true;var anyData=false;var stream=through(function(data){anyData=true;var json=JSON.stringify(data[0])+':'+JSON.stringify(data[1],null,indent);if(first){first=false;this.queue(op+json);}else this.queue(sep+json);},function(data){if(!anyData)this.queue(op);this.queue(cl);this.queue(null);});return stream;};}).call(this);}).call(this,require("buffer").Buffer);},{"buffer":
|
|
344
|
+
var first=true;var anyData=false;var stream=through(function(data){anyData=true;var json=JSON.stringify(data[0])+':'+JSON.stringify(data[1],null,indent);if(first){first=false;this.queue(op+json);}else this.queue(sep+json);},function(data){if(!anyData)this.queue(op);this.queue(cl);this.queue(null);});return stream;};}).call(this);}).call(this,require("buffer").Buffer);},{"buffer":57,"jsonparse":121,"through":214}],36:[function(require,module,exports){'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.default=asyncify;var _initialParams=require('./internal/initialParams.js');var _initialParams2=_interopRequireDefault(_initialParams);var _setImmediate=require('./internal/setImmediate.js');var _setImmediate2=_interopRequireDefault(_setImmediate);var _wrapAsync=require('./internal/wrapAsync.js');function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}/**
|
|
17
345
|
* Take a sync function and make it async, passing its return value to a
|
|
18
346
|
* callback. This is useful for plugging sync functions into a waterfall,
|
|
19
347
|
* series, or other async functions. Any arguments passed to the generated
|
|
@@ -69,7 +397,7 @@ var first=true;var anyData=false;var stream=through(function(data){anyData=true;
|
|
|
69
397
|
*
|
|
70
398
|
* q.push(files);
|
|
71
399
|
*/function asyncify(func){if((0,_wrapAsync.isAsync)(func)){return function(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++){args[_key2]=arguments[_key2];}const callback=args.pop();const promise=func.apply(this,args);return handlePromise(promise,callback);};}return(0,_initialParams2.default)(function(args,callback){var result;try{result=func.apply(this,args);}catch(e){return callback(e);}// if result is Promise object
|
|
72
|
-
if(result&&typeof result.then==='function'){return handlePromise(result,callback);}else{callback(null,result);}});}function handlePromise(promise,callback){return promise.then(value=>{invokeCallback(callback,null,value);},err=>{invokeCallback(callback,err&&(err instanceof Error||err.message)?err:new Error(err));});}function invokeCallback(callback,error,value){try{callback(error,value);}catch(err){(0,_setImmediate2.default)(e=>{throw e;},err);}}module.exports=exports.default;},{"./internal/initialParams.js":
|
|
400
|
+
if(result&&typeof result.then==='function'){return handlePromise(result,callback);}else{callback(null,result);}});}function handlePromise(promise,callback){return promise.then(value=>{invokeCallback(callback,null,value);},err=>{invokeCallback(callback,err&&(err instanceof Error||err.message)?err:new Error(err));});}function invokeCallback(callback,error,value){try{callback(error,value);}catch(err){(0,_setImmediate2.default)(e=>{throw e;},err);}}module.exports=exports.default;},{"./internal/initialParams.js":44,"./internal/setImmediate.js":49,"./internal/wrapAsync.js":51}],37:[function(require,module,exports){'use strict';Object.defineProperty(exports,"__esModule",{value:true});var _eachOfLimit=require('./internal/eachOfLimit.js');var _eachOfLimit2=_interopRequireDefault(_eachOfLimit);var _withoutIndex=require('./internal/withoutIndex.js');var _withoutIndex2=_interopRequireDefault(_withoutIndex);var _wrapAsync=require('./internal/wrapAsync.js');var _wrapAsync2=_interopRequireDefault(_wrapAsync);var _awaitify=require('./internal/awaitify.js');var _awaitify2=_interopRequireDefault(_awaitify);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}/**
|
|
73
401
|
* The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time.
|
|
74
402
|
*
|
|
75
403
|
* @name eachLimit
|
|
@@ -89,7 +417,7 @@ if(result&&typeof result.then==='function'){return handlePromise(result,callback
|
|
|
89
417
|
* @param {Function} [callback] - A callback which is called when all
|
|
90
418
|
* `iteratee` functions have finished, or an error occurs. Invoked with (err).
|
|
91
419
|
* @returns {Promise} a promise, if a callback is omitted
|
|
92
|
-
*/function eachLimit(coll,limit,iteratee,callback){return(0,_eachOfLimit2.default)(limit)(coll,(0,_withoutIndex2.default)((0,_wrapAsync2.default)(iteratee)),callback);}exports.default=(0,_awaitify2.default)(eachLimit,4);module.exports=exports.default;},{"./internal/awaitify.js":
|
|
420
|
+
*/function eachLimit(coll,limit,iteratee,callback){return(0,_eachOfLimit2.default)(limit)(coll,(0,_withoutIndex2.default)((0,_wrapAsync2.default)(iteratee)),callback);}exports.default=(0,_awaitify2.default)(eachLimit,4);module.exports=exports.default;},{"./internal/awaitify.js":40,"./internal/eachOfLimit.js":42,"./internal/withoutIndex.js":50,"./internal/wrapAsync.js":51}],38:[function(require,module,exports){'use strict';Object.defineProperty(exports,"__esModule",{value:true});var _eachLimit=require('./eachLimit.js');var _eachLimit2=_interopRequireDefault(_eachLimit);var _awaitify=require('./internal/awaitify.js');var _awaitify2=_interopRequireDefault(_awaitify);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}/**
|
|
93
421
|
* The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time.
|
|
94
422
|
*
|
|
95
423
|
* Note, that unlike [`each`]{@link module:Collections.each}, this function applies iteratee to each item
|
|
@@ -111,18 +439,18 @@ if(result&&typeof result.then==='function'){return handlePromise(result,callback
|
|
|
111
439
|
* @param {Function} [callback] - A callback which is called when all
|
|
112
440
|
* `iteratee` functions have finished, or an error occurs. Invoked with (err).
|
|
113
441
|
* @returns {Promise} a promise, if a callback is omitted
|
|
114
|
-
*/function eachSeries(coll,iteratee,callback){return(0,_eachLimit2.default)(coll,1,iteratee,callback);}exports.default=(0,_awaitify2.default)(eachSeries,3);module.exports=exports.default;},{"./eachLimit.js":
|
|
442
|
+
*/function eachSeries(coll,iteratee,callback){return(0,_eachLimit2.default)(coll,1,iteratee,callback);}exports.default=(0,_awaitify2.default)(eachSeries,3);module.exports=exports.default;},{"./eachLimit.js":37,"./internal/awaitify.js":40}],39:[function(require,module,exports){'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.default=asyncEachOfLimit;var _breakLoop=require('./breakLoop.js');var _breakLoop2=_interopRequireDefault(_breakLoop);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}// for async generators
|
|
115
443
|
function asyncEachOfLimit(generator,limit,iteratee,callback){let done=false;let canceled=false;let awaiting=false;let running=0;let idx=0;function replenish(){//console.log('replenish')
|
|
116
444
|
if(running>=limit||awaiting||done)return;//console.log('replenish awaiting')
|
|
117
445
|
awaiting=true;generator.next().then(_ref=>{let{value,done:iterDone}=_ref;//console.log('got value', value)
|
|
118
446
|
if(canceled||done)return;awaiting=false;if(iterDone){done=true;if(running<=0){//console.log('done nextCb')
|
|
119
447
|
callback(null);}return;}running++;iteratee(value,idx,iterateeCallback);idx++;replenish();}).catch(handleError);}function iterateeCallback(err,result){//console.log('iterateeCallback')
|
|
120
448
|
running-=1;if(canceled)return;if(err)return handleError(err);if(err===false){done=true;canceled=true;return;}if(result===_breakLoop2.default||done&&running<=0){done=true;//console.log('done iterCb')
|
|
121
|
-
return callback(null);}replenish();}function handleError(err){if(canceled)return;awaiting=false;done=true;callback(err);}replenish();}module.exports=exports.default;},{"./breakLoop.js":
|
|
449
|
+
return callback(null);}replenish();}function handleError(err){if(canceled)return;awaiting=false;done=true;callback(err);}replenish();}module.exports=exports.default;},{"./breakLoop.js":41}],40:[function(require,module,exports){'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.default=awaitify;// conditionally promisify a function.
|
|
122
450
|
// only return a promise if a callback is omitted
|
|
123
|
-
function awaitify(asyncFn,arity){if(!arity)arity=asyncFn.length;if(!arity)throw new Error('arity is undefined');function awaitable(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++){args[_key3]=arguments[_key3];}if(typeof args[arity-1]==='function'){return asyncFn.apply(this,args);}return new Promise((resolve,reject)=>{args[arity-1]=function(err){if(err)return reject(err);for(var _len4=arguments.length,cbArgs=new Array(_len4>1?_len4-1:0),_key4=1;_key4<_len4;_key4++){cbArgs[_key4-1]=arguments[_key4];}resolve(cbArgs.length>1?cbArgs:cbArgs[0]);};asyncFn.apply(this,args);});}return awaitable;}module.exports=exports.default;},{}],
|
|
451
|
+
function awaitify(asyncFn,arity){if(!arity)arity=asyncFn.length;if(!arity)throw new Error('arity is undefined');function awaitable(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++){args[_key3]=arguments[_key3];}if(typeof args[arity-1]==='function'){return asyncFn.apply(this,args);}return new Promise((resolve,reject)=>{args[arity-1]=function(err){if(err)return reject(err);for(var _len4=arguments.length,cbArgs=new Array(_len4>1?_len4-1:0),_key4=1;_key4<_len4;_key4++){cbArgs[_key4-1]=arguments[_key4];}resolve(cbArgs.length>1?cbArgs:cbArgs[0]);};asyncFn.apply(this,args);});}return awaitable;}module.exports=exports.default;},{}],41:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});// A temporary value used to identify if the loop should be broken.
|
|
124
452
|
// See #1064, #1293
|
|
125
|
-
const breakLoop={};exports.default=breakLoop;module.exports=exports.default;},{}],
|
|
453
|
+
const breakLoop={};exports.default=breakLoop;module.exports=exports.default;},{}],42:[function(require,module,exports){'use strict';Object.defineProperty(exports,"__esModule",{value:true});var _once=require('./once.js');var _once2=_interopRequireDefault(_once);var _iterator=require('./iterator.js');var _iterator2=_interopRequireDefault(_iterator);var _onlyOnce=require('./onlyOnce.js');var _onlyOnce2=_interopRequireDefault(_onlyOnce);var _wrapAsync=require('./wrapAsync.js');var _asyncEachOfLimit=require('./asyncEachOfLimit.js');var _asyncEachOfLimit2=_interopRequireDefault(_asyncEachOfLimit);var _breakLoop=require('./breakLoop.js');var _breakLoop2=_interopRequireDefault(_breakLoop);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}exports.default=limit=>{return(obj,iteratee,callback)=>{callback=(0,_once2.default)(callback);if(limit<=0){throw new RangeError('concurrency limit cannot be less than 1');}if(!obj){return callback(null);}if((0,_wrapAsync.isAsyncGenerator)(obj)){return(0,_asyncEachOfLimit2.default)(obj,limit,iteratee,callback);}if((0,_wrapAsync.isAsyncIterable)(obj)){return(0,_asyncEachOfLimit2.default)(obj[Symbol.asyncIterator](),limit,iteratee,callback);}var nextElem=(0,_iterator2.default)(obj);var done=false;var canceled=false;var running=0;var looping=false;function iterateeCallback(err,value){if(canceled)return;running-=1;if(err){done=true;callback(err);}else if(err===false){done=true;canceled=true;}else if(value===_breakLoop2.default||done&&running<=0){done=true;return callback(null);}else if(!looping){replenish();}}function replenish(){looping=true;while(running<limit&&!done){var elem=nextElem();if(elem===null){done=true;if(running<=0){callback(null);}return;}running+=1;iteratee(elem.value,elem.key,(0,_onlyOnce2.default)(iterateeCallback));}looping=false;}replenish();};};module.exports=exports.default;},{"./asyncEachOfLimit.js":39,"./breakLoop.js":41,"./iterator.js":46,"./once.js":47,"./onlyOnce.js":48,"./wrapAsync.js":51}],43:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function(coll){return coll[Symbol.iterator]&&coll[Symbol.iterator]();};module.exports=exports.default;},{}],44:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function(fn){return function(){for(var _len5=arguments.length,args=new Array(_len5),_key5=0;_key5<_len5;_key5++){args[_key5]=arguments[_key5];}var callback=args.pop();return fn.call(this,args,callback);};};module.exports=exports.default;},{}],45:[function(require,module,exports){'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.default=isArrayLike;function isArrayLike(value){return value&&typeof value.length==='number'&&value.length>=0&&value.length%1===0;}module.exports=exports.default;},{}],46:[function(require,module,exports){'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.default=createIterator;var _isArrayLike=require('./isArrayLike.js');var _isArrayLike2=_interopRequireDefault(_isArrayLike);var _getIterator=require('./getIterator.js');var _getIterator2=_interopRequireDefault(_getIterator);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function createArrayIterator(coll){var i=-1;var len=coll.length;return function next(){return++i<len?{value:coll[i],key:i}:null;};}function createES2015Iterator(iterator){var i=-1;return function next(){var item=iterator.next();if(item.done)return null;i++;return{value:item.value,key:i};};}function createObjectIterator(obj){var okeys=obj?Object.keys(obj):[];var i=-1;var len=okeys.length;return function next(){var key=okeys[++i];if(key==='__proto__'){return next();}return i<len?{value:obj[key],key}:null;};}function createIterator(coll){if((0,_isArrayLike2.default)(coll)){return createArrayIterator(coll);}var iterator=(0,_getIterator2.default)(coll);return iterator?createES2015Iterator(iterator):createObjectIterator(coll);}module.exports=exports.default;},{"./getIterator.js":43,"./isArrayLike.js":45}],47:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=once;function once(fn){function wrapper(){if(fn===null)return;var callFn=fn;fn=null;for(var _len6=arguments.length,args=new Array(_len6),_key6=0;_key6<_len6;_key6++){args[_key6]=arguments[_key6];}callFn.apply(this,args);}Object.assign(wrapper,fn);return wrapper;}module.exports=exports.default;},{}],48:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=onlyOnce;function onlyOnce(fn){return function(){if(fn===null)throw new Error("Callback was already called.");var callFn=fn;fn=null;for(var _len7=arguments.length,args=new Array(_len7),_key7=0;_key7<_len7;_key7++){args[_key7]=arguments[_key7];}callFn.apply(this,args);};}module.exports=exports.default;},{}],49:[function(require,module,exports){(function(process,setImmediate){(function(){'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.fallback=fallback;exports.wrap=wrap;/* istanbul ignore file */var hasQueueMicrotask=exports.hasQueueMicrotask=typeof queueMicrotask==='function'&&queueMicrotask;var hasSetImmediate=exports.hasSetImmediate=typeof setImmediate==='function'&&setImmediate;var hasNextTick=exports.hasNextTick=typeof process==='object'&&typeof process.nextTick==='function';function fallback(fn){setTimeout(fn,0);}function wrap(defer){return function(fn){for(var _len8=arguments.length,args=new Array(_len8>1?_len8-1:0),_key8=1;_key8<_len8;_key8++){args[_key8-1]=arguments[_key8];}return defer(()=>fn(...args));};}var _defer;if(hasQueueMicrotask){_defer=queueMicrotask;}else if(hasSetImmediate){_defer=setImmediate;}else if(hasNextTick){_defer=process.nextTick;}else{_defer=fallback;}exports.default=wrap(_defer);}).call(this);}).call(this,require('_process'),require("timers").setImmediate);},{"_process":160,"timers":215}],50:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=_withoutIndex;function _withoutIndex(iteratee){return(value,index,callback)=>iteratee(value,callback);}module.exports=exports.default;},{}],51:[function(require,module,exports){'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.isAsyncIterable=exports.isAsyncGenerator=exports.isAsync=undefined;var _asyncify=require('../asyncify.js');var _asyncify2=_interopRequireDefault(_asyncify);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function isAsync(fn){return fn[Symbol.toStringTag]==='AsyncFunction';}function isAsyncGenerator(fn){return fn[Symbol.toStringTag]==='AsyncGenerator';}function isAsyncIterable(obj){return typeof obj[Symbol.asyncIterator]==='function';}function wrapAsync(asyncFn){if(typeof asyncFn!=='function')throw new Error('expected a function');return isAsync(asyncFn)?(0,_asyncify2.default)(asyncFn):asyncFn;}exports.default=wrapAsync;exports.isAsync=isAsync;exports.isAsyncGenerator=isAsyncGenerator;exports.isAsyncIterable=isAsyncIterable;},{"../asyncify.js":36}],52:[function(require,module,exports){'use strict';Object.defineProperty(exports,"__esModule",{value:true});var _once=require('./internal/once.js');var _once2=_interopRequireDefault(_once);var _onlyOnce=require('./internal/onlyOnce.js');var _onlyOnce2=_interopRequireDefault(_onlyOnce);var _wrapAsync=require('./internal/wrapAsync.js');var _wrapAsync2=_interopRequireDefault(_wrapAsync);var _awaitify=require('./internal/awaitify.js');var _awaitify2=_interopRequireDefault(_awaitify);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}/**
|
|
126
454
|
* Runs the `tasks` array of functions in series, each passing their results to
|
|
127
455
|
* the next in the array. However, if any of the `tasks` pass an error to their
|
|
128
456
|
* own callback, the next function is not executed, and the main `callback` is
|
|
@@ -178,8 +506,8 @@ const breakLoop={};exports.default=breakLoop;module.exports=exports.default;},{}
|
|
|
178
506
|
* // arg1 now equals 'three'
|
|
179
507
|
* callback(null, 'done');
|
|
180
508
|
* }
|
|
181
|
-
*/function waterfall(tasks,callback){callback=(0,_once2.default)(callback);if(!Array.isArray(tasks))return callback(new Error('First argument to waterfall must be an array of functions'));if(!tasks.length)return callback();var taskIndex=0;function nextTask(args){var task=(0,_wrapAsync2.default)(tasks[taskIndex++]);task(...args,(0,_onlyOnce2.default)(next));}function next(err){if(err===false)return;for(var _len9=arguments.length,args=new Array(_len9>1?_len9-1:0),_key9=1;_key9<_len9;_key9++){args[_key9-1]=arguments[_key9];}if(err||taskIndex===tasks.length){return callback(err,...args);}nextTask(args);}nextTask([]);}exports.default=(0,_awaitify2.default)(waterfall);module.exports=exports.default;},{"./internal/awaitify.js":
|
|
182
|
-
out[out.length]=possibleNames[i];}}return out;};}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"possible-typed-array-names":
|
|
509
|
+
*/function waterfall(tasks,callback){callback=(0,_once2.default)(callback);if(!Array.isArray(tasks))return callback(new Error('First argument to waterfall must be an array of functions'));if(!tasks.length)return callback();var taskIndex=0;function nextTask(args){var task=(0,_wrapAsync2.default)(tasks[taskIndex++]);task(...args,(0,_onlyOnce2.default)(next));}function next(err){if(err===false)return;for(var _len9=arguments.length,args=new Array(_len9>1?_len9-1:0),_key9=1;_key9<_len9;_key9++){args[_key9-1]=arguments[_key9];}if(err||taskIndex===tasks.length){return callback(err,...args);}nextTask(args);}nextTask([]);}exports.default=(0,_awaitify2.default)(waterfall);module.exports=exports.default;},{"./internal/awaitify.js":40,"./internal/once.js":47,"./internal/onlyOnce.js":48,"./internal/wrapAsync.js":51}],53:[function(require,module,exports){(function(global){(function(){'use strict';var possibleNames=require('possible-typed-array-names');var g=typeof globalThis==='undefined'?global:globalThis;/** @type {import('.')} */module.exports=function availableTypedArrays(){var/** @type {ReturnType<typeof availableTypedArrays>} */out=[];for(var i=0;i<possibleNames.length;i++){if(typeof g[possibleNames[i]]==='function'){// @ts-expect-error
|
|
510
|
+
out[out.length]=possibleNames[i];}}return out;};}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"possible-typed-array-names":159}],54:[function(require,module,exports){'use strict';exports.byteLength=byteLength;exports.toByteArray=toByteArray;exports.fromByteArray=fromByteArray;var lookup=[];var revLookup=[];var Arr=typeof Uint8Array!=='undefined'?Uint8Array:Array;var code='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';for(var i=0,len=code.length;i<len;++i){lookup[i]=code[i];revLookup[code.charCodeAt(i)]=i;}// Support decoding URL-safe base64 strings, as Node.js does.
|
|
183
511
|
// See: https://en.wikipedia.org/wiki/Base64#URL_applications
|
|
184
512
|
revLookup['-'.charCodeAt(0)]=62;revLookup['_'.charCodeAt(0)]=63;function getLens(b64){var len=b64.length;if(len%4>0){throw new Error('Invalid string. Length must be a multiple of 4');}// Trim off extra bytes after placeholder bytes are found
|
|
185
513
|
// See: https://github.com/beatgammit/base64-js/issues/42
|
|
@@ -189,7 +517,7 @@ var len=placeHoldersLen>0?validLen-4:validLen;var i;for(i=0;i<len;i+=4){tmp=revL
|
|
|
189
517
|
var parts=[];var maxChunkLength=16383;// must be multiple of 3
|
|
190
518
|
// go through the array every three bytes, we'll deal with trailing stuff later
|
|
191
519
|
for(var i=0,len2=len-extraBytes;i<len2;i+=maxChunkLength){parts.push(encodeChunk(uint8,i,i+maxChunkLength>len2?len2:i+maxChunkLength));}// pad the end with zeros, but make sure to not forget the extra bytes
|
|
192
|
-
if(extraBytes===1){tmp=uint8[len-1];parts.push(lookup[tmp>>2]+lookup[tmp<<4&0x3F]+'==');}else if(extraBytes===2){tmp=(uint8[len-2]<<8)+uint8[len-1];parts.push(lookup[tmp>>10]+lookup[tmp>>4&0x3F]+lookup[tmp<<2&0x3F]+'=');}return parts.join('');}},{}],
|
|
520
|
+
if(extraBytes===1){tmp=uint8[len-1];parts.push(lookup[tmp>>2]+lookup[tmp<<4&0x3F]+'==');}else if(extraBytes===2){tmp=(uint8[len-2]<<8)+uint8[len-1];parts.push(lookup[tmp>>10]+lookup[tmp>>4&0x3F]+lookup[tmp<<2&0x3F]+'=');}return parts.join('');}},{}],55:[function(require,module,exports){},{}],56:[function(require,module,exports){arguments[4][55][0].apply(exports,arguments);},{"dup":55}],57:[function(require,module,exports){(function(Buffer){(function(){/*!
|
|
193
521
|
* The buffer module from node.js, for the browser.
|
|
194
522
|
*
|
|
195
523
|
* @author Feross Aboukhadijeh <https://feross.org>
|
|
@@ -332,13 +660,13 @@ byteArray.push(str.charCodeAt(i)&0xFF);}return byteArray;}function utf16leToByte
|
|
|
332
660
|
// See: https://github.com/feross/buffer/issues/166
|
|
333
661
|
function isInstance(obj,type){return obj instanceof type||obj!=null&&obj.constructor!=null&&obj.constructor.name!=null&&obj.constructor.name===type.name;}function numberIsNaN(obj){// For IE11 support
|
|
334
662
|
return obj!==obj;// eslint-disable-line no-self-compare
|
|
335
|
-
}}).call(this);}).call(this,require("buffer").Buffer);},{"base64-js":
|
|
663
|
+
}}).call(this);}).call(this,require("buffer").Buffer);},{"base64-js":54,"buffer":57,"ieee754":110}],58:[function(require,module,exports){module.exports={"100":"Continue","101":"Switching Protocols","102":"Processing","200":"OK","201":"Created","202":"Accepted","203":"Non-Authoritative Information","204":"No Content","205":"Reset Content","206":"Partial Content","207":"Multi-Status","208":"Already Reported","226":"IM Used","300":"Multiple Choices","301":"Moved Permanently","302":"Found","303":"See Other","304":"Not Modified","305":"Use Proxy","307":"Temporary Redirect","308":"Permanent Redirect","400":"Bad Request","401":"Unauthorized","402":"Payment Required","403":"Forbidden","404":"Not Found","405":"Method Not Allowed","406":"Not Acceptable","407":"Proxy Authentication Required","408":"Request Timeout","409":"Conflict","410":"Gone","411":"Length Required","412":"Precondition Failed","413":"Payload Too Large","414":"URI Too Long","415":"Unsupported Media Type","416":"Range Not Satisfiable","417":"Expectation Failed","418":"I'm a teapot","421":"Misdirected Request","422":"Unprocessable Entity","423":"Locked","424":"Failed Dependency","425":"Unordered Collection","426":"Upgrade Required","428":"Precondition Required","429":"Too Many Requests","431":"Request Header Fields Too Large","451":"Unavailable For Legal Reasons","500":"Internal Server Error","501":"Not Implemented","502":"Bad Gateway","503":"Service Unavailable","504":"Gateway Timeout","505":"HTTP Version Not Supported","506":"Variant Also Negotiates","507":"Insufficient Storage","508":"Loop Detected","509":"Bandwidth Limit Exceeded","510":"Not Extended","511":"Network Authentication Required"};},{}],59:[function(require,module,exports){'use strict';var bind=require('function-bind');var $apply=require('./functionApply');var $call=require('./functionCall');var $reflectApply=require('./reflectApply');/** @type {import('./actualApply')} */module.exports=$reflectApply||bind.call($call,$apply);},{"./functionApply":61,"./functionCall":62,"./reflectApply":64,"function-bind":94}],60:[function(require,module,exports){'use strict';var bind=require('function-bind');var $apply=require('./functionApply');var actualApply=require('./actualApply');/** @type {import('./applyBind')} */module.exports=function applyBind(){return actualApply(bind,$apply,arguments);};},{"./actualApply":59,"./functionApply":61,"function-bind":94}],61:[function(require,module,exports){'use strict';/** @type {import('./functionApply')} */module.exports=Function.prototype.apply;},{}],62:[function(require,module,exports){'use strict';/** @type {import('./functionCall')} */module.exports=Function.prototype.call;},{}],63:[function(require,module,exports){'use strict';var bind=require('function-bind');var $TypeError=require('es-errors/type');var $call=require('./functionCall');var $actualApply=require('./actualApply');/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */module.exports=function callBindBasic(args){if(args.length<1||typeof args[0]!=='function'){throw new $TypeError('a function is required');}return $actualApply(bind,$call,args);};},{"./actualApply":59,"./functionCall":62,"es-errors/type":75,"function-bind":94}],64:[function(require,module,exports){'use strict';/** @type {import('./reflectApply')} */module.exports=typeof Reflect!=='undefined'&&Reflect&&Reflect.apply;},{}],65:[function(require,module,exports){'use strict';var setFunctionLength=require('set-function-length');var $defineProperty=require('es-define-property');var callBindBasic=require('call-bind-apply-helpers');var applyBind=require('call-bind-apply-helpers/applyBind');module.exports=function callBind(originalFunction){var func=callBindBasic(arguments);var adjustedLength=1+originalFunction.length-(arguments.length-1);return setFunctionLength(func,adjustedLength>0?adjustedLength:0,true);};if($defineProperty){$defineProperty(module.exports,'apply',{value:applyBind});}else{module.exports.apply=applyBind;}},{"call-bind-apply-helpers":63,"call-bind-apply-helpers/applyBind":60,"es-define-property":69,"set-function-length":172}],66:[function(require,module,exports){'use strict';var GetIntrinsic=require('get-intrinsic');var callBindBasic=require('call-bind-apply-helpers');/** @type {(thisArg: string, searchString: string, position?: number) => number} */var $indexOf=callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);/** @type {import('.')} */module.exports=function callBoundIntrinsic(name,allowMissing){/* eslint no-extra-parens: 0 */var intrinsic=/** @type {(this: unknown, ...args: unknown[]) => unknown} */GetIntrinsic(name,!!allowMissing);if(typeof intrinsic==='function'&&$indexOf(name,'.prototype.')>-1){return callBindBasic(/** @type {const} */[intrinsic]);}return intrinsic;};},{"call-bind-apply-helpers":63,"get-intrinsic":98}],67:[function(require,module,exports){'use strict';var $defineProperty=require('es-define-property');var $SyntaxError=require('es-errors/syntax');var $TypeError=require('es-errors/type');var gopd=require('gopd');/** @type {import('.')} */module.exports=function defineDataProperty(obj,property,value){if(!obj||typeof obj!=='object'&&typeof obj!=='function'){throw new $TypeError('`obj` must be an object or a function`');}if(typeof property!=='string'&&typeof property!=='symbol'){throw new $TypeError('`property` must be a string or a symbol`');}if(arguments.length>3&&typeof arguments[3]!=='boolean'&&arguments[3]!==null){throw new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');}if(arguments.length>4&&typeof arguments[4]!=='boolean'&&arguments[4]!==null){throw new $TypeError('`nonWritable`, if provided, must be a boolean or null');}if(arguments.length>5&&typeof arguments[5]!=='boolean'&&arguments[5]!==null){throw new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');}if(arguments.length>6&&typeof arguments[6]!=='boolean'){throw new $TypeError('`loose`, if provided, must be a boolean');}var nonEnumerable=arguments.length>3?arguments[3]:null;var nonWritable=arguments.length>4?arguments[4]:null;var nonConfigurable=arguments.length>5?arguments[5]:null;var loose=arguments.length>6?arguments[6]:false;/* @type {false | TypedPropertyDescriptor<unknown>} */var desc=!!gopd&&gopd(obj,property);if($defineProperty){$defineProperty(obj,property,{configurable:nonConfigurable===null&&desc?desc.configurable:!nonConfigurable,enumerable:nonEnumerable===null&&desc?desc.enumerable:!nonEnumerable,value:value,writable:nonWritable===null&&desc?desc.writable:!nonWritable});}else if(loose||!nonEnumerable&&!nonWritable&&!nonConfigurable){// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable
|
|
336
664
|
obj[property]=value;// eslint-disable-line no-param-reassign
|
|
337
|
-
}else{throw new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');}};},{"es-define-property":
|
|
665
|
+
}else{throw new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');}};},{"es-define-property":69,"es-errors/syntax":74,"es-errors/type":75,"gopd":103}],68:[function(require,module,exports){'use strict';var callBind=require('call-bind-apply-helpers');var gOPD=require('gopd');var hasProtoAccessor;try{// eslint-disable-next-line no-extra-parens, no-proto
|
|
338
666
|
hasProtoAccessor=/** @type {{ __proto__?: typeof Array.prototype }} */[].__proto__===Array.prototype;}catch(e){if(!e||typeof e!=='object'||!('code'in e)||e.code!=='ERR_PROTO_ACCESS'){throw e;}}// eslint-disable-next-line no-extra-parens
|
|
339
667
|
var desc=!!hasProtoAccessor&&gOPD&&gOPD(Object.prototype,/** @type {keyof typeof Object.prototype} */'__proto__');var $Object=Object;var $getPrototypeOf=$Object.getPrototypeOf;/** @type {import('./get')} */module.exports=desc&&typeof desc.get==='function'?callBind([desc.get]):typeof $getPrototypeOf==='function'?/** @type {import('./get')} */function getDunder(value){// eslint-disable-next-line eqeqeq
|
|
340
|
-
return $getPrototypeOf(value==null?value:$Object(value));}:false;},{"call-bind-apply-helpers":
|
|
341
|
-
$defineProperty=false;}}module.exports=$defineProperty;},{}],
|
|
668
|
+
return $getPrototypeOf(value==null?value:$Object(value));}:false;},{"call-bind-apply-helpers":63,"gopd":103}],69:[function(require,module,exports){'use strict';/** @type {import('.')} */var $defineProperty=Object.defineProperty||false;if($defineProperty){try{$defineProperty({},'a',{value:1});}catch(e){// IE 8 has a broken defineProperty
|
|
669
|
+
$defineProperty=false;}}module.exports=$defineProperty;},{}],70:[function(require,module,exports){'use strict';/** @type {import('./eval')} */module.exports=EvalError;},{}],71:[function(require,module,exports){'use strict';/** @type {import('.')} */module.exports=Error;},{}],72:[function(require,module,exports){'use strict';/** @type {import('./range')} */module.exports=RangeError;},{}],73:[function(require,module,exports){'use strict';/** @type {import('./ref')} */module.exports=ReferenceError;},{}],74:[function(require,module,exports){'use strict';/** @type {import('./syntax')} */module.exports=SyntaxError;},{}],75:[function(require,module,exports){'use strict';/** @type {import('./type')} */module.exports=TypeError;},{}],76:[function(require,module,exports){'use strict';/** @type {import('./uri')} */module.exports=URIError;},{}],77:[function(require,module,exports){'use strict';/** @type {import('.')} */module.exports=Object;},{}],78:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
|
|
342
670
|
//
|
|
343
671
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
344
672
|
// copy of this software and associated documentation files (the
|
|
@@ -387,8 +715,8 @@ for(i=listeners.length-1;i>=0;i--){this.removeListener(type,listeners[i]);}}retu
|
|
|
387
715
|
// EventEmitters, we do not listen for `error` events here.
|
|
388
716
|
emitter.addEventListener(name,function wrapListener(arg){// IE does not have builtin `{ once: true }` support so we
|
|
389
717
|
// have to do it manually.
|
|
390
|
-
if(flags.once){emitter.removeEventListener(name,wrapListener);}listener(arg);});}else{throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof emitter);}}},{}],
|
|
391
|
-
if(receiver==null){iterator(string.charAt(i),i,string);}else{iterator.call(receiver,string.charAt(i),i,string);}}};/** @type {<This, O>(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */var forEachObject=function forEachObject(object,iterator,receiver){for(var k in object){if(hasOwnProperty.call(object,k)){if(receiver==null){iterator(object[k],k,object);}else{iterator.call(receiver,object[k],k,object);}}}};/** @type {(x: unknown) => x is readonly unknown[]} */function isArray(x){return toStr.call(x)==='[object Array]';}/** @type {import('.')._internal} */module.exports=function forEach(list,iterator,thisArg){if(!isCallable(iterator)){throw new TypeError('iterator must be a function');}var receiver;if(arguments.length>=3){receiver=thisArg;}if(isArray(list)){forEachArray(list,iterator,receiver);}else if(typeof list==='string'){forEachString(list,iterator,receiver);}else{forEachObject(list,iterator,receiver);}};},{"is-callable":
|
|
718
|
+
if(flags.once){emitter.removeEventListener(name,wrapListener);}listener(arg);});}else{throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof emitter);}}},{}],79:[function(require,module,exports){'use strict';var isCallable=require('is-callable');var toStr=Object.prototype.toString;var hasOwnProperty=Object.prototype.hasOwnProperty;/** @type {<This, A extends readonly unknown[]>(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */var forEachArray=function forEachArray(array,iterator,receiver){for(var i=0,len=array.length;i<len;i++){if(hasOwnProperty.call(array,i)){if(receiver==null){iterator(array[i],i,array);}else{iterator.call(receiver,array[i],i,array);}}}};/** @type {<This, S extends string>(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */var forEachString=function forEachString(string,iterator,receiver){for(var i=0,len=string.length;i<len;i++){// no such thing as a sparse string.
|
|
719
|
+
if(receiver==null){iterator(string.charAt(i),i,string);}else{iterator.call(receiver,string.charAt(i),i,string);}}};/** @type {<This, O>(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */var forEachObject=function forEachObject(object,iterator,receiver){for(var k in object){if(hasOwnProperty.call(object,k)){if(receiver==null){iterator(object[k],k,object);}else{iterator.call(receiver,object[k],k,object);}}}};/** @type {(x: unknown) => x is readonly unknown[]} */function isArray(x){return toStr.call(x)==='[object Array]';}/** @type {import('.')._internal} */module.exports=function forEach(list,iterator,thisArg){if(!isCallable(iterator)){throw new TypeError('iterator must be a function');}var receiver;if(arguments.length>=3){receiver=thisArg;}if(isArray(list)){forEachArray(list,iterator,receiver);}else if(typeof list==='string'){forEachString(list,iterator,receiver);}else{forEachObject(list,iterator,receiver);}};},{"is-callable":113}],80:[function(require,module,exports){/**
|
|
392
720
|
* FoxHound Query Generation Library
|
|
393
721
|
* @license MIT
|
|
394
722
|
* @author Steven Velozo <steven@velozo.com>
|
|
@@ -656,7 +984,7 @@ if(pFrom.indexOf(pTable)!=0){_Fable.log.warn('Tried to add an invalid query join
|
|
|
656
984
|
*
|
|
657
985
|
* @property logLevel
|
|
658
986
|
* @type {number}
|
|
659
|
-
*/Object.defineProperty(tmpNewFoxHoundObject,'logLevel',{get:function(){return _LogLevel;},enumerable:true});return tmpNewFoxHoundObject;}return createNew();};module.exports=FoxHound();},{"./Foxhound-Dialects.js":
|
|
987
|
+
*/Object.defineProperty(tmpNewFoxHoundObject,'logLevel',{get:function(){return _LogLevel;},enumerable:true});return tmpNewFoxHoundObject;}return createNew();};module.exports=FoxHound();},{"./Foxhound-Dialects.js":81,"./Parameters.js":82}],81:[function(require,module,exports){let getDialects=()=>{let tmpDialects={};tmpDialects.English=require('./dialects/English/FoxHound-Dialect-English.js');tmpDialects.SQLite=require('./dialects/SQLite/FoxHound-Dialect-SQLite.js');tmpDialects.ALASQL=require('./dialects/ALASQL/FoxHound-Dialect-ALASQL.js');tmpDialects.MeadowEndpoints=require('./dialects/MeadowEndpoints/FoxHound-Dialect-MeadowEndpoints.js');tmpDialects.MySQL=require('./dialects/MySQL/FoxHound-Dialect-MySQL.js');tmpDialects.MSSQL=require('./dialects/MicrosoftSQL/FoxHound-Dialect-MSSQL.js');tmpDialects.PostgreSQL=require('./dialects/PostgreSQL/FoxHound-Dialect-PostgreSQL.js');tmpDialects.MongoDB=require('./dialects/MongoDB/FoxHound-Dialect-MongoDB.js');tmpDialects.DGraph=require('./dialects/DGraph/FoxHound-Dialect-DGraph.js');tmpDialects.Solr=require('./dialects/Solr/FoxHound-Dialect-Solr.js');tmpDialects.default=tmpDialects.English;return tmpDialects;};module.exports=getDialects();},{"./dialects/ALASQL/FoxHound-Dialect-ALASQL.js":83,"./dialects/DGraph/FoxHound-Dialect-DGraph.js":84,"./dialects/English/FoxHound-Dialect-English.js":85,"./dialects/MeadowEndpoints/FoxHound-Dialect-MeadowEndpoints.js":86,"./dialects/MicrosoftSQL/FoxHound-Dialect-MSSQL.js":87,"./dialects/MongoDB/FoxHound-Dialect-MongoDB.js":88,"./dialects/MySQL/FoxHound-Dialect-MySQL.js":89,"./dialects/PostgreSQL/FoxHound-Dialect-PostgreSQL.js":90,"./dialects/SQLite/FoxHound-Dialect-SQLite.js":91,"./dialects/Solr/FoxHound-Dialect-Solr.js":92}],82:[function(require,module,exports){/**
|
|
660
988
|
* Query Parameters Object
|
|
661
989
|
*
|
|
662
990
|
* @class FoxHoundQueryParameters
|
|
@@ -732,7 +1060,7 @@ result:false/*
|
|
|
732
1060
|
value: false, // The return value of the last query run
|
|
733
1061
|
error: false // The error message of the last run query
|
|
734
1062
|
}
|
|
735
|
-
*/};module.exports=FoxHoundQueryParameters;},{}],
|
|
1063
|
+
*/};module.exports=FoxHoundQueryParameters;},{}],83:[function(require,module,exports){/**
|
|
736
1064
|
* FoxHound ALASQL Dialect
|
|
737
1065
|
*
|
|
738
1066
|
* @license MIT
|
|
@@ -938,7 +1266,7 @@ console.log('Error with custom Count Query ['+pParameters.queryOverride+']: '+pE
|
|
|
938
1266
|
*
|
|
939
1267
|
* @property name
|
|
940
1268
|
* @type string
|
|
941
|
-
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'ALASQL';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectALASQL;},{}],
|
|
1269
|
+
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'ALASQL';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectALASQL;},{}],84:[function(require,module,exports){/**
|
|
942
1270
|
* FoxHound DGraph Dialect
|
|
943
1271
|
*
|
|
944
1272
|
* Generates DQL query strings and JSON mutation descriptors for DGraph.
|
|
@@ -1104,7 +1432,7 @@ var tmpSchema=Array.isArray(pParameters.query.schema)?pParameters.query.schema:[
|
|
|
1104
1432
|
*
|
|
1105
1433
|
* @property name
|
|
1106
1434
|
* @type string
|
|
1107
|
-
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'DGraph';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectDGraph;},{}],
|
|
1435
|
+
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'DGraph';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectDGraph;},{}],85:[function(require,module,exports){/**
|
|
1108
1436
|
* FoxHound English Dialect
|
|
1109
1437
|
*
|
|
1110
1438
|
* Because if I can't ask for it in my native tongue, how am I going to ask a
|
|
@@ -1132,7 +1460,7 @@ var tmpSchema=Array.isArray(pParameters.query.schema)?pParameters.query.schema:[
|
|
|
1132
1460
|
*
|
|
1133
1461
|
* @property name
|
|
1134
1462
|
* @type string
|
|
1135
|
-
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'English';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectEnglish;},{}],
|
|
1463
|
+
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'English';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectEnglish;},{}],86:[function(require,module,exports){/**
|
|
1136
1464
|
* FoxHound Meadow Endpoints Dialect
|
|
1137
1465
|
*
|
|
1138
1466
|
* @license MIT
|
|
@@ -1234,7 +1562,7 @@ tmpURL=`${tmpURL}/${pParameters.filter[0].Value}`;}else{tmpURL=`${tmpURL}s`;if(t
|
|
|
1234
1562
|
*
|
|
1235
1563
|
* @property name
|
|
1236
1564
|
* @type string
|
|
1237
|
-
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'MeadowEndpoints';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectMeadowEndpoints;},{}],
|
|
1565
|
+
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'MeadowEndpoints';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectMeadowEndpoints;},{}],87:[function(require,module,exports){/**
|
|
1238
1566
|
* FoxHound MSSQL Dialect
|
|
1239
1567
|
*
|
|
1240
1568
|
* @license MIT
|
|
@@ -1525,7 +1853,7 @@ console.log('Error with custom Count Query ['+pParameters.queryOverride+']: '+pE
|
|
|
1525
1853
|
*
|
|
1526
1854
|
* @property name
|
|
1527
1855
|
* @type string
|
|
1528
|
-
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'MSSQL';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectMSSQL;},{}],
|
|
1856
|
+
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'MSSQL';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectMSSQL;},{}],88:[function(require,module,exports){/**
|
|
1529
1857
|
* FoxHound MongoDB Dialect
|
|
1530
1858
|
*
|
|
1531
1859
|
* Generates JSON operation descriptors for MongoDB queries.
|
|
@@ -1671,7 +1999,7 @@ var tmpSchema=Array.isArray(pParameters.query.schema)?pParameters.query.schema:[
|
|
|
1671
1999
|
*
|
|
1672
2000
|
* @property name
|
|
1673
2001
|
* @type string
|
|
1674
|
-
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'MongoDB';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectMongoDB;},{}],
|
|
2002
|
+
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'MongoDB';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectMongoDB;},{}],89:[function(require,module,exports){/**
|
|
1675
2003
|
* FoxHound MySQL Dialect
|
|
1676
2004
|
*
|
|
1677
2005
|
* @license MIT
|
|
@@ -1891,7 +2219,7 @@ console.log('Error with custom Count Query ['+pParameters.queryOverride+']: '+pE
|
|
|
1891
2219
|
*
|
|
1892
2220
|
* @property name
|
|
1893
2221
|
* @type string
|
|
1894
|
-
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'MySQL';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectMySQL;},{}],
|
|
2222
|
+
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'MySQL';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectMySQL;},{}],90:[function(require,module,exports){/**
|
|
1895
2223
|
* FoxHound PostgreSQL Dialect
|
|
1896
2224
|
*
|
|
1897
2225
|
* @license MIT
|
|
@@ -2008,7 +2336,7 @@ tmpCreateSet+=' DEFAULT';}break;case'AutoGUID':if(pParameters.query.disableAutoI
|
|
|
2008
2336
|
*
|
|
2009
2337
|
* @property name
|
|
2010
2338
|
* @type string
|
|
2011
|
-
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'PostgreSQL';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectPostgreSQL;},{}],
|
|
2339
|
+
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'PostgreSQL';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectPostgreSQL;},{}],91:[function(require,module,exports){/**
|
|
2012
2340
|
* FoxHound SQLite Dialect
|
|
2013
2341
|
*
|
|
2014
2342
|
* @license MIT
|
|
@@ -2219,7 +2547,7 @@ console.log('Error with custom Count Query ['+pParameters.queryOverride+']: '+pE
|
|
|
2219
2547
|
*
|
|
2220
2548
|
* @property name
|
|
2221
2549
|
* @type string
|
|
2222
|
-
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'SQLite';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectSQLite;},{}],
|
|
2550
|
+
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'SQLite';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectSQLite;},{}],92:[function(require,module,exports){/**
|
|
2223
2551
|
* FoxHound Solr Dialect
|
|
2224
2552
|
*
|
|
2225
2553
|
* Generates Solr query descriptors and Lucene query strings.
|
|
@@ -2357,9 +2685,9 @@ var tmpDeleteTrackingState=pParameters.query.disableDeleteTracking;pParameters.q
|
|
|
2357
2685
|
*
|
|
2358
2686
|
* @property name
|
|
2359
2687
|
* @type string
|
|
2360
|
-
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'Solr';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectSolr;},{}],
|
|
2361
|
-
var RESERVED=['do','if','in','for','let','new','try','var','case','else','enum','eval','null','this','true','void','with','await','break','catch','class','const','false','super','throw','while','yield','delete','export','import','public','return','static','switch','typeof','default','extends','finally','package','private','continue','debugger','function','arguments','interface','protected','implements','instanceof','NaN','undefined'];var RESERVED_MAP={};for(var i=0;i<RESERVED.length;i++){RESERVED_MAP[RESERVED[i]]=true;}var isVariable=function(name){return isProperty(name)&&!RESERVED_MAP.hasOwnProperty(name);};var formats={s:function(s){return''+s;},d:function(d){return''+Number(d);},o:function(o){return JSON.stringify(o);}};var genfun=function(){var lines=[];var indent=0;var vars={};var push=function(str){var spaces='';while(spaces.length<indent*2)spaces+=' ';lines.push(spaces+str);};var pushLine=function(line){if(INDENT_END.test(line.trim()[0])&&INDENT_START.test(line[line.length-1])){indent--;push(line);indent++;return;}if(INDENT_START.test(line[line.length-1])){push(line);indent++;return;}if(INDENT_END.test(line.trim()[0])){indent--;push(line);return;}push(line);};var line=function(fmt){if(!fmt)return line;if(arguments.length===1&&fmt.indexOf('\n')>-1){var lines=fmt.trim().split('\n');for(var i=0;i<lines.length;i++){pushLine(lines[i].trim());}}else{pushLine(util.format.apply(util,arguments));}return line;};line.scope={};line.formats=formats;line.sym=function(name){if(!name||!isVariable(name))name='tmp';if(!vars[name])vars[name]=0;return name+(vars[name]++||'');};line.property=function(obj,name){if(arguments.length===1){name=obj;obj='';}name=name+'';if(isProperty(name))return obj?obj+'.'+name:name;return obj?obj+'['+JSON.stringify(name)+']':JSON.stringify(name);};line.toString=function(){return lines.join('\n');};line.toFunction=function(scope){if(!scope)scope={};var src='return ('+line.toString()+')';Object.keys(line.scope).forEach(function(key){if(!scope[key])scope[key]=line.scope[key];});var keys=Object.keys(scope).map(function(key){return key;});var vals=keys.map(function(key){return scope[key];});return Function.apply(null,keys.concat(src)).apply(null,vals);};if(arguments.length)line.apply(null,arguments);return line;};genfun.formats=formats;module.exports=genfun;},{"is-property":
|
|
2362
|
-
cached=Function('return function* () {}')().constructor;}catch(e){cached=false;}}return cached;};},{}],
|
|
2688
|
+
*/Object.defineProperty(tmpDialect,'name',{get:function(){return'Solr';},enumerable:true});return tmpDialect;};module.exports=FoxHoundDialectSolr;},{}],93:[function(require,module,exports){'use strict';/* eslint no-invalid-this: 1 */var ERROR_MESSAGE='Function.prototype.bind called on incompatible ';var toStr=Object.prototype.toString;var max=Math.max;var funcType='[object Function]';var concatty=function concatty(a,b){var arr=[];for(var i=0;i<a.length;i+=1){arr[i]=a[i];}for(var j=0;j<b.length;j+=1){arr[j+a.length]=b[j];}return arr;};var slicy=function slicy(arrLike,offset){var arr=[];for(var i=offset||0,j=0;i<arrLike.length;i+=1,j+=1){arr[j]=arrLike[i];}return arr;};var joiny=function(arr,joiner){var str='';for(var i=0;i<arr.length;i+=1){str+=arr[i];if(i+1<arr.length){str+=joiner;}}return str;};module.exports=function bind(that){var target=this;if(typeof target!=='function'||toStr.apply(target)!==funcType){throw new TypeError(ERROR_MESSAGE+target);}var args=slicy(arguments,1);var bound;var binder=function(){if(this instanceof bound){var result=target.apply(this,concatty(args,arguments));if(Object(result)===result){return result;}return this;}return target.apply(that,concatty(args,arguments));};var boundLength=max(0,target.length-args.length);var boundArgs=[];for(var i=0;i<boundLength;i++){boundArgs[i]='$'+i;}bound=Function('binder','return function ('+joiny(boundArgs,',')+'){ return binder.apply(this,arguments); }')(binder);if(target.prototype){var Empty=function Empty(){};Empty.prototype=target.prototype;bound.prototype=new Empty();Empty.prototype=null;}return bound;};},{}],94:[function(require,module,exports){'use strict';var implementation=require('./implementation');module.exports=Function.prototype.bind||implementation;},{"./implementation":93}],95:[function(require,module,exports){var util=require('util');var isProperty=require('is-property');var INDENT_START=/[\{\[]/;var INDENT_END=/[\}\]]/;// from https://mathiasbynens.be/notes/reserved-keywords
|
|
2689
|
+
var RESERVED=['do','if','in','for','let','new','try','var','case','else','enum','eval','null','this','true','void','with','await','break','catch','class','const','false','super','throw','while','yield','delete','export','import','public','return','static','switch','typeof','default','extends','finally','package','private','continue','debugger','function','arguments','interface','protected','implements','instanceof','NaN','undefined'];var RESERVED_MAP={};for(var i=0;i<RESERVED.length;i++){RESERVED_MAP[RESERVED[i]]=true;}var isVariable=function(name){return isProperty(name)&&!RESERVED_MAP.hasOwnProperty(name);};var formats={s:function(s){return''+s;},d:function(d){return''+Number(d);},o:function(o){return JSON.stringify(o);}};var genfun=function(){var lines=[];var indent=0;var vars={};var push=function(str){var spaces='';while(spaces.length<indent*2)spaces+=' ';lines.push(spaces+str);};var pushLine=function(line){if(INDENT_END.test(line.trim()[0])&&INDENT_START.test(line[line.length-1])){indent--;push(line);indent++;return;}if(INDENT_START.test(line[line.length-1])){push(line);indent++;return;}if(INDENT_END.test(line.trim()[0])){indent--;push(line);return;}push(line);};var line=function(fmt){if(!fmt)return line;if(arguments.length===1&&fmt.indexOf('\n')>-1){var lines=fmt.trim().split('\n');for(var i=0;i<lines.length;i++){pushLine(lines[i].trim());}}else{pushLine(util.format.apply(util,arguments));}return line;};line.scope={};line.formats=formats;line.sym=function(name){if(!name||!isVariable(name))name='tmp';if(!vars[name])vars[name]=0;return name+(vars[name]++||'');};line.property=function(obj,name){if(arguments.length===1){name=obj;obj='';}name=name+'';if(isProperty(name))return obj?obj+'.'+name:name;return obj?obj+'['+JSON.stringify(name)+']':JSON.stringify(name);};line.toString=function(){return lines.join('\n');};line.toFunction=function(scope){if(!scope)scope={};var src='return ('+line.toString()+')';Object.keys(line.scope).forEach(function(key){if(!scope[key])scope[key]=line.scope[key];});var keys=Object.keys(scope).map(function(key){return key;});var vals=keys.map(function(key){return scope[key];});return Function.apply(null,keys.concat(src)).apply(null,vals);};if(arguments.length)line.apply(null,arguments);return line;};genfun.formats=formats;module.exports=genfun;},{"is-property":118,"util":221}],96:[function(require,module,exports){var isProperty=require('is-property');var gen=function(obj,prop){return isProperty(prop)?obj+'.'+prop:obj+'['+JSON.stringify(prop)+']';};gen.valid=isProperty;gen.property=function(prop){return isProperty(prop)?prop:JSON.stringify(prop);};module.exports=gen;},{"is-property":118}],97:[function(require,module,exports){'use strict';/** @type {GeneratorFunctionConstructor | false} */var cached;/** @type {import('./index.js')} */module.exports=function getGeneratorFunction(){if(typeof cached==='undefined'){try{// eslint-disable-next-line no-new-func
|
|
2690
|
+
cached=Function('return function* () {}')().constructor;}catch(e){cached=false;}}return cached;};},{}],98:[function(require,module,exports){'use strict';var undefined;var $Object=require('es-object-atoms');var $Error=require('es-errors');var $EvalError=require('es-errors/eval');var $RangeError=require('es-errors/range');var $ReferenceError=require('es-errors/ref');var $SyntaxError=require('es-errors/syntax');var $TypeError=require('es-errors/type');var $URIError=require('es-errors/uri');var abs=require('math-intrinsics/abs');var floor=require('math-intrinsics/floor');var max=require('math-intrinsics/max');var min=require('math-intrinsics/min');var pow=require('math-intrinsics/pow');var round=require('math-intrinsics/round');var sign=require('math-intrinsics/sign');var $Function=Function;// eslint-disable-next-line consistent-return
|
|
2363
2691
|
var getEvalledConstructor=function(expressionSyntax){try{return $Function('"use strict"; return ('+expressionSyntax+').constructor;')();}catch(e){}};var $gOPD=require('gopd');var $defineProperty=require('es-define-property');var throwTypeError=function(){throw new $TypeError();};var ThrowTypeError=$gOPD?function(){try{// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties
|
|
2364
2692
|
arguments.callee;// IE 8 does not throw here
|
|
2365
2693
|
return throwTypeError;}catch(calleeThrows){try{// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')
|
|
@@ -2373,13 +2701,13 @@ var errorProto=getProto(getProto(e));INTRINSICS['%Error.prototype%']=errorProto;
|
|
|
2373
2701
|
// uphold the illusion by pretending to see that original data
|
|
2374
2702
|
// property, i.e., returning the value rather than the getter
|
|
2375
2703
|
// itself.
|
|
2376
|
-
if(isOwn&&'get'in desc&&!('originalValue'in desc.get)){value=desc.get;}else{value=value[part];}}else{isOwn=hasOwn(value,part);value=value[part];}if(isOwn&&!skipFurtherCaching){INTRINSICS[intrinsicRealName]=value;}}}return value;};},{"call-bind-apply-helpers/functionApply":
|
|
2704
|
+
if(isOwn&&'get'in desc&&!('originalValue'in desc.get)){value=desc.get;}else{value=value[part];}}else{isOwn=hasOwn(value,part);value=value[part];}if(isOwn&&!skipFurtherCaching){INTRINSICS[intrinsicRealName]=value;}}}return value;};},{"call-bind-apply-helpers/functionApply":61,"call-bind-apply-helpers/functionCall":62,"es-define-property":69,"es-errors":71,"es-errors/eval":70,"es-errors/range":72,"es-errors/ref":73,"es-errors/syntax":74,"es-errors/type":75,"es-errors/uri":76,"es-object-atoms":77,"function-bind":94,"get-proto":101,"get-proto/Object.getPrototypeOf":99,"get-proto/Reflect.getPrototypeOf":100,"gopd":103,"has-symbols":105,"hasown":108,"math-intrinsics/abs":123,"math-intrinsics/floor":124,"math-intrinsics/max":126,"math-intrinsics/min":127,"math-intrinsics/pow":128,"math-intrinsics/round":129,"math-intrinsics/sign":130}],99:[function(require,module,exports){'use strict';var $Object=require('es-object-atoms');/** @type {import('./Object.getPrototypeOf')} */module.exports=$Object.getPrototypeOf||null;},{"es-object-atoms":77}],100:[function(require,module,exports){'use strict';/** @type {import('./Reflect.getPrototypeOf')} */module.exports=typeof Reflect!=='undefined'&&Reflect.getPrototypeOf||null;},{}],101:[function(require,module,exports){'use strict';var reflectGetProto=require('./Reflect.getPrototypeOf');var originalGetProto=require('./Object.getPrototypeOf');var getDunderProto=require('dunder-proto/get');/** @type {import('.')} */module.exports=reflectGetProto?function getProto(O){// @ts-expect-error TS can't narrow inside a closure, for some reason
|
|
2377
2705
|
return reflectGetProto(O);}:originalGetProto?function getProto(O){if(!O||typeof O!=='object'&&typeof O!=='function'){throw new TypeError('getProto: not an object');}// @ts-expect-error TS can't narrow inside a closure, for some reason
|
|
2378
2706
|
return originalGetProto(O);}:getDunderProto?function getProto(O){// @ts-expect-error TS can't narrow inside a closure, for some reason
|
|
2379
|
-
return getDunderProto(O);}:null;},{"./Object.getPrototypeOf":
|
|
2380
|
-
$gOPD=null;}}module.exports=$gOPD;},{"./gOPD":
|
|
2707
|
+
return getDunderProto(O);}:null;},{"./Object.getPrototypeOf":99,"./Reflect.getPrototypeOf":100,"dunder-proto/get":68}],102:[function(require,module,exports){'use strict';/** @type {import('./gOPD')} */module.exports=Object.getOwnPropertyDescriptor;},{}],103:[function(require,module,exports){'use strict';/** @type {import('.')} */var $gOPD=require('./gOPD');if($gOPD){try{$gOPD([],'length');}catch(e){// IE 8 has a broken gOPD
|
|
2708
|
+
$gOPD=null;}}module.exports=$gOPD;},{"./gOPD":102}],104:[function(require,module,exports){'use strict';var $defineProperty=require('es-define-property');var hasPropertyDescriptors=function hasPropertyDescriptors(){return!!$defineProperty;};hasPropertyDescriptors.hasArrayLengthDefineBug=function hasArrayLengthDefineBug(){// node v0.6 has a bug where array lengths can be Set but not Defined
|
|
2381
2709
|
if(!$defineProperty){return null;}try{return $defineProperty([],'length',{value:1}).length!==1;}catch(e){// In Firefox 4-22, defining length on an array throws an exception.
|
|
2382
|
-
return true;}};module.exports=hasPropertyDescriptors;},{"es-define-property":
|
|
2710
|
+
return true;}};module.exports=hasPropertyDescriptors;},{"es-define-property":69}],105:[function(require,module,exports){'use strict';var origSymbol=typeof Symbol!=='undefined'&&Symbol;var hasSymbolSham=require('./shams');/** @type {import('.')} */module.exports=function hasNativeSymbols(){if(typeof origSymbol!=='function'){return false;}if(typeof Symbol!=='function'){return false;}if(typeof origSymbol('foo')!=='symbol'){return false;}if(typeof Symbol('bar')!=='symbol'){return false;}return hasSymbolSham();};},{"./shams":106}],106:[function(require,module,exports){'use strict';/** @type {import('./shams')} *//* eslint complexity: [2, 18], max-statements: [2, 33] */module.exports=function hasSymbols(){if(typeof Symbol!=='function'||typeof Object.getOwnPropertySymbols!=='function'){return false;}if(typeof Symbol.iterator==='symbol'){return true;}/** @type {{ [k in symbol]?: unknown }} */var obj={};var sym=Symbol('test');var symObj=Object(sym);if(typeof sym==='string'){return false;}if(Object.prototype.toString.call(sym)!=='[object Symbol]'){return false;}if(Object.prototype.toString.call(symObj)!=='[object Symbol]'){return false;}// temp disabled per https://github.com/ljharb/object.assign/issues/17
|
|
2383
2711
|
// if (sym instanceof Symbol) { return false; }
|
|
2384
2712
|
// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4
|
|
2385
2713
|
// if (!(symObj instanceof Symbol)) { return false; }
|
|
@@ -2387,11 +2715,11 @@ return true;}};module.exports=hasPropertyDescriptors;},{"es-define-property":35}
|
|
|
2387
2715
|
// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }
|
|
2388
2716
|
var symVal=42;obj[sym]=symVal;for(var _ in obj){return false;}// eslint-disable-line no-restricted-syntax, no-unreachable-loop
|
|
2389
2717
|
if(typeof Object.keys==='function'&&Object.keys(obj).length!==0){return false;}if(typeof Object.getOwnPropertyNames==='function'&&Object.getOwnPropertyNames(obj).length!==0){return false;}var syms=Object.getOwnPropertySymbols(obj);if(syms.length!==1||syms[0]!==sym){return false;}if(!Object.prototype.propertyIsEnumerable.call(obj,sym)){return false;}if(typeof Object.getOwnPropertyDescriptor==='function'){// eslint-disable-next-line no-extra-parens
|
|
2390
|
-
var descriptor=/** @type {PropertyDescriptor} */Object.getOwnPropertyDescriptor(obj,sym);if(descriptor.value!==symVal||descriptor.enumerable!==true){return false;}}return true;};},{}],
|
|
2718
|
+
var descriptor=/** @type {PropertyDescriptor} */Object.getOwnPropertyDescriptor(obj,sym);if(descriptor.value!==symVal||descriptor.enumerable!==true){return false;}}return true;};},{}],107:[function(require,module,exports){'use strict';var hasSymbols=require('has-symbols/shams');/** @type {import('.')} */module.exports=function hasToStringTagShams(){return hasSymbols()&&!!Symbol.toStringTag;};},{"has-symbols/shams":106}],108:[function(require,module,exports){'use strict';var call=Function.prototype.call;var $hasOwn=Object.prototype.hasOwnProperty;var bind=require('function-bind');/** @type {import('.')} */module.exports=bind.call(call,$hasOwn);},{"function-bind":94}],109:[function(require,module,exports){var http=require('http');var url=require('url');var https=module.exports;for(var key in http){if(http.hasOwnProperty(key))https[key]=http[key];}https.request=function(params,cb){params=validateParams(params);return http.request.call(this,params,cb);};https.get=function(params,cb){params=validateParams(params);return http.get.call(this,params,cb);};function validateParams(params){if(typeof params==='string'){params=url.parse(params);}if(!params.protocol){params.protocol='https:';}if(params.protocol!=='https:'){throw new Error('Protocol "'+params.protocol+'" not supported. Expected "https:"');}return params;}},{"http":194,"url":217}],110:[function(require,module,exports){/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */exports.read=function(buffer,offset,isLE,mLen,nBytes){var e,m;var eLen=nBytes*8-mLen-1;var eMax=(1<<eLen)-1;var eBias=eMax>>1;var nBits=-7;var i=isLE?nBytes-1:0;var d=isLE?-1:1;var s=buffer[offset+i];i+=d;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8){}m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8){}if(e===0){e=1-eBias;}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity;}else{m=m+Math.pow(2,mLen);e=e-eBias;}return(s?-1:1)*m*Math.pow(2,e-mLen);};exports.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c;var eLen=nBytes*8-mLen-1;var eMax=(1<<eLen)-1;var eBias=eMax>>1;var rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0;var i=isLE?0:nBytes-1;var d=isLE?1:-1;var s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax;}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2;}if(e+eBias>=1){value+=rt/c;}else{value+=rt*Math.pow(2,1-eBias);}if(value*c>=2){e++;c/=2;}if(e+eBias>=eMax){m=0;e=eMax;}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias;}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0;}}for(;mLen>=8;buffer[offset+i]=m&0xff,i+=d,m/=256,mLen-=8){}e=e<<mLen|m;eLen+=mLen;for(;eLen>0;buffer[offset+i]=e&0xff,i+=d,e/=256,eLen-=8){}buffer[offset+i-d]|=s*128;};},{}],111:[function(require,module,exports){if(typeof Object.create==='function'){// implementation from standard node.js 'util' module
|
|
2391
2719
|
module.exports=function inherits(ctor,superCtor){if(superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}});}};}else{// old school shim for old browsers
|
|
2392
|
-
module.exports=function inherits(ctor,superCtor){if(superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor();ctor.prototype.constructor=ctor;}};}},{}],
|
|
2720
|
+
module.exports=function inherits(ctor,superCtor){if(superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor();ctor.prototype.constructor=ctor;}};}},{}],112:[function(require,module,exports){'use strict';var hasToStringTag=require('has-tostringtag/shams')();var callBound=require('call-bound');var $toString=callBound('Object.prototype.toString');/** @type {import('.')} */var isStandardArguments=function isArguments(value){if(hasToStringTag&&value&&typeof value==='object'&&Symbol.toStringTag in value){return false;}return $toString(value)==='[object Arguments]';};/** @type {import('.')} */var isLegacyArguments=function isArguments(value){if(isStandardArguments(value)){return true;}return value!==null&&typeof value==='object'&&'length'in value&&typeof value.length==='number'&&value.length>=0&&$toString(value)!=='[object Array]'&&'callee'in value&&$toString(value.callee)==='[object Function]';};var supportsStandardArguments=function(){return isStandardArguments(arguments);}();// @ts-expect-error TODO make this not error
|
|
2393
2721
|
isStandardArguments.isLegacyArguments=isLegacyArguments;// for tests
|
|
2394
|
-
/** @type {import('.')} */module.exports=supportsStandardArguments?isStandardArguments:isLegacyArguments;},{"call-bound":
|
|
2722
|
+
/** @type {import('.')} */module.exports=supportsStandardArguments?isStandardArguments:isLegacyArguments;},{"call-bound":66,"has-tostringtag/shams":107}],113:[function(require,module,exports){'use strict';var fnToStr=Function.prototype.toString;var reflectApply=typeof Reflect==='object'&&Reflect!==null&&Reflect.apply;var badArrayLike;var isCallableMarker;if(typeof reflectApply==='function'&&typeof Object.defineProperty==='function'){try{badArrayLike=Object.defineProperty({},'length',{get:function(){throw isCallableMarker;}});isCallableMarker={};// eslint-disable-next-line no-throw-literal
|
|
2395
2723
|
reflectApply(function(){throw 42;},null,badArrayLike);}catch(_){if(_!==isCallableMarker){reflectApply=null;}}}else{reflectApply=null;}var constructorRegex=/^\s*class\b/;var isES6ClassFn=function isES6ClassFunction(value){try{var fnStr=fnToStr.call(value);return constructorRegex.test(fnStr);}catch(e){return false;// not a function
|
|
2396
2724
|
}};var tryFunctionObject=function tryFunctionToStr(value){try{if(isES6ClassFn(value)){return false;}fnToStr.call(value);return true;}catch(e){return false;}};var toStr=Object.prototype.toString;var objectClass='[object Object]';var fnClass='[object Function]';var genClass='[object GeneratorFunction]';var ddaClass='[object HTMLAllCollection]';// IE 11
|
|
2397
2725
|
var ddaClass2='[object HTML document.all class]';var ddaClass3='[object HTMLCollection]';// IE 9-10
|
|
@@ -2402,17 +2730,17 @@ var all=document.all;if(toStr.call(all)===toStr.call(document.all)){isDDA=functi
|
|
|
2402
2730
|
if((isIE68||!value)&&(typeof value==='undefined'||typeof value==='object')){try{var str=toStr.call(value);return(str===ddaClass||str===ddaClass2||str===ddaClass3// opera 12.16
|
|
2403
2731
|
||str===objectClass// IE 6-8
|
|
2404
2732
|
)&&value('')==null;// eslint-disable-line eqeqeq
|
|
2405
|
-
}catch(e){/**/}}return false;};}}module.exports=reflectApply?function isCallable(value){if(isDDA(value)){return true;}if(!value){return false;}if(typeof value!=='function'&&typeof value!=='object'){return false;}try{reflectApply(value,null,badArrayLike);}catch(e){if(e!==isCallableMarker){return false;}}return!isES6ClassFn(value)&&tryFunctionObject(value);}:function isCallable(value){if(isDDA(value)){return true;}if(!value){return false;}if(typeof value!=='function'&&typeof value!=='object'){return false;}if(hasToStringTag){return tryFunctionObject(value);}if(isES6ClassFn(value)){return false;}var strClass=toStr.call(value);if(strClass!==fnClass&&strClass!==genClass&&!/^\[object HTML/.test(strClass)){return false;}return tryFunctionObject(value);};},{}],
|
|
2406
|
-
if(hasSubnet)return false;if(!hasSubnet){if(reForwardSlash.test(input))return false;}var withoutZone=withoutSubnet.replace(reZone,'');var lastPartSeparator=withoutZone.lastIndexOf(':');if(lastPartSeparator===-1)return false;var lastPart=withoutZone.substring(lastPartSeparator+1);var hasV4Part=validate4(lastPart);var address=hasV4Part?withoutZone.substring(0,lastPartSeparator+1)+'1234:5678':withoutZone;if(reBadCharacters.test(address))return false;if(reBadAddress.test(address))return false;var halves=address.split('::');if(halves.length>2)return false;if(halves.length===2){var first=halves[0]===''?[]:halves[0].split(':');var last=halves[1]===''?[]:halves[1].split(':');var remainingLength=8-(first.length+last.length);if(remainingLength<=0)return false;}else{if(address.split(':').length!==8)return false;}return true;}function validate(input){return validate4(input)||validate6(input);}module.exports=function validator(options){if(!options)options={};if(options.version===4)return validate4;if(options.version===6)return validate6;if(options.version==null)return validate;throw new Error('Unknown version: '+options.version);};module.exports['__all_regexes__']=[reIpv4FirstPass,reSubnetString,reForwardSlash,reZone,reBadCharacters,reBadAddress];},{}],
|
|
2733
|
+
}catch(e){/**/}}return false;};}}module.exports=reflectApply?function isCallable(value){if(isDDA(value)){return true;}if(!value){return false;}if(typeof value!=='function'&&typeof value!=='object'){return false;}try{reflectApply(value,null,badArrayLike);}catch(e){if(e!==isCallableMarker){return false;}}return!isES6ClassFn(value)&&tryFunctionObject(value);}:function isCallable(value){if(isDDA(value)){return true;}if(!value){return false;}if(typeof value!=='function'&&typeof value!=='object'){return false;}if(hasToStringTag){return tryFunctionObject(value);}if(isES6ClassFn(value)){return false;}var strClass=toStr.call(value);if(strClass!==fnClass&&strClass!==genClass&&!/^\[object HTML/.test(strClass)){return false;}return tryFunctionObject(value);};},{}],114:[function(require,module,exports){'use strict';var callBound=require('call-bound');var safeRegexTest=require('safe-regex-test');var isFnRegex=safeRegexTest(/^\s*(?:function)?\*/);var hasToStringTag=require('has-tostringtag/shams')();var getProto=require('get-proto');var toStr=callBound('Object.prototype.toString');var fnToStr=callBound('Function.prototype.toString');var getGeneratorFunction=require('generator-function');/** @type {import('.')} */module.exports=function isGeneratorFunction(fn){if(typeof fn!=='function'){return false;}if(isFnRegex(fnToStr(fn))){return true;}if(!hasToStringTag){var str=toStr(fn);return str==='[object GeneratorFunction]';}if(!getProto){return false;}var GeneratorFunction=getGeneratorFunction();return GeneratorFunction&&getProto(fn)===GeneratorFunction.prototype;};},{"call-bound":66,"generator-function":97,"get-proto":101,"has-tostringtag/shams":107,"safe-regex-test":171}],115:[function(require,module,exports){var reIpv4FirstPass=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;var reSubnetString=/\/\d{1,3}(?=%|$)/;var reForwardSlash=/\//;var reZone=/%.*$/;var reBadCharacters=/([^0-9a-f:/%])/i;var reBadAddress=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/i;function validate4(input){if(!reIpv4FirstPass.test(input))return false;var parts=input.split('.');if(parts.length!==4)return false;if(parts[0][0]==='0'&&parts[0].length>1)return false;if(parts[1][0]==='0'&&parts[1].length>1)return false;if(parts[2][0]==='0'&&parts[2].length>1)return false;if(parts[3][0]==='0'&&parts[3].length>1)return false;var n0=Number(parts[0]);var n1=Number(parts[1]);var n2=Number(parts[2]);var n3=Number(parts[3]);return n0>=0&&n0<256&&n1>=0&&n1<256&&n2>=0&&n2<256&&n3>=0&&n3<256;}function validate6(input){var withoutSubnet=input.replace(reSubnetString,'');var hasSubnet=input.length!==withoutSubnet.length;// FIXME: this should probably be an option in the future
|
|
2734
|
+
if(hasSubnet)return false;if(!hasSubnet){if(reForwardSlash.test(input))return false;}var withoutZone=withoutSubnet.replace(reZone,'');var lastPartSeparator=withoutZone.lastIndexOf(':');if(lastPartSeparator===-1)return false;var lastPart=withoutZone.substring(lastPartSeparator+1);var hasV4Part=validate4(lastPart);var address=hasV4Part?withoutZone.substring(0,lastPartSeparator+1)+'1234:5678':withoutZone;if(reBadCharacters.test(address))return false;if(reBadAddress.test(address))return false;var halves=address.split('::');if(halves.length>2)return false;if(halves.length===2){var first=halves[0]===''?[]:halves[0].split(':');var last=halves[1]===''?[]:halves[1].split(':');var remainingLength=8-(first.length+last.length);if(remainingLength<=0)return false;}else{if(address.split(':').length!==8)return false;}return true;}function validate(input){return validate4(input)||validate6(input);}module.exports=function validator(options){if(!options)options={};if(options.version===4)return validate4;if(options.version===6)return validate6;if(options.version==null)return validate;throw new Error('Unknown version: '+options.version);};module.exports['__all_regexes__']=[reIpv4FirstPass,reSubnetString,reForwardSlash,reZone,reBadCharacters,reBadAddress];},{}],116:[function(require,module,exports){var createIpValidator=require('is-my-ip-valid');var reEmailWhitespace=/\s/;var reHostnameFirstPass=/^[a-zA-Z0-9.-]+$/;var reHostnamePart=/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/;var rePhoneFirstPass=/^\+[0-9][0-9 ]{5,27}[0-9]$/;var rePhoneDoubleSpace=/ {2}/;var rePhoneGlobalSpace=/ /g;exports['date-time']=/^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}[tT ]\d{2}:\d{2}:\d{2}(?:\.\d+|)([zZ]|[+-]\d{2}:\d{2})$/;exports['date']=/^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}$/;exports['time']=/^\d{2}:\d{2}:\d{2}$/;exports['email']=function(input){return input.indexOf('@')!==-1&&!reEmailWhitespace.test(input);};exports['ip-address']=exports['ipv4']=createIpValidator({version:4});exports['ipv6']=createIpValidator({version:6});exports['uri']=/^[a-zA-Z][a-zA-Z0-9+\-.]*:[^\s]*$/;exports['color']=/(#?([0-9A-Fa-f]{3,6})\b)|(aqua)|(black)|(blue)|(fuchsia)|(gray)|(green)|(lime)|(maroon)|(navy)|(olive)|(orange)|(purple)|(red)|(silver)|(teal)|(white)|(yellow)|(rgb\(\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*\))|(rgb\(\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*\))/;exports['hostname']=function(input){if(!reHostnameFirstPass.test(input))return false;var parts=input.split('.');for(var i=0;i<parts.length;i++){if(!reHostnamePart.test(parts[i]))return false;}return true;};exports['alpha']=/^[a-zA-Z]+$/;exports['alphanumeric']=/^[a-zA-Z0-9]+$/;exports['style']=/.:\s*[^;]/g;exports['phone']=function(input){if(!rePhoneFirstPass.test(input))return false;if(rePhoneDoubleSpace.test(input))return false;var digits=input.substring(1).replace(rePhoneGlobalSpace,'').length;return digits>=7&&digits<=15;};exports['utc-millisec']=/^[0-9]{1,15}\.?[0-9]{0,15}$/;},{"is-my-ip-valid":115}],117:[function(require,module,exports){var genobj=require('generate-object-property');var genfun=require('generate-function');var jsonpointer=require('jsonpointer');var xtend=require('xtend');var formats=require('./formats');var get=function(obj,additionalSchemas,ptr){var visit=function(sub){if(sub&&sub.id===ptr)return sub;if(typeof sub!=='object'||!sub)return null;return Object.keys(sub).reduce(function(res,k){return res||visit(sub[k]);},null);};var res=visit(obj);if(res)return res;ptr=ptr.replace(/^#/,'');ptr=ptr.replace(/\/$/,'');try{return jsonpointer.get(obj,decodeURI(ptr));}catch(err){var end=ptr.indexOf('#');var other;// external reference
|
|
2407
2735
|
if(end!==0){// fragment doesn't exist.
|
|
2408
2736
|
if(end===-1){other=additionalSchemas[ptr];}else{var ext=ptr.slice(0,end);other=additionalSchemas[ext];var fragment=ptr.slice(end).replace(/^#/,'');try{return jsonpointer.get(other,fragment);}catch(err){}}}else{other=additionalSchemas[ptr];}return other||null;}};var types={};types.any=function(){return'true';};types.null=function(name){return name+' === null';};types.boolean=function(name){return'typeof '+name+' === "boolean"';};types.array=function(name){return'Array.isArray('+name+')';};types.object=function(name){return'typeof '+name+' === "object" && '+name+' && !Array.isArray('+name+')';};types.number=function(name){return'typeof '+name+' === "number" && isFinite('+name+')';};types.integer=function(name){return'typeof '+name+' === "number" && (Math.floor('+name+') === '+name+' || '+name+' > 9007199254740992 || '+name+' < -9007199254740992)';};types.string=function(name){return'typeof '+name+' === "string"';};var unique=function(array,len){len=Math.min(len===-1?array.length:len,array.length);var list=[];for(var i=0;i<len;i++){list.push(typeof array[i]==='object'?JSON.stringify(array[i]):array[i]);}for(var i=1;i<list.length;i++){if(list.indexOf(list[i])!==i)return false;}return true;};var isMultipleOf=function(name,multipleOf){var res;var factor=(multipleOf|0)!==multipleOf?Math.pow(10,multipleOf.toString().split('.').pop().length):1;if(factor>1){var factorName=(name|0)!==name?Math.pow(10,name.toString().split('.').pop().length):1;if(factorName>factor)res=true;else res=Math.round(factor*name)%(factor*multipleOf);}else res=name%multipleOf;return!res;};var testLimitedRegex=function(r,s,maxLength){if(maxLength>-1&&s.length>maxLength)return true;return r.test(s);};var compile=function(schema,cache,root,reporter,opts){var fmts=opts?xtend(formats,opts.formats):formats;var scope={unique:unique,formats:fmts,isMultipleOf:isMultipleOf,testLimitedRegex:testLimitedRegex};var verbose=opts?!!opts.verbose:false;var greedy=opts&&opts.greedy!==undefined?opts.greedy:false;var syms={};var allocated=[];var gensym=function(name){var res=name+(syms[name]=(syms[name]||0)+1);allocated.push(res);return res;};var formatName=function(field){var s=JSON.stringify(field);try{var pattern=/\[([^\[\]"]+)\]/;while(pattern.test(s))s=s.replace(pattern,replacer);return s;}catch(_){return JSON.stringify(field);}function replacer(match,v){if(allocated.indexOf(v)===-1)throw new Error('Unreplaceable');return'." + '+v+' + "';}};var reversePatterns={};var patterns=function(p){if(reversePatterns[p])return reversePatterns[p];var n=gensym('pattern');scope[n]=new RegExp(p);reversePatterns[p]=n;return n;};var vars=['i','j','k','l','m','n','o','p','q','r','s','t','u','v','x','y','z'];var genloop=function(){var v=vars.shift();vars.push(v+v[0]);allocated.push(v);return v;};var visit=function(name,node,reporter,filter,schemaPath){var properties=node.properties;var type=node.type;var tuple=false;if(Array.isArray(node.items)){// tuple type
|
|
2409
2737
|
properties={};node.items.forEach(function(item,i){properties[i]=item;});type='array';tuple=true;}var indent=0;var error=function(msg,prop,value){validate('errors++');if(reporter===true){validate('if (validate.errors === null) validate.errors = []');if(verbose){validate('validate.errors.push({field:%s,message:%s,value:%s,type:%s,schemaPath:%s})',formatName(prop||name),JSON.stringify(msg),value||name,JSON.stringify(type),JSON.stringify(schemaPath));}else{validate('validate.errors.push({field:%s,message:%s})',formatName(prop||name),JSON.stringify(msg));}}};if(node.required===true){indent++;validate('if (%s === undefined) {',name);error('is required');validate('} else {');}else{indent++;validate('if (%s !== undefined) {',name);}var valid=[].concat(type).map(function(t){if(t&&!types.hasOwnProperty(t)){throw new Error('Unknown type: '+t);}return types[t||'any'](name);}).join(' || ')||'true';if(valid!=='true'){indent++;validate('if (!(%s)) {',valid);error('is the wrong type');validate('} else {');}if(tuple){if(node.additionalItems===false){validate('if (%s.length > %d) {',name,node.items.length);error('has additional items');validate('}');}else if(node.additionalItems){var i=genloop();validate('for (var %s = %d; %s < %s.length; %s++) {',i,node.items.length,i,name,i);visit(name+'['+i+']',node.additionalItems,reporter,filter,schemaPath.concat('additionalItems'));validate('}');}}if(node.format&&fmts[node.format]){if(type!=='string'&&formats[node.format])validate('if (%s) {',types.string(name));var n=gensym('format');scope[n]=fmts[node.format];if(typeof scope[n]==='function')validate('if (!%s(%s)) {',n,name);else validate('if (!testLimitedRegex(%s, %s, %d)) {',n,name,typeof node.maxLength==='undefined'?-1:node.maxLength);error('must be '+node.format+' format');validate('}');if(type!=='string'&&formats[node.format])validate('}');}if(Array.isArray(node.required)){var n=gensym('missing');validate('var %s = 0',n);var checkRequired=function(req){var prop=genobj(name,req);validate('if (%s === undefined) {',prop);error('is required',prop);validate('%s++',n);validate('}');};validate('if ((%s)) {',type!=='object'?types.object(name):'true');node.required.map(checkRequired);validate('}');if(!greedy){validate('if (%s === 0) {',n);indent++;}}if(node.uniqueItems){if(type!=='array')validate('if (%s) {',types.array(name));validate('if (!(unique(%s, %d))) {',name,node.maxItems||-1);error('must be unique');validate('}');if(type!=='array')validate('}');}if(node.enum){var complex=node.enum.some(function(e){return typeof e==='object';});var compare=complex?function(e){return'JSON.stringify('+name+')'+' !== JSON.stringify('+JSON.stringify(e)+')';}:function(e){return name+' !== '+JSON.stringify(e);};validate('if (%s) {',node.enum.map(compare).join(' && ')||'false');error('must be an enum value');validate('}');}if(node.dependencies){if(type!=='object')validate('if (%s) {',types.object(name));Object.keys(node.dependencies).forEach(function(key){var deps=node.dependencies[key];if(typeof deps==='string')deps=[deps];var exists=function(k){return genobj(name,k)+' !== undefined';};if(Array.isArray(deps)){validate('if (%s !== undefined && !(%s)) {',genobj(name,key),deps.map(exists).join(' && ')||'true');error('dependencies not set');validate('}');}if(typeof deps==='object'){validate('if (%s !== undefined) {',genobj(name,key));visit(name,deps,reporter,filter,schemaPath.concat(['dependencies',key]));validate('}');}});if(type!=='object')validate('}');}if(node.additionalProperties||node.additionalProperties===false){if(type!=='object')validate('if (%s) {',types.object(name));var i=genloop();var keys=gensym('keys');var toCompare=function(p){return keys+'['+i+'] !== '+JSON.stringify(p);};var toTest=function(p){return'!'+patterns(p)+'.test('+keys+'['+i+'])';};var additionalProp=Object.keys(properties||{}).map(toCompare).concat(Object.keys(node.patternProperties||{}).map(toTest)).join(' && ')||'true';validate('var %s = Object.keys(%s)',keys,name)('for (var %s = 0; %s < %s.length; %s++) {',i,i,keys,i)('if (%s) {',additionalProp);if(node.additionalProperties===false){if(filter)validate('delete %s',name+'['+keys+'['+i+']]');error('has additional properties',null,JSON.stringify(name+'.')+' + '+keys+'['+i+']');}else{visit(name+'['+keys+'['+i+']]',node.additionalProperties,reporter,filter,schemaPath.concat(['additionalProperties']));}validate('}')('}');if(type!=='object')validate('}');}if(node.$ref){var sub=get(root,opts&&opts.schemas||{},node.$ref);if(sub){var fn=cache[node.$ref];if(!fn){cache[node.$ref]=function proxy(data){return fn(data);};fn=compile(sub,cache,root,false,opts);}var n=gensym('ref');scope[n]=fn;validate('if (!(%s(%s))) {',n,name);error('referenced schema does not match');validate('}');}}if(node.not){var prev=gensym('prev');validate('var %s = errors',prev);visit(name,node.not,false,filter,schemaPath.concat('not'));validate('if (%s === errors) {',prev);error('negative schema matches');validate('} else {')('errors = %s',prev)('}');}if(node.items&&!tuple){if(type!=='array')validate('if (%s) {',types.array(name));var i=genloop();validate('for (var %s = 0; %s < %s.length; %s++) {',i,i,name,i);visit(name+'['+i+']',node.items,reporter,filter,schemaPath.concat('items'));validate('}');if(type!=='array')validate('}');}if(node.patternProperties){if(type!=='object')validate('if (%s) {',types.object(name));var keys=gensym('keys');var i=genloop();validate('var %s = Object.keys(%s)',keys,name)('for (var %s = 0; %s < %s.length; %s++) {',i,i,keys,i);Object.keys(node.patternProperties).forEach(function(key){var p=patterns(key);validate('if (%s.test(%s)) {',p,keys+'['+i+']');visit(name+'['+keys+'['+i+']]',node.patternProperties[key],reporter,filter,schemaPath.concat(['patternProperties',key]));validate('}');});validate('}');if(type!=='object')validate('}');}if(node.pattern){var p=patterns(node.pattern);if(type!=='string')validate('if (%s) {',types.string(name));validate('if (!(testLimitedRegex(%s, %s, %d))) {',p,name,typeof node.maxLength==='undefined'?-1:node.maxLength);error('pattern mismatch');validate('}');if(type!=='string')validate('}');}if(node.allOf){node.allOf.forEach(function(sch,key){visit(name,sch,reporter,filter,schemaPath.concat(['allOf',key]));});}if(node.anyOf&&node.anyOf.length){var prev=gensym('prev');node.anyOf.forEach(function(sch,i){if(i===0){validate('var %s = errors',prev);}else{validate('if (errors !== %s) {',prev)('errors = %s',prev);}visit(name,sch,false,false,schemaPath);});node.anyOf.forEach(function(sch,i){if(i)validate('}');});validate('if (%s !== errors) {',prev);error('no schemas match');validate('}');}if(node.oneOf&&node.oneOf.length){var prev=gensym('prev');var passes=gensym('passes');validate('var %s = errors',prev)('var %s = 0',passes);node.oneOf.forEach(function(sch,i){visit(name,sch,false,false,schemaPath);validate('if (%s === errors) {',prev)('%s++',passes)('} else {')('errors = %s',prev)('}');});validate('if (%s !== 1) {',passes);error('no (or more than one) schemas match');validate('}');}if(node.multipleOf!==undefined){if(type!=='number'&&type!=='integer')validate('if (%s) {',types.number(name));validate('if (!isMultipleOf(%s, %d)) {',name,node.multipleOf);error('has a remainder');validate('}');if(type!=='number'&&type!=='integer')validate('}');}if(node.maxProperties!==undefined){if(type!=='object')validate('if (%s) {',types.object(name));validate('if (Object.keys(%s).length > %d) {',name,node.maxProperties);error('has more properties than allowed');validate('}');if(type!=='object')validate('}');}if(node.minProperties!==undefined){if(type!=='object')validate('if (%s) {',types.object(name));validate('if (Object.keys(%s).length < %d) {',name,node.minProperties);error('has less properties than allowed');validate('}');if(type!=='object')validate('}');}if(node.maxItems!==undefined){if(type!=='array')validate('if (%s) {',types.array(name));validate('if (%s.length > %d) {',name,node.maxItems);error('has more items than allowed');validate('}');if(type!=='array')validate('}');}if(node.minItems!==undefined){if(type!=='array')validate('if (%s) {',types.array(name));validate('if (%s.length < %d) {',name,node.minItems);error('has less items than allowed');validate('}');if(type!=='array')validate('}');}if(node.maxLength!==undefined){if(type!=='string')validate('if (%s) {',types.string(name));validate('if (%s.length > %d) {',name,node.maxLength);error('has longer length than allowed');validate('}');if(type!=='string')validate('}');}if(node.minLength!==undefined){if(type!=='string')validate('if (%s) {',types.string(name));validate('if (%s.length < %d) {',name,node.minLength);error('has less length than allowed');validate('}');if(type!=='string')validate('}');}if(node.minimum!==undefined){if(type!=='number'&&type!=='integer')validate('if (%s) {',types.number(name));validate('if (%s %s %d) {',name,node.exclusiveMinimum?'<=':'<',node.minimum);error('is less than minimum');validate('}');if(type!=='number'&&type!=='integer')validate('}');}if(node.maximum!==undefined){if(type!=='number'&&type!=='integer')validate('if (%s) {',types.number(name));validate('if (%s %s %d) {',name,node.exclusiveMaximum?'>=':'>',node.maximum);error('is more than maximum');validate('}');if(type!=='number'&&type!=='integer')validate('}');}if(properties){Object.keys(properties).forEach(function(p){if(Array.isArray(type)&&type.indexOf('null')!==-1)validate('if (%s !== null) {',name);visit(genobj(name,p),properties[p],reporter,filter,schemaPath.concat(tuple?p:['properties',p]));if(Array.isArray(type)&&type.indexOf('null')!==-1)validate('}');});}while(indent--)validate('}');};var validate=genfun('function validate(data) {')// Since undefined is not a valid JSON value, we coerce to null and other checks will catch this
|
|
2410
|
-
('if (data === undefined) data = null')('validate.errors = null')('var errors = 0');visit('data',schema,reporter,opts&&opts.filter,[]);validate('return errors === 0')('}');validate=validate.toFunction(scope);validate.errors=null;if(Object.defineProperty){Object.defineProperty(validate,'error',{get:function(){if(!validate.errors)return'';return validate.errors.map(function(err){return err.field+' '+err.message;}).join('\n');}});}validate.toJSON=function(){return schema;};return validate;};module.exports=function(schema,opts){if(typeof schema==='string')schema=JSON.parse(schema);return compile(schema,{},schema,true,opts);};module.exports.filter=function(schema,opts){var validate=module.exports(schema,xtend(opts,{filter:true}));return function(sch){validate(sch);return sch;};};},{"./formats":82,"generate-function":61,"generate-object-property":62,"jsonpointer":88,"xtend":190}],84:[function(require,module,exports){"use strict";function isProperty(str){return /^[$A-Z\_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc][$A-Z\_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc0-9\u0300-\u036f\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e4-\u08fe\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19b0-\u19c0\u19c8\u19c9\u19d0-\u19d9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2-\u1cf4\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f1\ua900-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f]*$/.test(str);}module.exports=isProperty;},{}],85:[function(require,module,exports){'use strict';var callBound=require('call-bound');var hasToStringTag=require('has-tostringtag/shams')();var hasOwn=require('hasown');var gOPD=require('gopd');/** @type {import('.')} */var fn;if(hasToStringTag){/** @type {(receiver: ThisParameterType<typeof RegExp.prototype.exec>, ...args: Parameters<typeof RegExp.prototype.exec>) => ReturnType<typeof RegExp.prototype.exec>} */var $exec=callBound('RegExp.prototype.exec');/** @type {object} */var isRegexMarker={};var throwRegexMarker=function(){throw isRegexMarker;};/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */var badStringifier={toString:throwRegexMarker,valueOf:throwRegexMarker};if(typeof Symbol.toPrimitive==='symbol'){badStringifier[Symbol.toPrimitive]=throwRegexMarker;}/** @type {import('.')} */// @ts-expect-error TS can't figure out that the $exec call always throws
|
|
2738
|
+
('if (data === undefined) data = null')('validate.errors = null')('var errors = 0');visit('data',schema,reporter,opts&&opts.filter,[]);validate('return errors === 0')('}');validate=validate.toFunction(scope);validate.errors=null;if(Object.defineProperty){Object.defineProperty(validate,'error',{get:function(){if(!validate.errors)return'';return validate.errors.map(function(err){return err.field+' '+err.message;}).join('\n');}});}validate.toJSON=function(){return schema;};return validate;};module.exports=function(schema,opts){if(typeof schema==='string')schema=JSON.parse(schema);return compile(schema,{},schema,true,opts);};module.exports.filter=function(schema,opts){var validate=module.exports(schema,xtend(opts,{filter:true}));return function(sch){validate(sch);return sch;};};},{"./formats":116,"generate-function":95,"generate-object-property":96,"jsonpointer":122,"xtend":224}],118:[function(require,module,exports){"use strict";function isProperty(str){return /^[$A-Z\_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc][$A-Z\_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc0-9\u0300-\u036f\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e4-\u08fe\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19b0-\u19c0\u19c8\u19c9\u19d0-\u19d9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2-\u1cf4\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f1\ua900-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f]*$/.test(str);}module.exports=isProperty;},{}],119:[function(require,module,exports){'use strict';var callBound=require('call-bound');var hasToStringTag=require('has-tostringtag/shams')();var hasOwn=require('hasown');var gOPD=require('gopd');/** @type {import('.')} */var fn;if(hasToStringTag){/** @type {(receiver: ThisParameterType<typeof RegExp.prototype.exec>, ...args: Parameters<typeof RegExp.prototype.exec>) => ReturnType<typeof RegExp.prototype.exec>} */var $exec=callBound('RegExp.prototype.exec');/** @type {object} */var isRegexMarker={};var throwRegexMarker=function(){throw isRegexMarker;};/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */var badStringifier={toString:throwRegexMarker,valueOf:throwRegexMarker};if(typeof Symbol.toPrimitive==='symbol'){badStringifier[Symbol.toPrimitive]=throwRegexMarker;}/** @type {import('.')} */// @ts-expect-error TS can't figure out that the $exec call always throws
|
|
2411
2739
|
// eslint-disable-next-line consistent-return
|
|
2412
2740
|
fn=function isRegex(value){if(!value||typeof value!=='object'){return false;}// eslint-disable-next-line no-extra-parens
|
|
2413
2741
|
var descriptor=/** @type {NonNullable<typeof gOPD>} */gOPD(/** @type {{ lastIndex?: unknown }} */value,'lastIndex');var hasLastIndexDataProperty=descriptor&&hasOwn(descriptor,'value');if(!hasLastIndexDataProperty){return false;}try{// eslint-disable-next-line no-extra-parens
|
|
2414
2742
|
$exec(value,/** @type {string} *//** @type {unknown} */badStringifier);}catch(e){return e===isRegexMarker;}};}else{/** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */var $toString=callBound('Object.prototype.toString');/** @const @type {'[object RegExp]'} */var regexClass='[object RegExp]';/** @type {import('.')} */fn=function isRegex(value){// In older browsers, typeof regex incorrectly returns 'function'
|
|
2415
|
-
if(!value||typeof value!=='object'&&typeof value!=='function'){return false;}return $toString(value)===regexClass;};}module.exports=fn;},{"call-bound":
|
|
2743
|
+
if(!value||typeof value!=='object'&&typeof value!=='function'){return false;}return $toString(value)===regexClass;};}module.exports=fn;},{"call-bound":66,"gopd":103,"has-tostringtag/shams":107,"hasown":108}],120:[function(require,module,exports){'use strict';var whichTypedArray=require('which-typed-array');/** @type {import('.')} */module.exports=function isTypedArray(value){return!!whichTypedArray(value);};},{"which-typed-array":222}],121:[function(require,module,exports){(function(Buffer){(function(){/*global Buffer*/// Named constants with unique integer values
|
|
2416
2744
|
var C={};// Tokens
|
|
2417
2745
|
var LEFT_BRACE=C.LEFT_BRACE=0x1;var RIGHT_BRACE=C.RIGHT_BRACE=0x2;var LEFT_BRACKET=C.LEFT_BRACKET=0x3;var RIGHT_BRACKET=C.RIGHT_BRACKET=0x4;var COLON=C.COLON=0x5;var COMMA=C.COMMA=0x6;var TRUE=C.TRUE=0x7;var FALSE=C.FALSE=0x8;var NULL=C.NULL=0x9;var STRING=C.STRING=0xa;var NUMBER=C.NUMBER=0xb;// Tokenizer States
|
|
2418
2746
|
var START=C.START=0x11;var STOP=C.STOP=0x12;var TRUE1=C.TRUE1=0x21;var TRUE2=C.TRUE2=0x22;var TRUE3=C.TRUE3=0x23;var FALSE1=C.FALSE1=0x31;var FALSE2=C.FALSE2=0x32;var FALSE3=C.FALSE3=0x33;var FALSE4=C.FALSE4=0x34;var NULL1=C.NULL1=0x41;var NULL2=C.NULL2=0x42;var NULL3=C.NULL3=0x43;var NUMBER1=C.NUMBER1=0x51;var NUMBER3=C.NUMBER3=0x53;var STRING1=C.STRING1=0x61;var STRING2=C.STRING2=0x62;var STRING3=C.STRING3=0x63;var STRING4=C.STRING4=0x64;var STRING5=C.STRING5=0x65;var STRING6=C.STRING6=0x66;// Parser States
|
|
@@ -2479,9 +2807,9 @@ if(buffer[i]===0x75){this.tState=NULL2;}else{return this.charError(buffer,i);}}e
|
|
|
2479
2807
|
if(buffer[i]===0x6c){this.tState=NULL3;}else{return this.charError(buffer,i);}}else if(this.tState===NULL3){// l
|
|
2480
2808
|
if(buffer[i]===0x6c){this.tState=START;this.onToken(NULL,null);this.offset+=3;}else{return this.charError(buffer,i);}}}};proto.onToken=function(token,value){// Override this to get events
|
|
2481
2809
|
};proto.parseError=function(token,value){this.tState=STOP;this.onError(new Error("Unexpected "+Parser.toknam(token)+(value?"("+JSON.stringify(value)+")":"")+" in state "+Parser.toknam(this.state)));};proto.push=function(){this.stack.push({value:this.value,key:this.key,mode:this.mode});};proto.pop=function(){var value=this.value;var parent=this.stack.pop();this.value=parent.value;this.key=parent.key;this.mode=parent.mode;this.emit(value);if(!this.mode){this.state=VALUE;}};proto.emit=function(value){if(this.mode){this.state=COMMA;}this.onValue(value);};proto.onValue=function(value){// Override me
|
|
2482
|
-
};proto.onToken=function(token,value){if(this.state===VALUE){if(token===STRING||token===NUMBER||token===TRUE||token===FALSE||token===NULL){if(this.value){this.value[this.key]=value;}this.emit(value);}else if(token===LEFT_BRACE){this.push();if(this.value){this.value=this.value[this.key]={};}else{this.value={};}this.key=undefined;this.state=KEY;this.mode=OBJECT;}else if(token===LEFT_BRACKET){this.push();if(this.value){this.value=this.value[this.key]=[];}else{this.value=[];}this.key=0;this.mode=ARRAY;this.state=VALUE;}else if(token===RIGHT_BRACE){if(this.mode===OBJECT){this.pop();}else{return this.parseError(token,value);}}else if(token===RIGHT_BRACKET){if(this.mode===ARRAY){this.pop();}else{return this.parseError(token,value);}}else{return this.parseError(token,value);}}else if(this.state===KEY){if(token===STRING){this.key=value;this.state=COLON;}else if(token===RIGHT_BRACE){this.pop();}else{return this.parseError(token,value);}}else if(this.state===COLON){if(token===COLON){this.state=VALUE;}else{return this.parseError(token,value);}}else if(this.state===COMMA){if(token===COMMA){if(this.mode===ARRAY){this.key++;this.state=VALUE;}else if(this.mode===OBJECT){this.state=KEY;}}else if(token===RIGHT_BRACKET&&this.mode===ARRAY||token===RIGHT_BRACE&&this.mode===OBJECT){this.pop();}else{return this.parseError(token,value);}}else{return this.parseError(token,value);}};Parser.C=C;module.exports=Parser;}).call(this);}).call(this,require("buffer").Buffer);},{"buffer":
|
|
2810
|
+
};proto.onToken=function(token,value){if(this.state===VALUE){if(token===STRING||token===NUMBER||token===TRUE||token===FALSE||token===NULL){if(this.value){this.value[this.key]=value;}this.emit(value);}else if(token===LEFT_BRACE){this.push();if(this.value){this.value=this.value[this.key]={};}else{this.value={};}this.key=undefined;this.state=KEY;this.mode=OBJECT;}else if(token===LEFT_BRACKET){this.push();if(this.value){this.value=this.value[this.key]=[];}else{this.value=[];}this.key=0;this.mode=ARRAY;this.state=VALUE;}else if(token===RIGHT_BRACE){if(this.mode===OBJECT){this.pop();}else{return this.parseError(token,value);}}else if(token===RIGHT_BRACKET){if(this.mode===ARRAY){this.pop();}else{return this.parseError(token,value);}}else{return this.parseError(token,value);}}else if(this.state===KEY){if(token===STRING){this.key=value;this.state=COLON;}else if(token===RIGHT_BRACE){this.pop();}else{return this.parseError(token,value);}}else if(this.state===COLON){if(token===COLON){this.state=VALUE;}else{return this.parseError(token,value);}}else if(this.state===COMMA){if(token===COMMA){if(this.mode===ARRAY){this.key++;this.state=VALUE;}else if(this.mode===OBJECT){this.state=KEY;}}else if(token===RIGHT_BRACKET&&this.mode===ARRAY||token===RIGHT_BRACE&&this.mode===OBJECT){this.pop();}else{return this.parseError(token,value);}}else{return this.parseError(token,value);}};Parser.C=C;module.exports=Parser;}).call(this);}).call(this,require("buffer").Buffer);},{"buffer":57}],122:[function(require,module,exports){var hasExcape=/~/;var escapeMatcher=/~[01]/g;function escapeReplacer(m){switch(m){case'~1':return'/';case'~0':return'~';}throw new Error('Invalid tilde escape: '+m);}function untilde(str){if(!hasExcape.test(str))return str;return str.replace(escapeMatcher,escapeReplacer);}function setter(obj,pointer,value){var part;var hasNextPart;for(var p=1,len=pointer.length;p<len;){if(pointer[p]==='constructor'||pointer[p]==='prototype'||pointer[p]==='__proto__')return obj;part=untilde(pointer[p++]);hasNextPart=len>p;if(typeof obj[part]==='undefined'){// support setting of /-
|
|
2483
2811
|
if(Array.isArray(obj)&&part==='-'){part=obj.length;}// support nested objects/array when setting values
|
|
2484
|
-
if(hasNextPart){if(pointer[p]!==''&&pointer[p]<Infinity||pointer[p]==='-')obj[part]=[];else obj[part]={};}}if(!hasNextPart)break;obj=obj[part];}var oldValue=obj[part];if(value===undefined)delete obj[part];else obj[part]=value;return oldValue;}function compilePointer(pointer){if(typeof pointer==='string'){pointer=pointer.split('/');if(pointer[0]==='')return pointer;throw new Error('Invalid JSON pointer.');}else if(Array.isArray(pointer)){for(const part of pointer){if(typeof part!=='string'&&typeof part!=='number'){throw new Error('Invalid JSON pointer. Must be of type string or number.');}}return pointer;}throw new Error('Invalid JSON pointer.');}function get(obj,pointer){if(typeof obj!=='object')throw new Error('Invalid input object.');pointer=compilePointer(pointer);var len=pointer.length;if(len===1)return obj;for(var p=1;p<len;){obj=obj[untilde(pointer[p++])];if(len===p)return obj;if(typeof obj!=='object'||obj===null)return undefined;}}function set(obj,pointer,value){if(typeof obj!=='object')throw new Error('Invalid input object.');pointer=compilePointer(pointer);if(pointer.length===0)throw new Error('Invalid JSON pointer for set.');return setter(obj,pointer,value);}function compile(pointer){var compiled=compilePointer(pointer);return{get:function(object){return get(object,compiled);},set:function(object,value){return set(object,compiled,value);}};}exports.get=get;exports.set=set;exports.compile=compile;},{}],
|
|
2812
|
+
if(hasNextPart){if(pointer[p]!==''&&pointer[p]<Infinity||pointer[p]==='-')obj[part]=[];else obj[part]={};}}if(!hasNextPart)break;obj=obj[part];}var oldValue=obj[part];if(value===undefined)delete obj[part];else obj[part]=value;return oldValue;}function compilePointer(pointer){if(typeof pointer==='string'){pointer=pointer.split('/');if(pointer[0]==='')return pointer;throw new Error('Invalid JSON pointer.');}else if(Array.isArray(pointer)){for(const part of pointer){if(typeof part!=='string'&&typeof part!=='number'){throw new Error('Invalid JSON pointer. Must be of type string or number.');}}return pointer;}throw new Error('Invalid JSON pointer.');}function get(obj,pointer){if(typeof obj!=='object')throw new Error('Invalid input object.');pointer=compilePointer(pointer);var len=pointer.length;if(len===1)return obj;for(var p=1;p<len;){obj=obj[untilde(pointer[p++])];if(len===p)return obj;if(typeof obj!=='object'||obj===null)return undefined;}}function set(obj,pointer,value){if(typeof obj!=='object')throw new Error('Invalid input object.');pointer=compilePointer(pointer);if(pointer.length===0)throw new Error('Invalid JSON pointer for set.');return setter(obj,pointer,value);}function compile(pointer){var compiled=compilePointer(pointer);return{get:function(object){return get(object,compiled);},set:function(object,value){return set(object,compiled,value);}};}exports.get=get;exports.set=set;exports.compile=compile;},{}],123:[function(require,module,exports){'use strict';/** @type {import('./abs')} */module.exports=Math.abs;},{}],124:[function(require,module,exports){'use strict';/** @type {import('./floor')} */module.exports=Math.floor;},{}],125:[function(require,module,exports){'use strict';/** @type {import('./isNaN')} */module.exports=Number.isNaN||function isNaN(a){return a!==a;};},{}],126:[function(require,module,exports){'use strict';/** @type {import('./max')} */module.exports=Math.max;},{}],127:[function(require,module,exports){'use strict';/** @type {import('./min')} */module.exports=Math.min;},{}],128:[function(require,module,exports){'use strict';/** @type {import('./pow')} */module.exports=Math.pow;},{}],129:[function(require,module,exports){'use strict';/** @type {import('./round')} */module.exports=Math.round;},{}],130:[function(require,module,exports){'use strict';var $isNaN=require('./isNaN');/** @type {import('./sign')} */module.exports=function sign(number){if($isNaN(number)||number===0){return number;}return number<0?-1:+1;};},{"./isNaN":125}],131:[function(require,module,exports){/**
|
|
2485
2813
|
* Meadow Endpoint Utility Function - Parse a Filter String and put it into a Query.
|
|
2486
2814
|
*
|
|
2487
2815
|
* @license MIT
|
|
@@ -2651,7 +2979,7 @@ tmpFilterStanza.Field=tmpFilterTerms[i];break;case 2:// OPERATOR
|
|
|
2651
2979
|
//console.log(i+' Operator: '+tmpFilterTerms[i]);
|
|
2652
2980
|
tmpFilterStanza.Operator=tmpFilterTerms[i];break;case 3:// VALUE
|
|
2653
2981
|
//console.log(i+' Value: '+tmpFilterTerms[i]);
|
|
2654
|
-
tmpFilterStanza.Value=tmpFilterTerms[i];break;}}addFilterStanzaToQuery(tmpFilterStanza,pQuery);return true;};module.exports=doParseFilter;},{}],
|
|
2982
|
+
tmpFilterStanza.Value=tmpFilterTerms[i];break;}}addFilterStanzaToQuery(tmpFilterStanza,pQuery);return true;};module.exports=doParseFilter;},{}],132:[function(require,module,exports){module.exports={parse:require('./Meadow-Filter-Parse.js')};},{"./Meadow-Filter-Parse.js":131}],133:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
2655
2983
|
/**
|
|
2656
2984
|
* @license MIT
|
|
2657
2985
|
* @author <steven@velozo.com>
|
|
@@ -2663,7 +2991,7 @@ tmpFilterStanza.Value=tmpFilterTerms[i];break;}}addFilterStanzaToQuery(tmpFilter
|
|
|
2663
2991
|
*/var loadFromPackageFile=function(pMeadow,pPackage){// Use the package loader to grab the configuration objects and clone a new Meadow.
|
|
2664
2992
|
var tmpPackage=false;try{tmpPackage=require(pPackage);}catch(pError){pMeadow.fable.log.error('Error loading Fable package',{Package:pPackage});return false;}// Spool up a new Meadow object
|
|
2665
2993
|
var tmpNewMeadow=pMeadow.new(pMeadow.fable);// Safely set the parameters
|
|
2666
|
-
if(typeof tmpPackage.Scope==='string'){tmpNewMeadow.setScope(tmpPackage.Scope);}if(typeof tmpPackage.Domain==='string'){tmpNewMeadow.setDomain(tmpPackage.Domain);}if(typeof tmpPackage.DefaultIdentifier==='string'){tmpNewMeadow.setDefaultIdentifier(tmpPackage.DefaultIdentifier);}if(Array.isArray(tmpPackage.Schema)){tmpNewMeadow.setSchema(tmpPackage.Schema);}if(typeof tmpPackage.JsonSchema==='object'){tmpNewMeadow.setJsonSchema(tmpPackage.JsonSchema);}if(typeof tmpPackage.DefaultObject==='object'){tmpNewMeadow.setDefault(tmpPackage.DefaultObject);}if(typeof tmpPackage.Authorization==='object'){tmpNewMeadow.setAuthorizer(tmpPackage.Authorization);}return tmpNewMeadow;};module.exports=loadFromPackageFile;},{}],
|
|
2994
|
+
if(typeof tmpPackage.Scope==='string'){tmpNewMeadow.setScope(tmpPackage.Scope);}if(typeof tmpPackage.Domain==='string'){tmpNewMeadow.setDomain(tmpPackage.Domain);}if(typeof tmpPackage.DefaultIdentifier==='string'){tmpNewMeadow.setDefaultIdentifier(tmpPackage.DefaultIdentifier);}if(Array.isArray(tmpPackage.Schema)){tmpNewMeadow.setSchema(tmpPackage.Schema);}if(typeof tmpPackage.JsonSchema==='object'){tmpNewMeadow.setJsonSchema(tmpPackage.JsonSchema);}if(typeof tmpPackage.DefaultObject==='object'){tmpNewMeadow.setDefault(tmpPackage.DefaultObject);}if(typeof tmpPackage.Authorization==='object'){tmpNewMeadow.setAuthorizer(tmpPackage.Authorization);}return tmpNewMeadow;};module.exports=loadFromPackageFile;},{}],134:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
2667
2995
|
/**
|
|
2668
2996
|
* @license MIT
|
|
2669
2997
|
* @author <steven@velozo.com>
|
|
@@ -2675,7 +3003,7 @@ if(typeof tmpPackage.Scope==='string'){tmpNewMeadow.setScope(tmpPackage.Scope);}
|
|
|
2675
3003
|
*/var loadFromPackageObject=function(pMeadow,pPackage){// Use the package loader to grab the configuration objects and clone a new Meadow.
|
|
2676
3004
|
var tmpPackage=typeof pPackage=='object'?pPackage:{};if(!pPackage.hasOwnProperty('Scope')){pMeadow.fable.log.error('Error loading Fable package -- scope not defined.',{Package:pPackage});}// Spool up a new Meadow object
|
|
2677
3005
|
var tmpNewMeadow=pMeadow.new(pMeadow.fable);// Safely set the parameters
|
|
2678
|
-
if(typeof tmpPackage.Scope==='string'){tmpNewMeadow.setScope(tmpPackage.Scope);}if(typeof tmpPackage.Domain==='string'){tmpNewMeadow.setDomain(tmpPackage.Domain);}if(typeof tmpPackage.DefaultIdentifier==='string'){tmpNewMeadow.setDefaultIdentifier(tmpPackage.DefaultIdentifier);}if(Array.isArray(tmpPackage.Schema)){tmpNewMeadow.setSchema(tmpPackage.Schema);}if(typeof tmpPackage.JsonSchema==='object'){tmpNewMeadow.setJsonSchema(tmpPackage.JsonSchema);}if(typeof tmpPackage.DefaultObject==='object'){tmpNewMeadow.setDefault(tmpPackage.DefaultObject);}if(typeof tmpPackage.Authorization==='object'){tmpNewMeadow.setAuthorizer(tmpPackage.Authorization);}return tmpNewMeadow;};module.exports=loadFromPackageObject;},{}],
|
|
3006
|
+
if(typeof tmpPackage.Scope==='string'){tmpNewMeadow.setScope(tmpPackage.Scope);}if(typeof tmpPackage.Domain==='string'){tmpNewMeadow.setDomain(tmpPackage.Domain);}if(typeof tmpPackage.DefaultIdentifier==='string'){tmpNewMeadow.setDefaultIdentifier(tmpPackage.DefaultIdentifier);}if(Array.isArray(tmpPackage.Schema)){tmpNewMeadow.setSchema(tmpPackage.Schema);}if(typeof tmpPackage.JsonSchema==='object'){tmpNewMeadow.setJsonSchema(tmpPackage.JsonSchema);}if(typeof tmpPackage.DefaultObject==='object'){tmpNewMeadow.setDefault(tmpPackage.DefaultObject);}if(typeof tmpPackage.Authorization==='object'){tmpNewMeadow.setAuthorizer(tmpPackage.Authorization);}return tmpNewMeadow;};module.exports=loadFromPackageObject;},{}],135:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
2679
3007
|
/**
|
|
2680
3008
|
* @license MIT
|
|
2681
3009
|
* @author <steven@velozo.com>
|
|
@@ -2711,7 +3039,7 @@ doSetQuery(pQueryTag,'');tmpCallBack(false);}else{_Meadow.fable.log.trace('Loade
|
|
|
2711
3039
|
* Check if a Custom Query exists
|
|
2712
3040
|
*
|
|
2713
3041
|
* @method doCheckQuery
|
|
2714
|
-
*/function doCheckQuery(pQueryTag){return _Queries.hasOwnProperty(pQueryTag);}var tmpNewMeadowRawQuery={loadQuery:doLoadQuery,setQuery:doSetQuery,checkQuery:doCheckQuery,getQuery:doGetQuery,new:createNew};return tmpNewMeadowRawQuery;}return createNew();};module.exports=new MeadowRawQuery();},{"fs":
|
|
3042
|
+
*/function doCheckQuery(pQueryTag){return _Queries.hasOwnProperty(pQueryTag);}var tmpNewMeadowRawQuery={loadQuery:doLoadQuery,setQuery:doSetQuery,checkQuery:doCheckQuery,getQuery:doGetQuery,new:createNew};return tmpNewMeadowRawQuery;}return createNew();};module.exports=new MeadowRawQuery();},{"fs":56}],136:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
2715
3043
|
/**
|
|
2716
3044
|
* @license MIT
|
|
2717
3045
|
* @author <steven@velozo.com>
|
|
@@ -2819,7 +3147,7 @@ if(!tmpValidation.Valid){tmpValidation.Errors=_Validate.errors;}return tmpValida
|
|
|
2819
3147
|
*
|
|
2820
3148
|
* @property defaultObject
|
|
2821
3149
|
* @type object
|
|
2822
|
-
*/Object.defineProperty(tmpNewMeadowSchemaObject,'authorizer',{get:function(){return _Authorizers;},enumerable:true});return tmpNewMeadowSchemaObject;}return createNew();};module.exports=new MeadowSchema();},{"is-my-json-valid":
|
|
3150
|
+
*/Object.defineProperty(tmpNewMeadowSchemaObject,'authorizer',{get:function(){return _Authorizers;},enumerable:true});return tmpNewMeadowSchemaObject;}return createNew();};module.exports=new MeadowSchema();},{"is-my-json-valid":117}],137:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
2823
3151
|
/**
|
|
2824
3152
|
* @license MIT
|
|
2825
3153
|
* @author <steven@velozo.com>
|
|
@@ -2992,7 +3320,7 @@ tmpQuery.query.schema=_Schema.schema;return tmpQuery;},enumerable:true});/**
|
|
|
2992
3320
|
* @type object
|
|
2993
3321
|
*/Object.defineProperty(tmpNewMeadowObject,'providerName',{get:function(){return _ProviderName;},enumerable:true});// addServices removed in fable 2.x
|
|
2994
3322
|
if(typeof _Fable.addServices==='function'){_Fable.addServices(tmpNewMeadowObject);}else{// bring over addServices implementation from Fable 1.x for backward compatibility
|
|
2995
|
-
Object.defineProperty(tmpNewMeadowObject,'fable',{get:function(){return _Fable;},enumerable:false});Object.defineProperty(tmpNewMeadowObject,'settings',{get:function(){return _Fable.settings;},enumerable:false});Object.defineProperty(tmpNewMeadowObject,'log',{get:function(){return _Fable.log;},enumerable:false});}return tmpNewMeadowObject;}return createNew();};module.exports=new Meadow();},{"./Meadow-PackageFileLoader.js":
|
|
3323
|
+
Object.defineProperty(tmpNewMeadowObject,'fable',{get:function(){return _Fable;},enumerable:false});Object.defineProperty(tmpNewMeadowObject,'settings',{get:function(){return _Fable.settings;},enumerable:false});Object.defineProperty(tmpNewMeadowObject,'log',{get:function(){return _Fable.log;},enumerable:false});}return tmpNewMeadowObject;}return createNew();};module.exports=new Meadow();},{"./Meadow-PackageFileLoader.js":133,"./Meadow-PackageObjectLoader.js":134,"./Meadow-RawQuery.js":135,"./Meadow-Schema.js":136,"./behaviors/Meadow-Count.js":138,"./behaviors/Meadow-Create.js":139,"./behaviors/Meadow-Delete.js":140,"./behaviors/Meadow-Read.js":141,"./behaviors/Meadow-Reads.js":142,"./behaviors/Meadow-Undelete.js":143,"./behaviors/Meadow-Update.js":144,"./providers/Meadow-Provider-ALASQL.js":145,"./providers/Meadow-Provider-DGraph.js":146,"./providers/Meadow-Provider-MSSQL.js":147,"./providers/Meadow-Provider-MeadowEndpoints.js":148,"./providers/Meadow-Provider-MongoDB.js":149,"./providers/Meadow-Provider-MySQL.js":150,"./providers/Meadow-Provider-None.js":151,"./providers/Meadow-Provider-PostgreSQL.js":152,"./providers/Meadow-Provider-RetoldDataBeacon.js":153,"./providers/Meadow-Provider-RocksDB.js":154,"./providers/Meadow-Provider-SQLite.js":155,"./providers/Meadow-Provider-Solr.js":156,"foxhound":80}],138:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
2996
3324
|
/**
|
|
2997
3325
|
* @license MIT
|
|
2998
3326
|
* @author <steven@velozo.com>
|
|
@@ -3006,7 +3334,7 @@ libAsyncWaterfall([// Step 1: Get the record countfrom the data source
|
|
|
3006
3334
|
function(fStageComplete){if(pMeadow.rawQueries.checkQuery('Count')){pQuery.parameters.queryOverride=pMeadow.rawQueries.getQuery('Count');}pMeadow.provider.Count(pQuery,function(){fStageComplete(pQuery.result.error,pQuery);});},// Step 2: Validate the resulting value
|
|
3007
3335
|
function(pQuery,fStageComplete){// Check if query time exceeded threshold in settings. Log if slow.
|
|
3008
3336
|
var tmpProfileTime=new Date().getTime()-tmpProfileStart.getTime();if(tmpProfileTime>(pMeadow.fable.settings['QueryThresholdWarnTime']||200)){pMeadow.logSlowQuery(tmpProfileTime,pQuery);}if(typeof pQuery.parameters.result.value!=='number'){// The return value is a number.. something is wrong.
|
|
3009
|
-
return fStageComplete('Count did not return valid results.',pQuery,false);}fStageComplete(pQuery.result.error,pQuery,pQuery.result.value);}],function(pError,pQuery,pCount){if(pError){pMeadow.fable.log.warn('Error during the count waterfall',{Error:pError,Message:pError.message,Query:pQuery.query});}fCallBack(pError,pQuery,pCount);});return pMeadow;};module.exports=meadowBehaviorCount;},{"async/waterfall":
|
|
3337
|
+
return fStageComplete('Count did not return valid results.',pQuery,false);}fStageComplete(pQuery.result.error,pQuery,pQuery.result.value);}],function(pError,pQuery,pCount){if(pError){pMeadow.fable.log.warn('Error during the count waterfall',{Error:pError,Message:pError.message,Query:pQuery.query});}fCallBack(pError,pQuery,pCount);});return pMeadow;};module.exports=meadowBehaviorCount;},{"async/waterfall":52}],139:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3010
3338
|
/**
|
|
3011
3339
|
* @license MIT
|
|
3012
3340
|
* @author <steven@velozo.com>
|
|
@@ -3030,7 +3358,7 @@ if(pQuery.parameters.result.value===false){return fStageComplete('Creation faile
|
|
|
3030
3358
|
function(pQuery,pIDRecord,fStageComplete){var tmpQueryRead=pQuery.clone().addFilter(pMeadow.defaultIdentifier,pIDRecord).setDisableDeleteTracking(pQuery.parameters.query.disableDeleteTracking);//if delete tracking is disabled, we need to disable it on this Read operation
|
|
3031
3359
|
if(pMeadow.rawQueries.checkQuery('Read')){tmpQueryRead.parameters.queryOverride=pMeadow.rawQueries.getQuery('Read');}pMeadow.provider.Read(tmpQueryRead,function(){fStageComplete(tmpQueryRead.result.error,pQuery,tmpQueryRead);});},// Step 4: Marshal the record into a POJO
|
|
3032
3360
|
function(pQuery,pQueryRead,fStageComplete){// Ensure there is not at least one record returned
|
|
3033
|
-
if(pQueryRead.parameters.result.value.length<1){return fStageComplete('No record found after create.',pQuery,pQueryRead,false);}var tmpRecord=pMeadow.marshalRecordFromSourceToObject(pQueryRead.result.value[0]);fStageComplete(pQuery.result.error,pQuery,pQueryRead,tmpRecord);}],function(pError,pQuery,pQueryRead,pRecord){if(pError){pMeadow.fable.log.warn('Error during the create waterfall',{Error:pError,Message:pError.message,Query:pQuery.query,Stack:pError.stack});}fCallBack(pError,pQuery,pQueryRead,pRecord);});return pMeadow;};module.exports=meadowBehaviorCreate;},{"async/waterfall":
|
|
3361
|
+
if(pQueryRead.parameters.result.value.length<1){return fStageComplete('No record found after create.',pQuery,pQueryRead,false);}var tmpRecord=pMeadow.marshalRecordFromSourceToObject(pQueryRead.result.value[0]);fStageComplete(pQuery.result.error,pQuery,pQueryRead,tmpRecord);}],function(pError,pQuery,pQueryRead,pRecord){if(pError){pMeadow.fable.log.warn('Error during the create waterfall',{Error:pError,Message:pError.message,Query:pQuery.query,Stack:pError.stack});}fCallBack(pError,pQuery,pQueryRead,pRecord);});return pMeadow;};module.exports=meadowBehaviorCreate;},{"async/waterfall":52}],140:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3034
3362
|
/**
|
|
3035
3363
|
* @license MIT
|
|
3036
3364
|
* @author <steven@velozo.com>
|
|
@@ -3041,7 +3369,7 @@ if(pQueryRead.parameters.result.value.length<1){return fStageComplete('No record
|
|
|
3041
3369
|
*/var meadowBehaviorDelete=function(pMeadow,pQuery,fCallBack){// TODO: Check if this recordset has implicit delete tracking, branch in this module.
|
|
3042
3370
|
// Delete the record(s) from the source
|
|
3043
3371
|
libAsyncWaterfall([// Step 1: Delete the record
|
|
3044
|
-
function(fStageComplete){if(pMeadow.rawQueries.checkQuery('Delete')){pQuery.parameters.queryOverride=pMeadow.rawQueries.getQuery('Delete');}pMeadow.provider.Delete(pQuery,function(){fStageComplete(pQuery.result.error,pQuery,pQuery.result.value);});}],function(pError,pQuery,pRecord){if(pError){pMeadow.fable.log.warn('Error during the delete waterfall',{Error:pError,Message:pError.message,Query:pQuery.query});}fCallBack(pError,pQuery,pRecord);});return pMeadow;};module.exports=meadowBehaviorDelete;},{"async/waterfall":
|
|
3372
|
+
function(fStageComplete){if(pMeadow.rawQueries.checkQuery('Delete')){pQuery.parameters.queryOverride=pMeadow.rawQueries.getQuery('Delete');}pMeadow.provider.Delete(pQuery,function(){fStageComplete(pQuery.result.error,pQuery,pQuery.result.value);});}],function(pError,pQuery,pRecord){if(pError){pMeadow.fable.log.warn('Error during the delete waterfall',{Error:pError,Message:pError.message,Query:pQuery.query});}fCallBack(pError,pQuery,pRecord);});return pMeadow;};module.exports=meadowBehaviorDelete;},{"async/waterfall":52}],141:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3045
3373
|
/**
|
|
3046
3374
|
* @license MIT
|
|
3047
3375
|
* @author <steven@velozo.com>
|
|
@@ -3054,7 +3382,7 @@ libAsyncWaterfall([// Step 1: Get the record from the data source
|
|
|
3054
3382
|
function(fStageComplete){// If there is a Read override query, use it!
|
|
3055
3383
|
if(pMeadow.rawQueries.checkQuery('Read')){pQuery.parameters.queryOverride=pMeadow.rawQueries.getQuery('Read');}pMeadow.provider.Read(pQuery,function(){fStageComplete(pQuery.result.error,pQuery);});},// Step 2: Marshal the record into a POJO
|
|
3056
3384
|
function(pQuery,fStageComplete){// Check that a record was returned
|
|
3057
|
-
if(pQuery.parameters.result.value.length<1){return fStageComplete(undefined,pQuery,false);}var tmpRecord=pMeadow.marshalRecordFromSourceToObject(pQuery.result.value[0]);fStageComplete(pQuery.result.error,pQuery,tmpRecord);}],(pError,pQuery,pRecord)=>{if(pError){pMeadow.fable.log.warn('Error during the read waterfall',{Error:pError,Message:pError.message,Query:pQuery.query});}fCallBack(pError,pQuery,pRecord);});return pMeadow;};module.exports=meadowBehaviorRead;},{"async/waterfall":
|
|
3385
|
+
if(pQuery.parameters.result.value.length<1){return fStageComplete(undefined,pQuery,false);}var tmpRecord=pMeadow.marshalRecordFromSourceToObject(pQuery.result.value[0]);fStageComplete(pQuery.result.error,pQuery,tmpRecord);}],(pError,pQuery,pRecord)=>{if(pError){pMeadow.fable.log.warn('Error during the read waterfall',{Error:pError,Message:pError.message,Query:pQuery.query});}fCallBack(pError,pQuery,pRecord);});return pMeadow;};module.exports=meadowBehaviorRead;},{"async/waterfall":52}],142:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3058
3386
|
/**
|
|
3059
3387
|
* @license MIT
|
|
3060
3388
|
* @author <steven@velozo.com>
|
|
@@ -3068,7 +3396,7 @@ libAsyncWaterfall([// Step 1: Get the record(s) from the data source
|
|
|
3068
3396
|
function(fStageComplete){if(pMeadow.rawQueries.checkQuery('Reads')){pQuery.parameters.queryOverride=pMeadow.rawQueries.getQuery('Reads');}pMeadow.provider.Read(pQuery,function(){fStageComplete(pQuery.result.error,pQuery);});},// Step 2: Marshal all the records into an array of POJOs
|
|
3069
3397
|
function(pQuery,fStageComplete){// Check if query time exceeded threshold in settings. Log if slow.
|
|
3070
3398
|
var tmpProfileTime=new Date().getTime()-tmpProfileStart.getTime();if(tmpProfileTime>(pMeadow.fable.settings['QueryThresholdWarnTime']||200)){pMeadow.logSlowQuery(tmpProfileTime,pQuery);}var tmpRecords=[];libAsyncEach(pQuery.parameters.result.value,function(pRow,pQueueCallback){tmpRecords.push(pMeadow.marshalRecordFromSourceToObject(pRow));pQueueCallback();},function(){// After we've pushed every record into the array in order, complete the waterfall
|
|
3071
|
-
fStageComplete(pQuery.result.error,pQuery,tmpRecords);});}],function(pError,pQuery,pRecords){if(pError){pMeadow.fable.log.warn('Error during the read multiple waterfall',{Error:pError,Message:pError.message,Query:pQuery.query});}fCallBack(pError,pQuery,pRecords);});return pMeadow;};module.exports=meadowBehaviorReads;},{"async/eachSeries":
|
|
3399
|
+
fStageComplete(pQuery.result.error,pQuery,tmpRecords);});}],function(pError,pQuery,pRecords){if(pError){pMeadow.fable.log.warn('Error during the read multiple waterfall',{Error:pError,Message:pError.message,Query:pQuery.query});}fCallBack(pError,pQuery,pRecords);});return pMeadow;};module.exports=meadowBehaviorReads;},{"async/eachSeries":38,"async/waterfall":52}],143:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3072
3400
|
/**
|
|
3073
3401
|
* @license MIT
|
|
3074
3402
|
* @author <steven@velozo.com>
|
|
@@ -3079,7 +3407,7 @@ fStageComplete(pQuery.result.error,pQuery,tmpRecords);});}],function(pError,pQue
|
|
|
3079
3407
|
*/var meadowBehaviorUndelete=function(pMeadow,pQuery,fCallBack){// TODO: Check if this recordset has implicit delete tracking, branch in this module?
|
|
3080
3408
|
// Undelete the record(s) if they were deleted with a bit
|
|
3081
3409
|
libAsyncWaterfall([// Step 1: Undelete the record
|
|
3082
|
-
function(fStageComplete){if(pMeadow.rawQueries.checkQuery('Undelete')){pQuery.parameters.queryOverride=pMeadow.rawQueries.getQuery('Undelete');}pMeadow.provider.Undelete(pQuery,function(){fStageComplete(pQuery.result.error,pQuery,pQuery.result.value);});}],function(pError,pQuery,pRecord){if(pError){pMeadow.fable.log.warn('Error during the undelete waterfall',{Error:pError,Message:pError.message,Query:pQuery.query});}fCallBack(pError,pQuery,pRecord);});return pMeadow;};module.exports=meadowBehaviorUndelete;},{"async/waterfall":
|
|
3410
|
+
function(fStageComplete){if(pMeadow.rawQueries.checkQuery('Undelete')){pQuery.parameters.queryOverride=pMeadow.rawQueries.getQuery('Undelete');}pMeadow.provider.Undelete(pQuery,function(){fStageComplete(pQuery.result.error,pQuery,pQuery.result.value);});}],function(pError,pQuery,pRecord){if(pError){pMeadow.fable.log.warn('Error during the undelete waterfall',{Error:pError,Message:pError.message,Query:pQuery.query});}fCallBack(pError,pQuery,pRecord);});return pMeadow;};module.exports=meadowBehaviorUndelete;},{"async/waterfall":52}],144:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3083
3411
|
/**
|
|
3084
3412
|
* @license MIT
|
|
3085
3413
|
* @author <steven@velozo.com>
|
|
@@ -3107,7 +3435,7 @@ function(pQuery,fStageComplete){// We can clone the query, since it has the crit
|
|
|
3107
3435
|
var tmpQueryRead=pQuery.clone();// Make sure to load the record with the custom query if necessary.
|
|
3108
3436
|
if(pMeadow.rawQueries.checkQuery('Read')){tmpQueryRead.parameters.queryOverride=pMeadow.rawQueries.getQuery('Read');}pMeadow.provider.Read(tmpQueryRead,function(){fStageComplete(tmpQueryRead.result.error,pQuery,tmpQueryRead);});},// Step 4: Marshal the record into a POJO
|
|
3109
3437
|
function(pQuery,pQueryRead,fStageComplete){if(pQueryRead.result.value.length===0){//No record found to update
|
|
3110
|
-
return fStageComplete('No record found to update!',pQueryRead.result,false);}var tmpRecord=pMeadow.marshalRecordFromSourceToObject(pQueryRead.result.value[0]);fStageComplete(pQuery.result.error,pQuery,pQueryRead,tmpRecord);}],function(pError,pQuery,pQueryRead,pRecord){if(pError){pMeadow.fable.log.warn('Error during Update waterfall',{Error:pError,Message:pError.message,Query:pQuery.query});}fCallBack(pError,pQuery,pQueryRead,pRecord);});return pMeadow;};module.exports=meadowBehaviorUpdate;},{"async/waterfall":
|
|
3438
|
+
return fStageComplete('No record found to update!',pQueryRead.result,false);}var tmpRecord=pMeadow.marshalRecordFromSourceToObject(pQueryRead.result.value[0]);fStageComplete(pQuery.result.error,pQuery,pQueryRead,tmpRecord);}],function(pError,pQuery,pQueryRead,pRecord){if(pError){pMeadow.fable.log.warn('Error during Update waterfall',{Error:pError,Message:pError.message,Query:pQuery.query});}fCallBack(pError,pQuery,pQueryRead,pRecord);});return pMeadow;};module.exports=meadowBehaviorUpdate;},{"async/waterfall":52}],145:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3111
3439
|
/**
|
|
3112
3440
|
* @license MIT
|
|
3113
3441
|
* @author <steven@velozo.com>
|
|
@@ -3160,7 +3488,7 @@ case"number":case"string":tmpSchema.push({Column:tmpProperty,Type:"Text"});break
|
|
|
3160
3488
|
tmpDefaultIdentifier=tmpProperty;}tmpMeadow.setSchema(tmpSchema);if(typeof tmpDefaultIdentifier==='undefined')tmpMeadow.setDefaultIdentifier(tmpDefaultIdentifier);// Now import the data
|
|
3161
3489
|
if(pParameters.Import){for(var j=0;j<pParameters.Data.length;j++){tmpMeadow.doCreate(tmpMeadow.query.clone().addRecord(pParameters.Data[j]),function(pError,pQuery,pQueryRead,pRecord){// Maybe log the error?
|
|
3162
3490
|
_Fable.log.trace('Auto imported record',pRecord);});}}else{// Just assign the object
|
|
3163
|
-
tmpMeadow.provider.bindObject(pParameters.Data);}return tmpMeadow;};var tmpNewProvider={setSchema:setSchema,marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,constructFromObject:constructFromObject,bindObject:bindObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:{},providerCreatesSupported:false,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],
|
|
3491
|
+
tmpMeadow.provider.bindObject(pParameters.Data);}return tmpMeadow;};var tmpNewProvider={setSchema:setSchema,marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,constructFromObject:constructFromObject,bindObject:bindObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:{},providerCreatesSupported:false,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],146:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3164
3492
|
/**
|
|
3165
3493
|
* @license MIT
|
|
3166
3494
|
* @author <steven@velozo.com>
|
|
@@ -3196,7 +3524,7 @@ var tmpUpdateDoc=replaceSentinels(JSON.parse(JSON.stringify(tmpOp.update)));var
|
|
|
3196
3524
|
var tmpReadTxn=tmpClient.newTxn({readOnly:true});tmpReadTxn.query(tmpOp.queryForUIDs).then(function(pResponse){var tmpData=pResponse.data||{};var tmpNodes=tmpData[tmpOp.queryName]||[];if(tmpNodes.length===0){tmpResult.error=null;tmpResult.value=0;tmpResult.executed=true;return fCallback();}if(tmpOp.operation==='upsert'){// Soft delete: update matching nodes with delete setters
|
|
3197
3525
|
var tmpUpdateDoc=replaceSentinels(JSON.parse(JSON.stringify(tmpOp.update)));var tmpMutations=[];for(var i=0;i<tmpNodes.length;i++){var tmpSetDoc=JSON.parse(JSON.stringify(tmpUpdateDoc));tmpSetDoc.uid=tmpNodes[i].uid;tmpMutations.push(tmpSetDoc);}var tmpWriteTxn=tmpClient.newTxn();tmpWriteTxn.mutate({setJson:tmpMutations}).then(function(){return tmpWriteTxn.commit();}).then(function(){tmpResult.error=null;tmpResult.value=tmpNodes.length;tmpResult.executed=true;return fCallback();}).catch(function(pError){try{tmpWriteTxn.discard();}catch(e){}tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});}else{// Hard delete: delete the nodes
|
|
3198
3526
|
var tmpDeleteDocs=[];for(var j=0;j<tmpNodes.length;j++){tmpDeleteDocs.push({uid:tmpNodes[j].uid});}var tmpWriteTxn=tmpClient.newTxn();tmpWriteTxn.mutate({deleteJson:tmpDeleteDocs}).then(function(){return tmpWriteTxn.commit();}).then(function(){tmpResult.error=null;tmpResult.value=tmpNodes.length;tmpResult.executed=true;return fCallback();}).catch(function(pError){try{tmpWriteTxn.discard();}catch(e){}tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});}}).catch(function(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});};var Undelete=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('DGraph').buildUndeleteQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}var tmpClient=getClient();if(!tmpClient){tmpResult.error=new Error('No DGraph connection available.');tmpResult.executed=true;return fCallback();}var tmpOp=pQuery.query.parameters.dgraphOperation;if(!tmpOp||tmpOp.operation==='noop'){tmpResult.error=null;tmpResult.value=0;tmpResult.executed=true;return fCallback();}// Query for matching UIDs
|
|
3199
|
-
var tmpReadTxn=tmpClient.newTxn({readOnly:true});tmpReadTxn.query(tmpOp.queryForUIDs).then(function(pResponse){var tmpData=pResponse.data||{};var tmpNodes=tmpData[tmpOp.queryName]||[];if(tmpNodes.length===0){tmpResult.error=null;tmpResult.value=0;tmpResult.executed=true;return fCallback();}var tmpUpdateDoc=replaceSentinels(JSON.parse(JSON.stringify(tmpOp.update)));var tmpMutations=[];for(var i=0;i<tmpNodes.length;i++){var tmpSetDoc=JSON.parse(JSON.stringify(tmpUpdateDoc));tmpSetDoc.uid=tmpNodes[i].uid;tmpMutations.push(tmpSetDoc);}var tmpWriteTxn=tmpClient.newTxn();tmpWriteTxn.mutate({setJson:tmpMutations}).then(function(){return tmpWriteTxn.commit();}).then(function(){tmpResult.error=null;tmpResult.value=tmpNodes.length;tmpResult.executed=true;return fCallback();}).catch(function(pError){try{tmpWriteTxn.discard();}catch(e){}tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});}).catch(function(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});};var Count=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('DGraph').buildCountQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}var tmpClient=getClient();if(!tmpClient){tmpResult.error=new Error('No DGraph connection available.');tmpResult.executed=true;return fCallback();}var tmpOp=pQuery.query.parameters.dgraphOperation;var tmpTxn=tmpClient.newTxn({readOnly:true});tmpTxn.query(tmpOp.query).then(function(pResponse){var tmpData=pResponse.data||{};var tmpResults=tmpData[tmpOp.queryName]||[];tmpResult.error=null;if(tmpResults.length>0&&typeof tmpResults[0].total!=='undefined'){tmpResult.value=tmpResults[0].total;}else{tmpResult.value=0;}tmpResult.executed=true;return fCallback();}).catch(function(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:getProvider,providerCreatesSupported:true,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],
|
|
3527
|
+
var tmpReadTxn=tmpClient.newTxn({readOnly:true});tmpReadTxn.query(tmpOp.queryForUIDs).then(function(pResponse){var tmpData=pResponse.data||{};var tmpNodes=tmpData[tmpOp.queryName]||[];if(tmpNodes.length===0){tmpResult.error=null;tmpResult.value=0;tmpResult.executed=true;return fCallback();}var tmpUpdateDoc=replaceSentinels(JSON.parse(JSON.stringify(tmpOp.update)));var tmpMutations=[];for(var i=0;i<tmpNodes.length;i++){var tmpSetDoc=JSON.parse(JSON.stringify(tmpUpdateDoc));tmpSetDoc.uid=tmpNodes[i].uid;tmpMutations.push(tmpSetDoc);}var tmpWriteTxn=tmpClient.newTxn();tmpWriteTxn.mutate({setJson:tmpMutations}).then(function(){return tmpWriteTxn.commit();}).then(function(){tmpResult.error=null;tmpResult.value=tmpNodes.length;tmpResult.executed=true;return fCallback();}).catch(function(pError){try{tmpWriteTxn.discard();}catch(e){}tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});}).catch(function(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});};var Count=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('DGraph').buildCountQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}var tmpClient=getClient();if(!tmpClient){tmpResult.error=new Error('No DGraph connection available.');tmpResult.executed=true;return fCallback();}var tmpOp=pQuery.query.parameters.dgraphOperation;var tmpTxn=tmpClient.newTxn({readOnly:true});tmpTxn.query(tmpOp.query).then(function(pResponse){var tmpData=pResponse.data||{};var tmpResults=tmpData[tmpOp.queryName]||[];tmpResult.error=null;if(tmpResults.length>0&&typeof tmpResults[0].total!=='undefined'){tmpResult.value=tmpResults[0].total;}else{tmpResult.value=0;}tmpResult.executed=true;return fCallback();}).catch(function(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:getProvider,providerCreatesSupported:true,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],147:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3200
3528
|
/**
|
|
3201
3529
|
* @license MIT
|
|
3202
3530
|
* @author <steven@velozo.com>
|
|
@@ -3237,7 +3565,7 @@ tmpResult.error=pPreparedExecutionError;tmpResult.value=false;try{tmpResult.valu
|
|
|
3237
3565
|
tmpPreparedStatement.unprepare(pPreparedStatementUnprepareError=>{if(pPreparedStatementUnprepareError){_Fable.log.error(`UNDELETE Error unpreparing prepared statement: ${pPreparedStatementUnprepareError}`,pPreparedStatementUnprepareError);}//_Fable.log.info(`Prepared statement returned...`, pPreparedResult);
|
|
3238
3566
|
tmpResult.error=pPreparedExecutionError;tmpResult.value=false;try{tmpResult.value=pPreparedResult.rowsAffected[0];}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting affected rowcount during undelete query',{Body:pQuery.query.body,Parameters:pQuery.query.parameters});}tmpResult.executed=true;return fCallback();});});});};var Count=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('MSSQL').buildCountQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}let tmpPreparedStatement=getPreparedStatementFromQuery(pQuery);tmpPreparedStatement.prepare(pQuery.query.body,pPrepareError=>{if(pPrepareError){_Fable.log.error(`COUNT Error preparing prepared statement: ${pPrepareError}`,pPrepareError);tmpResult.error=pPrepareError;tmpResult.executed=true;return fCallback();}tmpPreparedStatement.execute(pQuery.query.parameters,(pPreparedExecutionError,pPreparedResult)=>{// release the connection after queries are executed
|
|
3239
3567
|
tmpPreparedStatement.unprepare(pPreparedStatementUnprepareError=>{if(pPreparedStatementUnprepareError){_Fable.log.error(`COUNT Error unpreparing prepared statement: ${pPreparedStatementUnprepareError}`,pPreparedStatementUnprepareError);}//_Fable.log.info(`Prepared statement returned...`, pPreparedResult);
|
|
3240
|
-
tmpResult.error=pPreparedExecutionError;tmpResult.value=false;try{tmpResult.value=pPreparedResult.recordset[0].Row_Count;}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting affected rowcount during count query',{Body:pQuery.query.body,Parameters:pQuery.query.parameters});}tmpResult.executed=true;return fCallback();});});});};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:getProvider,providerCreatesSupported:true,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],
|
|
3568
|
+
tmpResult.error=pPreparedExecutionError;tmpResult.value=false;try{tmpResult.value=pPreparedResult.recordset[0].Row_Count;}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting affected rowcount during count query',{Body:pQuery.query.body,Parameters:pQuery.query.parameters});}tmpResult.executed=true;return fCallback();});});});};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:getProvider,providerCreatesSupported:true,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],148:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3241
3569
|
/**
|
|
3242
3570
|
* @license MIT
|
|
3243
3571
|
* @author <steven@velozo.com>
|
|
@@ -3254,7 +3582,7 @@ if(!pQuery.query.records.length>0){tmpResult.error='No records passed for proxyi
|
|
|
3254
3582
|
// an object). The subsequent Read step uses the existing
|
|
3255
3583
|
// filters to re-read the updated record.
|
|
3256
3584
|
if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.debug(`==> PUT completed data size ${tmpData.length}b received`,tmpResult);}return fCallback();});});};var Delete=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect(_Dialect).buildDeleteQuery();let tmpRequestOptions=buildRequestOptions(pQuery);libSimpleGet.delete(tmpRequestOptions,(pError,pResponse)=>{tmpResult.error=pError;tmpResult.executed=true;if(pQuery.logLevel>0||_GlobalLogLevel>0)_Fable.log.debug(`--> DEL request connected`);if(pError){return fCallback(tmpResult);}let tmpData='';pResponse.on('data',pChunk=>{if(pQuery.logLevel>0||_GlobalLogLevel>0)_Fable.log.debug(`--> DEL data chunk size ${pChunk.length}b received`);tmpData+=pChunk;});pResponse.on('end',()=>{if(tmpData){try{tmpResult.value=JSON.parse(tmpData);}catch(pParseError){tmpResult.error=new Error(`Failed to parse Delete response as JSON: ${pParseError.message}`);return fCallback();}}if(tmpResult.value&&tmpResult.value.hasOwnProperty('Count')){tmpResult.value=tmpResult.value.Count;}if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.debug(`==> DEL completed data size ${tmpData.length}b received`,tmpResult);}fCallback();});});};var Count=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect(_Dialect).buildCountQuery();let tmpRequestOptions=buildRequestOptions(pQuery);libSimpleGet.get(tmpRequestOptions,(pError,pResponse)=>{tmpResult.error=pError;tmpResult.executed=true;if(pQuery.logLevel>0||_GlobalLogLevel>0)_Fable.log.debug(`--> GET request connected`);if(pError){return fCallback(tmpResult);}let tmpData='';pResponse.on('data',pChunk=>{if(pQuery.logLevel>0||_GlobalLogLevel>0)_Fable.log.debug(`--> GET data chunk size ${pChunk.length}b received`);tmpData+=pChunk;});pResponse.on('end',()=>{if(tmpData){try{tmpResult.value=JSON.parse(tmpData);}catch(pParseError){tmpResult.error=new Error(`Failed to parse Count response as JSON: ${pParseError.message}`);return fCallback();}}try{tmpResult.value=tmpResult.value.Count;}catch(pErrorGettingRowcount){// This is an error state...
|
|
3257
|
-
tmpResult.value=-1;_Fable.log.warn('Error getting rowcount during count query',{Body:pQuery.query.body,Parameters:pQuery.query.parameters});}if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.debug(`==> GET completed data size ${tmpData.length}b received`,tmpResult);}fCallback();});});};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Count:Count,getProvider:{},providerCreatesSupported:false,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{"simple-get":
|
|
3585
|
+
tmpResult.value=-1;_Fable.log.warn('Error getting rowcount during count query',{Body:pQuery.query.body,Parameters:pQuery.query.parameters});}if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.debug(`==> GET completed data size ${tmpData.length}b received`,tmpResult);}fCallback();});});};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Count:Count,getProvider:{},providerCreatesSupported:false,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{"simple-get":178}],149:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3258
3586
|
/**
|
|
3259
3587
|
* @license MIT
|
|
3260
3588
|
* @author <steven@velozo.com>
|
|
@@ -3281,7 +3609,7 @@ var tmpAutoIncrementColumn=false;for(var tmpKey in tmpDocument){if(tmpDocument[t
|
|
|
3281
3609
|
getNextSequence(tmpDB,tmpOp.collection,tmpAutoIncrementColumn,function(pSeqError,pSeqValue){if(pSeqError){tmpResult.error=pSeqError;tmpResult.value=false;tmpResult.executed=true;return fCallback();}tmpDocument[tmpAutoIncrementColumn]=pSeqValue;tmpCollection.insertOne(tmpDocument).then(function(pInsertResult){tmpResult.error=null;tmpResult.value=pSeqValue;tmpResult.executed=true;return fCallback();}).catch(function(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});});}else{tmpCollection.insertOne(tmpDocument).then(function(pInsertResult){tmpResult.error=null;tmpResult.value=pInsertResult.insertedId;tmpResult.executed=true;return fCallback();}).catch(function(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});}};var Read=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('MongoDB').buildReadQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No MongoDB connection available.');tmpResult.executed=true;return fCallback();}var tmpOp=pQuery.query.parameters.mongoOperation;var tmpCollection=tmpDB.collection(tmpOp.collection);var tmpOptions={};if(tmpOp.projection&&Object.keys(tmpOp.projection).length>0){tmpOptions.projection=tmpOp.projection;}if(tmpOp.sort&&Object.keys(tmpOp.sort).length>0){tmpOptions.sort=tmpOp.sort;}if(tmpOp.skip){tmpOptions.skip=tmpOp.skip;}if(tmpOp.limit){tmpOptions.limit=tmpOp.limit;}tmpCollection.find(tmpOp.filter,tmpOptions).toArray().then(function(pDocs){tmpResult.error=null;tmpResult.value=pDocs;tmpResult.executed=true;return fCallback();}).catch(function(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});};var Update=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('MongoDB').buildUpdateQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No MongoDB connection available.');tmpResult.executed=true;return fCallback();}var tmpOp=pQuery.query.parameters.mongoOperation;if(!tmpOp){tmpResult.error=new Error('No MongoDB operation generated.');tmpResult.executed=true;return fCallback();}var tmpCollection=tmpDB.collection(tmpOp.collection);var tmpUpdate=replaceSentinels(JSON.parse(JSON.stringify(tmpOp.update)));tmpCollection.updateMany(tmpOp.filter,tmpUpdate).then(function(pUpdateResult){tmpResult.error=null;tmpResult.value=pUpdateResult;tmpResult.executed=true;return fCallback();}).catch(function(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});};var Delete=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('MongoDB').buildDeleteQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No MongoDB connection available.');tmpResult.executed=true;return fCallback();}var tmpOp=pQuery.query.parameters.mongoOperation;var tmpCollection=tmpDB.collection(tmpOp.collection);if(tmpOp.operation==='updateMany'){// Soft delete
|
|
3282
3610
|
var tmpUpdate=replaceSentinels(JSON.parse(JSON.stringify(tmpOp.update)));tmpCollection.updateMany(tmpOp.filter,tmpUpdate).then(function(pUpdateResult){tmpResult.error=null;tmpResult.value=pUpdateResult.modifiedCount;tmpResult.executed=true;return fCallback();}).catch(function(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});}else{// Hard delete
|
|
3283
3611
|
tmpCollection.deleteMany(tmpOp.filter).then(function(pDeleteResult){tmpResult.error=null;tmpResult.value=pDeleteResult.deletedCount;tmpResult.executed=true;return fCallback();}).catch(function(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});}};var Undelete=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('MongoDB').buildUndeleteQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No MongoDB connection available.');tmpResult.executed=true;return fCallback();}var tmpOp=pQuery.query.parameters.mongoOperation;if(!tmpOp||tmpOp.operation==='noop'){tmpResult.error=null;tmpResult.value=0;tmpResult.executed=true;return fCallback();}var tmpCollection=tmpDB.collection(tmpOp.collection);var tmpUpdate=replaceSentinels(JSON.parse(JSON.stringify(tmpOp.update)));tmpCollection.updateMany(tmpOp.filter,tmpUpdate).then(function(pUpdateResult){tmpResult.error=null;tmpResult.value=pUpdateResult.modifiedCount;tmpResult.executed=true;return fCallback();}).catch(function(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});};var Count=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('MongoDB').buildCountQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No MongoDB connection available.');tmpResult.executed=true;return fCallback();}var tmpOp=pQuery.query.parameters.mongoOperation;var tmpCollection=tmpDB.collection(tmpOp.collection);if(tmpOp.distinct&&tmpOp.distinctFields&&tmpOp.distinctFields.length>0){// Use aggregation pipeline for distinct count
|
|
3284
|
-
var tmpGroupId={};for(var i=0;i<tmpOp.distinctFields.length;i++){tmpGroupId[tmpOp.distinctFields[i]]='$'+tmpOp.distinctFields[i];}var tmpPipeline=[{$match:tmpOp.filter},{$group:{_id:tmpGroupId}},{$count:'RowCount'}];tmpCollection.aggregate(tmpPipeline).toArray().then(function(pResults){tmpResult.error=null;tmpResult.value=pResults.length>0?pResults[0].RowCount:0;tmpResult.executed=true;return fCallback();}).catch(function(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});}else{tmpCollection.countDocuments(tmpOp.filter).then(function(pCount){tmpResult.error=null;tmpResult.value=pCount;tmpResult.executed=true;return fCallback();}).catch(function(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});}};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:getProvider,providerCreatesSupported:true,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],
|
|
3612
|
+
var tmpGroupId={};for(var i=0;i<tmpOp.distinctFields.length;i++){tmpGroupId[tmpOp.distinctFields[i]]='$'+tmpOp.distinctFields[i];}var tmpPipeline=[{$match:tmpOp.filter},{$group:{_id:tmpGroupId}},{$count:'RowCount'}];tmpCollection.aggregate(tmpPipeline).toArray().then(function(pResults){tmpResult.error=null;tmpResult.value=pResults.length>0?pResults[0].RowCount:0;tmpResult.executed=true;return fCallback();}).catch(function(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});}else{tmpCollection.countDocuments(tmpOp.filter).then(function(pCount){tmpResult.error=null;tmpResult.value=pCount;tmpResult.executed=true;return fCallback();}).catch(function(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;return fCallback();});}};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:getProvider,providerCreatesSupported:true,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],150:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3285
3613
|
/**
|
|
3286
3614
|
* @license MIT
|
|
3287
3615
|
* @author <steven@velozo.com>
|
|
@@ -3307,7 +3635,7 @@ function(pError,pRows){pDBConnection.release();tmpResult.error=pError;tmpResult.
|
|
|
3307
3635
|
function(pError,pRows){pDBConnection.release();tmpResult.error=pError;tmpResult.value=pRows;tmpResult.executed=true;return fCallback();});});};var Delete=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('MySQL').buildDeleteQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}var tmpPool=getSQLPool();if(!tmpPool){tmpResult.error=new Error('No MySQL connection pool available.');tmpResult.executed=true;return fCallback();}tmpPool.getConnection(function(pError,pDBConnection){if(pError||!pDBConnection){_Fable.log.error('Error getting connection from MySQL pool during delete query: '+(pError?pError.message:'no connection returned'),{Body:pQuery.query.body});tmpResult.error=pError||new Error('No connection returned from pool.');tmpResult.executed=true;return fCallback();}pDBConnection.query(pQuery.query.body,pQuery.query.parameters,// The MySQL library also returns the Fields as the third parameter
|
|
3308
3636
|
function(pError,pRows){pDBConnection.release();tmpResult.error=pError;tmpResult.value=false;try{tmpResult.value=pRows.affectedRows;}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting affected rowcount during delete query',{Body:pQuery.query.body,Parameters:pQuery.query.parameters});}tmpResult.executed=true;return fCallback();});});};var Undelete=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('MySQL').buildUndeleteQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}var tmpPool=getSQLPool();if(!tmpPool){tmpResult.error=new Error('No MySQL connection pool available.');tmpResult.executed=true;return fCallback();}tmpPool.getConnection(function(pError,pDBConnection){if(pError||!pDBConnection){_Fable.log.error('Error getting connection from MySQL pool during undelete query: '+(pError?pError.message:'no connection returned'),{Body:pQuery.query.body});tmpResult.error=pError||new Error('No connection returned from pool.');tmpResult.executed=true;return fCallback();}pDBConnection.query(pQuery.query.body,pQuery.query.parameters,// The MySQL library also returns the Fields as the third parameter
|
|
3309
3637
|
function(pError,pRows){pDBConnection.release();tmpResult.error=pError;tmpResult.value=false;try{tmpResult.value=pRows.affectedRows;}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting affected rowcount during delete query',{Body:pQuery.query.body,Parameters:pQuery.query.parameters});}tmpResult.executed=true;return fCallback();});});};var Count=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('MySQL').buildCountQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}var tmpPool=getSQLPool();if(!tmpPool){tmpResult.error=new Error('No MySQL connection pool available.');tmpResult.executed=true;return fCallback();}tmpPool.getConnection(function(pError,pDBConnection){if(pError||!pDBConnection){_Fable.log.error('Error getting connection from MySQL pool during count query: '+(pError?pError.message:'no connection returned'),{Body:pQuery.query.body});tmpResult.error=pError||new Error('No connection returned from pool.');tmpResult.executed=true;return fCallback();}pDBConnection.query(pQuery.query.body,pQuery.query.parameters,// The MySQL library also returns the Fields as the third parameter
|
|
3310
|
-
function(pError,pRows){pDBConnection.release();tmpResult.executed=true;tmpResult.error=pError;tmpResult.value=false;try{tmpResult.value=pRows[0].RowCount;}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting rowcount during count query',{Body:pQuery.query.body,Parameters:pQuery.query.parameters});}return fCallback();});});};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:getProvider,providerCreatesSupported:false,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],
|
|
3638
|
+
function(pError,pRows){pDBConnection.release();tmpResult.executed=true;tmpResult.error=pError;tmpResult.value=false;try{tmpResult.value=pRows[0].RowCount;}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting rowcount during count query',{Body:pQuery.query.body,Parameters:pQuery.query.parameters});}return fCallback();});});};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:getProvider,providerCreatesSupported:false,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],151:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3311
3639
|
/**
|
|
3312
3640
|
* @license MIT
|
|
3313
3641
|
* @author <steven@velozo.com>
|
|
@@ -3323,7 +3651,7 @@ pQuery.parameters.result.executed=true;pQuery.parameters.result.value=[true];fCa
|
|
|
3323
3651
|
pQuery.parameters.result.executed=true;fCallback();};var Delete=function(pQuery,fCallback){// This does nothing because it's the none data provider!
|
|
3324
3652
|
pQuery.parameters.result.executed=true;fCallback();};var Undelete=function(pQuery,fCallback){// This does nothing because it's the none data provider!
|
|
3325
3653
|
pQuery.parameters.result.executed=true;fCallback();};var Count=function(pQuery,fCallback){// This does nothing because it's the none data provider!
|
|
3326
|
-
pQuery.parameters.result.executed=true;fCallback();};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:{},providerCreatesSupported:false,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],
|
|
3654
|
+
pQuery.parameters.result.executed=true;fCallback();};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:{},providerCreatesSupported:false,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],152:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3327
3655
|
/**
|
|
3328
3656
|
* @license MIT
|
|
3329
3657
|
* @author <steven@velozo.com>
|
|
@@ -3354,7 +3682,7 @@ var tmpVirtualColumn=tmpProxyColumns[tmpColumn];try{pObject[tmpVirtualColumn]=ty
|
|
|
3354
3682
|
if(pDBResult&&pDBResult.rows&&pDBResult.rows.length>0){var tmpSchema=Array.isArray(pQuery.query.schema)?pQuery.query.schema:[];var tmpIDColumn=false;for(var i=0;i<tmpSchema.length;i++){if(tmpSchema[i].Type==='AutoIdentity'){tmpIDColumn=tmpSchema[i].Column;break;}}if(tmpIDColumn&&pDBResult.rows[0].hasOwnProperty(tmpIDColumn)){tmpResult.value=pDBResult.rows[0][tmpIDColumn];}else{// Fall back to the first column of the first row
|
|
3355
3683
|
var tmpFirstKey=Object.keys(pDBResult.rows[0])[0];tmpResult.value=pDBResult.rows[0][tmpFirstKey];}}}catch(pErrorGettingID){_Fable.log.warn('Error getting insert ID during create query',{Body:pQuery.query.body,Parameters:pQuery.query.parameters});}tmpResult.executed=true;return fCallback();});};// This is a synchronous read, good for a few records.
|
|
3356
3684
|
var Read=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('PostgreSQL').buildReadQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}var tmpConverted=convertNamedToPositional(pQuery.query.body,pQuery.query.parameters);getSQLPool().query(tmpConverted.text,tmpConverted.values,function(pError,pDBResult){tmpResult.error=pError;tmpResult.value=pDBResult?pDBResult.rows:[];tmpResult.executed=true;return fCallback();});};var Update=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('PostgreSQL').buildUpdateQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}var tmpConverted=convertNamedToPositional(pQuery.query.body,pQuery.query.parameters);getSQLPool().query(tmpConverted.text,tmpConverted.values,function(pError,pDBResult){tmpResult.error=pError;tmpResult.value=pDBResult?pDBResult.rows:[];tmpResult.executed=true;return fCallback();});};var Delete=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('PostgreSQL').buildDeleteQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}var tmpConverted=convertNamedToPositional(pQuery.query.body,pQuery.query.parameters);getSQLPool().query(tmpConverted.text,tmpConverted.values,function(pError,pDBResult){tmpResult.error=pError;tmpResult.value=false;try{tmpResult.value=pDBResult?pDBResult.rowCount:0;}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting affected rowcount during delete query',{Body:pQuery.query.body,Parameters:pQuery.query.parameters});}tmpResult.executed=true;return fCallback();});};var Undelete=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('PostgreSQL').buildUndeleteQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}var tmpConverted=convertNamedToPositional(pQuery.query.body,pQuery.query.parameters);getSQLPool().query(tmpConverted.text,tmpConverted.values,function(pError,pDBResult){tmpResult.error=pError;tmpResult.value=false;try{tmpResult.value=pDBResult?pDBResult.rowCount:0;}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting affected rowcount during undelete query',{Body:pQuery.query.body,Parameters:pQuery.query.parameters});}tmpResult.executed=true;return fCallback();});};var Count=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('PostgreSQL').buildCountQuery();if(pQuery.logLevel>0||_GlobalLogLevel>0){_Fable.log.trace(pQuery.query.body,pQuery.query.parameters);}var tmpConverted=convertNamedToPositional(pQuery.query.body,pQuery.query.parameters);getSQLPool().query(tmpConverted.text,tmpConverted.values,function(pError,pDBResult){tmpResult.executed=true;tmpResult.error=pError;tmpResult.value=false;try{// PostgreSQL COUNT(*) returns bigint, which the pg library delivers as a string
|
|
3357
|
-
tmpResult.value=parseInt(pDBResult.rows[0].rowcount,10);}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting rowcount during count query',{Body:pQuery.query.body,Parameters:pQuery.query.parameters});}return fCallback();});};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:getProvider,providerCreatesSupported:false,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],
|
|
3685
|
+
tmpResult.value=parseInt(pDBResult.rows[0].rowcount,10);}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting rowcount during count query',{Body:pQuery.query.body,Parameters:pQuery.query.parameters});}return fCallback();});};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:getProvider,providerCreatesSupported:false,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],153:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3358
3686
|
/**
|
|
3359
3687
|
* Meadow provider that relays CRUD operations to a remote retold-databeacon
|
|
3360
3688
|
* agent through an Ultravisor mesh. Structurally parallel to the
|
|
@@ -3381,7 +3709,7 @@ var tmpIdentityColumn=`ID${pQuery.parameters.scope}`;if(tmpResult.value&&tmpResu
|
|
|
3381
3709
|
// so downstream Meadow-Read.js behavior gets the shape it expects.
|
|
3382
3710
|
if(pQuery.query.body&&pQuery.query.body.startsWith(`${pQuery.parameters.scope}/`)){if(tmpResult.value!==undefined&&tmpResult.value!==null){tmpResult.value=[tmpResult.value];}}return fCallback();});};var Update=function(pQuery,fCallback){pQuery.setDialect(_Dialect).buildUpdateQuery();if(!pQuery.query.records||pQuery.query.records.length===0){pQuery.parameters.result.error='No records passed for proxying to Retold-DataBeacon.';return fCallback();}dispatch(pQuery,'PUT',function(){// Meadow Update waterfall's typeof check expects an object.
|
|
3383
3711
|
// Leave tmpResult.value as-is.
|
|
3384
|
-
return fCallback();});};var Delete=function(pQuery,fCallback){pQuery.setDialect(_Dialect).buildDeleteQuery();dispatch(pQuery,'DELETE',function(){var tmpResult=pQuery.parameters.result;if(tmpResult.value&&tmpResult.value.hasOwnProperty('Count')){tmpResult.value=tmpResult.value.Count;}return fCallback();});};var Count=function(pQuery,fCallback){pQuery.setDialect(_Dialect).buildCountQuery();dispatch(pQuery,'GET',function(){var tmpResult=pQuery.parameters.result;try{tmpResult.value=tmpResult.value.Count;}catch(pErrorGettingRowCount){tmpResult.value=-1;_Fable.log.warn('MeadowProviderRetoldDataBeacon: error getting rowcount during count query',{Body:pQuery.query.body,Parameters:pQuery.query.parameters});}return fCallback();});};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Count:Count,getProvider:{},providerCreatesSupported:false,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],
|
|
3712
|
+
return fCallback();});};var Delete=function(pQuery,fCallback){pQuery.setDialect(_Dialect).buildDeleteQuery();dispatch(pQuery,'DELETE',function(){var tmpResult=pQuery.parameters.result;if(tmpResult.value&&tmpResult.value.hasOwnProperty('Count')){tmpResult.value=tmpResult.value.Count;}return fCallback();});};var Count=function(pQuery,fCallback){pQuery.setDialect(_Dialect).buildCountQuery();dispatch(pQuery,'GET',function(){var tmpResult=pQuery.parameters.result;try{tmpResult.value=tmpResult.value.Count;}catch(pErrorGettingRowCount){tmpResult.value=-1;_Fable.log.warn('MeadowProviderRetoldDataBeacon: error getting rowcount during count query',{Body:pQuery.query.body,Parameters:pQuery.query.parameters});}return fCallback();});};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Count:Count,getProvider:{},providerCreatesSupported:false,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],154:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3385
3713
|
/**
|
|
3386
3714
|
* @license MIT
|
|
3387
3715
|
* @author <steven@velozo.com>
|
|
@@ -3510,7 +3838,7 @@ var tmpFilterArray=buildFilterArray(pQuery,true);readMatchingRecords(tmpDB,_Scop
|
|
|
3510
3838
|
readMatchingRecords(tmpDB,_Scope,tmpFilterArray,false,false,false,function(pReadError,pRecords){if(pReadError){tmpResult.error=pReadError;tmpResult.value=false;tmpResult.executed=true;return fCallback();}tmpResult.error=null;tmpResult.value=pRecords.length;tmpResult.executed=true;return fCallback();});};// ============================================================
|
|
3511
3839
|
// Provider Export
|
|
3512
3840
|
// ============================================================
|
|
3513
|
-
var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,setSchema:setSchema,getProvider:getProvider,providerCreatesSupported:true,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],
|
|
3841
|
+
var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,setSchema:setSchema,getProvider:getProvider,providerCreatesSupported:true,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],155:[function(require,module,exports){/**
|
|
3514
3842
|
* Meadow Provider - SQLite (via better-sqlite3)
|
|
3515
3843
|
*
|
|
3516
3844
|
* @license MIT
|
|
@@ -3548,7 +3876,7 @@ var marshalRecordFromSourceToObject=function(pObject,pRecord,pSchema){// Build l
|
|
|
3548
3876
|
var tmpJsonColumns={};var tmpProxyColumns={};if(Array.isArray(pSchema)){for(var s=0;s<pSchema.length;s++){if(pSchema[s].Type==='JSON'){tmpJsonColumns[pSchema[s].Column]=true;}else if(pSchema[s].Type==='JSONProxy'&&pSchema[s].StorageColumn){tmpProxyColumns[pSchema[s].StorageColumn]=pSchema[s].Column;}}}for(var tmpColumn in pRecord){if(tmpJsonColumns[tmpColumn]){// JSON type: parse string from DB into object on the same column name
|
|
3549
3877
|
try{pObject[tmpColumn]=typeof pRecord[tmpColumn]==='string'?JSON.parse(pRecord[tmpColumn]):pRecord[tmpColumn]||{};}catch(pParseError){pObject[tmpColumn]={};}}else if(tmpProxyColumns.hasOwnProperty(tmpColumn)){// JSONProxy: storage column -> parse and assign to virtual column name
|
|
3550
3878
|
var tmpVirtualColumn=tmpProxyColumns[tmpColumn];try{pObject[tmpVirtualColumn]=typeof pRecord[tmpColumn]==='string'?JSON.parse(pRecord[tmpColumn]):pRecord[tmpColumn]||{};}catch(pParseError){pObject[tmpVirtualColumn]={};}// Do NOT copy the storage column to the output object
|
|
3551
|
-
}else{pObject[tmpColumn]=pRecord[tmpColumn];}}};var Create=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('SQLite').buildCreateQuery();var tmpQueryBody=fixDateFunctions(pQuery.query.body);coerceParameters(pQuery.query.parameters);if(pQuery.logLevel>0){_Fable.log.trace(tmpQueryBody,pQuery.query.parameters);}try{var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No SQLite database connection available.');tmpResult.executed=true;return fCallback();}var tmpStatement=tmpDB.prepare(tmpQueryBody);var tmpInfo=tmpStatement.run(pQuery.query.parameters);tmpResult.error=null;tmpResult.value=false;try{tmpResult.value=Number(tmpInfo.lastInsertRowid);}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting insert ID during create query',{Body:tmpQueryBody,Parameters:pQuery.query.parameters});}tmpResult.executed=true;}catch(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;}return fCallback();};var Read=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('SQLite').buildReadQuery();var tmpQueryBody=fixDateFunctions(pQuery.query.body);coerceParameters(pQuery.query.parameters);if(pQuery.logLevel>0){_Fable.log.trace(tmpQueryBody,pQuery.query.parameters);}try{var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No SQLite database connection available.');tmpResult.executed=true;return fCallback();}var tmpStatement=tmpDB.prepare(tmpQueryBody);var tmpRows=tmpStatement.all(pQuery.query.parameters);tmpResult.error=null;tmpResult.value=tmpRows;tmpResult.executed=true;}catch(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;}return fCallback();};var Update=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('SQLite').buildUpdateQuery();var tmpQueryBody=fixDateFunctions(pQuery.query.body);coerceParameters(pQuery.query.parameters);if(pQuery.logLevel>0){_Fable.log.trace(tmpQueryBody,pQuery.query.parameters);}try{var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No SQLite database connection available.');tmpResult.executed=true;return fCallback();}var tmpStatement=tmpDB.prepare(tmpQueryBody);var tmpInfo=tmpStatement.run(pQuery.query.parameters);tmpResult.error=null;tmpResult.value=tmpInfo;tmpResult.executed=true;}catch(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;}return fCallback();};var Delete=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('SQLite').buildDeleteQuery();var tmpQueryBody=fixDateFunctions(pQuery.query.body);coerceParameters(pQuery.query.parameters);if(pQuery.logLevel>0){_Fable.log.trace(tmpQueryBody,pQuery.query.parameters);}try{var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No SQLite database connection available.');tmpResult.executed=true;return fCallback();}var tmpStatement=tmpDB.prepare(tmpQueryBody);var tmpInfo=tmpStatement.run(pQuery.query.parameters);tmpResult.error=null;tmpResult.value=false;try{tmpResult.value=tmpInfo.changes;}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting affected rowcount during delete query',{Body:tmpQueryBody,Parameters:pQuery.query.parameters});}tmpResult.executed=true;}catch(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;}return fCallback();};var Undelete=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('SQLite').buildUndeleteQuery();var tmpQueryBody=fixDateFunctions(pQuery.query.body);coerceParameters(pQuery.query.parameters);if(pQuery.logLevel>0){_Fable.log.trace(tmpQueryBody,pQuery.query.parameters);}try{var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No SQLite database connection available.');tmpResult.executed=true;return fCallback();}var tmpStatement=tmpDB.prepare(tmpQueryBody);var tmpInfo=tmpStatement.run(pQuery.query.parameters);tmpResult.error=null;tmpResult.value=false;try{tmpResult.value=tmpInfo.changes;}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting affected rowcount during undelete query',{Body:tmpQueryBody,Parameters:pQuery.query.parameters});}tmpResult.executed=true;}catch(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;}return fCallback();};var Count=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('SQLite').buildCountQuery();var tmpQueryBody=fixDateFunctions(pQuery.query.body);coerceParameters(pQuery.query.parameters);if(pQuery.logLevel>0){_Fable.log.trace(tmpQueryBody,pQuery.query.parameters);}try{var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No SQLite database connection available.');tmpResult.executed=true;return fCallback();}var tmpStatement=tmpDB.prepare(tmpQueryBody);var tmpRows=tmpStatement.all(pQuery.query.parameters);tmpResult.executed=true;tmpResult.error=null;tmpResult.value=false;try{tmpResult.value=tmpRows[0].RowCount;}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting rowcount during count query',{Body:tmpQueryBody,Parameters:pQuery.query.parameters});}}catch(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;}return fCallback();};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:getProvider,providerCreatesSupported:true,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],
|
|
3879
|
+
}else{pObject[tmpColumn]=pRecord[tmpColumn];}}};var Create=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('SQLite').buildCreateQuery();var tmpQueryBody=fixDateFunctions(pQuery.query.body);coerceParameters(pQuery.query.parameters);if(pQuery.logLevel>0){_Fable.log.trace(tmpQueryBody,pQuery.query.parameters);}try{var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No SQLite database connection available.');tmpResult.executed=true;return fCallback();}var tmpStatement=tmpDB.prepare(tmpQueryBody);var tmpInfo=tmpStatement.run(pQuery.query.parameters);tmpResult.error=null;tmpResult.value=false;try{tmpResult.value=Number(tmpInfo.lastInsertRowid);}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting insert ID during create query',{Body:tmpQueryBody,Parameters:pQuery.query.parameters});}tmpResult.executed=true;}catch(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;}return fCallback();};var Read=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('SQLite').buildReadQuery();var tmpQueryBody=fixDateFunctions(pQuery.query.body);coerceParameters(pQuery.query.parameters);if(pQuery.logLevel>0){_Fable.log.trace(tmpQueryBody,pQuery.query.parameters);}try{var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No SQLite database connection available.');tmpResult.executed=true;return fCallback();}var tmpStatement=tmpDB.prepare(tmpQueryBody);var tmpRows=tmpStatement.all(pQuery.query.parameters);tmpResult.error=null;tmpResult.value=tmpRows;tmpResult.executed=true;}catch(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;}return fCallback();};var Update=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('SQLite').buildUpdateQuery();var tmpQueryBody=fixDateFunctions(pQuery.query.body);coerceParameters(pQuery.query.parameters);if(pQuery.logLevel>0){_Fable.log.trace(tmpQueryBody,pQuery.query.parameters);}try{var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No SQLite database connection available.');tmpResult.executed=true;return fCallback();}var tmpStatement=tmpDB.prepare(tmpQueryBody);var tmpInfo=tmpStatement.run(pQuery.query.parameters);tmpResult.error=null;tmpResult.value=tmpInfo;tmpResult.executed=true;}catch(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;}return fCallback();};var Delete=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('SQLite').buildDeleteQuery();var tmpQueryBody=fixDateFunctions(pQuery.query.body);coerceParameters(pQuery.query.parameters);if(pQuery.logLevel>0){_Fable.log.trace(tmpQueryBody,pQuery.query.parameters);}try{var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No SQLite database connection available.');tmpResult.executed=true;return fCallback();}var tmpStatement=tmpDB.prepare(tmpQueryBody);var tmpInfo=tmpStatement.run(pQuery.query.parameters);tmpResult.error=null;tmpResult.value=false;try{tmpResult.value=tmpInfo.changes;}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting affected rowcount during delete query',{Body:tmpQueryBody,Parameters:pQuery.query.parameters});}tmpResult.executed=true;}catch(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;}return fCallback();};var Undelete=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('SQLite').buildUndeleteQuery();var tmpQueryBody=fixDateFunctions(pQuery.query.body);coerceParameters(pQuery.query.parameters);if(pQuery.logLevel>0){_Fable.log.trace(tmpQueryBody,pQuery.query.parameters);}try{var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No SQLite database connection available.');tmpResult.executed=true;return fCallback();}var tmpStatement=tmpDB.prepare(tmpQueryBody);var tmpInfo=tmpStatement.run(pQuery.query.parameters);tmpResult.error=null;tmpResult.value=false;try{tmpResult.value=tmpInfo.changes;}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting affected rowcount during undelete query',{Body:tmpQueryBody,Parameters:pQuery.query.parameters});}tmpResult.executed=true;}catch(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;}return fCallback();};var Count=function(pQuery,fCallback){var tmpResult=pQuery.parameters.result;pQuery.setDialect('SQLite').buildCountQuery();var tmpQueryBody=fixDateFunctions(pQuery.query.body);coerceParameters(pQuery.query.parameters);if(pQuery.logLevel>0){_Fable.log.trace(tmpQueryBody,pQuery.query.parameters);}try{var tmpDB=getDB();if(!tmpDB){tmpResult.error=new Error('No SQLite database connection available.');tmpResult.executed=true;return fCallback();}var tmpStatement=tmpDB.prepare(tmpQueryBody);var tmpRows=tmpStatement.all(pQuery.query.parameters);tmpResult.executed=true;tmpResult.error=null;tmpResult.value=false;try{tmpResult.value=tmpRows[0].RowCount;}catch(pErrorGettingRowcount){_Fable.log.warn('Error getting rowcount during count query',{Body:tmpQueryBody,Parameters:pQuery.query.parameters});}}catch(pError){tmpResult.error=pError;tmpResult.value=false;tmpResult.executed=true;}return fCallback();};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:getProvider,providerCreatesSupported:true,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],156:[function(require,module,exports){// ##### Part of the **[retold](https://stevenvelozo.github.io/retold/)** system
|
|
3552
3880
|
/**
|
|
3553
3881
|
* @license MIT
|
|
3554
3882
|
* @author <steven@velozo.com>
|
|
@@ -3585,7 +3913,7 @@ var tmpSearchQuery=tmpClient.query().q(tmpOp.filterQuery||'*:*').fl('id').rows(1
|
|
|
3585
3913
|
// Use JSON facet API for distinct count
|
|
3586
3914
|
var tmpFacetFields={};for(var i=0;i<tmpOp.distinctFields.length;i++){tmpFacetFields[tmpOp.distinctFields[i]]='$'+tmpOp.distinctFields[i];}// Use group.field for distinct counting
|
|
3587
3915
|
tmpSearchQuery=tmpSearchQuery.groupBy(tmpOp.distinctFields[0]).groupNGroups(true);}tmpClient.search(tmpSearchQuery,function(pSearchError,pSearchResult){if(pSearchError){tmpResult.error=pSearchError;tmpResult.value=false;tmpResult.executed=true;return fCallback();}tmpResult.error=null;if(tmpOp.distinct&&pSearchResult&&pSearchResult.grouped){// Get ngroups from grouped response
|
|
3588
|
-
var tmpGroupKeys=Object.keys(pSearchResult.grouped);if(tmpGroupKeys.length>0){tmpResult.value=pSearchResult.grouped[tmpGroupKeys[0]].ngroups||0;}else{tmpResult.value=0;}}else{tmpResult.value=pSearchResult&&pSearchResult.response?pSearchResult.response.numFound:0;}tmpResult.executed=true;return fCallback();});};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:getProvider,providerCreatesSupported:true,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],
|
|
3916
|
+
var tmpGroupKeys=Object.keys(pSearchResult.grouped);if(tmpGroupKeys.length>0){tmpResult.value=pSearchResult.grouped[tmpGroupKeys[0]].ngroups||0;}else{tmpResult.value=0;}}else{tmpResult.value=pSearchResult&&pSearchResult.response?pSearchResult.response.numFound:0;}tmpResult.executed=true;return fCallback();});};var tmpNewProvider={marshalRecordFromSourceToObject:marshalRecordFromSourceToObject,Create:Create,Read:Read,Update:Update,Delete:Delete,Undelete:Undelete,Count:Count,getProvider:getProvider,providerCreatesSupported:true,new:createNew};return tmpNewProvider;}return createNew();};module.exports=new MeadowProvider();},{}],157:[function(require,module,exports){(function(global){(function(){var hasMap=typeof Map==='function'&&Map.prototype;var mapSizeDescriptor=Object.getOwnPropertyDescriptor&&hasMap?Object.getOwnPropertyDescriptor(Map.prototype,'size'):null;var mapSize=hasMap&&mapSizeDescriptor&&typeof mapSizeDescriptor.get==='function'?mapSizeDescriptor.get:null;var mapForEach=hasMap&&Map.prototype.forEach;var hasSet=typeof Set==='function'&&Set.prototype;var setSizeDescriptor=Object.getOwnPropertyDescriptor&&hasSet?Object.getOwnPropertyDescriptor(Set.prototype,'size'):null;var setSize=hasSet&&setSizeDescriptor&&typeof setSizeDescriptor.get==='function'?setSizeDescriptor.get:null;var setForEach=hasSet&&Set.prototype.forEach;var hasWeakMap=typeof WeakMap==='function'&&WeakMap.prototype;var weakMapHas=hasWeakMap?WeakMap.prototype.has:null;var hasWeakSet=typeof WeakSet==='function'&&WeakSet.prototype;var weakSetHas=hasWeakSet?WeakSet.prototype.has:null;var hasWeakRef=typeof WeakRef==='function'&&WeakRef.prototype;var weakRefDeref=hasWeakRef?WeakRef.prototype.deref:null;var booleanValueOf=Boolean.prototype.valueOf;var objectToString=Object.prototype.toString;var functionToString=Function.prototype.toString;var $match=String.prototype.match;var $slice=String.prototype.slice;var $replace=String.prototype.replace;var $toUpperCase=String.prototype.toUpperCase;var $toLowerCase=String.prototype.toLowerCase;var $test=RegExp.prototype.test;var $concat=Array.prototype.concat;var $join=Array.prototype.join;var $arrSlice=Array.prototype.slice;var $floor=Math.floor;var bigIntValueOf=typeof BigInt==='function'?BigInt.prototype.valueOf:null;var gOPS=Object.getOwnPropertySymbols;var symToString=typeof Symbol==='function'&&typeof Symbol.iterator==='symbol'?Symbol.prototype.toString:null;var hasShammedSymbols=typeof Symbol==='function'&&typeof Symbol.iterator==='object';// ie, `has-tostringtag/shams
|
|
3589
3917
|
var toStringTag=typeof Symbol==='function'&&Symbol.toStringTag&&(typeof Symbol.toStringTag===hasShammedSymbols?'object':'symbol')?Symbol.toStringTag:null;var isEnumerable=Object.prototype.propertyIsEnumerable;var gPO=(typeof Reflect==='function'?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype// eslint-disable-line no-proto
|
|
3590
3918
|
?function(O){return O.__proto__;// eslint-disable-line no-proto
|
|
3591
3919
|
}:null);function addNumericSeparator(num,str){if(num===Infinity||num===-Infinity||num!==num||num&&num>-1000&&num<1000||$test.call(/e/,str)){return str;}var sepRegex=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof num==='number'){var int=num<0?-$floor(-num):$floor(num);// trunc(num)
|
|
@@ -3602,7 +3930,7 @@ if(!has(obj,key)){continue;}// eslint-disable-line no-restricted-syntax, no-cont
|
|
|
3602
3930
|
if(isArr&&String(Number(key))===key&&key<obj.length){continue;}// eslint-disable-line no-restricted-syntax, no-continue
|
|
3603
3931
|
if(hasShammedSymbols&&symMap['$'+key]instanceof Symbol){// this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section
|
|
3604
3932
|
continue;// eslint-disable-line no-restricted-syntax, no-continue
|
|
3605
|
-
}else if($test.call(/[^\w$]/,key)){xs.push(inspect(key,obj)+': '+inspect(obj[key],obj));}else{xs.push(key+': '+inspect(obj[key],obj));}}if(typeof gOPS==='function'){for(var j=0;j<syms.length;j++){if(isEnumerable.call(obj,syms[j])){xs.push('['+inspect(syms[j])+']: '+inspect(obj[syms[j]],obj));}}}return xs;}}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"./util.inspect":
|
|
3933
|
+
}else if($test.call(/[^\w$]/,key)){xs.push(inspect(key,obj)+': '+inspect(obj[key],obj));}else{xs.push(key+': '+inspect(obj[key],obj));}}if(typeof gOPS==='function'){for(var j=0;j<syms.length;j++){if(isEnumerable.call(obj,syms[j])){xs.push('['+inspect(syms[j])+']: '+inspect(obj[syms[j]],obj));}}}return xs;}}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"./util.inspect":55}],158:[function(require,module,exports){var wrappy=require('wrappy');module.exports=wrappy(once);module.exports.strict=wrappy(onceStrict);once.proto=once(function(){Object.defineProperty(Function.prototype,'once',{value:function(){return once(this);},configurable:true});Object.defineProperty(Function.prototype,'onceStrict',{value:function(){return onceStrict(this);},configurable:true});});function once(fn){var f=function(){if(f.called)return f.value;f.called=true;return f.value=fn.apply(this,arguments);};f.called=false;return f;}function onceStrict(fn){var f=function(){if(f.called)throw new Error(f.onceError);f.called=true;return f.value=fn.apply(this,arguments);};var name=fn.name||'Function wrapped with `once`';f.onceError=name+" shouldn't be called more than once";f.called=false;return f;}},{"wrappy":223}],159:[function(require,module,exports){'use strict';/** @type {import('.')} */module.exports=['Float16Array','Float32Array','Float64Array','Int8Array','Int16Array','Int32Array','Uint8Array','Uint8ClampedArray','Uint16Array','Uint32Array','BigInt64Array','BigUint64Array'];},{}],160:[function(require,module,exports){// shim for using process in browser
|
|
3606
3934
|
var process=module.exports={};// cached from whatever global is present so that test runners that stub it
|
|
3607
3935
|
// don't break things. But we need to wrap it in a try catch in case it is
|
|
3608
3936
|
// wrapped in strict mode code which doesn't define any globals. It's inside a
|
|
@@ -3620,7 +3948,7 @@ return cachedClearTimeout.call(null,marker);}catch(e){// same as above but when
|
|
|
3620
3948
|
// Some versions of I.E. have different rules for clearTimeout vs setTimeout
|
|
3621
3949
|
return cachedClearTimeout.call(this,marker);}}}var queue=[];var draining=false;var currentQueue;var queueIndex=-1;function cleanUpNextTick(){if(!draining||!currentQueue){return;}draining=false;if(currentQueue.length){queue=currentQueue.concat(queue);}else{queueIndex=-1;}if(queue.length){drainQueue();}}function drainQueue(){if(draining){return;}var timeout=runTimeout(cleanUpNextTick);draining=true;var len=queue.length;while(len){currentQueue=queue;queue=[];while(++queueIndex<len){if(currentQueue){currentQueue[queueIndex].run();}}queueIndex=-1;len=queue.length;}currentQueue=null;draining=false;runClearTimeout(timeout);}process.nextTick=function(fun){var args=new Array(arguments.length-1);if(arguments.length>1){for(var i=1;i<arguments.length;i++){args[i-1]=arguments[i];}}queue.push(new Item(fun,args));if(queue.length===1&&!draining){runTimeout(drainQueue);}};// v8 likes predictible objects
|
|
3622
3950
|
function Item(fun,array){this.fun=fun;this.array=array;}Item.prototype.run=function(){this.fun.apply(null,this.array);};process.title='browser';process.browser=true;process.env={};process.argv=[];process.version='';// empty string to avoid regexp issues
|
|
3623
|
-
process.versions={};function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.prependListener=noop;process.prependOnceListener=noop;process.listeners=function(name){return[];};process.binding=function(name){throw new Error('process.binding is not supported');};process.cwd=function(){return'/';};process.chdir=function(dir){throw new Error('process.chdir is not supported');};process.umask=function(){return 0;};},{}],
|
|
3951
|
+
process.versions={};function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.prependListener=noop;process.prependOnceListener=noop;process.listeners=function(name){return[];};process.binding=function(name){throw new Error('process.binding is not supported');};process.cwd=function(){return'/';};process.chdir=function(dir){throw new Error('process.chdir is not supported');};process.umask=function(){return 0;};},{}],161:[function(require,module,exports){(function(global){(function(){/*! https://mths.be/punycode v1.4.1 by @mathias */;(function(root){/** Detect free variables */var freeExports=typeof exports=='object'&&exports&&!exports.nodeType&&exports;var freeModule=typeof module=='object'&&module&&!module.nodeType&&module;var freeGlobal=typeof global=='object'&&global;if(freeGlobal.global===freeGlobal||freeGlobal.window===freeGlobal||freeGlobal.self===freeGlobal){root=freeGlobal;}/**
|
|
3624
3952
|
* The `punycode` object.
|
|
3625
3953
|
* @name punycode
|
|
3626
3954
|
* @type Object
|
|
@@ -3775,7 +4103,7 @@ for/* no condition */(q=delta,k=base;;k+=base){t=k<=bias?tMin:k>=bias+tMax?tMax:
|
|
|
3775
4103
|
if(typeof define=='function'&&typeof define.amd=='object'&&define.amd){define('punycode',function(){return punycode;});}else if(freeExports&&freeModule){if(module.exports==freeExports){// in Node.js, io.js, or RingoJS v0.8.0+
|
|
3776
4104
|
freeModule.exports=punycode;}else{// in Narwhal or RingoJS v0.7.0-
|
|
3777
4105
|
for(key in punycode){punycode.hasOwnProperty(key)&&(freeExports[key]=punycode[key]);}}}else{// in Rhino or a web browser
|
|
3778
|
-
root.punycode=punycode;}})(this);}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{}],
|
|
4106
|
+
root.punycode=punycode;}})(this);}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{}],162:[function(require,module,exports){'use strict';var replace=String.prototype.replace;var percentTwenties=/%20/g;var Format={RFC1738:'RFC1738',RFC3986:'RFC3986'};module.exports={'default':Format.RFC3986,formatters:{RFC1738:function(value){return replace.call(value,percentTwenties,'+');},RFC3986:function(value){return String(value);}},RFC1738:Format.RFC1738,RFC3986:Format.RFC3986};},{}],163:[function(require,module,exports){'use strict';var stringify=require('./stringify');var parse=require('./parse');var formats=require('./formats');module.exports={formats:formats,parse:parse,stringify:stringify};},{"./formats":162,"./parse":164,"./stringify":165}],164:[function(require,module,exports){'use strict';var utils=require('./utils');var has=Object.prototype.hasOwnProperty;var isArray=Array.isArray;var defaults={allowDots:false,allowEmptyArrays:false,allowPrototypes:false,allowSparse:false,arrayLimit:20,charset:'utf-8',charsetSentinel:false,comma:false,decodeDotInKeys:false,decoder:utils.decode,delimiter:'&',depth:5,duplicates:'combine',ignoreQueryPrefix:false,interpretNumericEntities:false,parameterLimit:1000,parseArrays:true,plainObjects:false,strictDepth:false,strictMerge:true,strictNullHandling:false,throwOnLimitExceeded:false};var interpretNumericEntities=function(str){return str.replace(/&#(\d+);/g,function($0,numberStr){return String.fromCharCode(parseInt(numberStr,10));});};var parseArrayValue=function(val,options,currentArrayLength){if(val&&typeof val==='string'&&options.comma&&val.indexOf(',')>-1){return val.split(',');}if(options.throwOnLimitExceeded&¤tArrayLength>=options.arrayLimit){throw new RangeError('Array limit exceeded. Only '+options.arrayLimit+' element'+(options.arrayLimit===1?'':'s')+' allowed in an array.');}return val;};// This is what browsers will submit when the ✓ character occurs in an
|
|
3779
4107
|
// application/x-www-form-urlencoded body and the encoding of the page containing
|
|
3780
4108
|
// the form is iso-8859-1, or when the submitted form has an accept-charset
|
|
3781
4109
|
// attribute of iso-8859-1. Presumably also with other charsets that do not contain
|
|
@@ -3788,13 +4116,13 @@ var i;var charset=options.charset;if(options.charsetSentinel){for(i=0;i<parts.le
|
|
|
3788
4116
|
}}}for(i=0;i<parts.length;++i){if(i===skipIndex){continue;}var part=parts[i];var bracketEqualsPos=part.indexOf(']=');var pos=bracketEqualsPos===-1?part.indexOf('='):bracketEqualsPos+1;var key;var val;if(pos===-1){key=options.decoder(part,defaults.decoder,charset,'key');val=options.strictNullHandling?null:'';}else{key=options.decoder(part.slice(0,pos),defaults.decoder,charset,'key');if(key!==null){val=utils.maybeMap(parseArrayValue(part.slice(pos+1),options,isArray(obj[key])?obj[key].length:0),function(encodedVal){return options.decoder(encodedVal,defaults.decoder,charset,'value');});}}if(val&&options.interpretNumericEntities&&charset==='iso-8859-1'){val=interpretNumericEntities(String(val));}if(part.indexOf('[]=')>-1){val=isArray(val)?[val]:val;}if(options.comma&&isArray(val)&&val.length>options.arrayLimit){if(options.throwOnLimitExceeded){throw new RangeError('Array limit exceeded. Only '+options.arrayLimit+' element'+(options.arrayLimit===1?'':'s')+' allowed in an array.');}val=utils.combine([],val,options.arrayLimit,options.plainObjects);}if(key!==null){var existing=has.call(obj,key);if(existing&&(options.duplicates==='combine'||part.indexOf('[]=')>-1)){obj[key]=utils.combine(obj[key],val,options.arrayLimit,options.plainObjects);}else if(!existing||options.duplicates==='last'){obj[key]=val;}}}return obj;};var parseObject=function(chain,val,options,valuesParsed){var currentArrayLength=0;if(chain.length>0&&chain[chain.length-1]==='[]'){var parentKey=chain.slice(0,-1).join('');currentArrayLength=Array.isArray(val)&&val[parentKey]?val[parentKey].length:0;}var leaf=valuesParsed?val:parseArrayValue(val,options,currentArrayLength);for(var i=chain.length-1;i>=0;--i){var obj;var root=chain[i];if(root==='[]'&&options.parseArrays){if(utils.isOverflow(leaf)){// leaf is already an overflow object, preserve it
|
|
3789
4117
|
obj=leaf;}else{obj=options.allowEmptyArrays&&(leaf===''||options.strictNullHandling&&leaf===null)?[]:utils.combine([],leaf,options.arrayLimit,options.plainObjects);}}else{obj=options.plainObjects?{__proto__:null}:{};var cleanRoot=root.charAt(0)==='['&&root.charAt(root.length-1)===']'?root.slice(1,-1):root;var decodedRoot=options.decodeDotInKeys?cleanRoot.replace(/%2E/g,'.'):cleanRoot;var index=parseInt(decodedRoot,10);var isValidArrayIndex=!isNaN(index)&&root!==decodedRoot&&String(index)===decodedRoot&&index>=0&&options.parseArrays;if(!options.parseArrays&&decodedRoot===''){obj={0:leaf};}else if(isValidArrayIndex&&index<options.arrayLimit){obj=[];obj[index]=leaf;}else if(isValidArrayIndex&&options.throwOnLimitExceeded){throw new RangeError('Array limit exceeded. Only '+options.arrayLimit+' element'+(options.arrayLimit===1?'':'s')+' allowed in an array.');}else if(isValidArrayIndex){obj[index]=leaf;utils.markOverflow(obj,index);}else if(decodedRoot!=='__proto__'){obj[decodedRoot]=leaf;}}leaf=obj;}return leaf;};var splitKeyIntoSegments=function splitKeyIntoSegments(givenKey,options){var key=options.allowDots?givenKey.replace(/\.([^.[]+)/g,'[$1]'):givenKey;if(options.depth<=0){if(!options.plainObjects&&has.call(Object.prototype,key)){if(!options.allowPrototypes){return;}}return[key];}var brackets=/(\[[^[\]]*])/;var child=/(\[[^[\]]*])/g;var segment=brackets.exec(key);var parent=segment?key.slice(0,segment.index):key;var keys=[];if(parent){if(!options.plainObjects&&has.call(Object.prototype,parent)){if(!options.allowPrototypes){return;}}keys[keys.length]=parent;}var i=0;while((segment=child.exec(key))!==null&&i<options.depth){i+=1;var segmentContent=segment[1].slice(1,-1);if(!options.plainObjects&&has.call(Object.prototype,segmentContent)){if(!options.allowPrototypes){return;}}keys[keys.length]=segment[1];}if(segment){if(options.strictDepth===true){throw new RangeError('Input depth exceeded depth option of '+options.depth+' and strictDepth is true');}keys[keys.length]='['+key.slice(segment.index)+']';}return keys;};var parseKeys=function parseQueryStringKeys(givenKey,val,options,valuesParsed){if(!givenKey){return;}var keys=splitKeyIntoSegments(givenKey,options);if(!keys){return;}return parseObject(keys,val,options,valuesParsed);};var normalizeParseOptions=function normalizeParseOptions(opts){if(!opts){return defaults;}if(typeof opts.allowEmptyArrays!=='undefined'&&typeof opts.allowEmptyArrays!=='boolean'){throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');}if(typeof opts.decodeDotInKeys!=='undefined'&&typeof opts.decodeDotInKeys!=='boolean'){throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');}if(opts.decoder!==null&&typeof opts.decoder!=='undefined'&&typeof opts.decoder!=='function'){throw new TypeError('Decoder has to be a function.');}if(typeof opts.charset!=='undefined'&&opts.charset!=='utf-8'&&opts.charset!=='iso-8859-1'){throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');}if(typeof opts.throwOnLimitExceeded!=='undefined'&&typeof opts.throwOnLimitExceeded!=='boolean'){throw new TypeError('`throwOnLimitExceeded` option must be a boolean');}var charset=typeof opts.charset==='undefined'?defaults.charset:opts.charset;var duplicates=typeof opts.duplicates==='undefined'?defaults.duplicates:opts.duplicates;if(duplicates!=='combine'&&duplicates!=='first'&&duplicates!=='last'){throw new TypeError('The duplicates option must be either combine, first, or last');}var allowDots=typeof opts.allowDots==='undefined'?opts.decodeDotInKeys===true?true:defaults.allowDots:!!opts.allowDots;return{allowDots:allowDots,allowEmptyArrays:typeof opts.allowEmptyArrays==='boolean'?!!opts.allowEmptyArrays:defaults.allowEmptyArrays,allowPrototypes:typeof opts.allowPrototypes==='boolean'?opts.allowPrototypes:defaults.allowPrototypes,allowSparse:typeof opts.allowSparse==='boolean'?opts.allowSparse:defaults.allowSparse,arrayLimit:typeof opts.arrayLimit==='number'?opts.arrayLimit:defaults.arrayLimit,charset:charset,charsetSentinel:typeof opts.charsetSentinel==='boolean'?opts.charsetSentinel:defaults.charsetSentinel,comma:typeof opts.comma==='boolean'?opts.comma:defaults.comma,decodeDotInKeys:typeof opts.decodeDotInKeys==='boolean'?opts.decodeDotInKeys:defaults.decodeDotInKeys,decoder:typeof opts.decoder==='function'?opts.decoder:defaults.decoder,delimiter:typeof opts.delimiter==='string'||utils.isRegExp(opts.delimiter)?opts.delimiter:defaults.delimiter,// eslint-disable-next-line no-implicit-coercion, no-extra-parens
|
|
3790
4118
|
depth:typeof opts.depth==='number'||opts.depth===false?+opts.depth:defaults.depth,duplicates:duplicates,ignoreQueryPrefix:opts.ignoreQueryPrefix===true,interpretNumericEntities:typeof opts.interpretNumericEntities==='boolean'?opts.interpretNumericEntities:defaults.interpretNumericEntities,parameterLimit:typeof opts.parameterLimit==='number'?opts.parameterLimit:defaults.parameterLimit,parseArrays:opts.parseArrays!==false,plainObjects:typeof opts.plainObjects==='boolean'?opts.plainObjects:defaults.plainObjects,strictDepth:typeof opts.strictDepth==='boolean'?!!opts.strictDepth:defaults.strictDepth,strictMerge:typeof opts.strictMerge==='boolean'?!!opts.strictMerge:defaults.strictMerge,strictNullHandling:typeof opts.strictNullHandling==='boolean'?opts.strictNullHandling:defaults.strictNullHandling,throwOnLimitExceeded:typeof opts.throwOnLimitExceeded==='boolean'?opts.throwOnLimitExceeded:false};};module.exports=function(str,opts){var options=normalizeParseOptions(opts);if(str===''||str===null||typeof str==='undefined'){return options.plainObjects?{__proto__:null}:{};}var tempObj=typeof str==='string'?parseValues(str,options):str;var obj=options.plainObjects?{__proto__:null}:{};// Iterate over the keys and setup the new object
|
|
3791
|
-
var keys=Object.keys(tempObj);for(var i=0;i<keys.length;++i){var key=keys[i];var newObj=parseKeys(key,tempObj[key],options,typeof str==='string');obj=utils.merge(obj,newObj,options);}if(options.allowSparse===true){return obj;}return utils.compact(obj);};},{"./utils":
|
|
4119
|
+
var keys=Object.keys(tempObj);for(var i=0;i<keys.length;++i){var key=keys[i];var newObj=parseKeys(key,tempObj[key],options,typeof str==='string');obj=utils.merge(obj,newObj,options);}if(options.allowSparse===true){return obj;}return utils.compact(obj);};},{"./utils":166}],165:[function(require,module,exports){'use strict';var getSideChannel=require('side-channel');var utils=require('./utils');var formats=require('./formats');var has=Object.prototype.hasOwnProperty;var arrayPrefixGenerators={brackets:function brackets(prefix){return prefix+'[]';},comma:'comma',indices:function indices(prefix,key){return prefix+'['+key+']';},repeat:function repeat(prefix){return prefix;}};var isArray=Array.isArray;var push=Array.prototype.push;var pushToArray=function(arr,valueOrArray){push.apply(arr,isArray(valueOrArray)?valueOrArray:[valueOrArray]);};var toISO=Date.prototype.toISOString;var defaultFormat=formats['default'];var defaults={addQueryPrefix:false,allowDots:false,allowEmptyArrays:false,arrayFormat:'indices',charset:'utf-8',charsetSentinel:false,commaRoundTrip:false,delimiter:'&',encode:true,encodeDotInKeys:false,encoder:utils.encode,encodeValuesOnly:false,filter:void undefined,format:defaultFormat,formatter:formats.formatters[defaultFormat],// deprecated
|
|
3792
4120
|
indices:false,serializeDate:function serializeDate(date){return toISO.call(date);},skipNulls:false,strictNullHandling:false};var isNonNullishPrimitive=function isNonNullishPrimitive(v){return typeof v==='string'||typeof v==='number'||typeof v==='boolean'||typeof v==='symbol'||typeof v==='bigint';};var sentinel={};var stringify=function stringify(object,prefix,generateArrayPrefix,commaRoundTrip,allowEmptyArrays,strictNullHandling,skipNulls,encodeDotInKeys,encoder,filter,sort,allowDots,serializeDate,format,formatter,encodeValuesOnly,charset,sideChannel){var obj=object;var tmpSc=sideChannel;var step=0;var findFlag=false;while((tmpSc=tmpSc.get(sentinel))!==void undefined&&!findFlag){// Where object last appeared in the ref tree
|
|
3793
4121
|
var pos=tmpSc.get(object);step+=1;if(typeof pos!=='undefined'){if(pos===step){throw new RangeError('Cyclic object value');}else{findFlag=true;// Break while
|
|
3794
4122
|
}}if(typeof tmpSc.get(sentinel)==='undefined'){step=0;}}if(typeof filter==='function'){obj=filter(prefix,obj);}else if(obj instanceof Date){obj=serializeDate(obj);}else if(generateArrayPrefix==='comma'&&isArray(obj)){obj=utils.maybeMap(obj,function(value){if(value instanceof Date){return serializeDate(value);}return value;});}if(obj===null){if(strictNullHandling){return encoder&&!encodeValuesOnly?encoder(prefix,defaults.encoder,charset,'key',format):prefix;}obj='';}if(isNonNullishPrimitive(obj)||utils.isBuffer(obj)){if(encoder){var keyValue=encodeValuesOnly?prefix:encoder(prefix,defaults.encoder,charset,'key',format);return[formatter(keyValue)+'='+formatter(encoder(obj,defaults.encoder,charset,'value',format))];}return[formatter(prefix)+'='+formatter(String(obj))];}var values=[];if(typeof obj==='undefined'){return values;}var objKeys;if(generateArrayPrefix==='comma'&&isArray(obj)){// we need to join elements in
|
|
3795
4123
|
if(encodeValuesOnly&&encoder){obj=utils.maybeMap(obj,encoder);}objKeys=[{value:obj.length>0?obj.join(',')||null:void undefined}];}else if(isArray(filter)){objKeys=filter;}else{var keys=Object.keys(obj);objKeys=sort?keys.sort(sort):keys;}var encodedPrefix=encodeDotInKeys?String(prefix).replace(/\./g,'%2E'):String(prefix);var adjustedPrefix=commaRoundTrip&&isArray(obj)&&obj.length===1?encodedPrefix+'[]':encodedPrefix;if(allowEmptyArrays&&isArray(obj)&&obj.length===0){return adjustedPrefix+'[]';}for(var j=0;j<objKeys.length;++j){var key=objKeys[j];var value=typeof key==='object'&&key&&typeof key.value!=='undefined'?key.value:obj[key];if(skipNulls&&value===null){continue;}var encodedKey=allowDots&&encodeDotInKeys?String(key).replace(/\./g,'%2E'):String(key);var keyPrefix=isArray(obj)?typeof generateArrayPrefix==='function'?generateArrayPrefix(adjustedPrefix,encodedKey):adjustedPrefix:adjustedPrefix+(allowDots?'.'+encodedKey:'['+encodedKey+']');sideChannel.set(object,step);var valueSideChannel=getSideChannel();valueSideChannel.set(sentinel,sideChannel);pushToArray(values,stringify(value,keyPrefix,generateArrayPrefix,commaRoundTrip,allowEmptyArrays,strictNullHandling,skipNulls,encodeDotInKeys,generateArrayPrefix==='comma'&&encodeValuesOnly&&isArray(obj)?null:encoder,filter,sort,allowDots,serializeDate,format,formatter,encodeValuesOnly,charset,valueSideChannel));}return values;};var normalizeStringifyOptions=function normalizeStringifyOptions(opts){if(!opts){return defaults;}if(typeof opts.allowEmptyArrays!=='undefined'&&typeof opts.allowEmptyArrays!=='boolean'){throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');}if(typeof opts.encodeDotInKeys!=='undefined'&&typeof opts.encodeDotInKeys!=='boolean'){throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');}if(opts.encoder!==null&&typeof opts.encoder!=='undefined'&&typeof opts.encoder!=='function'){throw new TypeError('Encoder has to be a function.');}var charset=opts.charset||defaults.charset;if(typeof opts.charset!=='undefined'&&opts.charset!=='utf-8'&&opts.charset!=='iso-8859-1'){throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');}var format=formats['default'];if(typeof opts.format!=='undefined'){if(!has.call(formats.formatters,opts.format)){throw new TypeError('Unknown format option provided.');}format=opts.format;}var formatter=formats.formatters[format];var filter=defaults.filter;if(typeof opts.filter==='function'||isArray(opts.filter)){filter=opts.filter;}var arrayFormat;if(opts.arrayFormat in arrayPrefixGenerators){arrayFormat=opts.arrayFormat;}else if('indices'in opts){arrayFormat=opts.indices?'indices':'repeat';}else{arrayFormat=defaults.arrayFormat;}if('commaRoundTrip'in opts&&typeof opts.commaRoundTrip!=='boolean'){throw new TypeError('`commaRoundTrip` must be a boolean, or absent');}var allowDots=typeof opts.allowDots==='undefined'?opts.encodeDotInKeys===true?true:defaults.allowDots:!!opts.allowDots;return{addQueryPrefix:typeof opts.addQueryPrefix==='boolean'?opts.addQueryPrefix:defaults.addQueryPrefix,allowDots:allowDots,allowEmptyArrays:typeof opts.allowEmptyArrays==='boolean'?!!opts.allowEmptyArrays:defaults.allowEmptyArrays,arrayFormat:arrayFormat,charset:charset,charsetSentinel:typeof opts.charsetSentinel==='boolean'?opts.charsetSentinel:defaults.charsetSentinel,commaRoundTrip:!!opts.commaRoundTrip,delimiter:typeof opts.delimiter==='undefined'?defaults.delimiter:opts.delimiter,encode:typeof opts.encode==='boolean'?opts.encode:defaults.encode,encodeDotInKeys:typeof opts.encodeDotInKeys==='boolean'?opts.encodeDotInKeys:defaults.encodeDotInKeys,encoder:typeof opts.encoder==='function'?opts.encoder:defaults.encoder,encodeValuesOnly:typeof opts.encodeValuesOnly==='boolean'?opts.encodeValuesOnly:defaults.encodeValuesOnly,filter:filter,format:format,formatter:formatter,serializeDate:typeof opts.serializeDate==='function'?opts.serializeDate:defaults.serializeDate,skipNulls:typeof opts.skipNulls==='boolean'?opts.skipNulls:defaults.skipNulls,sort:typeof opts.sort==='function'?opts.sort:null,strictNullHandling:typeof opts.strictNullHandling==='boolean'?opts.strictNullHandling:defaults.strictNullHandling};};module.exports=function(object,opts){var obj=object;var options=normalizeStringifyOptions(opts);var objKeys;var filter;if(typeof options.filter==='function'){filter=options.filter;obj=filter('',obj);}else if(isArray(options.filter)){filter=options.filter;objKeys=filter;}var keys=[];if(typeof obj!=='object'||obj===null){return'';}var generateArrayPrefix=arrayPrefixGenerators[options.arrayFormat];var commaRoundTrip=generateArrayPrefix==='comma'&&options.commaRoundTrip;if(!objKeys){objKeys=Object.keys(obj);}if(options.sort){objKeys.sort(options.sort);}var sideChannel=getSideChannel();for(var i=0;i<objKeys.length;++i){var key=objKeys[i];var value=obj[key];if(options.skipNulls&&value===null){continue;}pushToArray(keys,stringify(value,key,generateArrayPrefix,commaRoundTrip,options.allowEmptyArrays,options.strictNullHandling,options.skipNulls,options.encodeDotInKeys,options.encode?options.encoder:null,options.filter,options.sort,options.allowDots,options.serializeDate,options.format,options.formatter,options.encodeValuesOnly,options.charset,sideChannel));}var joined=keys.join(options.delimiter);var prefix=options.addQueryPrefix===true?'?':'';if(options.charsetSentinel){if(options.charset==='iso-8859-1'){// encodeURIComponent('✓'), the "numeric entity" representation of a checkmark
|
|
3796
4124
|
prefix+='utf8=%26%2310003%3B&';}else{// encodeURIComponent('✓')
|
|
3797
|
-
prefix+='utf8=%E2%9C%93&';}}return joined.length>0?prefix+joined:'';};},{"./formats":
|
|
4125
|
+
prefix+='utf8=%E2%9C%93&';}}return joined.length>0?prefix+joined:'';};},{"./formats":162,"./utils":166,"side-channel":176}],166:[function(require,module,exports){'use strict';var formats=require('./formats');var getSideChannel=require('side-channel');var has=Object.prototype.hasOwnProperty;var isArray=Array.isArray;// Track objects created from arrayLimit overflow using side-channel
|
|
3798
4126
|
// Stores the current max numeric index for O(1) lookup
|
|
3799
4127
|
var overflowChannel=getSideChannel();var markOverflow=function markOverflow(obj,maxIndex){overflowChannel.set(obj,maxIndex);return obj;};var isOverflow=function isOverflow(obj){return overflowChannel.has(obj);};var getMaxIndex=function getMaxIndex(obj){return overflowChannel.get(obj);};var setMaxIndex=function setMaxIndex(obj,maxIndex){overflowChannel.set(obj,maxIndex);};var hexTable=function(){var array=[];for(var i=0;i<256;++i){array[array.length]='%'+((i<16?'0':'')+i.toString(16)).toUpperCase();}return array;}();var compactQueue=function compactQueue(queue){while(queue.length>1){var item=queue.pop();var obj=item.obj[item.prop];if(isArray(obj)){var compacted=[];for(var j=0;j<obj.length;++j){if(typeof obj[j]!=='undefined'){compacted[compacted.length]=obj[j];}}item.obj[item.prop]=compacted;}}};var arrayToObject=function arrayToObject(source,options){var obj=options&&options.plainObjects?{__proto__:null}:{};for(var i=0;i<source.length;++i){if(typeof source[i]!=='undefined'){obj[i]=source[i];}}return obj;};var merge=function merge(target,source,options){/* eslint no-param-reassign: 0 */if(!source){return target;}if(typeof source!=='object'&&typeof source!=='function'){if(isArray(target)){var nextIndex=target.length;if(options&&typeof options.arrayLimit==='number'&&nextIndex>options.arrayLimit){return markOverflow(arrayToObject(target.concat(source),options),nextIndex);}target[nextIndex]=source;}else if(target&&typeof target==='object'){if(isOverflow(target)){// Add at next numeric index for overflow objects
|
|
3800
4128
|
var newIndex=getMaxIndex(target)+1;target[newIndex]=source;setMaxIndex(target,newIndex);}else if(options&&options.strictMerge){return[target,source];}else if(options&&(options.plainObjects||options.allowPrototypes)||!has.call(Object.prototype,source)){target[source]=true;}}else{return[target,source];}return target;}if(!target||typeof target!=='object'){if(isOverflow(source)){// Create new object with target at 0, source values shifted by 1
|
|
@@ -3811,7 +4139,7 @@ if(str.length===0){return str;}var string=str;if(typeof str==='symbol'){string=S
|
|
|
3811
4139
|
||c>=0x61&&c<=0x7A// A-Z
|
|
3812
4140
|
||format===formats.RFC1738&&(c===0x28||c===0x29)// ( )
|
|
3813
4141
|
){arr[arr.length]=segment.charAt(i);continue;}if(c<0x80){arr[arr.length]=hexTable[c];continue;}if(c<0x800){arr[arr.length]=hexTable[0xC0|c>>6]+hexTable[0x80|c&0x3F];continue;}if(c<0xD800||c>=0xE000){arr[arr.length]=hexTable[0xE0|c>>12]+hexTable[0x80|c>>6&0x3F]+hexTable[0x80|c&0x3F];continue;}i+=1;c=0x10000+((c&0x3FF)<<10|segment.charCodeAt(i)&0x3FF);arr[arr.length]=hexTable[0xF0|c>>18]+hexTable[0x80|c>>12&0x3F]+hexTable[0x80|c>>6&0x3F]+hexTable[0x80|c&0x3F];}out+=arr.join('');}return out;};var compact=function compact(value){var queue=[{obj:{o:value},prop:'o'}];var refs=[];for(var i=0;i<queue.length;++i){var item=queue[i];var obj=item.obj[item.prop];var keys=Object.keys(obj);for(var j=0;j<keys.length;++j){var key=keys[j];var val=obj[key];if(typeof val==='object'&&val!==null&&refs.indexOf(val)===-1){queue[queue.length]={obj:obj,prop:key};refs[refs.length]=val;}}}compactQueue(queue);return value;};var isRegExp=function isRegExp(obj){return Object.prototype.toString.call(obj)==='[object RegExp]';};var isBuffer=function isBuffer(obj){if(!obj||typeof obj!=='object'){return false;}return!!(obj.constructor&&obj.constructor.isBuffer&&obj.constructor.isBuffer(obj));};var combine=function combine(a,b,arrayLimit,plainObjects){// If 'a' is already an overflow object, add to it
|
|
3814
|
-
if(isOverflow(a)){var newIndex=getMaxIndex(a)+1;a[newIndex]=b;setMaxIndex(a,newIndex);return a;}var result=[].concat(a,b);if(result.length>arrayLimit){return markOverflow(arrayToObject(result,{plainObjects:plainObjects}),result.length-1);}return result;};var maybeMap=function maybeMap(val,fn){if(isArray(val)){var mapped=[];for(var i=0;i<val.length;i+=1){mapped[mapped.length]=fn(val[i]);}return mapped;}return fn(val);};module.exports={arrayToObject:arrayToObject,assign:assign,combine:combine,compact:compact,decode:decode,encode:encode,isBuffer:isBuffer,isOverflow:isOverflow,isRegExp:isRegExp,markOverflow:markOverflow,maybeMap:maybeMap,merge:merge};},{"./formats":
|
|
4142
|
+
if(isOverflow(a)){var newIndex=getMaxIndex(a)+1;a[newIndex]=b;setMaxIndex(a,newIndex);return a;}var result=[].concat(a,b);if(result.length>arrayLimit){return markOverflow(arrayToObject(result,{plainObjects:plainObjects}),result.length-1);}return result;};var maybeMap=function maybeMap(val,fn){if(isArray(val)){var mapped=[];for(var i=0;i<val.length;i+=1){mapped[mapped.length]=fn(val[i]);}return mapped;}return fn(val);};module.exports={arrayToObject:arrayToObject,assign:assign,combine:combine,compact:compact,decode:decode,encode:encode,isBuffer:isBuffer,isOverflow:isOverflow,isRegExp:isRegExp,markOverflow:markOverflow,maybeMap:maybeMap,merge:merge};},{"./formats":162,"side-channel":176}],167:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
|
|
3815
4143
|
//
|
|
3816
4144
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
3817
4145
|
// copy of this software and associated documentation files (the
|
|
@@ -3835,7 +4163,7 @@ if(isOverflow(a)){var newIndex=getMaxIndex(a)+1;a[newIndex]=b;setMaxIndex(a,newI
|
|
|
3835
4163
|
// obj.hasOwnProperty(prop) will break.
|
|
3836
4164
|
// See: https://github.com/joyent/node/issues/1707
|
|
3837
4165
|
function hasOwnProperty(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop);}module.exports=function(qs,sep,eq,options){sep=sep||'&';eq=eq||'=';var obj={};if(typeof qs!=='string'||qs.length===0){return obj;}var regexp=/\+/g;qs=qs.split(sep);var maxKeys=1000;if(options&&typeof options.maxKeys==='number'){maxKeys=options.maxKeys;}var len=qs.length;// maxKeys <= 0 means that we should not limit keys count
|
|
3838
|
-
if(maxKeys>0&&len>maxKeys){len=maxKeys;}for(var i=0;i<len;++i){var x=qs[i].replace(regexp,'%20'),idx=x.indexOf(eq),kstr,vstr,k,v;if(idx>=0){kstr=x.substr(0,idx);vstr=x.substr(idx+1);}else{kstr=x;vstr='';}k=decodeURIComponent(kstr);v=decodeURIComponent(vstr);if(!hasOwnProperty(obj,k)){obj[k]=v;}else if(isArray(obj[k])){obj[k].push(v);}else{obj[k]=[obj[k],v];}}return obj;};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==='[object Array]';};},{}],
|
|
4166
|
+
if(maxKeys>0&&len>maxKeys){len=maxKeys;}for(var i=0;i<len;++i){var x=qs[i].replace(regexp,'%20'),idx=x.indexOf(eq),kstr,vstr,k,v;if(idx>=0){kstr=x.substr(0,idx);vstr=x.substr(idx+1);}else{kstr=x;vstr='';}k=decodeURIComponent(kstr);v=decodeURIComponent(vstr);if(!hasOwnProperty(obj,k)){obj[k]=v;}else if(isArray(obj[k])){obj[k].push(v);}else{obj[k]=[obj[k],v];}}return obj;};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==='[object Array]';};},{}],168:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
|
|
3839
4167
|
//
|
|
3840
4168
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
3841
4169
|
// copy of this software and associated documentation files (the
|
|
@@ -3855,10 +4183,10 @@ if(maxKeys>0&&len>maxKeys){len=maxKeys;}for(var i=0;i<len;++i){var x=qs[i].repla
|
|
|
3855
4183
|
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
3856
4184
|
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
|
3857
4185
|
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
3858
|
-
'use strict';var stringifyPrimitive=function(v){switch(typeof v){case'string':return v;case'boolean':return v?'true':'false';case'number':return isFinite(v)?v:'';default:return'';}};module.exports=function(obj,sep,eq,name){sep=sep||'&';eq=eq||'=';if(obj===null){obj=undefined;}if(typeof obj==='object'){return map(objectKeys(obj),function(k){var ks=encodeURIComponent(stringifyPrimitive(k))+eq;if(isArray(obj[k])){return map(obj[k],function(v){return ks+encodeURIComponent(stringifyPrimitive(v));}).join(sep);}else{return ks+encodeURIComponent(stringifyPrimitive(obj[k]));}}).join(sep);}if(!name)return'';return encodeURIComponent(stringifyPrimitive(name))+eq+encodeURIComponent(stringifyPrimitive(obj));};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==='[object Array]';};function map(xs,f){if(xs.map)return xs.map(f);var res=[];for(var i=0;i<xs.length;i++){res.push(f(xs[i],i));}return res;}var objectKeys=Object.keys||function(obj){var res=[];for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))res.push(key);}return res;};},{}],
|
|
4186
|
+
'use strict';var stringifyPrimitive=function(v){switch(typeof v){case'string':return v;case'boolean':return v?'true':'false';case'number':return isFinite(v)?v:'';default:return'';}};module.exports=function(obj,sep,eq,name){sep=sep||'&';eq=eq||'=';if(obj===null){obj=undefined;}if(typeof obj==='object'){return map(objectKeys(obj),function(k){var ks=encodeURIComponent(stringifyPrimitive(k))+eq;if(isArray(obj[k])){return map(obj[k],function(v){return ks+encodeURIComponent(stringifyPrimitive(v));}).join(sep);}else{return ks+encodeURIComponent(stringifyPrimitive(obj[k]));}}).join(sep);}if(!name)return'';return encodeURIComponent(stringifyPrimitive(name))+eq+encodeURIComponent(stringifyPrimitive(obj));};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==='[object Array]';};function map(xs,f){if(xs.map)return xs.map(f);var res=[];for(var i=0;i<xs.length;i++){res.push(f(xs[i],i));}return res;}var objectKeys=Object.keys||function(obj){var res=[];for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))res.push(key);}return res;};},{}],169:[function(require,module,exports){'use strict';exports.decode=exports.parse=require('./decode');exports.encode=exports.stringify=require('./encode');},{"./decode":167,"./encode":168}],170:[function(require,module,exports){/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *//* eslint-disable node/no-deprecated-api */var buffer=require('buffer');var Buffer=buffer.Buffer;// alternative to using Object.keys for old browsers
|
|
3859
4187
|
function copyProps(src,dst){for(var key in src){dst[key]=src[key];}}if(Buffer.from&&Buffer.alloc&&Buffer.allocUnsafe&&Buffer.allocUnsafeSlow){module.exports=buffer;}else{// Copy properties from require('buffer')
|
|
3860
4188
|
copyProps(buffer,exports);exports.Buffer=SafeBuffer;}function SafeBuffer(arg,encodingOrOffset,length){return Buffer(arg,encodingOrOffset,length);}SafeBuffer.prototype=Object.create(Buffer.prototype);// Copy static methods from Buffer
|
|
3861
|
-
copyProps(Buffer,SafeBuffer);SafeBuffer.from=function(arg,encodingOrOffset,length){if(typeof arg==='number'){throw new TypeError('Argument must not be a number');}return Buffer(arg,encodingOrOffset,length);};SafeBuffer.alloc=function(size,fill,encoding){if(typeof size!=='number'){throw new TypeError('Argument must be a number');}var buf=Buffer(size);if(fill!==undefined){if(typeof encoding==='string'){buf.fill(fill,encoding);}else{buf.fill(fill);}}else{buf.fill(0);}return buf;};SafeBuffer.allocUnsafe=function(size){if(typeof size!=='number'){throw new TypeError('Argument must be a number');}return Buffer(size);};SafeBuffer.allocUnsafeSlow=function(size){if(typeof size!=='number'){throw new TypeError('Argument must be a number');}return buffer.SlowBuffer(size);};},{"buffer":
|
|
4189
|
+
copyProps(Buffer,SafeBuffer);SafeBuffer.from=function(arg,encodingOrOffset,length){if(typeof arg==='number'){throw new TypeError('Argument must not be a number');}return Buffer(arg,encodingOrOffset,length);};SafeBuffer.alloc=function(size,fill,encoding){if(typeof size!=='number'){throw new TypeError('Argument must be a number');}var buf=Buffer(size);if(fill!==undefined){if(typeof encoding==='string'){buf.fill(fill,encoding);}else{buf.fill(fill);}}else{buf.fill(0);}return buf;};SafeBuffer.allocUnsafe=function(size){if(typeof size!=='number'){throw new TypeError('Argument must be a number');}return Buffer(size);};SafeBuffer.allocUnsafeSlow=function(size){if(typeof size!=='number'){throw new TypeError('Argument must be a number');}return buffer.SlowBuffer(size);};},{"buffer":57}],171:[function(require,module,exports){'use strict';var callBound=require('call-bound');var isRegex=require('is-regex');var $exec=callBound('RegExp.prototype.exec');var $TypeError=require('es-errors/type');/** @type {import('.')} */module.exports=function regexTester(regex){if(!isRegex(regex)){throw new $TypeError('`regex` must be a RegExp');}return function test(s){return $exec(regex,s)!==null;};};},{"call-bound":66,"es-errors/type":75,"is-regex":119}],172:[function(require,module,exports){'use strict';var GetIntrinsic=require('get-intrinsic');var define=require('define-data-property');var hasDescriptors=require('has-property-descriptors')();var gOPD=require('gopd');var $TypeError=require('es-errors/type');var $floor=GetIntrinsic('%Math.floor%');/** @type {import('.')} */module.exports=function setFunctionLength(fn,length){if(typeof fn!=='function'){throw new $TypeError('`fn` is not a function');}if(typeof length!=='number'||length<0||length>0xFFFFFFFF||$floor(length)!==length){throw new $TypeError('`length` must be a positive 32-bit integer');}var loose=arguments.length>2&&!!arguments[2];var functionLengthIsConfigurable=true;var functionLengthIsWritable=true;if('length'in fn&&gOPD){var desc=gOPD(fn,'length');if(desc&&!desc.configurable){functionLengthIsConfigurable=false;}if(desc&&!desc.writable){functionLengthIsWritable=false;}}if(functionLengthIsConfigurable||functionLengthIsWritable||!loose){if(hasDescriptors){define(/** @type {Parameters<define>[0]} */fn,'length',length,true,true);}else{define(/** @type {Parameters<define>[0]} */fn,'length',length);}}return fn;};},{"define-data-property":67,"es-errors/type":75,"get-intrinsic":98,"gopd":103,"has-property-descriptors":104}],173:[function(require,module,exports){'use strict';var inspect=require('object-inspect');var $TypeError=require('es-errors/type');/*
|
|
3862
4190
|
* This function traverses the list returning the node corresponding to the given key.
|
|
3863
4191
|
*
|
|
3864
4192
|
* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.
|
|
@@ -3873,13 +4201,13 @@ key:key,next:objects.next,value:value};}};/** @type {import('./list.d.ts').listH
|
|
|
3873
4201
|
var listDelete=function(objects,key){if(objects){return listGetNode(objects,key,true);}};/** @type {import('.')} */module.exports=function getSideChannelList(){/** @typedef {ReturnType<typeof getSideChannelList>} Channel *//** @typedef {Parameters<Channel['get']>[0]} K *//** @typedef {Parameters<Channel['set']>[1]} V *//** @type {import('./list.d.ts').RootNode<V, K> | undefined} */var $o;/** @type {Channel} */var channel={assert:function(key){if(!channel.has(key)){throw new $TypeError('Side channel does not contain '+inspect(key));}},'delete':function(key){var root=$o&&$o.next;var deletedNode=listDelete($o,key);if(deletedNode&&root&&root===deletedNode){$o=void undefined;}return!!deletedNode;},get:function(key){return listGet($o,key);},has:function(key){return listHas($o,key);},set:function(key,value){if(!$o){// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head
|
|
3874
4202
|
$o={next:void undefined};}// eslint-disable-next-line no-extra-parens
|
|
3875
4203
|
listSet(/** @type {NonNullable<typeof $o>} */$o,key,value);}};// @ts-expect-error TODO: figure out why this is erroring
|
|
3876
|
-
return channel;};},{"es-errors/type":
|
|
4204
|
+
return channel;};},{"es-errors/type":75,"object-inspect":157}],174:[function(require,module,exports){'use strict';var GetIntrinsic=require('get-intrinsic');var callBound=require('call-bound');var inspect=require('object-inspect');var $TypeError=require('es-errors/type');var $Map=GetIntrinsic('%Map%',true);/** @type {<K, V>(thisArg: Map<K, V>, key: K) => V} */var $mapGet=callBound('Map.prototype.get',true);/** @type {<K, V>(thisArg: Map<K, V>, key: K, value: V) => void} */var $mapSet=callBound('Map.prototype.set',true);/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */var $mapHas=callBound('Map.prototype.has',true);/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */var $mapDelete=callBound('Map.prototype.delete',true);/** @type {<K, V>(thisArg: Map<K, V>) => number} */var $mapSize=callBound('Map.prototype.size',true);/** @type {import('.')} */module.exports=!!$Map&&/** @type {Exclude<import('.'), false>} */function getSideChannelMap(){/** @typedef {ReturnType<typeof getSideChannelMap>} Channel *//** @typedef {Parameters<Channel['get']>[0]} K *//** @typedef {Parameters<Channel['set']>[1]} V *//** @type {Map<K, V> | undefined} */var $m;/** @type {Channel} */var channel={assert:function(key){if(!channel.has(key)){throw new $TypeError('Side channel does not contain '+inspect(key));}},'delete':function(key){if($m){var result=$mapDelete($m,key);if($mapSize($m)===0){$m=void undefined;}return result;}return false;},get:function(key){// eslint-disable-line consistent-return
|
|
3877
4205
|
if($m){return $mapGet($m,key);}},has:function(key){if($m){return $mapHas($m,key);}return false;},set:function(key,value){if(!$m){// @ts-expect-error TS can't handle narrowing a variable inside a closure
|
|
3878
4206
|
$m=new $Map();}$mapSet($m,key,value);}};// @ts-expect-error TODO: figure out why TS is erroring here
|
|
3879
|
-
return channel;};},{"call-bound":
|
|
4207
|
+
return channel;};},{"call-bound":66,"es-errors/type":75,"get-intrinsic":98,"object-inspect":157}],175:[function(require,module,exports){'use strict';var GetIntrinsic=require('get-intrinsic');var callBound=require('call-bound');var inspect=require('object-inspect');var getSideChannelMap=require('side-channel-map');var $TypeError=require('es-errors/type');var $WeakMap=GetIntrinsic('%WeakMap%',true);/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => V} */var $weakMapGet=callBound('WeakMap.prototype.get',true);/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K, value: V) => void} */var $weakMapSet=callBound('WeakMap.prototype.set',true);/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */var $weakMapHas=callBound('WeakMap.prototype.has',true);/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */var $weakMapDelete=callBound('WeakMap.prototype.delete',true);/** @type {import('.')} */module.exports=$WeakMap?/** @type {Exclude<import('.'), false>} */function getSideChannelWeakMap(){/** @typedef {ReturnType<typeof getSideChannelWeakMap>} Channel *//** @typedef {Parameters<Channel['get']>[0]} K *//** @typedef {Parameters<Channel['set']>[1]} V *//** @type {WeakMap<K & object, V> | undefined} */var $wm;/** @type {Channel | undefined} */var $m;/** @type {Channel} */var channel={assert:function(key){if(!channel.has(key)){throw new $TypeError('Side channel does not contain '+inspect(key));}},'delete':function(key){if($WeakMap&&key&&(typeof key==='object'||typeof key==='function')){if($wm){return $weakMapDelete($wm,key);}}else if(getSideChannelMap){if($m){return $m['delete'](key);}}return false;},get:function(key){if($WeakMap&&key&&(typeof key==='object'||typeof key==='function')){if($wm){return $weakMapGet($wm,key);}}return $m&&$m.get(key);},has:function(key){if($WeakMap&&key&&(typeof key==='object'||typeof key==='function')){if($wm){return $weakMapHas($wm,key);}}return!!$m&&$m.has(key);},set:function(key,value){if($WeakMap&&key&&(typeof key==='object'||typeof key==='function')){if(!$wm){$wm=new $WeakMap();}$weakMapSet($wm,key,value);}else if(getSideChannelMap){if(!$m){$m=getSideChannelMap();}// eslint-disable-next-line no-extra-parens
|
|
3880
4208
|
/** @type {NonNullable<typeof $m>} */$m.set(key,value);}}};// @ts-expect-error TODO: figure out why this is erroring
|
|
3881
|
-
return channel;}:getSideChannelMap;},{"call-bound":
|
|
3882
|
-
return channel;};},{"es-errors/type":
|
|
4209
|
+
return channel;}:getSideChannelMap;},{"call-bound":66,"es-errors/type":75,"get-intrinsic":98,"object-inspect":157,"side-channel-map":174}],176:[function(require,module,exports){'use strict';var $TypeError=require('es-errors/type');var inspect=require('object-inspect');var getSideChannelList=require('side-channel-list');var getSideChannelMap=require('side-channel-map');var getSideChannelWeakMap=require('side-channel-weakmap');var makeChannel=getSideChannelWeakMap||getSideChannelMap||getSideChannelList;/** @type {import('.')} */module.exports=function getSideChannel(){/** @typedef {ReturnType<typeof getSideChannel>} Channel *//** @type {Channel | undefined} */var $channelData;/** @type {Channel} */var channel={assert:function(key){if(!channel.has(key)){throw new $TypeError('Side channel does not contain '+inspect(key));}},'delete':function(key){return!!$channelData&&$channelData['delete'](key);},get:function(key){return $channelData&&$channelData.get(key);},has:function(key){return!!$channelData&&$channelData.has(key);},set:function(key,value){if(!$channelData){$channelData=makeChannel();}$channelData.set(key,value);}};// @ts-expect-error TODO: figure out why this is erroring
|
|
4210
|
+
return channel;};},{"es-errors/type":75,"object-inspect":157,"side-channel-list":173,"side-channel-map":174,"side-channel-weakmap":175}],177:[function(require,module,exports){(function(Buffer){(function(){/*! simple-concat. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */module.exports=function(stream,cb){var chunks=[];stream.on('data',function(chunk){chunks.push(chunk);});stream.once('end',function(){if(cb)cb(null,Buffer.concat(chunks));cb=null;});stream.once('error',function(err){if(cb)cb(err);cb=null;});};}).call(this);}).call(this,require("buffer").Buffer);},{"buffer":57}],178:[function(require,module,exports){(function(Buffer){(function(){/*! simple-get. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */module.exports=simpleGet;const concat=require('simple-concat');const decompressResponse=require('decompress-response');// excluded from browser build
|
|
3883
4211
|
const http=require('http');const https=require('https');const once=require('once');const querystring=require('querystring');const url=require('url');const isStream=o=>o!==null&&typeof o==='object'&&typeof o.pipe==='function';function simpleGet(opts,cb){opts=Object.assign({maxRedirects:10},typeof opts==='string'?{url:opts}:opts);cb=once(cb);if(opts.url){const{hostname,port,protocol,auth,path}=url.parse(opts.url);// eslint-disable-line node/no-deprecated-api
|
|
3884
4212
|
delete opts.url;if(!hostname&&!port&&!protocol&&!auth)opts.path=path;// Relative redirect
|
|
3885
4213
|
else Object.assign(opts,{hostname,port,protocol,auth,path});// Absolute redirect
|
|
@@ -3891,7 +4219,7 @@ res.resume();// Discard response
|
|
|
3891
4219
|
const redirectHost=url.parse(opts.url).hostname;// eslint-disable-line node/no-deprecated-api
|
|
3892
4220
|
// If redirected host is different than original host, drop headers to prevent cookie leak (#73)
|
|
3893
4221
|
if(redirectHost!==null&&redirectHost!==originalHost){delete opts.headers.cookie;delete opts.headers.authorization;}if(opts.method==='POST'&&[301,302].includes(res.statusCode)){opts.method='GET';// On 301/302 redirect, change POST to GET (see #35)
|
|
3894
|
-
delete opts.headers['content-length'];delete opts.headers['content-type'];}if(opts.maxRedirects--===0)return cb(new Error('too many redirects'));else return simpleGet(opts,cb);}const tryUnzip=typeof decompressResponse==='function'&&opts.method!=='HEAD';cb(null,tryUnzip?decompressResponse(res):res);});req.on('timeout',()=>{req.abort();cb(new Error('Request timed out'));});req.on('error',cb);if(isStream(body))body.on('error',cb).pipe(req);else req.end(body);return req;}simpleGet.concat=(opts,cb)=>{return simpleGet(opts,(err,res)=>{if(err)return cb(err);concat(res,(err,data)=>{if(err)return cb(err);if(opts.json){try{data=JSON.parse(data.toString());}catch(err){return cb(err,res,data);}}cb(null,res,data);});});};['get','post','put','patch','head','delete'].forEach(method=>{simpleGet[method]=(opts,cb)=>{if(typeof opts==='string')opts={url:opts};return simpleGet(Object.assign({method:method.toUpperCase()},opts),cb);};});}).call(this);}).call(this,require("buffer").Buffer);},{"buffer":
|
|
4222
|
+
delete opts.headers['content-length'];delete opts.headers['content-type'];}if(opts.maxRedirects--===0)return cb(new Error('too many redirects'));else return simpleGet(opts,cb);}const tryUnzip=typeof decompressResponse==='function'&&opts.method!=='HEAD';cb(null,tryUnzip?decompressResponse(res):res);});req.on('timeout',()=>{req.abort();cb(new Error('Request timed out'));});req.on('error',cb);if(isStream(body))body.on('error',cb).pipe(req);else req.end(body);return req;}simpleGet.concat=(opts,cb)=>{return simpleGet(opts,(err,res)=>{if(err)return cb(err);concat(res,(err,data)=>{if(err)return cb(err);if(opts.json){try{data=JSON.parse(data.toString());}catch(err){return cb(err,res,data);}}cb(null,res,data);});});};['get','post','put','patch','head','delete'].forEach(method=>{simpleGet[method]=(opts,cb)=>{if(typeof opts==='string')opts={url:opts};return simpleGet(Object.assign({method:method.toUpperCase()},opts),cb);};});}).call(this);}).call(this,require("buffer").Buffer);},{"buffer":57,"decompress-response":55,"http":194,"https":109,"once":158,"querystring":169,"simple-concat":177,"url":217}],179:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
|
|
3895
4223
|
//
|
|
3896
4224
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
3897
4225
|
// copy of this software and associated documentation files (the
|
|
@@ -3920,13 +4248,13 @@ if(!dest._isStdio&&(!options||options.end!==false)){source.on('end',onend);sourc
|
|
|
3920
4248
|
function onerror(er){cleanup();if(EE.listenerCount(this,'error')===0){throw er;// Unhandled stream error in pipe.
|
|
3921
4249
|
}}source.on('error',onerror);dest.on('error',onerror);// remove all the event listeners that were added.
|
|
3922
4250
|
function cleanup(){source.removeListener('data',ondata);dest.removeListener('drain',ondrain);source.removeListener('end',onend);source.removeListener('close',onclose);source.removeListener('error',onerror);dest.removeListener('error',onerror);source.removeListener('end',cleanup);source.removeListener('close',cleanup);dest.removeListener('close',cleanup);}source.on('end',cleanup);source.on('close',cleanup);dest.on('close',cleanup);dest.emit('pipe',source);// Allow for unix-like usage: A.pipe(B).pipe(C)
|
|
3923
|
-
return dest;};},{"events":
|
|
4251
|
+
return dest;};},{"events":78,"inherits":111,"readable-stream/lib/_stream_duplex.js":181,"readable-stream/lib/_stream_passthrough.js":182,"readable-stream/lib/_stream_readable.js":183,"readable-stream/lib/_stream_transform.js":184,"readable-stream/lib/_stream_writable.js":185,"readable-stream/lib/internal/streams/end-of-stream.js":189,"readable-stream/lib/internal/streams/pipeline.js":191}],180:[function(require,module,exports){'use strict';function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype);subClass.prototype.constructor=subClass;subClass.__proto__=superClass;}var codes={};function createErrorType(code,message,Base){if(!Base){Base=Error;}function getMessage(arg1,arg2,arg3){if(typeof message==='string'){return message;}else{return message(arg1,arg2,arg3);}}var NodeError=/*#__PURE__*/function(_Base){_inheritsLoose(NodeError,_Base);function NodeError(arg1,arg2,arg3){return _Base.call(this,getMessage(arg1,arg2,arg3))||this;}return NodeError;}(Base);NodeError.prototype.name=Base.name;NodeError.prototype.code=code;codes[code]=NodeError;}// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js
|
|
3924
4252
|
function oneOf(expected,thing){if(Array.isArray(expected)){var len=expected.length;expected=expected.map(function(i){return String(i);});if(len>2){return"one of ".concat(thing," ").concat(expected.slice(0,len-1).join(', '),", or ")+expected[len-1];}else if(len===2){return"one of ".concat(thing," ").concat(expected[0]," or ").concat(expected[1]);}else{return"of ".concat(thing," ").concat(expected[0]);}}else{return"of ".concat(thing," ").concat(String(expected));}}// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith
|
|
3925
4253
|
function startsWith(str,search,pos){return str.substr(!pos||pos<0?0:+pos,search.length)===search;}// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
|
|
3926
4254
|
function endsWith(str,search,this_len){if(this_len===undefined||this_len>str.length){this_len=str.length;}return str.substring(this_len-search.length,this_len)===search;}// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
|
|
3927
4255
|
function includes(str,search,start){if(typeof start!=='number'){start=0;}if(start+search.length>str.length){return false;}else{return str.indexOf(search,start)!==-1;}}createErrorType('ERR_INVALID_OPT_VALUE',function(name,value){return'The value "'+value+'" is invalid for option "'+name+'"';},TypeError);createErrorType('ERR_INVALID_ARG_TYPE',function(name,expected,actual){// determiner: 'must be' or 'must not be'
|
|
3928
4256
|
var determiner;if(typeof expected==='string'&&startsWith(expected,'not ')){determiner='must not be';expected=expected.replace(/^not /,'');}else{determiner='must be';}var msg;if(endsWith(name,' argument')){// For cases like 'first argument'
|
|
3929
|
-
msg="The ".concat(name," ").concat(determiner," ").concat(oneOf(expected,'type'));}else{var type=includes(name,'.')?'property':'argument';msg="The \"".concat(name,"\" ").concat(type," ").concat(determiner," ").concat(oneOf(expected,'type'));}msg+=". Received type ".concat(typeof actual);return msg;},TypeError);createErrorType('ERR_STREAM_PUSH_AFTER_EOF','stream.push() after EOF');createErrorType('ERR_METHOD_NOT_IMPLEMENTED',function(name){return'The '+name+' method is not implemented';});createErrorType('ERR_STREAM_PREMATURE_CLOSE','Premature close');createErrorType('ERR_STREAM_DESTROYED',function(name){return'Cannot call '+name+' after a stream was destroyed';});createErrorType('ERR_MULTIPLE_CALLBACK','Callback called multiple times');createErrorType('ERR_STREAM_CANNOT_PIPE','Cannot pipe, not readable');createErrorType('ERR_STREAM_WRITE_AFTER_END','write after end');createErrorType('ERR_STREAM_NULL_VALUES','May not write null values to stream',TypeError);createErrorType('ERR_UNKNOWN_ENCODING',function(arg){return'Unknown encoding: '+arg;},TypeError);createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT','stream.unshift() after end event');module.exports.codes=codes;},{}],
|
|
4257
|
+
msg="The ".concat(name," ").concat(determiner," ").concat(oneOf(expected,'type'));}else{var type=includes(name,'.')?'property':'argument';msg="The \"".concat(name,"\" ").concat(type," ").concat(determiner," ").concat(oneOf(expected,'type'));}msg+=". Received type ".concat(typeof actual);return msg;},TypeError);createErrorType('ERR_STREAM_PUSH_AFTER_EOF','stream.push() after EOF');createErrorType('ERR_METHOD_NOT_IMPLEMENTED',function(name){return'The '+name+' method is not implemented';});createErrorType('ERR_STREAM_PREMATURE_CLOSE','Premature close');createErrorType('ERR_STREAM_DESTROYED',function(name){return'Cannot call '+name+' after a stream was destroyed';});createErrorType('ERR_MULTIPLE_CALLBACK','Callback called multiple times');createErrorType('ERR_STREAM_CANNOT_PIPE','Cannot pipe, not readable');createErrorType('ERR_STREAM_WRITE_AFTER_END','write after end');createErrorType('ERR_STREAM_NULL_VALUES','May not write null values to stream',TypeError);createErrorType('ERR_UNKNOWN_ENCODING',function(arg){return'Unknown encoding: '+arg;},TypeError);createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT','stream.unshift() after end event');module.exports.codes=codes;},{}],181:[function(require,module,exports){(function(process){(function(){// Copyright Joyent, Inc. and other Node contributors.
|
|
3930
4258
|
//
|
|
3931
4259
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
3932
4260
|
// copy of this software and associated documentation files (the
|
|
@@ -3971,7 +4299,7 @@ enumerable:false,get:function get(){if(this._readableState===undefined||this._wr
|
|
|
3971
4299
|
// has not been initialized yet
|
|
3972
4300
|
if(this._readableState===undefined||this._writableState===undefined){return;}// backward compatibility, the user is explicitly
|
|
3973
4301
|
// managing destroyed
|
|
3974
|
-
this._readableState.destroyed=value;this._writableState.destroyed=value;}});}).call(this);}).call(this,require('_process'));},{"./_stream_readable":
|
|
4302
|
+
this._readableState.destroyed=value;this._writableState.destroyed=value;}});}).call(this);}).call(this,require('_process'));},{"./_stream_readable":183,"./_stream_writable":185,"_process":160,"inherits":111}],182:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
|
|
3975
4303
|
//
|
|
3976
4304
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
3977
4305
|
// copy of this software and associated documentation files (the
|
|
@@ -3994,7 +4322,7 @@ this._readableState.destroyed=value;this._writableState.destroyed=value;}});}).c
|
|
|
3994
4322
|
// a passthrough stream.
|
|
3995
4323
|
// basically just the most minimal sort of Transform stream.
|
|
3996
4324
|
// Every written chunk gets output as-is.
|
|
3997
|
-
'use strict';module.exports=PassThrough;var Transform=require('./_stream_transform');require('inherits')(PassThrough,Transform);function PassThrough(options){if(!(this instanceof PassThrough))return new PassThrough(options);Transform.call(this,options);}PassThrough.prototype._transform=function(chunk,encoding,cb){cb(null,chunk);};},{"./_stream_transform":
|
|
4325
|
+
'use strict';module.exports=PassThrough;var Transform=require('./_stream_transform');require('inherits')(PassThrough,Transform);function PassThrough(options){if(!(this instanceof PassThrough))return new PassThrough(options);Transform.call(this,options);}PassThrough.prototype._transform=function(chunk,encoding,cb){cb(null,chunk);};},{"./_stream_transform":184,"inherits":111}],183:[function(require,module,exports){(function(process,global){(function(){// Copyright Joyent, Inc. and other Node contributors.
|
|
3998
4326
|
//
|
|
3999
4327
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
4000
4328
|
// copy of this software and associated documentation files (the
|
|
@@ -4246,7 +4574,7 @@ if(state.decoder)ret=state.buffer.join('');else if(state.buffer.length===1)ret=s
|
|
|
4246
4574
|
ret=state.buffer.consume(n,state.decoder);}return ret;}function endReadable(stream){var state=stream._readableState;debug('endReadable',state.endEmitted);if(!state.endEmitted){state.ended=true;process.nextTick(endReadableNT,state,stream);}}function endReadableNT(state,stream){debug('endReadableNT',state.endEmitted,state.length);// Check that we didn't get one last unshift.
|
|
4247
4575
|
if(!state.endEmitted&&state.length===0){state.endEmitted=true;stream.readable=false;stream.emit('end');if(state.autoDestroy){// In case of duplex streams we need a way to detect
|
|
4248
4576
|
// if the writable side is ready for autoDestroy as well
|
|
4249
|
-
var wState=stream._writableState;if(!wState||wState.autoDestroy&&wState.finished){stream.destroy();}}}}if(typeof Symbol==='function'){Readable.from=function(iterable,opts){if(from===undefined){from=require('./internal/streams/from');}return from(Readable,iterable,opts);};}function indexOf(xs,x){for(var i=0,l=xs.length;i<l;i++){if(xs[i]===x)return i;}return-1;}}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"../errors":
|
|
4577
|
+
var wState=stream._writableState;if(!wState||wState.autoDestroy&&wState.finished){stream.destroy();}}}}if(typeof Symbol==='function'){Readable.from=function(iterable,opts){if(from===undefined){from=require('./internal/streams/from');}return from(Readable,iterable,opts);};}function indexOf(xs,x){for(var i=0,l=xs.length;i<l;i++){if(xs[i]===x)return i;}return-1;}}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"../errors":180,"./_stream_duplex":181,"./internal/streams/async_iterator":186,"./internal/streams/buffer_list":187,"./internal/streams/destroy":188,"./internal/streams/from":190,"./internal/streams/state":192,"./internal/streams/stream":193,"_process":160,"buffer":57,"events":78,"inherits":111,"string_decoder/":213,"util":55}],184:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
|
|
4250
4578
|
//
|
|
4251
4579
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
4252
4580
|
// copy of this software and associated documentation files (the
|
|
@@ -4332,7 +4660,7 @@ ts.needTransform=true;}};Transform.prototype._destroy=function(err,cb){Duplex.pr
|
|
|
4332
4660
|
stream.push(data);// TODO(BridgeAR): Write a test for these two error cases
|
|
4333
4661
|
// if there's nothing in the write buffer, then that means
|
|
4334
4662
|
// that nothing more will ever be provided
|
|
4335
|
-
if(stream._writableState.length)throw new ERR_TRANSFORM_WITH_LENGTH_0();if(stream._transformState.transforming)throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();return stream.push(null);}},{"../errors":
|
|
4663
|
+
if(stream._writableState.length)throw new ERR_TRANSFORM_WITH_LENGTH_0();if(stream._transformState.transforming)throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();return stream.push(null);}},{"../errors":180,"./_stream_duplex":181,"inherits":111}],185:[function(require,module,exports){(function(process,global){(function(){// Copyright Joyent, Inc. and other Node contributors.
|
|
4336
4664
|
//
|
|
4337
4665
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
4338
4666
|
// copy of this software and associated documentation files (the
|
|
@@ -4467,7 +4795,7 @@ enumerable:false,get:function get(){if(this._writableState===undefined){return f
|
|
|
4467
4795
|
// has not been initialized yet
|
|
4468
4796
|
if(!this._writableState){return;}// backward compatibility, the user is explicitly
|
|
4469
4797
|
// managing destroyed
|
|
4470
|
-
this._writableState.destroyed=value;}});Writable.prototype.destroy=destroyImpl.destroy;Writable.prototype._undestroy=destroyImpl.undestroy;Writable.prototype._destroy=function(err,cb){cb(err);};}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"../errors":
|
|
4798
|
+
this._writableState.destroyed=value;}});Writable.prototype.destroy=destroyImpl.destroy;Writable.prototype._undestroy=destroyImpl.undestroy;Writable.prototype._destroy=function(err,cb){cb(err);};}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"../errors":180,"./_stream_duplex":181,"./internal/streams/destroy":188,"./internal/streams/state":192,"./internal/streams/stream":193,"_process":160,"buffer":57,"inherits":111,"util-deprecate":218}],186:[function(require,module,exports){(function(process){(function(){'use strict';var _Object$setPrototypeO;function _defineProperty(obj,key,value){key=_toPropertyKey(key);if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return typeof key==="symbol"?key:String(key);}function _toPrimitive(input,hint){if(typeof input!=="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==undefined){var res=prim.call(input,hint||"default");if(typeof res!=="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.");}return(hint==="string"?String:Number)(input);}var finished=require('./end-of-stream');var kLastResolve=Symbol('lastResolve');var kLastReject=Symbol('lastReject');var kError=Symbol('error');var kEnded=Symbol('ended');var kLastPromise=Symbol('lastPromise');var kHandlePromise=Symbol('handlePromise');var kStream=Symbol('stream');function createIterResult(value,done){return{value:value,done:done};}function readAndResolve(iter){var resolve=iter[kLastResolve];if(resolve!==null){var data=iter[kStream].read();// we defer if data is null
|
|
4471
4799
|
// we can be expecting either 'end' or
|
|
4472
4800
|
// 'error'
|
|
4473
4801
|
if(data!==null){iter[kLastPromise]=null;iter[kLastResolve]=null;iter[kLastReject]=null;resolve(createIterResult(data,false));}}}function onReadable(iter){// we wait for the next tick, because it might
|
|
@@ -4489,7 +4817,7 @@ var data=this[kStream].read();if(data!==null){return Promise.resolve(createIterR
|
|
|
4489
4817
|
// Readable class this is attached to
|
|
4490
4818
|
return new Promise(function(resolve,reject){_this2[kStream].destroy(null,function(err){if(err){reject(err);return;}resolve(createIterResult(undefined,true));});});}),_Object$setPrototypeO),AsyncIteratorPrototype);var createReadableStreamAsyncIterator=function createReadableStreamAsyncIterator(stream){var _Object$create;var iterator=Object.create(ReadableStreamAsyncIteratorPrototype,(_Object$create={},_defineProperty(_Object$create,kStream,{value:stream,writable:true}),_defineProperty(_Object$create,kLastResolve,{value:null,writable:true}),_defineProperty(_Object$create,kLastReject,{value:null,writable:true}),_defineProperty(_Object$create,kError,{value:null,writable:true}),_defineProperty(_Object$create,kEnded,{value:stream._readableState.endEmitted,writable:true}),_defineProperty(_Object$create,kHandlePromise,{value:function value(resolve,reject){var data=iterator[kStream].read();if(data){iterator[kLastPromise]=null;iterator[kLastResolve]=null;iterator[kLastReject]=null;resolve(createIterResult(data,false));}else{iterator[kLastResolve]=resolve;iterator[kLastReject]=reject;}},writable:true}),_Object$create));iterator[kLastPromise]=null;finished(stream,function(err){if(err&&err.code!=='ERR_STREAM_PREMATURE_CLOSE'){var reject=iterator[kLastReject];// reject if we are waiting for data in the Promise
|
|
4491
4819
|
// returned by next() and store the error
|
|
4492
|
-
if(reject!==null){iterator[kLastPromise]=null;iterator[kLastResolve]=null;iterator[kLastReject]=null;reject(err);}iterator[kError]=err;return;}var resolve=iterator[kLastResolve];if(resolve!==null){iterator[kLastPromise]=null;iterator[kLastResolve]=null;iterator[kLastReject]=null;resolve(createIterResult(undefined,true));}iterator[kEnded]=true;});stream.on('readable',onReadable.bind(null,iterator));return iterator;};module.exports=createReadableStreamAsyncIterator;}).call(this);}).call(this,require('_process'));},{"./end-of-stream":
|
|
4820
|
+
if(reject!==null){iterator[kLastPromise]=null;iterator[kLastResolve]=null;iterator[kLastReject]=null;reject(err);}iterator[kError]=err;return;}var resolve=iterator[kLastResolve];if(resolve!==null){iterator[kLastPromise]=null;iterator[kLastResolve]=null;iterator[kLastReject]=null;resolve(createIterResult(undefined,true));}iterator[kEnded]=true;});stream.on('readable',onReadable.bind(null,iterator));return iterator;};module.exports=createReadableStreamAsyncIterator;}).call(this);}).call(this,require('_process'));},{"./end-of-stream":189,"_process":160}],187:[function(require,module,exports){'use strict';function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;})),keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?ownKeys(Object(source),!0).forEach(function(key){_defineProperty(target,key,source[key]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}return target;}function _defineProperty(obj,key,value){key=_toPropertyKey(key);if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,_toPropertyKey(descriptor.key),descriptor);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);Object.defineProperty(Constructor,"prototype",{writable:false});return Constructor;}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return typeof key==="symbol"?key:String(key);}function _toPrimitive(input,hint){if(typeof input!=="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==undefined){var res=prim.call(input,hint||"default");if(typeof res!=="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.");}return(hint==="string"?String:Number)(input);}var _require=require('buffer'),Buffer=_require.Buffer;var _require2=require('util'),inspect=_require2.inspect;var custom=inspect&&inspect.custom||'inspect';function copyBuffer(src,target,offset){Buffer.prototype.copy.call(src,target,offset);}module.exports=/*#__PURE__*/function(){function BufferList(){_classCallCheck(this,BufferList);this.head=null;this.tail=null;this.length=0;}_createClass(BufferList,[{key:"push",value:function push(v){var entry={data:v,next:null};if(this.length>0)this.tail.next=entry;else this.head=entry;this.tail=entry;++this.length;}},{key:"unshift",value:function unshift(v){var entry={data:v,next:this.head};if(this.length===0)this.tail=entry;this.head=entry;++this.length;}},{key:"shift",value:function shift(){if(this.length===0)return;var ret=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;--this.length;return ret;}},{key:"clear",value:function clear(){this.head=this.tail=null;this.length=0;}},{key:"join",value:function join(s){if(this.length===0)return'';var p=this.head;var ret=''+p.data;while(p=p.next)ret+=s+p.data;return ret;}},{key:"concat",value:function concat(n){if(this.length===0)return Buffer.alloc(0);var ret=Buffer.allocUnsafe(n>>>0);var p=this.head;var i=0;while(p){copyBuffer(p.data,ret,i);i+=p.data.length;p=p.next;}return ret;}// Consumes a specified amount of bytes or characters from the buffered data.
|
|
4493
4821
|
},{key:"consume",value:function consume(n,hasStrings){var ret;if(n<this.head.data.length){// `slice` is the same for buffers and strings.
|
|
4494
4822
|
ret=this.head.data.slice(0,n);this.head.data=this.head.data.slice(n);}else if(n===this.head.data.length){// First chunk is a perfect match.
|
|
4495
4823
|
ret=this.shift();}else{// Result spans more than one buffer.
|
|
@@ -4498,7 +4826,7 @@ ret=hasStrings?this._getString(n):this._getBuffer(n);}return ret;}},{key:"first"
|
|
|
4498
4826
|
},{key:"_getBuffer",value:function _getBuffer(n){var ret=Buffer.allocUnsafe(n);var p=this.head;var c=1;p.data.copy(ret);n-=p.data.length;while(p=p.next){var buf=p.data;var nb=n>buf.length?buf.length:n;buf.copy(ret,ret.length-n,0,nb);n-=nb;if(n===0){if(nb===buf.length){++c;if(p.next)this.head=p.next;else this.head=this.tail=null;}else{this.head=p;p.data=buf.slice(nb);}break;}++c;}this.length-=c;return ret;}// Make sure the linked list only shows the minimal necessary information.
|
|
4499
4827
|
},{key:custom,value:function value(_,options){return inspect(this,_objectSpread(_objectSpread({},options),{},{// Only inspect one level.
|
|
4500
4828
|
depth:0,// It should not recurse.
|
|
4501
|
-
customInspect:false}));}}]);return BufferList;}();},{"buffer":
|
|
4829
|
+
customInspect:false}));}}]);return BufferList;}();},{"buffer":57,"util":55}],188:[function(require,module,exports){(function(process){(function(){'use strict';// undocumented cb() API, needed for core, not for public API
|
|
4502
4830
|
function destroy(err,cb){var _this=this;var readableDestroyed=this._readableState&&this._readableState.destroyed;var writableDestroyed=this._writableState&&this._writableState.destroyed;if(readableDestroyed||writableDestroyed){if(cb){cb(err);}else if(err){if(!this._writableState){process.nextTick(emitErrorNT,this,err);}else if(!this._writableState.errorEmitted){this._writableState.errorEmitted=true;process.nextTick(emitErrorNT,this,err);}}return this;}// we set destroyed to true before firing error callbacks in order
|
|
4503
4831
|
// to make it re-entrance safe in case destroy() is called within callbacks
|
|
4504
4832
|
if(this._readableState){this._readableState.destroyed=true;}// if this is a duplex stream mark the writable part as destroyed as well
|
|
@@ -4507,21 +4835,21 @@ if(this._writableState){this._writableState.destroyed=true;}this._destroy(err||n
|
|
|
4507
4835
|
// For now when you opt-in to autoDestroy we allow
|
|
4508
4836
|
// the error to be emitted nextTick. In a future
|
|
4509
4837
|
// semver major update we should change the default to this.
|
|
4510
|
-
var rState=stream._readableState;var wState=stream._writableState;if(rState&&rState.autoDestroy||wState&&wState.autoDestroy)stream.destroy(err);else stream.emit('error',err);}module.exports={destroy:destroy,undestroy:undestroy,errorOrDestroy:errorOrDestroy};}).call(this);}).call(this,require('_process'));},{"_process":
|
|
4838
|
+
var rState=stream._readableState;var wState=stream._writableState;if(rState&&rState.autoDestroy||wState&&wState.autoDestroy)stream.destroy(err);else stream.emit('error',err);}module.exports={destroy:destroy,undestroy:undestroy,errorOrDestroy:errorOrDestroy};}).call(this);}).call(this,require('_process'));},{"_process":160}],189:[function(require,module,exports){// Ported from https://github.com/mafintosh/end-of-stream with
|
|
4511
4839
|
// permission from the author, Mathias Buus (@mafintosh).
|
|
4512
4840
|
'use strict';var ERR_STREAM_PREMATURE_CLOSE=require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;function once(callback){var called=false;return function(){if(called)return;called=true;for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}callback.apply(this,args);};}function noop(){}function isRequest(stream){return stream.setHeader&&typeof stream.abort==='function';}function eos(stream,opts,callback){if(typeof opts==='function')return eos(stream,null,opts);if(!opts)opts={};callback=once(callback||noop);var readable=opts.readable||opts.readable!==false&&stream.readable;var writable=opts.writable||opts.writable!==false&&stream.writable;var onlegacyfinish=function onlegacyfinish(){if(!stream.writable)onfinish();};var writableEnded=stream._writableState&&stream._writableState.finished;var onfinish=function onfinish(){writable=false;writableEnded=true;if(!readable)callback.call(stream);};var readableEnded=stream._readableState&&stream._readableState.endEmitted;var onend=function onend(){readable=false;readableEnded=true;if(!writable)callback.call(stream);};var onerror=function onerror(err){callback.call(stream,err);};var onclose=function onclose(){var err;if(readable&&!readableEnded){if(!stream._readableState||!stream._readableState.ended)err=new ERR_STREAM_PREMATURE_CLOSE();return callback.call(stream,err);}if(writable&&!writableEnded){if(!stream._writableState||!stream._writableState.ended)err=new ERR_STREAM_PREMATURE_CLOSE();return callback.call(stream,err);}};var onrequest=function onrequest(){stream.req.on('finish',onfinish);};if(isRequest(stream)){stream.on('complete',onfinish);stream.on('abort',onclose);if(stream.req)onrequest();else stream.on('request',onrequest);}else if(writable&&!stream._writableState){// legacy streams
|
|
4513
|
-
stream.on('end',onlegacyfinish);stream.on('close',onlegacyfinish);}stream.on('end',onend);stream.on('finish',onfinish);if(opts.error!==false)stream.on('error',onerror);stream.on('close',onclose);return function(){stream.removeListener('complete',onfinish);stream.removeListener('abort',onclose);stream.removeListener('request',onrequest);if(stream.req)stream.req.removeListener('finish',onfinish);stream.removeListener('end',onlegacyfinish);stream.removeListener('close',onlegacyfinish);stream.removeListener('finish',onfinish);stream.removeListener('end',onend);stream.removeListener('error',onerror);stream.removeListener('close',onclose);};}module.exports=eos;},{"../../../errors":
|
|
4841
|
+
stream.on('end',onlegacyfinish);stream.on('close',onlegacyfinish);}stream.on('end',onend);stream.on('finish',onfinish);if(opts.error!==false)stream.on('error',onerror);stream.on('close',onclose);return function(){stream.removeListener('complete',onfinish);stream.removeListener('abort',onclose);stream.removeListener('request',onrequest);if(stream.req)stream.req.removeListener('finish',onfinish);stream.removeListener('end',onlegacyfinish);stream.removeListener('close',onlegacyfinish);stream.removeListener('finish',onfinish);stream.removeListener('end',onend);stream.removeListener('error',onerror);stream.removeListener('close',onclose);};}module.exports=eos;},{"../../../errors":180}],190:[function(require,module,exports){module.exports=function(){throw new Error('Readable.from is not available in the browser');};},{}],191:[function(require,module,exports){// Ported from https://github.com/mafintosh/pump with
|
|
4514
4842
|
// permission from the author, Mathias Buus (@mafintosh).
|
|
4515
4843
|
'use strict';var eos;function once(callback){var called=false;return function(){if(called)return;called=true;callback.apply(void 0,arguments);};}var _require$codes=require('../../../errors').codes,ERR_MISSING_ARGS=_require$codes.ERR_MISSING_ARGS,ERR_STREAM_DESTROYED=_require$codes.ERR_STREAM_DESTROYED;function noop(err){// Rethrow the error if it exists to avoid swallowing it
|
|
4516
4844
|
if(err)throw err;}function isRequest(stream){return stream.setHeader&&typeof stream.abort==='function';}function destroyer(stream,reading,writing,callback){callback=once(callback);var closed=false;stream.on('close',function(){closed=true;});if(eos===undefined)eos=require('./end-of-stream');eos(stream,{readable:reading,writable:writing},function(err){if(err)return callback(err);closed=true;callback();});var destroyed=false;return function(err){if(closed)return;if(destroyed)return;destroyed=true;// request.destroy just do .end - .abort is what we want
|
|
4517
|
-
if(isRequest(stream))return stream.abort();if(typeof stream.destroy==='function')return stream.destroy();callback(err||new ERR_STREAM_DESTROYED('pipe'));};}function call(fn){fn();}function pipe(from,to){return from.pipe(to);}function popCallback(streams){if(!streams.length)return noop;if(typeof streams[streams.length-1]!=='function')return noop;return streams.pop();}function pipeline(){for(var _len=arguments.length,streams=new Array(_len),_key=0;_key<_len;_key++){streams[_key]=arguments[_key];}var callback=popCallback(streams);if(Array.isArray(streams[0]))streams=streams[0];if(streams.length<2){throw new ERR_MISSING_ARGS('streams');}var error;var destroys=streams.map(function(stream,i){var reading=i<streams.length-1;var writing=i>0;return destroyer(stream,reading,writing,function(err){if(!error)error=err;if(err)destroys.forEach(call);if(reading)return;destroys.forEach(call);callback(error);});});return streams.reduce(pipe);}module.exports=pipeline;},{"../../../errors":
|
|
4518
|
-
return state.objectMode?16:16*1024;}module.exports={getHighWaterMark:getHighWaterMark};},{"../../../errors":
|
|
4845
|
+
if(isRequest(stream))return stream.abort();if(typeof stream.destroy==='function')return stream.destroy();callback(err||new ERR_STREAM_DESTROYED('pipe'));};}function call(fn){fn();}function pipe(from,to){return from.pipe(to);}function popCallback(streams){if(!streams.length)return noop;if(typeof streams[streams.length-1]!=='function')return noop;return streams.pop();}function pipeline(){for(var _len=arguments.length,streams=new Array(_len),_key=0;_key<_len;_key++){streams[_key]=arguments[_key];}var callback=popCallback(streams);if(Array.isArray(streams[0]))streams=streams[0];if(streams.length<2){throw new ERR_MISSING_ARGS('streams');}var error;var destroys=streams.map(function(stream,i){var reading=i<streams.length-1;var writing=i>0;return destroyer(stream,reading,writing,function(err){if(!error)error=err;if(err)destroys.forEach(call);if(reading)return;destroys.forEach(call);callback(error);});});return streams.reduce(pipe);}module.exports=pipeline;},{"../../../errors":180,"./end-of-stream":189}],192:[function(require,module,exports){'use strict';var ERR_INVALID_OPT_VALUE=require('../../../errors').codes.ERR_INVALID_OPT_VALUE;function highWaterMarkFrom(options,isDuplex,duplexKey){return options.highWaterMark!=null?options.highWaterMark:isDuplex?options[duplexKey]:null;}function getHighWaterMark(state,options,duplexKey,isDuplex){var hwm=highWaterMarkFrom(options,isDuplex,duplexKey);if(hwm!=null){if(!(isFinite(hwm)&&Math.floor(hwm)===hwm)||hwm<0){var name=isDuplex?duplexKey:'highWaterMark';throw new ERR_INVALID_OPT_VALUE(name,hwm);}return Math.floor(hwm);}// Default value
|
|
4846
|
+
return state.objectMode?16:16*1024;}module.exports={getHighWaterMark:getHighWaterMark};},{"../../../errors":180}],193:[function(require,module,exports){module.exports=require('events').EventEmitter;},{"events":78}],194:[function(require,module,exports){(function(global){(function(){var ClientRequest=require('./lib/request');var response=require('./lib/response');var extend=require('xtend');var statusCodes=require('builtin-status-codes');var url=require('url');var http=exports;http.request=function(opts,cb){if(typeof opts==='string')opts=url.parse(opts);else opts=extend(opts);// Normally, the page is loaded from http or https, so not specifying a protocol
|
|
4519
4847
|
// will result in a (valid) protocol-relative url. However, this won't work if
|
|
4520
4848
|
// the protocol is something else, like 'file:'
|
|
4521
4849
|
var defaultProtocol=global.location.protocol.search(/^https?:$/)===-1?'http:':'';var protocol=opts.protocol||defaultProtocol;var host=opts.hostname||opts.host;var port=opts.port;var path=opts.path||'/';// Necessary for IPv6 addresses
|
|
4522
4850
|
if(host&&host.indexOf(':')!==-1)host='['+host+']';// This may be a relative url. The browser should always be able to interpret it correctly.
|
|
4523
4851
|
opts.url=(host?protocol+'//'+host:'')+(port?':'+port:'')+path;opts.method=(opts.method||'GET').toUpperCase();opts.headers=opts.headers||{};// Also valid opts.auth, opts.mode
|
|
4524
|
-
var req=new ClientRequest(opts);if(cb)req.on('response',cb);return req;};http.get=function get(opts,cb){var req=http.request(opts,cb);req.end();return req;};http.ClientRequest=ClientRequest;http.IncomingMessage=response.IncomingMessage;http.Agent=function(){};http.Agent.defaultMaxSockets=4;http.globalAgent=new http.Agent();http.STATUS_CODES=statusCodes;http.METHODS=['CHECKOUT','CONNECT','COPY','DELETE','GET','HEAD','LOCK','M-SEARCH','MERGE','MKACTIVITY','MKCOL','MOVE','NOTIFY','OPTIONS','PATCH','POST','PROPFIND','PROPPATCH','PURGE','PUT','REPORT','SEARCH','SUBSCRIBE','TRACE','UNLOCK','UNSUBSCRIBE'];}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"./lib/request":
|
|
4852
|
+
var req=new ClientRequest(opts);if(cb)req.on('response',cb);return req;};http.get=function get(opts,cb){var req=http.request(opts,cb);req.end();return req;};http.ClientRequest=ClientRequest;http.IncomingMessage=response.IncomingMessage;http.Agent=function(){};http.Agent.defaultMaxSockets=4;http.globalAgent=new http.Agent();http.STATUS_CODES=statusCodes;http.METHODS=['CHECKOUT','CONNECT','COPY','DELETE','GET','HEAD','LOCK','M-SEARCH','MERGE','MKACTIVITY','MKCOL','MOVE','NOTIFY','OPTIONS','PATCH','POST','PROPFIND','PROPPATCH','PURGE','PUT','REPORT','SEARCH','SUBSCRIBE','TRACE','UNLOCK','UNSUBSCRIBE'];}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"./lib/request":196,"./lib/response":197,"builtin-status-codes":58,"url":217,"xtend":224}],195:[function(require,module,exports){(function(global){(function(){exports.fetch=isFunction(global.fetch)&&isFunction(global.ReadableStream);exports.writableStream=isFunction(global.WritableStream);exports.abortController=isFunction(global.AbortController);// The xhr request to example.com may violate some restrictive CSP configurations,
|
|
4525
4853
|
// so if we're running in a browser that supports `fetch`, avoid calling getXHR()
|
|
4526
4854
|
// and assume support for certain features below.
|
|
4527
4855
|
var xhr;function getXHR(){// Cache the xhr value
|
|
@@ -4536,7 +4864,7 @@ exports.arraybuffer=exports.fetch||checkTypeSupport('arraybuffer');// These next
|
|
|
4536
4864
|
exports.msstream=!exports.fetch&&checkTypeSupport('ms-stream');exports.mozchunkedarraybuffer=!exports.fetch&&checkTypeSupport('moz-chunked-arraybuffer');// If fetch is supported, then overrideMimeType will be supported too. Skip calling
|
|
4537
4865
|
// getXHR().
|
|
4538
4866
|
exports.overrideMimeType=exports.fetch||(getXHR()?isFunction(getXHR().overrideMimeType):false);function isFunction(value){return typeof value==='function';}xhr=null;// Help gc
|
|
4539
|
-
}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{}],
|
|
4867
|
+
}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{}],196:[function(require,module,exports){(function(process,global,Buffer){(function(){var capability=require('./capability');var inherits=require('inherits');var response=require('./response');var stream=require('readable-stream');var IncomingMessage=response.IncomingMessage;var rStates=response.readyStates;function decideMode(preferBinary,useFetch){if(capability.fetch&&useFetch){return'fetch';}else if(capability.mozchunkedarraybuffer){return'moz-chunked-arraybuffer';}else if(capability.msstream){return'ms-stream';}else if(capability.arraybuffer&&preferBinary){return'arraybuffer';}else{return'text';}}var ClientRequest=module.exports=function(opts){var self=this;stream.Writable.call(self);self._opts=opts;self._body=[];self._headers={};if(opts.auth)self.setHeader('Authorization','Basic '+Buffer.from(opts.auth).toString('base64'));Object.keys(opts.headers).forEach(function(name){self.setHeader(name,opts.headers[name]);});var preferBinary;var useFetch=true;if(opts.mode==='disable-fetch'||'requestTimeout'in opts&&!capability.abortController){// If the use of XHR should be preferred. Not typically needed.
|
|
4540
4868
|
useFetch=false;preferBinary=true;}else if(opts.mode==='prefer-streaming'){// If streaming is a high priority but binary compatibility and
|
|
4541
4869
|
// the accuracy of the 'content-type' header aren't
|
|
4542
4870
|
preferBinary=false;}else if(opts.mode==='allow-wrong-content-type'){// If streaming is more important than preserving the 'content-type' header
|
|
@@ -4553,7 +4881,7 @@ if(self._mode==='moz-chunked-arraybuffer'){xhr.onprogress=function(){self._onXHR
|
|
|
4553
4881
|
* Even though the spec says it should be available in readyState 3,
|
|
4554
4882
|
* accessing it throws an exception in IE8
|
|
4555
4883
|
*/function statusValid(xhr){try{var status=xhr.status;return status!==null&&status!==0;}catch(e){return false;}}ClientRequest.prototype._onXHRProgress=function(){var self=this;self._resetTimers(false);if(!statusValid(self._xhr)||self._destroyed)return;if(!self._response)self._connect();self._response._onXHRProgress(self._resetTimers.bind(self));};ClientRequest.prototype._connect=function(){var self=this;if(self._destroyed)return;self._response=new IncomingMessage(self._xhr,self._fetchResponse,self._mode,self._resetTimers.bind(self));self._response.on('error',function(err){self.emit('error',err);});self.emit('response',self._response);};ClientRequest.prototype._write=function(chunk,encoding,cb){var self=this;self._body.push(chunk);cb();};ClientRequest.prototype._resetTimers=function(done){var self=this;global.clearTimeout(self._socketTimer);self._socketTimer=null;if(done){global.clearTimeout(self._fetchTimer);self._fetchTimer=null;}else if(self._socketTimeout){self._socketTimer=global.setTimeout(function(){self.emit('timeout');},self._socketTimeout);}};ClientRequest.prototype.abort=ClientRequest.prototype.destroy=function(err){var self=this;self._destroyed=true;self._resetTimers(true);if(self._response)self._response._destroyed=true;if(self._xhr)self._xhr.abort();else if(self._fetchAbortController)self._fetchAbortController.abort();if(err)self.emit('error',err);};ClientRequest.prototype.end=function(data,encoding,cb){var self=this;if(typeof data==='function'){cb=data;data=undefined;}stream.Writable.prototype.end.call(self,data,encoding,cb);};ClientRequest.prototype.setTimeout=function(timeout,cb){var self=this;if(cb)self.once('timeout',cb);self._socketTimeout=timeout;self._resetTimers(false);};ClientRequest.prototype.flushHeaders=function(){};ClientRequest.prototype.setNoDelay=function(){};ClientRequest.prototype.setSocketKeepAlive=function(){};// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method
|
|
4556
|
-
var unsafeHeaders=['accept-charset','accept-encoding','access-control-request-headers','access-control-request-method','connection','content-length','cookie','cookie2','date','dnt','expect','host','keep-alive','origin','referer','te','trailer','transfer-encoding','upgrade','via'];}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("buffer").Buffer);},{"./capability":
|
|
4884
|
+
var unsafeHeaders=['accept-charset','accept-encoding','access-control-request-headers','access-control-request-method','connection','content-length','cookie','cookie2','date','dnt','expect','host','keep-alive','origin','referer','te','trailer','transfer-encoding','upgrade','via'];}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("buffer").Buffer);},{"./capability":195,"./response":197,"_process":160,"buffer":57,"inherits":111,"readable-stream":212}],197:[function(require,module,exports){(function(process,global,Buffer){(function(){var capability=require('./capability');var inherits=require('inherits');var stream=require('readable-stream');var rStates=exports.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4};var IncomingMessage=exports.IncomingMessage=function(xhr,response,mode,resetTimers){var self=this;stream.Readable.call(self);self._mode=mode;self.headers={};self.rawHeaders=[];self.trailers={};self.rawTrailers=[];// Fake the 'close' event, but only once 'end' fires
|
|
4557
4885
|
self.on('end',function(){// The nextTick is necessary to prevent the 'request' module from causing an infinite loop
|
|
4558
4886
|
process.nextTick(function(){self.emit('close');});});if(mode==='fetch'){self._fetchResponse=response;self.url=response.url;self.statusCode=response.status;self.statusMessage=response.statusText;response.headers.forEach(function(header,key){self.headers[key.toLowerCase()]=header;self.rawHeaders.push(key,header);});if(capability.writableStream){var writable=new WritableStream({write:function(chunk){resetTimers(false);return new Promise(function(resolve,reject){if(self._destroyed){reject();}else if(self.push(Buffer.from(chunk))){resolve();}else{self._resumeFetch=resolve;}});},close:function(){resetTimers(true);if(!self._destroyed)self.push(null);},abort:function(err){resetTimers(true);if(!self._destroyed)self.emit('error',err);}});try{response.body.pipeTo(writable).catch(function(err){resetTimers(true);if(!self._destroyed)self.emit('error',err);});return;}catch(e){}// pipeTo method isn't defined. Can't find a better way to feature test this
|
|
4559
4887
|
}// fallback for when writableStream or pipeTo aren't available
|
|
@@ -4561,7 +4889,7 @@ var reader=response.body.getReader();function read(){reader.read().then(function
|
|
|
4561
4889
|
}}};inherits(IncomingMessage,stream.Readable);IncomingMessage.prototype._read=function(){var self=this;var resolve=self._resumeFetch;if(resolve){self._resumeFetch=null;resolve();}};IncomingMessage.prototype._onXHRProgress=function(resetTimers){var self=this;var xhr=self._xhr;var response=null;switch(self._mode){case'text':response=xhr.responseText;if(response.length>self._pos){var newData=response.substr(self._pos);if(self._charset==='x-user-defined'){var buffer=Buffer.alloc(newData.length);for(var i=0;i<newData.length;i++)buffer[i]=newData.charCodeAt(i)&0xff;self.push(buffer);}else{self.push(newData,self._charset);}self._pos=response.length;}break;case'arraybuffer':if(xhr.readyState!==rStates.DONE||!xhr.response)break;response=xhr.response;self.push(Buffer.from(new Uint8Array(response)));break;case'moz-chunked-arraybuffer':// take whole
|
|
4562
4890
|
response=xhr.response;if(xhr.readyState!==rStates.LOADING||!response)break;self.push(Buffer.from(new Uint8Array(response)));break;case'ms-stream':response=xhr.response;if(xhr.readyState!==rStates.LOADING)break;var reader=new global.MSStreamReader();reader.onprogress=function(){if(reader.result.byteLength>self._pos){self.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))));self._pos=reader.result.byteLength;}};reader.onload=function(){resetTimers(true);self.push(null);};// reader.onerror = ??? // TODO: this
|
|
4563
4891
|
reader.readAsArrayBuffer(response);break;}// The ms-stream case handles end separately in reader.onload()
|
|
4564
|
-
if(self._xhr.readyState===rStates.DONE&&self._mode!=='ms-stream'){resetTimers(true);self.push(null);}};}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("buffer").Buffer);},{"./capability":
|
|
4892
|
+
if(self._xhr.readyState===rStates.DONE&&self._mode!=='ms-stream'){resetTimers(true);self.push(null);}};}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("buffer").Buffer);},{"./capability":195,"_process":160,"buffer":57,"inherits":111,"readable-stream":212}],198:[function(require,module,exports){arguments[4][180][0].apply(exports,arguments);},{"dup":180}],199:[function(require,module,exports){(function(process){(function(){// Copyright Joyent, Inc. and other Node contributors.
|
|
4565
4893
|
//
|
|
4566
4894
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
4567
4895
|
// copy of this software and associated documentation files (the
|
|
@@ -4606,7 +4934,7 @@ enumerable:false,get:function get(){if(this._readableState===undefined||this._wr
|
|
|
4606
4934
|
// has not been initialized yet
|
|
4607
4935
|
if(this._readableState===undefined||this._writableState===undefined){return;}// backward compatibility, the user is explicitly
|
|
4608
4936
|
// managing destroyed
|
|
4609
|
-
this._readableState.destroyed=value;this._writableState.destroyed=value;}});}).call(this);}).call(this,require('_process'));},{"./_stream_readable":
|
|
4937
|
+
this._readableState.destroyed=value;this._writableState.destroyed=value;}});}).call(this);}).call(this,require('_process'));},{"./_stream_readable":201,"./_stream_writable":203,"_process":160,"inherits":111}],200:[function(require,module,exports){arguments[4][182][0].apply(exports,arguments);},{"./_stream_transform":202,"dup":182,"inherits":111}],201:[function(require,module,exports){(function(process,global){(function(){// Copyright Joyent, Inc. and other Node contributors.
|
|
4610
4938
|
//
|
|
4611
4939
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
4612
4940
|
// copy of this software and associated documentation files (the
|
|
@@ -4858,7 +5186,7 @@ if(state.decoder)ret=state.buffer.join('');else if(state.buffer.length===1)ret=s
|
|
|
4858
5186
|
ret=state.buffer.consume(n,state.decoder);}return ret;}function endReadable(stream){var state=stream._readableState;debug('endReadable',state.endEmitted);if(!state.endEmitted){state.ended=true;process.nextTick(endReadableNT,state,stream);}}function endReadableNT(state,stream){debug('endReadableNT',state.endEmitted,state.length);// Check that we didn't get one last unshift.
|
|
4859
5187
|
if(!state.endEmitted&&state.length===0){state.endEmitted=true;stream.readable=false;stream.emit('end');if(state.autoDestroy){// In case of duplex streams we need a way to detect
|
|
4860
5188
|
// if the writable side is ready for autoDestroy as well
|
|
4861
|
-
var wState=stream._writableState;if(!wState||wState.autoDestroy&&wState.finished){stream.destroy();}}}}if(typeof Symbol==='function'){Readable.from=function(iterable,opts){if(from===undefined){from=require('./internal/streams/from');}return from(Readable,iterable,opts);};}function indexOf(xs,x){for(var i=0,l=xs.length;i<l;i++){if(xs[i]===x)return i;}return-1;}}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"../errors":
|
|
5189
|
+
var wState=stream._writableState;if(!wState||wState.autoDestroy&&wState.finished){stream.destroy();}}}}if(typeof Symbol==='function'){Readable.from=function(iterable,opts){if(from===undefined){from=require('./internal/streams/from');}return from(Readable,iterable,opts);};}function indexOf(xs,x){for(var i=0,l=xs.length;i<l;i++){if(xs[i]===x)return i;}return-1;}}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"../errors":198,"./_stream_duplex":199,"./internal/streams/async_iterator":204,"./internal/streams/buffer_list":205,"./internal/streams/destroy":206,"./internal/streams/from":208,"./internal/streams/state":210,"./internal/streams/stream":211,"_process":160,"buffer":57,"events":78,"inherits":111,"string_decoder/":213,"util":55}],202:[function(require,module,exports){arguments[4][184][0].apply(exports,arguments);},{"../errors":198,"./_stream_duplex":199,"dup":184,"inherits":111}],203:[function(require,module,exports){(function(process,global){(function(){// Copyright Joyent, Inc. and other Node contributors.
|
|
4862
5190
|
//
|
|
4863
5191
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
4864
5192
|
// copy of this software and associated documentation files (the
|
|
@@ -4993,7 +5321,7 @@ enumerable:false,get:function get(){if(this._writableState===undefined){return f
|
|
|
4993
5321
|
// has not been initialized yet
|
|
4994
5322
|
if(!this._writableState){return;}// backward compatibility, the user is explicitly
|
|
4995
5323
|
// managing destroyed
|
|
4996
|
-
this._writableState.destroyed=value;}});Writable.prototype.destroy=destroyImpl.destroy;Writable.prototype._undestroy=destroyImpl.undestroy;Writable.prototype._destroy=function(err,cb){cb(err);};}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"../errors":
|
|
5324
|
+
this._writableState.destroyed=value;}});Writable.prototype.destroy=destroyImpl.destroy;Writable.prototype._undestroy=destroyImpl.undestroy;Writable.prototype._destroy=function(err,cb){cb(err);};}).call(this);}).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"../errors":198,"./_stream_duplex":199,"./internal/streams/destroy":206,"./internal/streams/state":210,"./internal/streams/stream":211,"_process":160,"buffer":57,"inherits":111,"util-deprecate":218}],204:[function(require,module,exports){(function(process){(function(){'use strict';var _Object$setPrototypeO;function _defineProperty(obj,key,value){key=_toPropertyKey(key);if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return typeof key==="symbol"?key:String(key);}function _toPrimitive(input,hint){if(typeof input!=="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==undefined){var res=prim.call(input,hint||"default");if(typeof res!=="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.");}return(hint==="string"?String:Number)(input);}var finished=require('./end-of-stream');var kLastResolve=Symbol('lastResolve');var kLastReject=Symbol('lastReject');var kError=Symbol('error');var kEnded=Symbol('ended');var kLastPromise=Symbol('lastPromise');var kHandlePromise=Symbol('handlePromise');var kStream=Symbol('stream');function createIterResult(value,done){return{value:value,done:done};}function readAndResolve(iter){var resolve=iter[kLastResolve];if(resolve!==null){var data=iter[kStream].read();// we defer if data is null
|
|
4997
5325
|
// we can be expecting either 'end' or
|
|
4998
5326
|
// 'error'
|
|
4999
5327
|
if(data!==null){iter[kLastPromise]=null;iter[kLastResolve]=null;iter[kLastReject]=null;resolve(createIterResult(data,false));}}}function onReadable(iter){// we wait for the next tick, because it might
|
|
@@ -5015,7 +5343,7 @@ var data=this[kStream].read();if(data!==null){return Promise.resolve(createIterR
|
|
|
5015
5343
|
// Readable class this is attached to
|
|
5016
5344
|
return new Promise(function(resolve,reject){_this2[kStream].destroy(null,function(err){if(err){reject(err);return;}resolve(createIterResult(undefined,true));});});}),_Object$setPrototypeO),AsyncIteratorPrototype);var createReadableStreamAsyncIterator=function createReadableStreamAsyncIterator(stream){var _Object$create;var iterator=Object.create(ReadableStreamAsyncIteratorPrototype,(_Object$create={},_defineProperty(_Object$create,kStream,{value:stream,writable:true}),_defineProperty(_Object$create,kLastResolve,{value:null,writable:true}),_defineProperty(_Object$create,kLastReject,{value:null,writable:true}),_defineProperty(_Object$create,kError,{value:null,writable:true}),_defineProperty(_Object$create,kEnded,{value:stream._readableState.endEmitted,writable:true}),_defineProperty(_Object$create,kHandlePromise,{value:function value(resolve,reject){var data=iterator[kStream].read();if(data){iterator[kLastPromise]=null;iterator[kLastResolve]=null;iterator[kLastReject]=null;resolve(createIterResult(data,false));}else{iterator[kLastResolve]=resolve;iterator[kLastReject]=reject;}},writable:true}),_Object$create));iterator[kLastPromise]=null;finished(stream,function(err){if(err&&err.code!=='ERR_STREAM_PREMATURE_CLOSE'){var reject=iterator[kLastReject];// reject if we are waiting for data in the Promise
|
|
5017
5345
|
// returned by next() and store the error
|
|
5018
|
-
if(reject!==null){iterator[kLastPromise]=null;iterator[kLastResolve]=null;iterator[kLastReject]=null;reject(err);}iterator[kError]=err;return;}var resolve=iterator[kLastResolve];if(resolve!==null){iterator[kLastPromise]=null;iterator[kLastResolve]=null;iterator[kLastReject]=null;resolve(createIterResult(undefined,true));}iterator[kEnded]=true;});stream.on('readable',onReadable.bind(null,iterator));return iterator;};module.exports=createReadableStreamAsyncIterator;}).call(this);}).call(this,require('_process'));},{"./end-of-stream":
|
|
5346
|
+
if(reject!==null){iterator[kLastPromise]=null;iterator[kLastResolve]=null;iterator[kLastReject]=null;reject(err);}iterator[kError]=err;return;}var resolve=iterator[kLastResolve];if(resolve!==null){iterator[kLastPromise]=null;iterator[kLastResolve]=null;iterator[kLastReject]=null;resolve(createIterResult(undefined,true));}iterator[kEnded]=true;});stream.on('readable',onReadable.bind(null,iterator));return iterator;};module.exports=createReadableStreamAsyncIterator;}).call(this);}).call(this,require('_process'));},{"./end-of-stream":207,"_process":160}],205:[function(require,module,exports){arguments[4][187][0].apply(exports,arguments);},{"buffer":57,"dup":187,"util":55}],206:[function(require,module,exports){(function(process){(function(){'use strict';// undocumented cb() API, needed for core, not for public API
|
|
5019
5347
|
function destroy(err,cb){var _this=this;var readableDestroyed=this._readableState&&this._readableState.destroyed;var writableDestroyed=this._writableState&&this._writableState.destroyed;if(readableDestroyed||writableDestroyed){if(cb){cb(err);}else if(err){if(!this._writableState){process.nextTick(emitErrorNT,this,err);}else if(!this._writableState.errorEmitted){this._writableState.errorEmitted=true;process.nextTick(emitErrorNT,this,err);}}return this;}// we set destroyed to true before firing error callbacks in order
|
|
5020
5348
|
// to make it re-entrance safe in case destroy() is called within callbacks
|
|
5021
5349
|
if(this._readableState){this._readableState.destroyed=true;}// if this is a duplex stream mark the writable part as destroyed as well
|
|
@@ -5024,7 +5352,7 @@ if(this._writableState){this._writableState.destroyed=true;}this._destroy(err||n
|
|
|
5024
5352
|
// For now when you opt-in to autoDestroy we allow
|
|
5025
5353
|
// the error to be emitted nextTick. In a future
|
|
5026
5354
|
// semver major update we should change the default to this.
|
|
5027
|
-
var rState=stream._readableState;var wState=stream._writableState;if(rState&&rState.autoDestroy||wState&&wState.autoDestroy)stream.destroy(err);else stream.emit('error',err);}module.exports={destroy:destroy,undestroy:undestroy,errorOrDestroy:errorOrDestroy};}).call(this);}).call(this,require('_process'));},{"_process":
|
|
5355
|
+
var rState=stream._readableState;var wState=stream._writableState;if(rState&&rState.autoDestroy||wState&&wState.autoDestroy)stream.destroy(err);else stream.emit('error',err);}module.exports={destroy:destroy,undestroy:undestroy,errorOrDestroy:errorOrDestroy};}).call(this);}).call(this,require('_process'));},{"_process":160}],207:[function(require,module,exports){arguments[4][189][0].apply(exports,arguments);},{"../../../errors":198,"dup":189}],208:[function(require,module,exports){arguments[4][190][0].apply(exports,arguments);},{"dup":190}],209:[function(require,module,exports){arguments[4][191][0].apply(exports,arguments);},{"../../../errors":198,"./end-of-stream":207,"dup":191}],210:[function(require,module,exports){arguments[4][192][0].apply(exports,arguments);},{"../../../errors":198,"dup":192}],211:[function(require,module,exports){arguments[4][193][0].apply(exports,arguments);},{"dup":193,"events":78}],212:[function(require,module,exports){exports=module.exports=require('./lib/_stream_readable.js');exports.Stream=exports;exports.Readable=exports;exports.Writable=require('./lib/_stream_writable.js');exports.Duplex=require('./lib/_stream_duplex.js');exports.Transform=require('./lib/_stream_transform.js');exports.PassThrough=require('./lib/_stream_passthrough.js');exports.finished=require('./lib/internal/streams/end-of-stream.js');exports.pipeline=require('./lib/internal/streams/pipeline.js');},{"./lib/_stream_duplex.js":199,"./lib/_stream_passthrough.js":200,"./lib/_stream_readable.js":201,"./lib/_stream_transform.js":202,"./lib/_stream_writable.js":203,"./lib/internal/streams/end-of-stream.js":207,"./lib/internal/streams/pipeline.js":209}],213:[function(require,module,exports){// Copyright Joyent, Inc. and other Node contributors.
|
|
5028
5356
|
//
|
|
5029
5357
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
5030
5358
|
// copy of this software and associated documentation files (the
|
|
@@ -5078,7 +5406,7 @@ function utf8End(buf){var r=buf&&buf.length?this.write(buf):'';if(this.lastNeed)
|
|
|
5078
5406
|
function utf16Text(buf,i){if((buf.length-i)%2===0){var r=buf.toString('utf16le',i);if(r){var c=r.charCodeAt(r.length-1);if(c>=0xD800&&c<=0xDBFF){this.lastNeed=2;this.lastTotal=4;this.lastChar[0]=buf[buf.length-2];this.lastChar[1]=buf[buf.length-1];return r.slice(0,-1);}}return r;}this.lastNeed=1;this.lastTotal=2;this.lastChar[0]=buf[buf.length-1];return buf.toString('utf16le',i,buf.length-1);}// For UTF-16LE we do not explicitly append special replacement characters if we
|
|
5079
5407
|
// end on a partial character, we simply let v8 handle that.
|
|
5080
5408
|
function utf16End(buf){var r=buf&&buf.length?this.write(buf):'';if(this.lastNeed){var end=this.lastTotal-this.lastNeed;return r+this.lastChar.toString('utf16le',0,end);}return r;}function base64Text(buf,i){var n=(buf.length-i)%3;if(n===0)return buf.toString('base64',i);this.lastNeed=3-n;this.lastTotal=3;if(n===1){this.lastChar[0]=buf[buf.length-1];}else{this.lastChar[0]=buf[buf.length-2];this.lastChar[1]=buf[buf.length-1];}return buf.toString('base64',i,buf.length-n);}function base64End(buf){var r=buf&&buf.length?this.write(buf):'';if(this.lastNeed)return r+this.lastChar.toString('base64',0,3-this.lastNeed);return r;}// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
|
|
5081
|
-
function simpleWrite(buf){return buf.toString(this.encoding);}function simpleEnd(buf){return buf&&buf.length?this.write(buf):'';}},{"safe-buffer":
|
|
5409
|
+
function simpleWrite(buf){return buf.toString(this.encoding);}function simpleEnd(buf){return buf&&buf.length?this.write(buf):'';}},{"safe-buffer":170}],214:[function(require,module,exports){(function(process){(function(){var Stream=require('stream');// through
|
|
5082
5410
|
//
|
|
5083
5411
|
// a stream that does nothing but re-emit the input.
|
|
5084
5412
|
// useful for aggregating a series of changing but not ending streams into one stream)
|
|
@@ -5093,13 +5421,13 @@ if(_ended)return stream;if(data===null)_ended=true;buffer.push(data);drain();ret
|
|
|
5093
5421
|
stream.on('end',function(){stream.readable=false;if(!stream.writable&&stream.autoDestroy)process.nextTick(function(){stream.destroy();});});function _end(){stream.writable=false;end.call(stream);if(!stream.readable&&stream.autoDestroy)stream.destroy();}stream.end=function(data){if(ended)return;ended=true;if(arguments.length)stream.write(data);_end();// will emit or queue
|
|
5094
5422
|
return stream;};stream.destroy=function(){if(destroyed)return;destroyed=true;ended=true;buffer.length=0;stream.writable=stream.readable=false;stream.emit('close');return stream;};stream.pause=function(){if(stream.paused)return;stream.paused=true;return stream;};stream.resume=function(){if(stream.paused){stream.paused=false;stream.emit('resume');}drain();//may have become paused again,
|
|
5095
5423
|
//as drain emits 'data'.
|
|
5096
|
-
if(!stream.paused)stream.emit('drain');return stream;};return stream;}}).call(this);}).call(this,require('_process'));},{"_process":
|
|
5424
|
+
if(!stream.paused)stream.emit('drain');return stream;};return stream;}}).call(this);}).call(this,require('_process'));},{"_process":160,"stream":179}],215:[function(require,module,exports){(function(setImmediate,clearImmediate){(function(){var nextTick=require('process/browser.js').nextTick;var apply=Function.prototype.apply;var slice=Array.prototype.slice;var immediateIds={};var nextImmediateId=0;// DOM APIs, for completeness
|
|
5097
5425
|
exports.setTimeout=function(){return new Timeout(apply.call(setTimeout,window,arguments),clearTimeout);};exports.setInterval=function(){return new Timeout(apply.call(setInterval,window,arguments),clearInterval);};exports.clearTimeout=exports.clearInterval=function(timeout){timeout.close();};function Timeout(id,clearFn){this._id=id;this._clearFn=clearFn;}Timeout.prototype.unref=Timeout.prototype.ref=function(){};Timeout.prototype.close=function(){this._clearFn.call(window,this._id);};// Does not start the time, just sets up the members needed.
|
|
5098
5426
|
exports.enroll=function(item,msecs){clearTimeout(item._idleTimeoutId);item._idleTimeout=msecs;};exports.unenroll=function(item){clearTimeout(item._idleTimeoutId);item._idleTimeout=-1;};exports._unrefActive=exports.active=function(item){clearTimeout(item._idleTimeoutId);var msecs=item._idleTimeout;if(msecs>=0){item._idleTimeoutId=setTimeout(function onTimeout(){if(item._onTimeout)item._onTimeout();},msecs);}};// That's not how node.js implements it but the exposed api is the same.
|
|
5099
5427
|
exports.setImmediate=typeof setImmediate==="function"?setImmediate:function(fn){var id=nextImmediateId++;var args=arguments.length<2?false:slice.call(arguments,1);immediateIds[id]=true;nextTick(function onNextTick(){if(immediateIds[id]){// fn.call() is faster so we optimize for the common use-case
|
|
5100
5428
|
// @see http://jsperf.com/call-apply-segu
|
|
5101
5429
|
if(args){fn.apply(null,args);}else{fn.call(null);}// Prevent ids from leaking
|
|
5102
|
-
exports.clearImmediate(id);}});return id;};exports.clearImmediate=typeof clearImmediate==="function"?clearImmediate:function(id){delete immediateIds[id];};}).call(this);}).call(this,require("timers").setImmediate,require("timers").clearImmediate);},{"process/browser.js":
|
|
5430
|
+
exports.clearImmediate(id);}});return id;};exports.clearImmediate=typeof clearImmediate==="function"?clearImmediate:function(id){delete immediateIds[id];};}).call(this);}).call(this,require("timers").setImmediate,require("timers").clearImmediate);},{"process/browser.js":160,"timers":215}],216:[function(require,module,exports){(function(global){(function(){(function(global,factory){typeof exports==='object'&&typeof module!=='undefined'?module.exports=factory():typeof define==='function'&&define.amd?define('underscore',factory):(global=typeof globalThis!=='undefined'?globalThis:global||self,function(){var current=global._;var exports=global._=factory();exports.noConflict=function(){global._=current;return exports;};}());})(this,function(){// Underscore.js 1.13.8
|
|
5103
5431
|
// https://underscorejs.org
|
|
5104
5432
|
// (c) 2009-2026 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors
|
|
5105
5433
|
// Underscore may be freely distributed under the MIT license.
|
|
@@ -5469,7 +5797,7 @@ each(['concat','join','slice'],function(name){var method=ArrayProto[name];_$1.pr
|
|
|
5469
5797
|
var allExports={__proto__:null,VERSION:VERSION,restArguments:restArguments,isObject:isObject,isNull:isNull,isUndefined:isUndefined,isBoolean:isBoolean,isElement:isElement,isString:isString,isNumber:isNumber,isDate:isDate,isRegExp:isRegExp,isError:isError,isSymbol:isSymbol,isArrayBuffer:isArrayBuffer,isDataView:isDataView$1,isArray:isArray,isFunction:isFunction$1,isArguments:isArguments$1,isFinite:isFinite$1,isNaN:isNaN$1,isTypedArray:isTypedArray$1,isEmpty:isEmpty,isMatch:isMatch,isEqual:isEqual,isMap:isMap,isWeakMap:isWeakMap,isSet:isSet,isWeakSet:isWeakSet,keys:keys,allKeys:allKeys,values:values,pairs:pairs,invert:invert,functions:functions,methods:functions,extend:extend,extendOwn:extendOwn,assign:extendOwn,defaults:defaults,create:create,clone:clone,tap:tap,get:get,has:has,mapObject:mapObject,identity:identity,constant:constant,noop:noop,toPath:toPath$1,property:property,propertyOf:propertyOf,matcher:matcher,matches:matcher,times:times,random:random,now:now,escape:_escape,unescape:_unescape,templateSettings:templateSettings,template:template,result:result,uniqueId:uniqueId,chain:chain,iteratee:iteratee,partial:partial,bind:bind,bindAll:bindAll,memoize:memoize,delay:delay,defer:defer,throttle:throttle,debounce:debounce,wrap:wrap,negate:negate,compose:compose,after:after,before:before,once:once,findKey:findKey,findIndex:findIndex,findLastIndex:findLastIndex,sortedIndex:sortedIndex,indexOf:indexOf,lastIndexOf:lastIndexOf,find:find,detect:find,findWhere:findWhere,each:each,forEach:each,map:map,collect:map,reduce:reduce,foldl:reduce,inject:reduce,reduceRight:reduceRight,foldr:reduceRight,filter:filter,select:filter,reject:reject,every:every,all:every,some:some,any:some,contains:contains,includes:contains,include:contains,invoke:invoke,pluck:pluck,where:where,max:max,min:min,shuffle:shuffle,sample:sample,sortBy:sortBy,groupBy:groupBy,indexBy:indexBy,countBy:countBy,partition:partition,toArray:toArray,size:size,pick:pick,omit:omit,first:first,head:first,take:first,initial:initial,last:last,rest:rest,tail:rest,drop:rest,compact:compact,flatten:flatten,without:without,uniq:uniq,unique:uniq,union:union,intersection:intersection,difference:difference,unzip:unzip,transpose:unzip,zip:zip,object:object,range:range,chunk:chunk,mixin:mixin,'default':_$1};// Default Export
|
|
5470
5798
|
// Add all of the Underscore functions to the wrapper object.
|
|
5471
5799
|
var _=mixin(allExports);// Legacy Node.js API.
|
|
5472
|
-
_._=_;return _;});}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{}],
|
|
5800
|
+
_._=_;return _;});}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{}],217:[function(require,module,exports){/*
|
|
5473
5801
|
* Copyright Joyent, Inc. and other Node contributors.
|
|
5474
5802
|
*
|
|
5475
5803
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
@@ -5647,7 +5975,7 @@ if(psychotic){result.hostname=isAbsolute?'':srcPath.length?srcPath.shift():'';re
|
|
|
5647
5975
|
* this especially happens in cases like
|
|
5648
5976
|
* url.resolveObject('mailto:local1@domain1', 'local2@domain2')
|
|
5649
5977
|
*/var authInHost=result.host&&result.host.indexOf('@')>0?result.host.split('@'):false;if(authInHost){result.auth=authInHost.shift();result.hostname=authInHost.shift();result.host=result.hostname;}}mustEndAbs=mustEndAbs||result.host&&srcPath.length;if(mustEndAbs&&!isAbsolute){srcPath.unshift('');}if(srcPath.length>0){result.pathname=srcPath.join('/');}else{result.pathname=null;result.path=null;}// to support request.http
|
|
5650
|
-
if(result.pathname!==null||result.search!==null){result.path=(result.pathname?result.pathname:'')+(result.search?result.search:'');}result.auth=relative.auth||result.auth;result.slashes=result.slashes||relative.slashes;result.href=result.format();return result;};Url.prototype.parseHost=function(){var host=this.host;var port=portPattern.exec(host);if(port){port=port[0];if(port!==':'){this.port=port.substr(1);}host=host.substr(0,host.length-port.length);}if(host){this.hostname=host;}};exports.parse=urlParse;exports.resolve=urlResolve;exports.resolveObject=urlResolveObject;exports.format=urlFormat;exports.Url=Url;},{"punycode/":
|
|
5978
|
+
if(result.pathname!==null||result.search!==null){result.path=(result.pathname?result.pathname:'')+(result.search?result.search:'');}result.auth=relative.auth||result.auth;result.slashes=result.slashes||relative.slashes;result.href=result.format();return result;};Url.prototype.parseHost=function(){var host=this.host;var port=portPattern.exec(host);if(port){port=port[0];if(port!==':'){this.port=port.substr(1);}host=host.substr(0,host.length-port.length);}if(host){this.hostname=host;}};exports.parse=urlParse;exports.resolve=urlResolve;exports.resolveObject=urlResolveObject;exports.format=urlFormat;exports.Url=Url;},{"punycode/":161,"qs":163}],218:[function(require,module,exports){(function(global){(function(){/**
|
|
5651
5979
|
* Module exports.
|
|
5652
5980
|
*/module.exports=deprecate;/**
|
|
5653
5981
|
* Mark that a method should not be used.
|
|
@@ -5672,12 +6000,12 @@ if(result.pathname!==null||result.search!==null){result.path=(result.pathname?re
|
|
|
5672
6000
|
* @returns {Boolean}
|
|
5673
6001
|
* @api private
|
|
5674
6002
|
*/function config(name){// accessing global.localStorage can trigger a DOMException in sandboxed iframes
|
|
5675
|
-
try{if(!global.localStorage)return false;}catch(_){return false;}var val=global.localStorage[name];if(null==val)return false;return String(val).toLowerCase()==='true';}}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{}],
|
|
6003
|
+
try{if(!global.localStorage)return false;}catch(_){return false;}var val=global.localStorage[name];if(null==val)return false;return String(val).toLowerCase()==='true';}}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{}],219:[function(require,module,exports){module.exports=function isBuffer(arg){return arg&&typeof arg==='object'&&typeof arg.copy==='function'&&typeof arg.fill==='function'&&typeof arg.readUInt8==='function';};},{}],220:[function(require,module,exports){// Currently in sync with Node.js lib/internal/util/types.js
|
|
5676
6004
|
// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9
|
|
5677
6005
|
'use strict';var isArgumentsObject=require('is-arguments');var isGeneratorFunction=require('is-generator-function');var whichTypedArray=require('which-typed-array');var isTypedArray=require('is-typed-array');function uncurryThis(f){return f.call.bind(f);}var BigIntSupported=typeof BigInt!=='undefined';var SymbolSupported=typeof Symbol!=='undefined';var ObjectToString=uncurryThis(Object.prototype.toString);var numberValue=uncurryThis(Number.prototype.valueOf);var stringValue=uncurryThis(String.prototype.valueOf);var booleanValue=uncurryThis(Boolean.prototype.valueOf);if(BigIntSupported){var bigIntValue=uncurryThis(BigInt.prototype.valueOf);}if(SymbolSupported){var symbolValue=uncurryThis(Symbol.prototype.valueOf);}function checkBoxedPrimitive(value,prototypeValueOf){if(typeof value!=='object'){return false;}try{prototypeValueOf(value);return true;}catch(e){return false;}}exports.isArgumentsObject=isArgumentsObject;exports.isGeneratorFunction=isGeneratorFunction;exports.isTypedArray=isTypedArray;// Taken from here and modified for better browser support
|
|
5678
6006
|
// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js
|
|
5679
6007
|
function isPromise(input){return typeof Promise!=='undefined'&&input instanceof Promise||input!==null&&typeof input==='object'&&typeof input.then==='function'&&typeof input.catch==='function';}exports.isPromise=isPromise;function isArrayBufferView(value){if(typeof ArrayBuffer!=='undefined'&&ArrayBuffer.isView){return ArrayBuffer.isView(value);}return isTypedArray(value)||isDataView(value);}exports.isArrayBufferView=isArrayBufferView;function isUint8Array(value){return whichTypedArray(value)==='Uint8Array';}exports.isUint8Array=isUint8Array;function isUint8ClampedArray(value){return whichTypedArray(value)==='Uint8ClampedArray';}exports.isUint8ClampedArray=isUint8ClampedArray;function isUint16Array(value){return whichTypedArray(value)==='Uint16Array';}exports.isUint16Array=isUint16Array;function isUint32Array(value){return whichTypedArray(value)==='Uint32Array';}exports.isUint32Array=isUint32Array;function isInt8Array(value){return whichTypedArray(value)==='Int8Array';}exports.isInt8Array=isInt8Array;function isInt16Array(value){return whichTypedArray(value)==='Int16Array';}exports.isInt16Array=isInt16Array;function isInt32Array(value){return whichTypedArray(value)==='Int32Array';}exports.isInt32Array=isInt32Array;function isFloat32Array(value){return whichTypedArray(value)==='Float32Array';}exports.isFloat32Array=isFloat32Array;function isFloat64Array(value){return whichTypedArray(value)==='Float64Array';}exports.isFloat64Array=isFloat64Array;function isBigInt64Array(value){return whichTypedArray(value)==='BigInt64Array';}exports.isBigInt64Array=isBigInt64Array;function isBigUint64Array(value){return whichTypedArray(value)==='BigUint64Array';}exports.isBigUint64Array=isBigUint64Array;function isMapToString(value){return ObjectToString(value)==='[object Map]';}isMapToString.working=typeof Map!=='undefined'&&isMapToString(new Map());function isMap(value){if(typeof Map==='undefined'){return false;}return isMapToString.working?isMapToString(value):value instanceof Map;}exports.isMap=isMap;function isSetToString(value){return ObjectToString(value)==='[object Set]';}isSetToString.working=typeof Set!=='undefined'&&isSetToString(new Set());function isSet(value){if(typeof Set==='undefined'){return false;}return isSetToString.working?isSetToString(value):value instanceof Set;}exports.isSet=isSet;function isWeakMapToString(value){return ObjectToString(value)==='[object WeakMap]';}isWeakMapToString.working=typeof WeakMap!=='undefined'&&isWeakMapToString(new WeakMap());function isWeakMap(value){if(typeof WeakMap==='undefined'){return false;}return isWeakMapToString.working?isWeakMapToString(value):value instanceof WeakMap;}exports.isWeakMap=isWeakMap;function isWeakSetToString(value){return ObjectToString(value)==='[object WeakSet]';}isWeakSetToString.working=typeof WeakSet!=='undefined'&&isWeakSetToString(new WeakSet());function isWeakSet(value){return isWeakSetToString(value);}exports.isWeakSet=isWeakSet;function isArrayBufferToString(value){return ObjectToString(value)==='[object ArrayBuffer]';}isArrayBufferToString.working=typeof ArrayBuffer!=='undefined'&&isArrayBufferToString(new ArrayBuffer());function isArrayBuffer(value){if(typeof ArrayBuffer==='undefined'){return false;}return isArrayBufferToString.working?isArrayBufferToString(value):value instanceof ArrayBuffer;}exports.isArrayBuffer=isArrayBuffer;function isDataViewToString(value){return ObjectToString(value)==='[object DataView]';}isDataViewToString.working=typeof ArrayBuffer!=='undefined'&&typeof DataView!=='undefined'&&isDataViewToString(new DataView(new ArrayBuffer(1),0,1));function isDataView(value){if(typeof DataView==='undefined'){return false;}return isDataViewToString.working?isDataViewToString(value):value instanceof DataView;}exports.isDataView=isDataView;// Store a copy of SharedArrayBuffer in case it's deleted elsewhere
|
|
5680
|
-
var SharedArrayBufferCopy=typeof SharedArrayBuffer!=='undefined'?SharedArrayBuffer:undefined;function isSharedArrayBufferToString(value){return ObjectToString(value)==='[object SharedArrayBuffer]';}function isSharedArrayBuffer(value){if(typeof SharedArrayBufferCopy==='undefined'){return false;}if(typeof isSharedArrayBufferToString.working==='undefined'){isSharedArrayBufferToString.working=isSharedArrayBufferToString(new SharedArrayBufferCopy());}return isSharedArrayBufferToString.working?isSharedArrayBufferToString(value):value instanceof SharedArrayBufferCopy;}exports.isSharedArrayBuffer=isSharedArrayBuffer;function isAsyncFunction(value){return ObjectToString(value)==='[object AsyncFunction]';}exports.isAsyncFunction=isAsyncFunction;function isMapIterator(value){return ObjectToString(value)==='[object Map Iterator]';}exports.isMapIterator=isMapIterator;function isSetIterator(value){return ObjectToString(value)==='[object Set Iterator]';}exports.isSetIterator=isSetIterator;function isGeneratorObject(value){return ObjectToString(value)==='[object Generator]';}exports.isGeneratorObject=isGeneratorObject;function isWebAssemblyCompiledModule(value){return ObjectToString(value)==='[object WebAssembly.Module]';}exports.isWebAssemblyCompiledModule=isWebAssemblyCompiledModule;function isNumberObject(value){return checkBoxedPrimitive(value,numberValue);}exports.isNumberObject=isNumberObject;function isStringObject(value){return checkBoxedPrimitive(value,stringValue);}exports.isStringObject=isStringObject;function isBooleanObject(value){return checkBoxedPrimitive(value,booleanValue);}exports.isBooleanObject=isBooleanObject;function isBigIntObject(value){return BigIntSupported&&checkBoxedPrimitive(value,bigIntValue);}exports.isBigIntObject=isBigIntObject;function isSymbolObject(value){return SymbolSupported&&checkBoxedPrimitive(value,symbolValue);}exports.isSymbolObject=isSymbolObject;function isBoxedPrimitive(value){return isNumberObject(value)||isStringObject(value)||isBooleanObject(value)||isBigIntObject(value)||isSymbolObject(value);}exports.isBoxedPrimitive=isBoxedPrimitive;function isAnyArrayBuffer(value){return typeof Uint8Array!=='undefined'&&(isArrayBuffer(value)||isSharedArrayBuffer(value));}exports.isAnyArrayBuffer=isAnyArrayBuffer;['isProxy','isExternal','isModuleNamespaceObject'].forEach(function(method){Object.defineProperty(exports,method,{enumerable:false,value:function(){throw new Error(method+' is not supported in userland');}});});},{"is-arguments":
|
|
6008
|
+
var SharedArrayBufferCopy=typeof SharedArrayBuffer!=='undefined'?SharedArrayBuffer:undefined;function isSharedArrayBufferToString(value){return ObjectToString(value)==='[object SharedArrayBuffer]';}function isSharedArrayBuffer(value){if(typeof SharedArrayBufferCopy==='undefined'){return false;}if(typeof isSharedArrayBufferToString.working==='undefined'){isSharedArrayBufferToString.working=isSharedArrayBufferToString(new SharedArrayBufferCopy());}return isSharedArrayBufferToString.working?isSharedArrayBufferToString(value):value instanceof SharedArrayBufferCopy;}exports.isSharedArrayBuffer=isSharedArrayBuffer;function isAsyncFunction(value){return ObjectToString(value)==='[object AsyncFunction]';}exports.isAsyncFunction=isAsyncFunction;function isMapIterator(value){return ObjectToString(value)==='[object Map Iterator]';}exports.isMapIterator=isMapIterator;function isSetIterator(value){return ObjectToString(value)==='[object Set Iterator]';}exports.isSetIterator=isSetIterator;function isGeneratorObject(value){return ObjectToString(value)==='[object Generator]';}exports.isGeneratorObject=isGeneratorObject;function isWebAssemblyCompiledModule(value){return ObjectToString(value)==='[object WebAssembly.Module]';}exports.isWebAssemblyCompiledModule=isWebAssemblyCompiledModule;function isNumberObject(value){return checkBoxedPrimitive(value,numberValue);}exports.isNumberObject=isNumberObject;function isStringObject(value){return checkBoxedPrimitive(value,stringValue);}exports.isStringObject=isStringObject;function isBooleanObject(value){return checkBoxedPrimitive(value,booleanValue);}exports.isBooleanObject=isBooleanObject;function isBigIntObject(value){return BigIntSupported&&checkBoxedPrimitive(value,bigIntValue);}exports.isBigIntObject=isBigIntObject;function isSymbolObject(value){return SymbolSupported&&checkBoxedPrimitive(value,symbolValue);}exports.isSymbolObject=isSymbolObject;function isBoxedPrimitive(value){return isNumberObject(value)||isStringObject(value)||isBooleanObject(value)||isBigIntObject(value)||isSymbolObject(value);}exports.isBoxedPrimitive=isBoxedPrimitive;function isAnyArrayBuffer(value){return typeof Uint8Array!=='undefined'&&(isArrayBuffer(value)||isSharedArrayBuffer(value));}exports.isAnyArrayBuffer=isAnyArrayBuffer;['isProxy','isExternal','isModuleNamespaceObject'].forEach(function(method){Object.defineProperty(exports,method,{enumerable:false,value:function(){throw new Error(method+' is not supported in userland');}});});},{"is-arguments":112,"is-generator-function":114,"is-typed-array":120,"which-typed-array":222}],221:[function(require,module,exports){(function(process){(function(){// Copyright Joyent, Inc. and other Node contributors.
|
|
5681
6009
|
//
|
|
5682
6010
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
5683
6011
|
// copy of this software and associated documentation files (the
|
|
@@ -5757,268 +6085,17 @@ if(!reason){var newReason=new Error('Promise was rejected with a falsy value');n
|
|
|
5757
6085
|
// and that the callback throwing will reject the promise.
|
|
5758
6086
|
function callbackified(){var args=[];for(var i=0;i<arguments.length;i++){args.push(arguments[i]);}var maybeCb=args.pop();if(typeof maybeCb!=='function'){throw new TypeError('The last argument must be of type Function');}var self=this;var cb=function(){return maybeCb.apply(self,arguments);};// In true node style we process the callback on `nextTick` with all the
|
|
5759
6087
|
// implications (stack, `uncaughtException`, `async_hooks`)
|
|
5760
|
-
original.apply(this,args).then(function(ret){process.nextTick(cb.bind(null,null,ret));},function(rej){process.nextTick(callbackifyOnRejected.bind(null,rej,cb));});}Object.setPrototypeOf(callbackified,Object.getPrototypeOf(original));Object.defineProperties(callbackified,getOwnPropertyDescriptors(original));return callbackified;}exports.callbackify=callbackify;}).call(this);}).call(this,require('_process'));},{"./support/isBuffer":
|
|
6088
|
+
original.apply(this,args).then(function(ret){process.nextTick(cb.bind(null,null,ret));},function(rej){process.nextTick(callbackifyOnRejected.bind(null,rej,cb));});}Object.setPrototypeOf(callbackified,Object.getPrototypeOf(original));Object.defineProperties(callbackified,getOwnPropertyDescriptors(original));return callbackified;}exports.callbackify=callbackify;}).call(this);}).call(this,require('_process'));},{"./support/isBuffer":219,"./support/types":220,"_process":160,"inherits":111}],222:[function(require,module,exports){(function(global){(function(){'use strict';var forEach=require('for-each');var availableTypedArrays=require('available-typed-arrays');var callBind=require('call-bind');var callBound=require('call-bound');var gOPD=require('gopd');var getProto=require('get-proto');var $toString=callBound('Object.prototype.toString');var hasToStringTag=require('has-tostringtag/shams')();var g=typeof globalThis==='undefined'?global:globalThis;var typedArrays=availableTypedArrays();var $slice=callBound('String.prototype.slice');/** @type {<T = unknown>(array: readonly T[], value: unknown) => number} */var $indexOf=callBound('Array.prototype.indexOf',true)||function indexOf(array,value){for(var i=0;i<array.length;i+=1){if(array[i]===value){return i;}}return-1;};/** @typedef {import('./types').Getter} Getter *//** @type {import('./types').Cache} */var cache={__proto__:null};if(hasToStringTag&&gOPD&&getProto){forEach(typedArrays,function(typedArray){var arr=new g[typedArray]();if(Symbol.toStringTag in arr&&getProto){var proto=getProto(arr);// @ts-expect-error TS won't narrow inside a closure
|
|
5761
6089
|
var descriptor=gOPD(proto,Symbol.toStringTag);if(!descriptor&&proto){var superProto=getProto(proto);// @ts-expect-error TS won't narrow inside a closure
|
|
5762
6090
|
descriptor=gOPD(superProto,Symbol.toStringTag);}if(descriptor&&descriptor.get){var bound=callBind(descriptor.get);cache[(/** @type {`$${import('.').TypedArrayName}`} */'$'+typedArray)]=bound;}}});}else{forEach(typedArrays,function(typedArray){var arr=new g[typedArray]();var fn=arr.slice||arr.set;if(fn){var bound=/** @type {import('./types').BoundSlice | import('./types').BoundSet} */// @ts-expect-error TODO FIXME
|
|
5763
6091
|
callBind(fn);cache[(/** @type {`$${import('.').TypedArrayName}`} */'$'+typedArray)]=bound;}});}/** @type {(value: object) => false | import('.').TypedArrayName} */var tryTypedArrays=function tryAllTypedArrays(value){/** @type {ReturnType<typeof tryAllTypedArrays>} */var found=false;forEach(/** @type {Record<`\$${import('.').TypedArrayName}`, Getter>} */cache,/** @type {(getter: Getter, name: `\$${import('.').TypedArrayName}`) => void} */function(getter,typedArray){if(!found){try{// @ts-expect-error a throw is fine here
|
|
5764
6092
|
if('$'+getter(value)===typedArray){found=/** @type {import('.').TypedArrayName} */$slice(typedArray,1);}}catch(e){/**/}}});return found;};/** @type {(value: object) => false | import('.').TypedArrayName} */var trySlices=function tryAllSlices(value){/** @type {ReturnType<typeof tryAllSlices>} */var found=false;forEach(/** @type {Record<`\$${import('.').TypedArrayName}`, Getter>} */cache,/** @type {(getter: Getter, name: `\$${import('.').TypedArrayName}`) => void} */function(getter,name){if(!found){try{// @ts-expect-error a throw is fine here
|
|
5765
6093
|
getter(value);found=/** @type {import('.').TypedArrayName} */$slice(name,1);}catch(e){/**/}}});return found;};/** @type {import('.')} */module.exports=function whichTypedArray(value){if(!value||typeof value!=='object'){return false;}if(!hasToStringTag){/** @type {string} */var tag=$slice($toString(value),8,-1);if($indexOf(typedArrays,tag)>-1){return tag;}if(tag!=='Object'){return false;}// node < 0.6 hits here on real Typed Arrays
|
|
5766
6094
|
return trySlices(value);}if(!gOPD){return null;}// unknown engine
|
|
5767
|
-
return tryTypedArrays(value);};}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"available-typed-arrays":
|
|
6095
|
+
return tryTypedArrays(value);};}).call(this);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{});},{"available-typed-arrays":53,"call-bind":65,"call-bound":66,"for-each":79,"get-proto":101,"gopd":103,"has-tostringtag/shams":107}],223:[function(require,module,exports){// Returns a wrapper function that returns a wrapped callback
|
|
5768
6096
|
// The wrapper function should do some stuff, and return a
|
|
5769
6097
|
// presumably different callback function.
|
|
5770
6098
|
// This makes sure that own properties are retained, so that
|
|
5771
6099
|
// decorations and such are not lost along the way.
|
|
5772
|
-
module.exports=wrappy;function wrappy(fn,cb){if(fn&&cb)return wrappy(fn)(cb);if(typeof fn!=='function')throw new TypeError('need wrapper function');Object.keys(fn).forEach(function(k){wrapper[k]=fn[k];});return wrapper;function wrapper(){var args=new Array(arguments.length);for(var i=0;i<args.length;i++){args[i]=arguments[i];}var ret=fn.apply(this,args);var cb=args[args.length-1];if(typeof ret==='function'&&ret!==cb){Object.keys(cb).forEach(function(k){ret[k]=cb[k];});}return ret;}}},{}],
|
|
5773
|
-
* Meadow Endpoints Service Data Broker Library
|
|
5774
|
-
*
|
|
5775
|
-
* @license MIT
|
|
5776
|
-
* @author Steven Velozo <steven@velozo.com>
|
|
5777
|
-
*/const libMeadowEndpointsControllerBase=require('./controller/Meadow-Endpoints-Controller-Base.js');const libMeadow=require('meadow');class MeadowEndpoints{constructor(pMeadow,pControllerOptions){this._Meadow=pMeadow;// This is for backwards compatibility
|
|
5778
|
-
this.DAL=this._Meadow;this._Controller=false;this._ControllerOptions=typeof pControllerOptions=='object'?pControllerOptions:{};if(typeof pMeadow!='object'){throw new Error('Meadow endpoints requires a valid Meadow DAL object as the first parameter of the constructor.');}if(this._ControllerOptions.hasOwnProperty('ControllerInstance')){// Passed in already instantiated controller instance
|
|
5779
|
-
this._Controller=this._ControllerOptions.ControllerInstance;}else if(this._ControllerOptions.hasOwnProperty('ControllerClass')){// Passed in controller class, ready to initialize
|
|
5780
|
-
this._Controller=new this._ControllerOptions.ControllerClass(this);}else{this._Controller=new libMeadowEndpointsControllerBase(this);}// Pull version from the settings; default to 1.0
|
|
5781
|
-
this.EndpointVersion=this._Controller.settings.MeadowEndpointVersion||'1.0';// Pull endpoint name from settings if the user to override the endpoint "name" eventually.
|
|
5782
|
-
this.EndpointName=this.DAL.scope;// This allows a wily developer to change what this prefix is....
|
|
5783
|
-
this.EndpointPrefix=`/${this.EndpointVersion}/${this.EndpointName}`;// The default behavior sets available.
|
|
5784
|
-
// Turning these off before wiring the endpoints up will result in their counterpart endpoints not being available.
|
|
5785
|
-
this._EnabledBehaviorSets={Create:true,Read:true,Reads:true,Update:true,Delete:true,Count:true,Schema:true,Validate:true,New:true};// The default endpoints
|
|
5786
|
-
this._Endpoints={Create:require('./endpoints/create/Meadow-Endpoint-Create.js'),Creates:require('./endpoints/create/Meadow-Endpoint-BulkCreate.js'),Read:require('./endpoints/read/Meadow-Endpoint-Read.js'),ReadMax:require('./endpoints/read/Meadow-Endpoint-ReadMax.js'),Reads:require('./endpoints/read/Meadow-Endpoint-Reads.js'),ReadsBy:require('./endpoints/read/Meadow-Endpoint-ReadsBy.js'),ReadSelectList:require('./endpoints/read/Meadow-Endpoint-ReadSelectList.js'),ReadLiteList:require('./endpoints/read/Meadow-Endpoint-ReadLiteList.js'),ReadDistinctList:require('./endpoints/read/Meadow-Endpoint-ReadDistinctList.js'),Update:require('./endpoints/update/Meadow-Endpoint-Update.js'),Updates:require('./endpoints/update/Meadow-Endpoint-BulkUpdate.js'),Upsert:require('./endpoints/upsert/Meadow-Endpoint-Upsert.js'),Upserts:require('./endpoints/upsert/Meadow-Endpoint-BulkUpsert.js'),Delete:require('./endpoints/delete/Meadow-Endpoint-Delete.js'),Undelete:require('./endpoints/delete/Meadow-Endpoint-Undelete.js'),Count:require('./endpoints/count/Meadow-Endpoint-Count.js'),CountBy:require('./endpoints/count/Meadow-Endpoint-CountBy.js'),// Get the JSONSchema spec schema
|
|
5787
|
-
/* http://json-schema.org/examples.html
|
|
5788
|
-
* http://json-schema.org/latest/json-schema-core.html
|
|
5789
|
-
*/Schema:require('./endpoints/schema/Meadow-Endpoint-Schema.js'),// Validate a passed-in JSON object for if it matches the schema
|
|
5790
|
-
Validate:require('./endpoints/schema/Meadow-Endpoint-Validate.js'),// Get an empty initialized JSON object for this.
|
|
5791
|
-
New:require('./endpoints/schema/Meadow-Endpoint-New.js')};}/**
|
|
5792
|
-
* @return {import('./controller/Meadow-Endpoints-Controller-Base.js')} The controller instance
|
|
5793
|
-
*/get controller(){return this._Controller;}/**
|
|
5794
|
-
* @param {import('./controller/Meadow-Endpoints-Controller-Base.js')} pController - The controller instance
|
|
5795
|
-
*/set controller(pController){this._Controller=pController;}/**
|
|
5796
|
-
* Customize a default endpoint (or create more)
|
|
5797
|
-
*
|
|
5798
|
-
* @method setEndpoint
|
|
5799
|
-
*/setBehaviorEndpoint(pEndpointHash,fEndpoint){if(typeof fEndpoint==='function'){this._Endpoints[pEndpointHash]=fEndpoint;}return this;}connectRoute(pServiceServer,pRequestMethod,pRoutePartial,pEndpointProcessingFunction,pBehaviorName){let tmpRoute=`${this.EndpointPrefix}${pRoutePartial}`;let tmpBehaviorName=typeof pBehaviorName=='string'?pBehaviorName:'an unnamed custom behavior';this._Controller.log.trace(`...meadow-endpoints mapping a ${pRequestMethod} endpoint for scope ${this.DAL.scope} on route [${tmpRoute}] which runs ${tmpBehaviorName}.`);try{pServiceServer[pRequestMethod](tmpRoute,pEndpointProcessingFunction.bind(this._Controller));}catch(pServiceServerRouteConnectError){this._Controller.log.error(`...error mapping ${pBehaviorName} to method ${pRequestMethod} for scope ${this.DAL.scope} to route [${tmpRoute}]: ${pServiceServerRouteConnectError}`,pServiceServerRouteConnectError.stack);}return true;}connectRoutes(pServiceServer){this._Controller.log.trace(`Creating automatic meadow endpoints at prefix [${this.EndpointPrefix}] for scope ${this.DAL.scope}...`);// These special schema services must come in the route table before the READ because they
|
|
5800
|
-
// technically block out the routes for the IDRecord 'Schema' (e.g. GET[/1.0/EntityName/Schema] ==NEEDS=> GET[/1.0/EntityName/100])
|
|
5801
|
-
if(this._EnabledBehaviorSets.Schema){this.connectRoute(pServiceServer,'get',`/Schema`,this._Endpoints.Schema,`the internal behavior _Endpoints.Schema`);}if(this._EnabledBehaviorSets.New){this.connectRoute(pServiceServer,'get',`/Schema/New`,this._Endpoints.New,`the internal behavior _Endpoints.New`);}if(this._EnabledBehaviorSets.Validate){this.connectRoute(pServiceServer,'postWithBodyParser',`/Schema/Validate`,this._Endpoints.Validate,`the internal behavior _Endpoints.Validate`);}// Standard CRUD and Count endpoints
|
|
5802
|
-
if(this._EnabledBehaviorSets.Create){this.connectRoute(pServiceServer,'postWithBodyParser',``,this._Endpoints.Create,`the internal behavior _Endpoints.Create`);this.connectRoute(pServiceServer,'postWithBodyParser',`s`,this._Endpoints.Creates,`the internal behavior _Endpoints.Creates`);}if(this._EnabledBehaviorSets.Read){this.connectRoute(pServiceServer,'get',`/Max/:ColumnName`,this._Endpoints.ReadMax,`the internal behavior _Endpoints.ReadMax`);this.connectRoute(pServiceServer,'get',`/:IDRecord`,this._Endpoints.Read,`the internal behavior _Endpoints.Read`);}if(this._EnabledBehaviorSets.Reads){this.connectRoute(pServiceServer,'get',`s`,this._Endpoints.Reads,`the internal behavior _Endpoints.Reads`);this.connectRoute(pServiceServer,'get',`s/By/:ByField/:ByValue`,this._Endpoints.ReadsBy,`the internal behavior _Endpoints.ReadsBy`);this.connectRoute(pServiceServer,'get',`s/By/:ByField/:ByValue/:Begin/:Cap`,this._Endpoints.ReadsBy,`the internal behavior _Endpoints.ReadsBy`);this.connectRoute(pServiceServer,'get',`s/FilteredTo/:Filter`,this._Endpoints.Reads,`the internal behavior _Endpoints.Reads`);this.connectRoute(pServiceServer,'get',`s/FilteredTo/:Filter/:Begin/:Cap`,this._Endpoints.Reads,`the internal behavior _Endpoints.Reads`);this.connectRoute(pServiceServer,'get',`Select`,this._Endpoints.ReadSelectList,`the internal behavior _Endpoints.ReadSelectList`);this.connectRoute(pServiceServer,'get',`Select/FilteredTo/:Filter`,this._Endpoints.ReadSelectList,`the internal behavior _Endpoints.ReadSelectList`);this.connectRoute(pServiceServer,'get',`Select/FilteredTo/:Filter/:Begin/:Cap`,this._Endpoints.ReadSelectList,`the internal behavior _Endpoints.ReadSelectList`);this.connectRoute(pServiceServer,'get',`Select/:Begin/:Cap`,this._Endpoints.ReadSelectList,`the internal behavior _Endpoints.ReadSelectList`);this.connectRoute(pServiceServer,'get',`s/Lite`,this._Endpoints.ReadLiteList,`the internal behavior _Endpoints.ReadLiteList`);this.connectRoute(pServiceServer,'get',`s/Lite/FilteredTo/:Filter`,this._Endpoints.ReadLiteList,`the internal behavior _Endpoints.ReadLiteList`);this.connectRoute(pServiceServer,'get',`s/Lite/FilteredTo/:Filter/:Begin/:Cap`,this._Endpoints.ReadLiteList,`the internal behavior _Endpoints.ReadLiteList`);this.connectRoute(pServiceServer,'get',`s/Lite/:Begin/:Cap`,this._Endpoints.ReadLiteList,`the internal behavior _Endpoints.ReadLiteList`);this.connectRoute(pServiceServer,'get',`s/LiteExtended/:ExtraColumns`,this._Endpoints.ReadLiteList,`the internal behavior _Endpoints.ReadLiteList`);this.connectRoute(pServiceServer,'get',`s/LiteExtended/:ExtraColumns/FilteredTo/:Filter`,this._Endpoints.ReadLiteList,`the internal behavior _Endpoints.ReadLiteList`);this.connectRoute(pServiceServer,'get',`s/LiteExtended/:ExtraColumns/FilteredTo/:Filter/:Begin/:Cap`,this._Endpoints.ReadLiteList,`the internal behavior _Endpoints.ReadLiteList`);this.connectRoute(pServiceServer,'get',`s/LiteExtended/:ExtraColumns/:Begin/:Cap`,this._Endpoints.ReadLiteList,`the internal behavior _Endpoints.ReadLiteList`);this.connectRoute(pServiceServer,'get',`s/Distinct/:Columns`,this._Endpoints.ReadDistinctList,`the internal behavior _Endpoints.ReadDistinctList`);this.connectRoute(pServiceServer,'get',`s/Distinct/:Columns/FilteredTo/:Filter`,this._Endpoints.ReadDistinctList,`the internal behavior _Endpoints.ReadDistinctList`);this.connectRoute(pServiceServer,'get',`s/Distinct/:Columns/FilteredTo/:Filter/:Begin/:Cap`,this._Endpoints.ReadDistinctList,`the internal behavior _Endpoints.ReadDistinctList`);this.connectRoute(pServiceServer,'get',`s/Distinct/:Columns/:Begin/:Cap`,this._Endpoints.ReadDistinctList,`the internal behavior _Endpoints.ReadDistinctList`);this.connectRoute(pServiceServer,'get',`s/:Begin/:Cap`,this._Endpoints.Reads,`the internal behavior _Endpoints.Reads`);}if(this._EnabledBehaviorSets.Update){this.connectRoute(pServiceServer,'putWithBodyParser',``,this._Endpoints.Update,`the internal behavior _Endpoints.Update`);this.connectRoute(pServiceServer,'putWithBodyParser',`s`,this._Endpoints.Updates,`the internal behavior _Endpoints.Updates`);this.connectRoute(pServiceServer,'putWithBodyParser',`/Upsert`,this._Endpoints.Upsert,`the internal behavior _Endpoints.Upsert`);this.connectRoute(pServiceServer,'putWithBodyParser',`/Upserts`,this._Endpoints.Upserts,`the internal behavior _Endpoints.Upserts`);}if(this._EnabledBehaviorSets.Delete){this.connectRoute(pServiceServer,'del',``,this._Endpoints.Delete,`the internal behavior _Endpoints.Delete`);this.connectRoute(pServiceServer,'del',`/:IDRecord`,this._Endpoints.Delete,`the internal behavior _Endpoints.Delete`);this.connectRoute(pServiceServer,'get',`/Undelete/:IDRecord`,this._Endpoints.Undelete,`the internal behavior _Endpoints.Undelete`);}if(this._EnabledBehaviorSets.Count){this.connectRoute(pServiceServer,'get',`s/Count`,this._Endpoints.Count,`the internal behavior _Endpoints.Count`);this.connectRoute(pServiceServer,'get',`s/Count/By/:ByField/:ByValue`,this._Endpoints.CountBy,`the internal behavior _Endpoints.CountBy`);this.connectRoute(pServiceServer,'get',`s/Count/FilteredTo/:Filter`,this._Endpoints.Count,`the internal behavior _Endpoints.Count`);}}}// This is for backwards compatibility
|
|
5803
|
-
function autoConstruct(pMeadow,pControllerOptions){return new MeadowEndpoints(pMeadow,pControllerOptions);}module.exports=MeadowEndpoints;module.exports.new=autoConstruct;module.exports.Meadow=libMeadow;module.exports.BaseController=libMeadowEndpointsControllerBase;},{"./controller/Meadow-Endpoints-Controller-Base.js":192,"./endpoints/count/Meadow-Endpoint-Count.js":199,"./endpoints/count/Meadow-Endpoint-CountBy.js":200,"./endpoints/create/Meadow-Endpoint-BulkCreate.js":201,"./endpoints/create/Meadow-Endpoint-Create.js":202,"./endpoints/delete/Meadow-Endpoint-Delete.js":204,"./endpoints/delete/Meadow-Endpoint-Undelete.js":205,"./endpoints/read/Meadow-Endpoint-Read.js":206,"./endpoints/read/Meadow-Endpoint-ReadDistinctList.js":207,"./endpoints/read/Meadow-Endpoint-ReadLiteList.js":208,"./endpoints/read/Meadow-Endpoint-ReadMax.js":209,"./endpoints/read/Meadow-Endpoint-ReadSelectList.js":210,"./endpoints/read/Meadow-Endpoint-Reads.js":211,"./endpoints/read/Meadow-Endpoint-ReadsBy.js":212,"./endpoints/schema/Meadow-Endpoint-New.js":215,"./endpoints/schema/Meadow-Endpoint-Schema.js":216,"./endpoints/schema/Meadow-Endpoint-Validate.js":217,"./endpoints/update/Meadow-Endpoint-BulkUpdate.js":218,"./endpoints/update/Meadow-Endpoint-Update.js":219,"./endpoints/upsert/Meadow-Endpoint-BulkUpsert.js":221,"./endpoints/upsert/Meadow-Endpoint-Upsert.js":222,"meadow":103}],192:[function(require,module,exports){const libAsyncWaterfall=require('async/waterfall');const libBaseLogController=require('./components/Meadow-Endpoints-Controller-Log.js');const libBaseErrorController=require('./components/Meadow-Endpoints-Controller-Error.js');const libBaseBehaviorInjectionController=require('./components/Meadow-Endpoints-Controller-BehaviorInjection.js');const libMeadowEndpointsFilterParser=require('./utility/Meadow-Endpoints-Filter-Parser.js');const libMeadowEndpointsSessionMarshaler=require('./utility/Meadow-Endpoints-Session-Marshaler.js');const libMeadowEndpointsStreamRecordArray=require('./utility/Meadow-Endpoints-Stream-RecordArray.js');class MeadowEndpointControllerBase{/**
|
|
5804
|
-
* @param {import('../Meadow-Endpoints.js')} pMeadowEndpoints
|
|
5805
|
-
*/constructor(pMeadowEndpoints){this.DAL=pMeadowEndpoints.DAL;this.ControllerOptions=pMeadowEndpoints._ControllerOptions;// Application Services
|
|
5806
|
-
this._Settings=null;this._LogController=null;// Logic and Behavior
|
|
5807
|
-
this._BehaviorInjectionController=null;this._ErrorController=null;// Internal async utility functions
|
|
5808
|
-
this.waterfall=this.DAL.fable.Utility.waterfall;this.eachLimit=this.DAL.fable.Utility.eachLimit;this.extend=this.DAL.fable.Utility.extend;//FIXME: not sure what this is supposed to do, it was broken before
|
|
5809
|
-
//if ((typeof(this.ControllerOptions) != 'object') || this.ControllerOptions.hasOwnProperty('ControllerClass'))
|
|
5810
|
-
{this.initializeDefaultUnsetControllers(this);}// Behavior functions
|
|
5811
|
-
this._FilterParser=new libMeadowEndpointsFilterParser(this);this._SessionMarshaler=new libMeadowEndpointsSessionMarshaler(this);this._StreamRecordArray=new libMeadowEndpointsStreamRecordArray(this);}/**
|
|
5812
|
-
* @param {import('./Meadow-Endpoints-Controller-Base.js')} pController
|
|
5813
|
-
*/initializeDefaultUnsetControllers(pController){// Application Services
|
|
5814
|
-
if(!this._Settings){this._Settings=pController.DAL.fable.settings;}if(!this._Settings.hasOwnProperty('MeadowEndpointsDefaultSessionObject')){this._Settings.MeadowEndpointsDefaultSessionObject={CustomerID:0,SessionID:'0x0000',DeviceID:'Unset',UserID:0,UserRole:'None',UserRoleIndex:0,LoggedIn:false};}if(!this._LogController){this._LogController=new libBaseLogController(pController);}if(!this._BehaviorInjectionController){this._BehaviorInjectionController=new libBaseBehaviorInjectionController(pController);}if(!this._ErrorController){this._ErrorController=new libBaseErrorController(pController);}}initializeRequestState(pRequest,pVerb){let tmpRequestState={};tmpRequestState.Verb=typeof pVerb=='string'?pVerb:'Unnamed_Custom_Behavior';tmpRequestState.SessionData=this.getSessionData(pRequest);return tmpRequestState;}// Clone the session data and verb to a new request state object
|
|
5815
|
-
cloneAsyncSafeRequestState(pRequestState,pNewVerb){let tmpSafeRequestState={ParentRequestState:pRequestState,SessionData:pRequestState.SessionData};tmpSafeRequestState.Verb=typeof pNewVerb=='string'?pNewVerb:pRequestState.Verb;return tmpSafeRequestState;}// Override this to provide an alternate ending function that is run with every endpoint.
|
|
5816
|
-
_BeginDataRequestFunction(pRequest,pResponse,fNext){return fNext();}beginMeadowRequest(pRequest,pResponse,fNext){this._BeginDataRequestFunction(pRequest,pResponse,fNext);}// Override this to provide an alternate ending function that is run with every endpoint.
|
|
5817
|
-
_EndDataRequestFunction(pRequest,pResponse,fNext){return fNext();}endMeadowRequest(pRequest,pResponse,fNext){this._EndDataRequestFunction(pRequest,pResponse,fNext);}// Application Services
|
|
5818
|
-
get settings(){return this._Settings;}set settings(pSettings){this._Settings=pSettings;}get log(){return this._LogController;}set log(pLogController){this._LogController=pLogController;}// Logic and Behavior
|
|
5819
|
-
get BehaviorInjection(){return this._BehaviorInjectionController;}set BehaviorInjection(pBehaviorInjectionController){this._BehaviorInjectionController=pBehaviorInjectionController;}get ErrorHandler(){return this._ErrorController;}set ErrorHandler(pErrorController){this._ErrorController=pErrorController;}parseFilter(pFilterString,pQuery){return this._FilterParser.parseFilter(pFilterString,pQuery);}doStreamRecordArray(pResponse,pRecords,fCallback){return this._StreamRecordArray.streamRecordArray(pResponse,pRecords,fCallback);}getSessionData(pRequest){return this._SessionMarshaler.getSessionData(pRequest);}}module.exports=MeadowEndpointControllerBase;// Export the base classes for the controller components, for inheritance
|
|
5820
|
-
module.exports.BaseErrorController=libBaseErrorController;module.exports.BaseBehaviorInjectionController=libBaseBehaviorInjectionController;module.exports.BaseFilterParser=libMeadowEndpointsFilterParser;module.exports.BaseSessionMarshaler=libMeadowEndpointsSessionMarshaler;module.exports.BaseStreamRecordArray=libMeadowEndpointsStreamRecordArray;},{"./components/Meadow-Endpoints-Controller-BehaviorInjection.js":193,"./components/Meadow-Endpoints-Controller-Error.js":194,"./components/Meadow-Endpoints-Controller-Log.js":195,"./utility/Meadow-Endpoints-Filter-Parser.js":196,"./utility/Meadow-Endpoints-Session-Marshaler.js":197,"./utility/Meadow-Endpoints-Stream-RecordArray.js":198,"async/waterfall":18}],193:[function(require,module,exports){//TODO: This is only being referenced to allow compatibility with service_pieces
|
|
5821
|
-
//TODO: There is risk of other incompatibilities until service_pieces is updated
|
|
5822
|
-
const libUnderscore=require('underscore');class MeadowEndpointsControllerBehaviorInjectionBase{/**
|
|
5823
|
-
* @param {import('../Meadow-Endpoints-Controller-Base.js')} pController
|
|
5824
|
-
*/constructor(pController){this._Controller=pController;// The template compilation function
|
|
5825
|
-
//this.template = this._Controller.DAL.fable.Utility.template;
|
|
5826
|
-
this.template=libUnderscore.template;// An object to hold modifications to specific behaviors.
|
|
5827
|
-
this._BehaviorFunctions={};// A set of objects to hold the specific templates and their compiled functions
|
|
5828
|
-
this._Templates={};this._TemplateFunctions={};}/**
|
|
5829
|
-
* Set a specific behavior.
|
|
5830
|
-
*
|
|
5831
|
-
* The anatomy of a behavior function is as follows:
|
|
5832
|
-
*
|
|
5833
|
-
* var someBehavior = function(pRequest, fCallback)
|
|
5834
|
-
* {
|
|
5835
|
-
* // Do some stuff with pRequest...
|
|
5836
|
-
* if (pRequest.UserSession.UserRoleIndex < 5)
|
|
5837
|
-
* tmpRequestState.Query.addFilter('Customer', pRequest.UserSession.IDCustomer);
|
|
5838
|
-
* return fCallback(false);
|
|
5839
|
-
* }
|
|
5840
|
-
*
|
|
5841
|
-
* It is important to note that the fCallback function expects false if no error, or a string message if there is one.
|
|
5842
|
-
*/setBehavior(pBehaviorHash,fBehavior){this._BehaviorFunctions[pBehaviorHash]=fBehavior;}/**
|
|
5843
|
-
* This method runs a behavior at a specific hash, and returns true.
|
|
5844
|
-
* Or it returns false if there was no behavior there.
|
|
5845
|
-
* Behaviors should expect their state to be in the pRequest object, per the example in setBehavior
|
|
5846
|
-
*/runBehavior(pBehaviorHash,pController,pRequest,pRequestState,fCallback){// Run an injected behavior (if it exists)
|
|
5847
|
-
if(this._BehaviorFunctions.hasOwnProperty(pBehaviorHash)){try{// Call the behavior with the scoped [this] of the Meadow behavior
|
|
5848
|
-
// NOTE: If you define a behavior with lambda arrow syntax, it will *not* respect the call
|
|
5849
|
-
return this._BehaviorFunctions[pBehaviorHash].call(pController,pRequest,pRequestState,fCallback);}catch(pInjectedBehaviorError){return fCallback(pInjectedBehaviorError);}}return fCallback();}/**
|
|
5850
|
-
* Get a template.
|
|
5851
|
-
*/getTemplate(pTemplateHash){if(this._Templates.hasOwnProperty(pTemplateHash)){return this._Templates[pTemplateHash];}else{return false;}}/**
|
|
5852
|
-
* Set a template.
|
|
5853
|
-
*/setTemplate(pTemplateHash,pTemplate){// Store both the cached text as well as the function
|
|
5854
|
-
this._Templates[pTemplateHash]=pTemplate;this._TemplateFunctions[pTemplateHash]=this.template(pTemplate);}/**
|
|
5855
|
-
* Get a template function.
|
|
5856
|
-
*/getTemplateFunction(pTemplateHash){if(this._TemplateFunctions.hasOwnProperty(pTemplateHash)){return this._TemplateFunctions[pTemplateHash];}else{return false;}}/**
|
|
5857
|
-
* Process a template at a hash, and return the result.
|
|
5858
|
-
*/processTemplate(pTemplateHash,pTemplateData,pDefaultTemplate){var tmpTemplateFunction=this.getTemplateFunction(pTemplateHash);var tmpTemplateData=typeof pTemplateData==='undefined'?{}:pTemplateData;// This makes the function fairly laziliy loading.
|
|
5859
|
-
if(tmpTemplateFunction===false){// If the template doesn't exist, try to use the passed-in default and set that as the template.
|
|
5860
|
-
// Otherwise make it empty.
|
|
5861
|
-
this.setTemplate(pTemplateHash,typeof pDefaultTemplate==='undefined'?'':pDefaultTemplate);tmpTemplateFunction=this.getTemplateFunction(pTemplateHash);}// Now process and return the underscore template.
|
|
5862
|
-
return tmpTemplateFunction(tmpTemplateData);}}module.exports=MeadowEndpointsControllerBehaviorInjectionBase;},{"underscore":182}],194:[function(require,module,exports){/**
|
|
5863
|
-
* Error object extended with the extra response-shape metadata
|
|
5864
|
-
* meadow-endpoints attaches: an HTTP StatusCode and a flag telling
|
|
5865
|
-
* the error handler whether to include a stack trace in the response.
|
|
5866
|
-
*
|
|
5867
|
-
* @typedef {Error & { StatusCode?: number, SuppressSoftwareTrace?: boolean, code?: string }} MeadowEndpointError
|
|
5868
|
-
*/class MeadowEndpointsControllerErrorBase{/**
|
|
5869
|
-
* @param {import('../Meadow-Endpoints-Controller-Base.js')} pController
|
|
5870
|
-
*/constructor(pController){this._Controller=pController;}// Get the error object
|
|
5871
|
-
getError(pMessage,pStatusCode,pSuppressSoftwareTrace){const tmpError=/** @type {MeadowEndpointError} */new Error(pMessage);// Default the error status code to 400 if none is passed
|
|
5872
|
-
tmpError.StatusCode=typeof pStatusCode=='number'?pStatusCode:400;// This suppresses the stack trace from being sent back or logged.
|
|
5873
|
-
// And by default it does not send a stack trace, as we expect errors created this way to be protocol, schema or data related.
|
|
5874
|
-
tmpError.SuppressSoftwareTrace=typeof pSuppressSoftwareTrace!='undefined'?pSuppressSoftwareTrace:true;return tmpError;}// Handle an error if set -- some errors don't send the response back because they aren't fully errory errors.
|
|
5875
|
-
handleErrorIfSet(pRequest,pRequestState,pResponse,pError,fCallback){if(pError){return this.sendError(pRequest,pRequestState,pResponse,pError,fCallback);}return fCallback();}// Send an error object
|
|
5876
|
-
sendError(pRequest,pRequestState,pResponse,pError,fCallback){this._Controller.log.logRequestError(pRequest,pRequestState,pError);// TODO: Detect if we've already sent headers?
|
|
5877
|
-
if(!this._Controller.ControllerOptions.SendErrorStatusCodes){let tmpStatusCode=pError.hasOwnProperty('StatusCode')?pError.StatusCode:500;pResponse.status(tmpStatusCode);}let tmpResponseObject={Error:pError.message,StatusCode:pError.StatusCode};tmpResponseObject=this._Controller.ErrorHandler.prepareRequestContextOutputObject(tmpResponseObject,pRequest,pRequestState,pError);pResponse.send(tmpResponseObject);fCallback(pError);}// This looks for some generic markers in the request state and puts them into a log or send object
|
|
5878
|
-
prepareRequestContextOutputObject(pObjectToPopulate,pRequest,pRequestState,pError){// Internally created errors supress stack traces
|
|
5879
|
-
if(pError){pObjectToPopulate.Error=pError.message;pObjectToPopulate.Code=pError.code;pObjectToPopulate.StatusCode=pError.StatusCode;if(!pError.SuppressSoftwareTrace){pObjectToPopulate.Stack=pError.stack;}if(pRequestState.hasOwnProperty('Record')){pObjectToPopulate.Record=pRequestState.Record;}if(pRequestState.hasOwnProperty('Query')&&typeof pRequestState.Query=='object'){if(pRequestState.Query.query){if(typeof pRequestState.Query.query.body=='string'){pObjectToPopulate.Query=pRequestState.Query.query.body;}if(typeof pRequestState.Query.query.parameters=='object'){pObjectToPopulate.QueryParameters=pRequestState.Query.query.parameters;pObjectToPopulate.RebuiltQueryString=typeof pObjectToPopulate.Query=='string'?pObjectToPopulate.Query:'';// This gnarly bit of code attempts to reconstruct a non prepared string version of the query, to help.
|
|
5880
|
-
let tmpQueryParameterSet=Object.keys(pObjectToPopulate.QueryParameters);for(let i=0;i<tmpQueryParameterSet.length;i++){switch(typeof tmpQueryParameterSet[i]){case'number':pObjectToPopulate.RebuiltQueryString=pObjectToPopulate.RebuiltQueryString.replace(new RegExp(`:${tmpQueryParameterSet[i]}\\b`,'g'),`'${pObjectToPopulate.QueryParameters[tmpQueryParameterSet[i]]}'`);break;case'string':// TODO: This may need more ... nuance...
|
|
5881
|
-
default:pObjectToPopulate.RebuiltQueryString=pObjectToPopulate.RebuiltQueryString.replace(new RegExp(`:${tmpQueryParameterSet[i]}\\b`,'g'),pObjectToPopulate.QueryParameters[tmpQueryParameterSet[i]]);break;}}}}}}return pObjectToPopulate;}}module.exports=MeadowEndpointsControllerErrorBase;},{}],195:[function(require,module,exports){class MeadowEndpointsControllerLogBase{/**
|
|
5882
|
-
* @param {import('../Meadow-Endpoints-Controller-Base.js')} pController
|
|
5883
|
-
*/constructor(pController){this._Controller=pController;}// This is called for every successful request log line. Be careful what you add in overloads!
|
|
5884
|
-
prepareLogData(pRequest,pRequestState,pLogData){// TODO: Discuss if these should be configurations
|
|
5885
|
-
if(pRequestState.hasOwnProperty('Record')){if(pRequestState.Record.hasOwnProperty(this._Controller.DAL.defaultIdentifier)){pLogData[this._Controller.DAL.defaultIdentifier]=pRequestState.Record[this._Controller.DAL.defaultIdentifier];}if(pRequestState.Record.hasOwnProperty(this._Controller.DAL.defaultGUIdentifier)){pLogData[this._Controller.DAL.defaultGUIdentifier]=pRequestState.Record[this._Controller.DAL.defaultGUIdentifier];}}if(pRequestState.hasOwnProperty('UpdatedRecords')){pLogData.UpdatedRecordCount=pRequestState.UpdatedRecords.length;}if(pRequestState.hasOwnProperty('CreatedRecords')){pLogData.UpdatedRecordCount=pRequestState.CreatedRecords.length;}if(pRequestState.hasOwnProperty('UpsertedRecords')){pLogData.UpdatedRecordCount=pRequestState.UpsertedRecords.length;}return pLogData;}// This is called whenever an endpoint is completed successfully
|
|
5886
|
-
requestCompletedSuccessfully(pRequest,pRequestState,pActionSummary){let tmpLogData={SessionID:pRequestState.SessionData.SessionID,RequestID:pRequest.RequestUUID,RequestURL:pRequest.url,Scope:this._Controller.DAL.scope,Action:`${this._Controller.DAL.scope}-${pRequestState.Verb}`,Verb:pRequestState.Verb};this._Controller.log.info(pActionSummary,this.prepareLogData(pRequest,pRequestState,tmpLogData));}// This is called whenever an endpoint is completed successfully
|
|
5887
|
-
logRequestError(pRequest,pRequestState,pError){let tmpErrorLogData={SessionID:pRequestState.SessionData.SessionID,RequestID:pRequest.RequestUUID,RequestURL:pRequest.url,Scope:this._Controller.DAL.scope,Action:`${this._Controller.DAL.scope}-${pRequestState.Verb}`,Verb:pRequestState.Verb};tmpErrorLogData=this._Controller.ErrorHandler.prepareRequestContextOutputObject(tmpErrorLogData,pRequest,pRequestState,pError);this._Controller.log.error(pError.message,this.prepareLogData(pRequest,pRequestState,tmpErrorLogData));}trace(pLogText,pLogObject){this._Controller.DAL.log.trace(pLogText,pLogObject);}debug(pLogText,pLogObject){this._Controller.DAL.log.debug(pLogText,pLogObject);}info(pLogText,pLogObject){this._Controller.DAL.log.info(pLogText,pLogObject);}warn(pLogText,pLogObject){this._Controller.DAL.log.warn(pLogText,pLogObject);}error(pLogText,pLogObject){this._Controller.DAL.log.error(pLogText,pLogObject);}fatal(pLogText,pLogObject){this._Controller.DAL.log.fatal(pLogText,pLogObject);}}module.exports=MeadowEndpointsControllerLogBase;},{}],196:[function(require,module,exports){/**
|
|
5888
|
-
* Meadow Endpoint Utility Class - Parse a Filter String and put it into a Query.
|
|
5889
|
-
*
|
|
5890
|
-
* @license MIT
|
|
5891
|
-
*
|
|
5892
|
-
* @author Steven Velozo <steven@velozo.com>
|
|
5893
|
-
* @module Meadow
|
|
5894
|
-
*/const{parse}=require('meadow-filter');class MeadowEndpointsFilterParser{/**
|
|
5895
|
-
* @param {import('../Meadow-Endpoints-Controller-Base.js')} pController - The controller instance to which this parser belongs.
|
|
5896
|
-
*/constructor(pController){this._Controller=pController;}/**
|
|
5897
|
-
* @param {string} pFilterString - The filter string to parse.
|
|
5898
|
-
* @param {any} pQuery - The foxhound query object to populate.
|
|
5899
|
-
*
|
|
5900
|
-
* @return {boolean} - True if the filter was parsed successfully, false otherwise.
|
|
5901
|
-
*/parseFilter(pFilterString,pQuery){return parse(pFilterString,pQuery);}}module.exports=MeadowEndpointsFilterParser;},{"meadow-filter":98}],197:[function(require,module,exports){class MeadowEndpointsSessionMarshaler{/**
|
|
5902
|
-
* @param {import('../Meadow-Endpoints-Controller-Base.js')} pController
|
|
5903
|
-
*/constructor(pController){this._Controller=pController;}getSessionData(pRequest){let tmpSession=Object.assign({},this._Controller.settings.MeadowEndpointsDefaultSessionObject);let tmpHeaderSessionString;switch(this._Controller.settings.MeadowEndpointsSessionDataSource||'Request'){default:this._Controller.log.warn(`Unknown session source configured: ${this._Controller.settings.MeadowEndpointsSessionDataSource} - defaulting to Request for backward compatibility`);case'Request':// noop - already set by orator-session
|
|
5904
|
-
tmpSession=this._Controller.extend(tmpSession,pRequest.UserSession);break;case'None':break;case'Header':try{tmpHeaderSessionString=pRequest.headers['x-trusted-session'];if(!tmpHeaderSessionString){break;}const tmpHeaderSession=JSON.parse(tmpHeaderSessionString);tmpSession=this._Controller.extend(tmpSession,tmpHeaderSession);}catch(pError){this._Controller.log.error(`Meadow Endpoints attempted to process a Header Session String with value [${tmpHeaderSessionString}] and failed -- likely culprit is bad JSON.`);}break;}// Do we keep this here for backwards compatibility?
|
|
5905
|
-
// Yes this makes sense here.
|
|
5906
|
-
pRequest.UserSession=tmpSession;return tmpSession;}}module.exports=MeadowEndpointsSessionMarshaler;},{}],198:[function(require,module,exports){/**
|
|
5907
|
-
* Meadow Endpoint Streamer - Stream an array of recods as JSON to an output stream.
|
|
5908
|
-
*/const libAsyncEachSeries=require('async/eachSeries');const JSONStream=require('JSONStream');class MeadowEndpointsStreamRecordArray{/**
|
|
5909
|
-
* @param {import('../Meadow-Endpoints-Controller-Base.js')} pController
|
|
5910
|
-
*/constructor(pController){this._Controller=pController;}chunk(pInput,pChunkSize,pChunkCache){let tmpInputArray=[...pInput];// Note lodash defaults to 1, underscore defaults to 0
|
|
5911
|
-
let tmpChunkSize=typeof pChunkSize=='number'?pChunkSize:0;let tmpChunkCache=typeof pChunkCache!='undefined'?pChunkCache:[];if(tmpChunkSize<=0){return tmpChunkCache;}while(tmpInputArray.length){tmpChunkCache.push(tmpInputArray.splice(0,tmpChunkSize));}return tmpChunkCache;}streamRecordArray(pResponse,pRecords,fCallback){// for meadow invoke, writeHead isn't provided, so just call send(), which is the shim it uses...
|
|
5912
|
-
// also, for small arrays, don't bother with the async serialization; this threshold could use tuning
|
|
5913
|
-
if(!pResponse.writeHead||!Array.isArray(pRecords)||pRecords.length<2500){pResponse.send(pRecords);return fCallback();}pResponse.writeHead(200,{'content-type':'application/json'});const recordJsonMarshaller=JSONStream.stringify();recordJsonMarshaller.pipe(pResponse);// we write the records in chunks; doing one per loop is very inefficient, doing all is the same as not doing this at all
|
|
5914
|
-
libAsyncEachSeries(this.chunk(pRecords,1000),(pRecordChunk,fNext)=>{pRecordChunk.forEach(recordJsonMarshaller.write);setTimeout(fNext,0);},error=>{recordJsonMarshaller.end();fCallback(error);});}}module.exports=MeadowEndpointsStreamRecordArray;},{"JSONStream":1,"async/eachSeries":4}],199:[function(require,module,exports){/**
|
|
5915
|
-
* Meadow Endpoint - Count a Record
|
|
5916
|
-
*/const doAPIEndpointCount=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Count');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{tmpRequestState.Query=this.DAL.query;if(typeof pRequest.params.Filter==='string'){// If a filter has been passed in, parse it and add the values to the query.
|
|
5917
|
-
this.parseFilter(pRequest.params.Filter,tmpRequestState.Query);}else if(pRequest.params.Filter){tmpRequestState.Query.setFilter(pRequest.params.Filter);}return fStageComplete();},fBehaviorInjector(`Count-QueryConfiguration`),fStageComplete=>{this.DAL.doCount(tmpRequestState.Query,(pError,pQuery,pCount)=>{tmpRequestState.Result={Count:pCount};return fStageComplete(pError);});},fStageComplete=>{pResponse.send(tmpRequestState.Result);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Delivered recordset count of ${tmpRequestState.Result.Count} for ${this.DAL.scope}.`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointCount;},{}],200:[function(require,module,exports){/**
|
|
5918
|
-
* Meadow Endpoint - Count a Record filtered by a single value
|
|
5919
|
-
*/const doAPIEndpointCountBy=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'CountBy');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{tmpRequestState.Query=this.DAL.query;tmpRequestState.Query.addFilter(pRequest.params.ByField,pRequest.params.ByValue,'=','AND','RequestByField');return fStageComplete();},fBehaviorInjector(`CountBy-QueryConfiguration`),fStageComplete=>{this.DAL.doCount(tmpRequestState.Query,(pError,pQuery,pCount)=>{tmpRequestState.Result={Count:pCount};return fStageComplete(pError);});},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,'Delivered recordset count of '+tmpRequestState.Result.Count+'.');pResponse.send(tmpRequestState.Result);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointCountBy;},{}],201:[function(require,module,exports){/**
|
|
5920
|
-
* Meadow Endpoint - Create a set of Record in Bulk
|
|
5921
|
-
*/const doCreate=require('./Meadow-Operation-Create.js');const doAPIEndpointBulkCreate=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'CreateBulk');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};tmpRequestState.CreatedRecords=[];this.waterfall([fStageComplete=>{if(!Array.isArray(pRequest.body)){return fStageComplete(this.ErrorHandler.getError('Bulk record create failure - a valid array of records to create is required.',500));}pRequest.RecordsToBulkCreate=pRequest.body;return fStageComplete();},fBehaviorInjector(`CreateBulk-PreOperation`),fStageComplete=>{// TODO: Research parallelism opportunities from custom routes
|
|
5922
|
-
this.eachLimit(pRequest.RecordsToBulkCreate,1,(pRecord,fCallback)=>{doCreate.call(this,pRecord,pRequest,tmpRequestState,pResponse,fCallback);},fStageComplete);},fBehaviorInjector(`CreateBulk-PostOperation`),fStageComplete=>{return this.doStreamRecordArray(pResponse,tmpRequestState.CreatedRecords,fStageComplete);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Bulk created ${tmpRequestState.CreatedRecords.length} records`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointBulkCreate;},{"./Meadow-Operation-Create.js":203}],202:[function(require,module,exports){/**
|
|
5923
|
-
* Meadow Endpoint - Create a Record
|
|
5924
|
-
*/const doCreate=require('./Meadow-Operation-Create.js');const doAPIEndpointCreate=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Create');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{if(typeof pRequest.body!=='object'){return fStageComplete(this.ErrorHandler.getError('Record create failure - a valid record is required.',500));}return fStageComplete();},fStageComplete=>{doCreate.call(this,pRequest.body,pRequest,tmpRequestState,pResponse,fStageComplete);},fStageComplete=>{if(tmpRequestState.RecordCreateError){return fStageComplete(tmpRequestState.RecordCreateErrorObject);}if(tmpRequestState.CreatedRecords.length<1){return fStageComplete(this.ErrorHandler.getError('Unknown record create failure - no created records returned.',500));}tmpRequestState.Record=tmpRequestState.CreatedRecords[0];return fStageComplete();},fStageComplete=>{pResponse.send(tmpRequestState.Record);return fStageComplete();},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Created a ${this.DAL.scope} record ID ${tmpRequestState.Record[this.DAL.defaultIdentifier]}`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointCreate;},{"./Meadow-Operation-Create.js":203}],203:[function(require,module,exports){/**
|
|
5925
|
-
* Meadow Operation - Create a record function
|
|
5926
|
-
*/const doCreate=function(pRecord,pRequest,pRequestState,pResponse,fCallback){// This is a virtual operation
|
|
5927
|
-
let tmpRequestState=this.cloneAsyncSafeRequestState(pRequestState,'doCreate');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};if(!Array.isArray(tmpRequestState.ParentRequestState.CreatedRecords)){tmpRequestState.ParentRequestState.CreatedRecords=[];}this.waterfall([fStageComplete=>{tmpRequestState.RecordToCreate=pRecord;//Make sure record gets created with a customerID
|
|
5928
|
-
if(!tmpRequestState.RecordToCreate.hasOwnProperty('IDCustomer')&&this.DAL.jsonSchema&&this.DAL.jsonSchema.properties&&this.DAL.jsonSchema.properties.hasOwnProperty('IDCustomer')){tmpRequestState.RecordToCreate.IDCustomer=tmpRequestState.SessionData.CustomerID||0;}return fStageComplete();},fStageComplete=>{this.BehaviorInjection.runBehavior(`Create-PreOperation`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{// Prepare create query
|
|
5929
|
-
tmpRequestState.Query=this.DAL.query;tmpRequestState.Query.setIDUser(tmpRequestState.SessionData.UserID);tmpRequestState.Query.addRecord(tmpRequestState.RecordToCreate);return fStageComplete();},fStageComplete=>{this.BehaviorInjection.runBehavior(`Create-QueryConfiguration`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{// Do the actual create operation with the DAL
|
|
5930
|
-
this.DAL.doCreate(tmpRequestState.Query,(pError,pQuery,pReadQuery,pNewRecord)=>{if(pError){return fStageComplete(pError);}if(!pNewRecord){return fStageComplete(this.ErrorHandler.getError(`Error in DAL Create: No record returned from persistence engine.`,500));}tmpRequestState.Record=pNewRecord;return fStageComplete();});},fStageComplete=>{return this.BehaviorInjection.runBehavior(`Create-PostOperation`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{tmpRequestState.ParentRequestState.CreatedRecords.push(tmpRequestState.Record);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Created a record with ${this.DAL.defaultIdentifier} = ${tmpRequestState.Record[this.DAL.defaultIdentifier]}`);return fStageComplete();}],pError=>{if(pError){tmpRequestState.RecordToCreate.Error=pError;tmpRequestState.ParentRequestState.RecordCreateError=true;tmpRequestState.ParentRequestState.RecordCreateErrorObject=pError;tmpRequestState.ParentRequestState.CreatedRecords.push(tmpRequestState.RecordToCreate);}return fCallback();});};module.exports=doCreate;},{}],204:[function(require,module,exports){/**
|
|
5931
|
-
* Meadow Endpoint - Delete a Record
|
|
5932
|
-
*/const doAPIEndpointDelete=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Delete');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};tmpRequestState.IDRecord=0;tmpRequestState.RecordCount={Count:0};this.waterfall([fStageComplete=>{if(typeof pRequest.params.IDRecord==='string'){tmpRequestState.IDRecord=pRequest.params.IDRecord;}else if(typeof pRequest.body[this.DAL.defaultIdentifier]==='number'){tmpRequestState.IDRecord=pRequest.body[this.DAL.defaultIdentifier];}else if(typeof pRequest.body[this.DAL.defaultIdentifier]==='string'){tmpRequestState.IDRecord=pRequest.body[this.DAL.defaultIdentifier];}// Although the Meadow delete behavior does allow multiple deletes, we require an identifier.
|
|
5933
|
-
// If a developer wants bulk delete, it will require a custom endpoint.
|
|
5934
|
-
if(tmpRequestState.IDRecord<1){return fStageComplete(this.ErrorHandler.getError('Record delete failure - a valid record ID is required in the passed-in record.',500));}return fStageComplete();},fStageComplete=>{tmpRequestState.Query=this.DAL.query;tmpRequestState.Query.addFilter(this.DAL.defaultIdentifier,tmpRequestState.IDRecord);tmpRequestState.Query.setIDUser(tmpRequestState.SessionData.UserID);return fStageComplete();},fStageComplete=>{return this.BehaviorInjection.runBehavior(`Delete-QueryConfiguration`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{// Load the record so we can do security checks on it
|
|
5935
|
-
this.DAL.doRead(tmpRequestState.Query,(pError,pQuery,pRecord)=>{if(!pRecord){return fStageComplete(this.ErrorHandler.getError('Record not found.',404));}tmpRequestState.Record=pRecord;return fStageComplete();});},fStageComplete=>{return this.BehaviorInjection.runBehavior(`Delete-PreOperation`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{// Do the delete
|
|
5936
|
-
this.DAL.doDelete(tmpRequestState.Query,(pError,pQuery,pCount)=>{// MySQL returns the number of rows deleted
|
|
5937
|
-
tmpRequestState.RecordCount.Count=pCount;return fStageComplete(pError);});},fStageComplete=>{return this.BehaviorInjection.runBehavior(`Delete-PostOperation`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{pResponse.send(tmpRequestState.RecordCount);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Deleted ${tmpRequestState.RecordCount.Count} ${this.DAL.scope} records with ID ${tmpRequestState.IDRecord}`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointDelete;},{}],205:[function(require,module,exports){/**
|
|
5938
|
-
* Meadow Endpoint - Undelete a Record
|
|
5939
|
-
*/const doAPIEndpointUndelete=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Undelete');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};var tmpIDRecord=0;if(typeof pRequest.params.IDRecord==='string'){tmpIDRecord=pRequest.params.IDRecord;}else if(typeof pRequest.body[this.DAL.defaultIdentifier]==='number'){tmpIDRecord=pRequest.body[this.DAL.defaultIdentifier];}else if(typeof pRequest.body[this.DAL.defaultIdentifier]==='string'){tmpIDRecord=pRequest.body[this.DAL.defaultIdentifier];}// Although the undelete request does allow multiple undeletes, we require an identifier.
|
|
5940
|
-
// TODO: Decide if we want to keep this pattern similar to Delete, or, if we want to change it to allow bulk undeletes.
|
|
5941
|
-
if(tmpIDRecord<1){return fNext(this.ErrorHandler.getError('Record undelete failure - a valid record ID is required.',500));}tmpRequestState.RecordCount={Count:0};this.waterfall([fStageComplete=>{// Validate that the schema has a deleted bit
|
|
5942
|
-
var tmpSchema=this.DAL.schema;var tmpHasDeletedBit=false;for(let i=0;i<tmpSchema.length;i++){if(tmpSchema[i].Type=='Deleted'){tmpHasDeletedBit=true;}}if(!tmpHasDeletedBit){return fStageComplete(this.ErrorHandler.getError('No undelete bit on record.',500));}return fStageComplete();},fStageComplete=>{// Now see if the record, with this identifier, for this user, exists with the deleted bit set to 1
|
|
5943
|
-
tmpRequestState.Query=this.DAL.query;tmpRequestState.Query.addFilter(this.DAL.defaultIdentifier,tmpIDRecord);tmpRequestState.Query.addFilter('Deleted',1);tmpRequestState.Query.setIDUser(tmpRequestState.SessionData.UserID);return fStageComplete();},fStageComplete=>{// Load the record so we can do security checks on it
|
|
5944
|
-
this.DAL.doRead(tmpRequestState.Query,(pError,pQuery,pRecord)=>{if(!pRecord){return fStageComplete(this.ErrorHandler.getError('Record not found.',404));}tmpRequestState.Record=pRecord;return fStageComplete();});},fStageComplete=>{return this.BehaviorInjection.runBehavior(`Undelete-PreOperation`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{// Do the undelete
|
|
5945
|
-
this.DAL.doUndelete(tmpRequestState.Query,(pError,pQuery,pCount)=>{// MySQL returns the number of rows deleted
|
|
5946
|
-
tmpRequestState.RecordCount={Count:pCount};return fStageComplete(pError);});},fStageComplete=>{return this.BehaviorInjection.runBehavior(`Undelete-PostOperation`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{pResponse.send(tmpRequestState.RecordCount);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,'Undeleted '+tmpRequestState.RecordCount.Count+' records with ID '+tmpIDRecord+'.');return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointUndelete;},{}],206:[function(require,module,exports){/**
|
|
5947
|
-
* Meadow Endpoint - Read a Record
|
|
5948
|
-
*/const doAPIEndpointRead=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Read');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{tmpRequestState.Query=this.DAL.query;return fStageComplete();},fBehaviorInjector(`Read-PreOperation`),fStageComplete=>{if(!pRequest.params.IDRecord&&pRequest.params.GUIDRecord){// We use a custom name for this (RequestDefaultIdentifier) in case there is a query with a dot in the default identifier.
|
|
5949
|
-
tmpRequestState.RecordSearchCriteria=`${this.DAL.defaultGUIdentifier} = ${pRequest.params.GUIDRecord}`;tmpRequestState.Query.addFilter(this.DAL.defaultGUIdentifier,pRequest.params.GUIDRecord,'=','AND','RequestDefaultIdentifier');}else if(pRequest.params.IDRecord){// We use a custon name for this (RequestDefaultIdentifier) in case there is a query with a dot in the default identifier.
|
|
5950
|
-
tmpRequestState.RecordSearchCriteria=`${this.DAL.defaultIdentifier} = ${pRequest.params.IDRecord}`;tmpRequestState.Query.addFilter(this.DAL.defaultIdentifier,pRequest.params.IDRecord,'=','AND','RequestDefaultIdentifier');}else{return fStageComplete(this.ErrorHandler.getError('No ID Provided',400));}return fStageComplete();},fBehaviorInjector(`Read-QueryConfiguration`),fStageComplete=>{try{this.DAL.doRead(tmpRequestState.Query,(pError,pQuery,pRecord)=>{if(!pRecord){return fStageComplete(this.ErrorHandler.getError('Record not Found',404));}tmpRequestState.Record=pRecord;return fStageComplete();});}catch(pQueryError){return fStageComplete(pQueryError);}},fBehaviorInjector(`Read-PostOperation`),fStageComplete=>{pResponse.send(tmpRequestState.Record);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Read Record Where ${tmpRequestState.RecordSearchCriteria}`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointRead;},{}],207:[function(require,module,exports){/**
|
|
5951
|
-
* Meadow Endpoint - Read a list of Records with a specified set of columns, distinct by those columns.
|
|
5952
|
-
*/const marshalDistinctList=require('./Meadow-Marshal-DistinctList.js');const doAPIEndpointReadDistinct=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'ReadDistinct');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};tmpRequestState.DistinctColumns;this.waterfall([fStageComplete=>{tmpRequestState.Query=this.DAL.query.setDistinct(true);/** @type {number | boolean} */let tmpCap=false;/** @type {number | boolean} */let tmpBegin=false;if(typeof pRequest.params.Begin==='string'||typeof pRequest.params.Begin==='number'){tmpBegin=parseInt(pRequest.params.Begin,10);}if(typeof pRequest.params.Cap==='string'||typeof pRequest.params.Cap==='number'){tmpCap=parseInt(pRequest.params.Cap,10);}else{//maximum number of records to return by default on Read queries. Override via "MeadowDefaultMaxCap" fable setting.
|
|
5953
|
-
tmpCap=this.settings['MeadowDefaultMaxCap']||250;}tmpRequestState.Query.setCap(tmpCap).setBegin(tmpBegin);if(typeof pRequest.params.Filter==='string'){// If a filter has been passed in, parse it and add the values to the query.
|
|
5954
|
-
this.parseFilter(pRequest.params.Filter,tmpRequestState.Query);}else if(pRequest.params.Filter){tmpRequestState.Query.setFilter(pRequest.params.Filter);}if(typeof pRequest.params.Columns==='string'){tmpRequestState.DistinctColumns=pRequest.params.Columns.split(',');if(!tmpRequestState.DistinctColumns){return fStageComplete({Code:400,Message:'Columns to distinct on must be provided.'});}tmpRequestState.Query.setDataElements(tmpRequestState.DistinctColumns);}return fStageComplete();},fBehaviorInjector(`Reads-QueryConfiguration`),fStageComplete=>{this.DAL.doReads(tmpRequestState.Query,fStageComplete);},(pQuery,pRecords,fStageComplete)=>{if(pRecords.length<1){pRecords=[];}tmpRequestState.Records=pRecords;return fStageComplete();},fStageComplete=>{tmpRequestState.ResultRecords=marshalDistinctList.call(this,tmpRequestState.Records,pRequest,tmpRequestState.DistinctColumns);return fStageComplete();},fStageComplete=>{return this.doStreamRecordArray(pResponse,tmpRequestState.ResultRecords,fStageComplete);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Read a recordset distinct lite list with ${tmpRequestState.ResultRecords.length} results.`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointReadDistinct;},{"./Meadow-Marshal-DistinctList.js":213}],208:[function(require,module,exports){/**
|
|
5955
|
-
* Meadow Endpoint - Read a list of lite Records (for Drop-downs and such)
|
|
5956
|
-
*/const marshalLiteList=require('./Meadow-Marshal-LiteList.js');const doAPIEndpointReadLite=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'ReadsLite');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([// 1a. Get the records
|
|
5957
|
-
fStageComplete=>{tmpRequestState.Query=this.DAL.query;// TODO: Limit the query to the columns we need for the templated expression
|
|
5958
|
-
/** @type {number | boolean} */var tmpCap=false;/** @type {number | boolean} */var tmpBegin=false;if(typeof pRequest.params.Begin==='string'||typeof pRequest.params.Begin==='number'){tmpBegin=parseInt(pRequest.params.Begin,10);}if(typeof pRequest.params.Cap==='string'||typeof pRequest.params.Cap==='number'){tmpCap=parseInt(pRequest.params.Cap,10);}else{//maximum number of records to return by default on Read queries. Override via "MeadowDefaultMaxCap" fable setting.
|
|
5959
|
-
tmpCap=this.settings['MeadowDefaultMaxCap']||250;}tmpRequestState.Query.setCap(tmpCap).setBegin(tmpBegin);if(typeof pRequest.params.Filter==='string'){// If a filter has been passed in, parse it and add the values to the query.
|
|
5960
|
-
this.parseFilter(pRequest.params.Filter,tmpRequestState.Query);}else if(pRequest.params.Filter){tmpRequestState.Query.setFilter(pRequest.params.Filter);}return fStageComplete();},fBehaviorInjector(`Reads-QueryConfiguration`),fStageComplete=>{this.DAL.doReads(tmpRequestState.Query,fStageComplete);},(pQuery,pRecords,fStageComplete)=>{if(pRecords.length<1){pRecords=[];}tmpRequestState.RawRecords=pRecords;return fStageComplete();},fStageComplete=>{tmpRequestState.Records=marshalLiteList.call(this,tmpRequestState.RawRecords,pRequest,typeof pRequest.params.ExtraColumns==='string'?pRequest.params.ExtraColumns.split(','):[]);return fStageComplete();},fStageComplete=>{return this.doStreamRecordArray(pResponse,tmpRequestState.Records,fNext);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Read a recordset lite list with ${tmpRequestState.Records.length} results`);return fStageComplete();}],(pError,pResultRecords)=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointReadLite;},{"./Meadow-Marshal-LiteList.js":214}],209:[function(require,module,exports){/**
|
|
5961
|
-
* Meadow Endpoint - Read the Max Value of a Column in a Set
|
|
5962
|
-
*/const doAPIEndpointReadMax=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'ReadMax');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{tmpRequestState.Query=this.DAL.query;return fStageComplete();},fStageComplete=>{tmpRequestState.ColumnName=pRequest.params.ColumnName;tmpRequestState.Query.setSort({Column:tmpRequestState.ColumnName,Direction:'Descending'});tmpRequestState.Query.setCap(1);return fStageComplete();},fBehaviorInjector(`ReadMax-QueryConfiguration`),fStageComplete=>{this.DAL.doRead(tmpRequestState.Query,fStageComplete);},(pQuery,pRecord,fStageComplete)=>{if(!pRecord){return fStageComplete(this.ErrorHandler.getError('Record not Found',404));}tmpRequestState.Record=pRecord;return fStageComplete();},fStageComplete=>{this.BehaviorInjection.runBehavior(`ReadMax-PostOperation`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Read max record of ${this.DAL.scope} on ${tmpRequestState.ColumnName}`);pResponse.send(tmpRequestState.Record);}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointReadMax;},{}],210:[function(require,module,exports){/**
|
|
5963
|
-
* Meadow Endpoint - Read a select list of Records (for Drop-downs and such)
|
|
5964
|
-
*/const doAPIEndpointReadSelectList=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'ReadsBy');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{tmpRequestState.Query=this.DAL.query;/** @type {number | boolean} */var tmpCap=false;/** @type {number | boolean} */var tmpBegin=false;if(typeof pRequest.params.Begin==='string'||typeof pRequest.params.Begin==='number'){tmpBegin=parseInt(pRequest.params.Begin);}if(typeof pRequest.params.Cap==='string'||typeof pRequest.params.Cap==='number'){tmpCap=parseInt(pRequest.params.Cap);}else{tmpCap=this.settings['MeadowDefaultMaxCap']||250;}tmpRequestState.Query.setCap(tmpCap).setBegin(tmpBegin);if(typeof pRequest.params.Filter==='string'){this.parseFilter(pRequest.params.Filter,tmpRequestState.Query);}return fStageComplete();},fBehaviorInjector(`Reads-QueryConfiguration`),fStageComplete=>{this.DAL.doReads(tmpRequestState.Query,fStageComplete);},(pQuery,pRecords,fStageComplete)=>{if(pRecords.length<1){pRecords=[];}tmpRequestState.Records=pRecords;return fStageComplete();},fStageComplete=>{tmpRequestState.SelectList=[];for(var i=0;i<tmpRequestState.Records.length;i++){tmpRequestState.SelectList.push({Hash:tmpRequestState.Records[i][this.DAL.defaultIdentifier],Value:this.BehaviorInjection.processTemplate('SelectList',{Record:tmpRequestState.Records[i]},this.DAL.scope+' #<%= Record.'+this.DAL.defaultIdentifier+'%>')});}return fStageComplete();},fStageComplete=>{return this.doStreamRecordArray(pResponse,tmpRequestState.SelectList,fStageComplete);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Read a recordset lite list with ${tmpRequestState.SelectList.length} results.`);return fStageComplete();}],(pError,pResultRecords)=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointReadSelectList;},{}],211:[function(require,module,exports){/**
|
|
5965
|
-
* Meadow Endpoint - Read a Set of Records
|
|
5966
|
-
*/const doAPIEndpointReads=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Reads');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{tmpRequestState.Query=this.DAL.query;/** @type {number | boolean} */var tmpCap=false;/** @type {number | boolean} */var tmpBegin=false;if(typeof pRequest.params.Begin==='string'||typeof pRequest.params.Begin==='number'){tmpBegin=parseInt(pRequest.params.Begin);}if(typeof pRequest.params.Cap==='string'||typeof pRequest.params.Cap==='number'){tmpCap=parseInt(pRequest.params.Cap);}else{tmpCap=this.settings['MeadowDefaultMaxCap']||250;}tmpRequestState.Query.setCap(tmpCap).setBegin(tmpBegin);if(typeof pRequest.params.Filter==='string'){// If a filter has been passed in, parse it and add the values to the query.
|
|
5967
|
-
this.parseFilter(pRequest.params.Filter,tmpRequestState.Query);}else if(pRequest.params.Filter){tmpRequestState.Query.setFilter(pRequest.params.Filter);}return fStageComplete();},fBehaviorInjector(`Reads-QueryConfiguration`),fStageComplete=>{this.DAL.doReads(tmpRequestState.Query,fStageComplete);},(pQuery,pRecords,fStageComplete)=>{if(!pRecords){return fStageComplete(this.ErrorHandler.getError('No records found.',404));}tmpRequestState.Records=pRecords;return fStageComplete();},fBehaviorInjector(`Reads-PostOperation`),fStageComplete=>{this.doStreamRecordArray(pResponse,tmpRequestState.Records,fStageComplete);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,'Read a list of records.');return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointReads;},{}],212:[function(require,module,exports){/**
|
|
5968
|
-
* Meadow Endpoint - Read a Record
|
|
5969
|
-
*/const doAPIEndpointReadsBy=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'ReadsBy');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([// 1. Construct the Query
|
|
5970
|
-
fStageComplete=>{tmpRequestState.Query=this.DAL.query;/** @type {number | boolean} */var tmpCap=false;/** @type {number | boolean} */var tmpBegin=false;if(typeof pRequest.params.Begin==='string'||typeof pRequest.params.Begin==='number'){tmpBegin=parseInt(pRequest.params.Begin);}if(typeof pRequest.params.Cap==='string'||typeof pRequest.params.Cap==='number'){tmpCap=parseInt(pRequest.params.Cap);}else{//maximum number of records to return by default on Read queries. Override via "MeadowDefaultMaxCap" fable setting.
|
|
5971
|
-
tmpCap=this.settings['MeadowDefaultMaxCap']||250;}tmpRequestState.Query.setCap(tmpCap).setBegin(tmpBegin);return fStageComplete();},fStageComplete=>{function addField(pByField,pByValue){if(pByValue.constructor===Array){tmpRequestState.Query.addFilter(pByField,pByValue,'IN','AND','RequestByField');}else{tmpRequestState.Query.addFilter(pByField,pByValue,'=','AND','RequestByField');}}var tmpFilters=pRequest.params.Filters;if(tmpFilters&&tmpFilters.constructor===Array){tmpFilters.forEach(function(filter){addField(filter.ByField,filter.ByValue);});}else{addField(pRequest.params.ByField,pRequest.params.ByValue);}return fStageComplete();},fBehaviorInjector(`Reads-QueryConfiguration`),fStageComplete=>{this.DAL.doReads(tmpRequestState.Query,(pError,pQuery,pRecords)=>{if(!pRecords){return fStageComplete(this.ErrorHandler.getError('No records found.',404));}tmpRequestState.Records=pRecords;return fStageComplete();});},fBehaviorInjector(`Reads-PostOperation`),fStageComplete=>{return this.doStreamRecordArray(pResponse,tmpRequestState.Records,fStageComplete);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Read a list of records by ${pRequest.params.ByField} = ${pRequest.params.ByValue}`);return fStageComplete();}],// 7. Return the results to the user
|
|
5972
|
-
pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointReadsBy;},{}],213:[function(require,module,exports){/**
|
|
5973
|
-
* Meadow Operation - Marshal an array of records into a distinct list
|
|
5974
|
-
*/const marshalDistinctList=function(pRecords,pRequest,pFieldList){if(pRecords.length<1)return[];let tmpDistinctList=[];// Allow the caller to pass in a list of fields.
|
|
5975
|
-
let tmpFieldList=typeof pFieldList!=='undefined'?pFieldList:[];// See if this record has a GUID in the schema
|
|
5976
|
-
let tmpGUID=this.DAL.defaultGUIdentifier&&this.DAL.defaultGUIdentifier.length>0?this.DAL.defaultGUIdentifier:false;// Peek at the first record to check for updatedate
|
|
5977
|
-
let tmpHasUpdateDate=pRecords[0].hasOwnProperty('UpdateDate')?true:false;//Include all GUID and ID fields on the record
|
|
5978
|
-
let tmpRecordFields=Object.keys(pRecords[0]);let h=0;while(h<tmpFieldList.length){// Remove any fields in the list that aren't in the first record.
|
|
5979
|
-
if(!pRecords[0].hasOwnProperty(tmpFieldList[0]))tmpFieldList.splice(h,1);else h++;}for(let i=0;i<pRecords.length;i++){let tmpDistinctRecord={};tmpFieldList.forEach(pField=>{tmpDistinctRecord[pField]=pRecords[i][pField];});tmpDistinctList.push(tmpDistinctRecord);}return tmpDistinctList;};module.exports=marshalDistinctList;},{}],214:[function(require,module,exports){/**
|
|
5980
|
-
* Meadow Operation - Marshal an array of records into a lite list
|
|
5981
|
-
*/const marshalLiteList=function(pRecords,pRequest,pFieldList){if(pRecords.length<1)return[];let tmpLiteList=[];// Allow the caller to pass in a list of fields.
|
|
5982
|
-
let tmpFieldList=typeof pFieldList!=='undefined'?pFieldList:[];// See if this record has a GUID in the schema
|
|
5983
|
-
let tmpGUID=this.DAL.defaultGUIdentifier&&this.DAL.defaultGUIdentifier.length>0?this.DAL.defaultGUIdentifier:false;// Peek at the first record to check for updatedate
|
|
5984
|
-
let tmpHasUpdateDate=pRecords[0].hasOwnProperty('UpdateDate')?true:false;//Include all GUID and ID fields on the record
|
|
5985
|
-
let tmpRecordFields=Object.keys(pRecords[0]);tmpRecordFields.forEach(pField=>{if(pField.indexOf('ID')===0||pField.indexOf('GUID')===0||pField=='CreatingIDUser')//we should always include owner info
|
|
5986
|
-
{tmpFieldList.push(pField);}});let h=0;while(h<tmpFieldList.length){// Remove any fields in the list that aren't in the first record.
|
|
5987
|
-
if(!pRecords[0].hasOwnProperty(tmpFieldList[0]))tmpFieldList.splice(h,1);else h++;}for(let i=0;i<pRecords.length;i++){let tmpLiteRecord={Value:this.BehaviorInjection.processTemplate('SelectList',{Record:pRecords[i]},this.DAL.scope+' #<%= Record.'+this.DAL.defaultIdentifier+'%>')};tmpLiteRecord[this.DAL.defaultIdentifier]=pRecords[i][this.DAL.defaultIdentifier];if(tmpGUID)tmpLiteRecord[tmpGUID]=pRecords[i][tmpGUID];if(tmpHasUpdateDate)tmpLiteRecord['UpdateDate']=pRecords[i].UpdateDate;tmpFieldList.forEach(pField=>{tmpLiteRecord[pField]=pRecords[i][pField];});tmpLiteList.push(tmpLiteRecord);}return tmpLiteList;};module.exports=marshalLiteList;},{}],215:[function(require,module,exports){/**
|
|
5988
|
-
* Meadow Endpoint - Get a New, empty Record
|
|
5989
|
-
*/const doAPIEndpointNew=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'New');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fBehaviorInjector(`New-PreOperation`),fStageComplete=>{// If during the PreOperation this was set, we can
|
|
5990
|
-
if(!tmpRequestState.EmptyEntityRecord){tmpRequestState.EmptyEntityRecord=this.extend({},this.DAL.schemaFull.defaultObject);}return fStageComplete();},fBehaviorInjector(`New-PostOperation`),fStageComplete=>{pResponse.send(tmpRequestState.EmptyEntityRecord);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Delivered New ${this.DAL.scope} Record`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointNew;},{}],216:[function(require,module,exports){/**
|
|
5991
|
-
* Meadow Endpoint - Get the Record Schema
|
|
5992
|
-
*/const doAPIEndpointSchema=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Schema');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fBehaviorInjector(`Schema-PreOperation`),fStageComplete=>{// If during the PreOperation this was set, we won't overwrite
|
|
5993
|
-
if(!pRequest.JSONSchema){tmpRequestState.JSONSchema=this.extend({},this.DAL.jsonSchema);}return fStageComplete();},fBehaviorInjector(`Schema-PostOperation`),fStageComplete=>{pResponse.send(tmpRequestState.JSONSchema);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Delivered JSONSchema for ${this.DAL.scope}`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointSchema;},{}],217:[function(require,module,exports){/**
|
|
5994
|
-
* Meadow Endpoint - Validate a Record
|
|
5995
|
-
*/const doAPIEndpointValidate=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Validate');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fBehaviorInjector(`Validate-PreOperation`),fStageComplete=>{if(typeof pRequest.body!=='object'){return fStageComplete(this.ErrorHandler.getError('Record validate failure - a valid JSON object is required.',500));}tmpRequestState.Record=pRequest.body;return fStageComplete();},fStageComplete=>{tmpRequestState.RecordValidation=this.DAL.schemaFull.validateObject(tmpRequestState.Record);return fStageComplete();},fBehaviorInjector(`Validate-PostOperation`),fStageComplete=>{pResponse.send(tmpRequestState.RecordValidation);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Validated Record for ${this.DAL.scope} - ${JSON.stringify(tmpRequestState.RecordValidation)}`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointValidate;},{}],218:[function(require,module,exports){/**
|
|
5996
|
-
* Meadow Endpoint - Update a set of Records
|
|
5997
|
-
*/const doUpdate=require('./Meadow-Operation-Update.js');const doAPIEndpointUpdate=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'UpdateBulk');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};tmpRequestState.UpdatedRecords=[];this.waterfall([fStageComplete=>{if(!Array.isArray(pRequest.body)){return fStageComplete(this.ErrorHandler.getError('Record update failure - a valid record is required.',500));}tmpRequestState.BulkRecords=pRequest.body;return fStageComplete();},fBehaviorInjector(`UpdateBulk-PreOperation`),fStageComplete=>{this.eachLimit(tmpRequestState.BulkRecords,1,(pRecord,fCallback)=>{doUpdate.call(this,pRecord,pRequest,tmpRequestState,pResponse,fCallback);},fStageComplete);},fBehaviorInjector(`UpdateBulk-PostOperation`),fStageComplete=>{return this.doStreamRecordArray(pResponse,tmpRequestState.UpdatedRecords,fStageComplete);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Bulk updated ${tmpRequestState.UpdatedRecords.length} records`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointUpdate;},{"./Meadow-Operation-Update.js":220}],219:[function(require,module,exports){/**
|
|
5998
|
-
* Meadow Endpoint - Update a Record
|
|
5999
|
-
*/const doUpdate=require('./Meadow-Operation-Update.js');const doAPIEndpointUpdate=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Update');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{if(typeof pRequest.body!=='object'){return fStageComplete(this.ErrorHandler.getError('Record update failure - a valid record is required.',400));}if(pRequest.body[this.DAL.defaultIdentifier]<1){return fStageComplete(this.ErrorHandler.getError('Record update failure - a valid record ID is required in the passed-in record.',400));}tmpRequestState.Record=pRequest.body;return fStageComplete();},fStageComplete=>{doUpdate.call(this,pRequest.body,pRequest,tmpRequestState,pResponse,fStageComplete);},fStageComplete=>{if(tmpRequestState.RecordUpdateError){return fStageComplete(tmpRequestState.RecordUpdateErrorObject);}if(tmpRequestState.UpdatedRecords.length<1){return fStageComplete(this.ErrorHandler.getError('Unknown record update failure - no updated records returned.',500));}tmpRequestState.Record=tmpRequestState.UpdatedRecords[0];return fStageComplete();},fStageComplete=>{pResponse.send(tmpRequestState.Record);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointUpdate;},{"./Meadow-Operation-Update.js":220}],220:[function(require,module,exports){/**
|
|
6000
|
-
* Meadow Operation - Update a record
|
|
6001
|
-
*/const doUpdate=function(pRecordToModify,pRequest,pRequestState,pResponse,fCallback,pOptionalCachedUpdatingRecord){// This is a virtual operation
|
|
6002
|
-
let tmpRequestState=this.cloneAsyncSafeRequestState(pRequestState,'doUpdate');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};// If there is not a default identifier or cached record, fail
|
|
6003
|
-
if(pRecordToModify[this.DAL.defaultIdentifier]<1&&typeof pOptionalCachedUpdatingRecord==='undefined'){return fCallback('Record update failure - a valid record ID is required in the passed-in record.');}if(!Array.isArray(tmpRequestState.ParentRequestState.UpdatedRecords)){tmpRequestState.ParentRequestState.UpdatedRecords=[];}this.waterfall([fStageComplete=>{tmpRequestState.RecordToModify=pRecordToModify;if(typeof pOptionalCachedUpdatingRecord!=='undefined'){// Use the cached updating record instead of reading a record.
|
|
6004
|
-
tmpRequestState.OriginalRecord=pOptionalCachedUpdatingRecord;return fStageComplete();}else{tmpRequestState.Query=this.DAL.query;tmpRequestState.Query.addFilter(this.DAL.defaultIdentifier,tmpRequestState.RecordToModify[this.DAL.defaultIdentifier]);// Load the record so we can do security checks on it
|
|
6005
|
-
this.DAL.doRead(tmpRequestState.Query,(pError,pQuery,pRecord)=>{if(pError){return fStageComplete(pError);}if(!pRecord){return fStageComplete(this.ErrorHandler.getError('Record not Found',404));}tmpRequestState.Record=pRecord;return fStageComplete();});}},fStageComplete=>{tmpRequestState.Query=this.DAL.query;return fStageComplete();},fBehaviorInjector(`Update-PreOperation`),fStageComplete=>{tmpRequestState.Query.setIDUser(tmpRequestState.SessionData.UserID);tmpRequestState.Query.addRecord(tmpRequestState.RecordToModify);return fStageComplete();},fBehaviorInjector(`Update-QueryConfiguration`),fStageComplete=>{this.DAL.doUpdate(tmpRequestState.Query,(pError,pQuery,pReadQuery,pRecord)=>{if(pError){if(typeof pError=='string'){return fStageComplete(this.ErrorHandler.getError(pError,500));}else{return fStageComplete(pError);}}if(!pRecord){return fStageComplete(this.ErrorHandler.getError(`Error in DAL Update: No record returned from persistence engine.`,500));}tmpRequestState.Record=pRecord;return fStageComplete();});},fStageComplete=>{return this.BehaviorInjection.runBehavior(`Update-PostOperation`,this,pRequest,tmpRequestState,fStageComplete);},fStageComplete=>{tmpRequestState.ParentRequestState.UpdatedRecords.push(tmpRequestState.Record);this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Updated record with ID ${tmpRequestState.Record[this.DAL.defaultIdentifier]}`);return fStageComplete();}],pError=>{if(pError){// Ensure we have a record object to attach the error to
|
|
6006
|
-
if(tmpRequestState.Record){tmpRequestState.Record.Error=pError;}else{tmpRequestState.Record={Error:pError};}tmpRequestState.ParentRequestState.RecordUpdateError=true;tmpRequestState.ParentRequestState.RecordUpdateErrorObject=pError;tmpRequestState.ParentRequestState.UpdatedRecords.push(tmpRequestState.Record);}return fCallback();});};module.exports=doUpdate;},{}],221:[function(require,module,exports){/**
|
|
6007
|
-
* Meadow Endpoint - Upsert a set of Records
|
|
6008
|
-
*/const doUpsert=require('./Meadow-Operation-Upsert.js');const marshalLiteList=require('../read/Meadow-Marshal-LiteList.js');const doAPIEndpointUpserts=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'UpsertBulk');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};tmpRequestState.CreatedRecords=[];tmpRequestState.UpdatedRecords=[];tmpRequestState.UpsertedRecords=[];tmpRequestState.ErrorRecords=[];this.waterfall([fStageComplete=>{if(!Array.isArray(pRequest.body)){return fStageComplete(this.ErrorHandler.getError(`Record bulk upsert failure - a valid array of records is required.`,500));}tmpRequestState.BulkRecords=pRequest.body;return fStageComplete();},fBehaviorInjector(`UpsertBulk-PreOperation`),fStageComplete=>{this.eachLimit(tmpRequestState.BulkRecords,1,(pRecord,fCallback)=>{doUpsert.call(this,pRecord,pRequest,tmpRequestState,pResponse,fCallback);},fStageComplete);},fBehaviorInjector(`UpsertBulk-PostOperation`),fStageComplete=>{return this.doStreamRecordArray(pResponse,marshalLiteList.call(this,tmpRequestState.UpsertedRecords,pRequest),fStageComplete);},fStageComplete=>{this.log.requestCompletedSuccessfully(pRequest,tmpRequestState,`Bulk upsert complete -- ${tmpRequestState.UpsertedRecords.length} records processed`);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointUpserts;},{"../read/Meadow-Marshal-LiteList.js":214,"./Meadow-Operation-Upsert.js":223}],222:[function(require,module,exports){/**
|
|
6009
|
-
* Meadow Endpoint - Upsert (Insert OR Update) a Record
|
|
6010
|
-
*/var doUpsert=require('./Meadow-Operation-Upsert.js');var doAPIEndpointUpsert=function(pRequest,pResponse,fNext){let tmpRequestState=this.initializeRequestState(pRequest,'Upsert');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};// Configure the request for the generic create & update operations
|
|
6011
|
-
tmpRequestState.CreatedRecords=[];tmpRequestState.UpdatedRecords=[];tmpRequestState.UpsertedRecords=[];tmpRequestState.ErrorRecords=[];this.waterfall([fStageComplete=>{//1. Validate request body to ensure it is a valid record
|
|
6012
|
-
if(typeof pRequest.body!=='object'){return fStageComplete(this.ErrorHandler.getError('Record upsert failure - a valid record is required.',500));}tmpRequestState.RecordToUpsert=pRequest.body;return fStageComplete();},fStageComplete=>{doUpsert.call(this,tmpRequestState.RecordToUpsert,pRequest,tmpRequestState,pResponse,fStageComplete);},fStageComplete=>{if(tmpRequestState.RecordUpsertError){return fStageComplete(tmpRequestState.RecordUpsertErrorMessage);}if(tmpRequestState.UpsertedRecords.length<1){return fStageComplete(this.ErrorHandler.getError('Record upsert unknown failure - no record back from Upsert operation.',500));}tmpRequestState.Record=tmpRequestState.UpsertedRecords[0];pResponse.send(tmpRequestState.Record);return fStageComplete();}],pError=>{return this.ErrorHandler.handleErrorIfSet(pRequest,tmpRequestState,pResponse,pError,fNext);});};module.exports=doAPIEndpointUpsert;},{"./Meadow-Operation-Upsert.js":223}],223:[function(require,module,exports){/**
|
|
6013
|
-
* Meadow Operation - Upsert a record
|
|
6014
|
-
*/const doCreate=require('../create/Meadow-Operation-Create.js');const doUpdate=require('../update/Meadow-Operation-Update.js');const doUpsert=function(pRecordToUpsert,pRequest,pRequestState,pResponse,fCallback){let tmpRequestState=this.cloneAsyncSafeRequestState(pRequestState,'Upsert');let fBehaviorInjector=pBehaviorHash=>{return fStageComplete=>{this.BehaviorInjection.runBehavior(pBehaviorHash,this,pRequest,tmpRequestState,fStageComplete);};};this.waterfall([fStageComplete=>{tmpRequestState.Query=this.DAL.query;// Prepare to gather requirements for upserting
|
|
6015
|
-
tmpRequestState.Record=pRecordToUpsert;// This operation will be create only if there is no GUID or ID in the record bundle
|
|
6016
|
-
tmpRequestState.UpsertCreateOnly=true;// See if there is a default identifier or default GUIdentifier
|
|
6017
|
-
if(typeof tmpRequestState.Record[this.DAL.defaultGUIdentifier]!=='undefined'&&tmpRequestState.Record[this.DAL.defaultGUIdentifier].length>0){tmpRequestState.Query.addFilter(this.DAL.defaultGUIdentifier,tmpRequestState.Record[this.DAL.defaultGUIdentifier]);tmpRequestState.UpsertCreateOnly=false;}if(typeof tmpRequestState.Record[this.DAL.defaultIdentifier]!=='undefined'&&tmpRequestState.Record[this.DAL.defaultIdentifier]>0){tmpRequestState.Query.addFilter(this.DAL.defaultIdentifier,tmpRequestState.Record[this.DAL.defaultIdentifier]);tmpRequestState.UpsertCreateOnly=false;}return fStageComplete();},fStageComplete=>{if(tmpRequestState.UpsertCreateOnly){tmpRequestState.Operation='Create';doCreate.call(this,tmpRequestState.Record,pRequest,tmpRequestState,pResponse,fStageComplete);}else{this.DAL.doRead(tmpRequestState.Query,(pError,pQuery,pRecord)=>{if(pError){if(typeof pError=='string'){return fStageComplete(this.ErrorHandler.getError(pError,500));}else{return fStageComplete(pError);}}else if(!pRecord){// Record not found -- do a create.
|
|
6018
|
-
tmpRequestState.Operation='Create';doCreate.call(this,tmpRequestState.Record,pRequest,tmpRequestState,pResponse,fStageComplete);}else{// Set the default ID in the passed-in record if it doesn't exist
|
|
6019
|
-
// or is zero (which is never a valid ID).
|
|
6020
|
-
if(!tmpRequestState.Record.hasOwnProperty(this.DAL.defaultIdentifier)||!tmpRequestState.Record[this.DAL.defaultIdentifier]){tmpRequestState.Record[this.DAL.defaultIdentifier]=pRecord[this.DAL.defaultIdentifier];}// If the found record does not match the passed ID --- what the heck?!
|
|
6021
|
-
if(tmpRequestState.Record[this.DAL.defaultIdentifier]!=pRecord[this.DAL.defaultIdentifier]){return fStageComplete(this.ErrorHandler.getError('Record IDs do not match',500));}// Record found -- do an update. Use the cached record, though.
|
|
6022
|
-
tmpRequestState.Operation='Update';doUpdate.call(this,tmpRequestState.Record,pRequest,tmpRequestState,pResponse,fStageComplete,pRecord);}});}},fStageComplete=>{// Now stuff the record into the upserted array
|
|
6023
|
-
if(tmpRequestState.Operation=='Update'){if(tmpRequestState.RecordUpdateError){return fStageComplete(tmpRequestState.RecordUpdateErrorObject);}if(tmpRequestState.UpdatedRecords.length<1){return fStageComplete(this.ErrorHandler.getError('Unknown record update failure - no updated records returned.',500));}tmpRequestState.Record=tmpRequestState.UpdatedRecords[0];}else if(tmpRequestState.Operation=='Create'){if(tmpRequestState.RecordCreateError){return fStageComplete(tmpRequestState.RecordCreateErrorObject);}if(tmpRequestState.CreatedRecords.length<1){return fStageComplete(this.ErrorHandler.getError('Unknown record create failure - no created records returned.',500));}tmpRequestState.Record=tmpRequestState.CreatedRecords[0];}else{return fStageComplete(this.ErrorHandler.getError('Unkknown record upsert failure = no records returned from doUpsert.',500));}tmpRequestState.ParentRequestState.UpsertedRecords.push(tmpRequestState.Record);return fStageComplete();}],pError=>{if(pError){tmpRequestState.Record.Error=pError;}return fCallback();});};module.exports=doUpsert;},{"../create/Meadow-Operation-Create.js":203,"../update/Meadow-Operation-Update.js":220}]},{},[191])(191);});
|
|
6100
|
+
module.exports=wrappy;function wrappy(fn,cb){if(fn&&cb)return wrappy(fn)(cb);if(typeof fn!=='function')throw new TypeError('need wrapper function');Object.keys(fn).forEach(function(k){wrapper[k]=fn[k];});return wrapper;function wrapper(){var args=new Array(arguments.length);for(var i=0;i<args.length;i++){args[i]=arguments[i];}var ret=fn.apply(this,args);var cb=args[args.length-1];if(typeof ret==='function'&&ret!==cb){Object.keys(cb).forEach(function(k){ret[k]=cb[k];});}return ret;}}},{}],224:[function(require,module,exports){module.exports=extend;var hasOwnProperty=Object.prototype.hasOwnProperty;function extend(){var target={};for(var i=0;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;}},{}]},{},[1])(1);});
|
|
6024
6101
|
//# sourceMappingURL=meadow-endpoints.js.map
|