manyfest 1.0.34 → 1.0.36
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/README.md +1 -0
- package/dist/manyfest.compatible.js +10 -1
- package/dist/manyfest.compatible.min.js +1 -1
- package/dist/manyfest.compatible.min.js.map +1 -1
- package/dist/manyfest.js +10 -1
- package/dist/manyfest.min.js +1 -1
- package/dist/manyfest.min.js.map +1 -1
- package/package.json +2 -2
- package/source/Manyfest-ObjectAddress-CheckAddressExists.js +39 -2
- package/source/Manyfest-ObjectAddress-GetValue.js +76 -4
- package/source/Manyfest.js +15 -1
- package/test/Manyfest_Object_ReadSets_tests.js +2 -0
- package/test/Manyfest_Object_Read_tests.js +3 -0
- package/test/Manyfest_Object_Validate_tests.js +25 -1
package/dist/manyfest.js
CHANGED
|
@@ -2115,6 +2115,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
2115
2115
|
"Number": 0,
|
|
2116
2116
|
"Float": 0.0,
|
|
2117
2117
|
"Integer": 0,
|
|
2118
|
+
"PreciseNumber": "0.0",
|
|
2118
2119
|
"Boolean": false,
|
|
2119
2120
|
"Binary": 0,
|
|
2120
2121
|
"DateTime": 0,
|
|
@@ -2137,6 +2138,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
2137
2138
|
this.schemaManipulations = new libSchemaManipulation(this.logInfo, this.logError);
|
|
2138
2139
|
this.objectAddressGeneration = new libObjectAddressGeneration(this.logInfo, this.logError);
|
|
2139
2140
|
this.hashTranslations = new libHashTranslation(this.logInfo, this.logError);
|
|
2141
|
+
this.numberRegex = /^[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?$/;
|
|
2140
2142
|
}
|
|
2141
2143
|
|
|
2142
2144
|
/*************************************************************************
|
|
@@ -2382,6 +2384,13 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
2382
2384
|
addValidationError(tmpDescriptor.Address, "has a DataType ".concat(tmpDescriptor.DataType, " but is of the type ").concat(tmpElementType));
|
|
2383
2385
|
}
|
|
2384
2386
|
break;
|
|
2387
|
+
case "precisenumber":
|
|
2388
|
+
if (tmpElementType != 'string') {
|
|
2389
|
+
addValidationError(tmpDescriptor.Address, "has a DataType ".concat(tmpDescriptor.DataType, " but is of the type ").concat(tmpElementType));
|
|
2390
|
+
} else if (!this.numberRegex.test(tmpValue)) {
|
|
2391
|
+
addValidationError(tmpDescriptor.Address, "has a DataType ".concat(tmpDescriptor.DataType, " but is not a valid number"));
|
|
2392
|
+
}
|
|
2393
|
+
break;
|
|
2385
2394
|
case 'number':
|
|
2386
2395
|
if (tmpElementType != 'number') {
|
|
2387
2396
|
addValidationError(tmpDescriptor.Address, "has a DataType ".concat(tmpDescriptor.DataType, " but is of the type ").concat(tmpElementType));
|
|
@@ -2403,7 +2412,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
2403
2412
|
addValidationError(tmpDescriptor.Address, "has a DataType ".concat(tmpDescriptor.DataType, " but is of the type ").concat(tmpElementType));
|
|
2404
2413
|
}
|
|
2405
2414
|
break;
|
|
2406
|
-
case '
|
|
2415
|
+
case 'datetime':
|
|
2407
2416
|
let tmpValueDate = new Date(tmpValue);
|
|
2408
2417
|
if (tmpValueDate.toString() == 'Invalid Date') {
|
|
2409
2418
|
addValidationError(tmpDescriptor.Address, "has a DataType ".concat(tmpDescriptor.DataType, " but is not parsable as a Date by Javascript"));
|
package/dist/manyfest.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function _defineProperty(t,e,s){return(e=_toPropertyKey(e))in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t}function _toPropertyKey(t){var e=_toPrimitive(t,"string");return"symbol"==typeof e?e:e+""}function _toPrimitive(t,e){if("object"!=typeof t||!t)return t;var s=t[Symbol.toPrimitive];if(void 0!==s){var r=s.call(t,e||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Manyfest=t()}}((function(){return function t(e,s,r){function n(i,o){if(!s[i]){if(!e[i]){var c="function"==typeof require&&require;if(!o&&c)return c(i,!0);if(a)return a(i,!0);var l=new Error("Cannot find module '"+i+"'");throw l.code="MODULE_NOT_FOUND",l}var h=s[i]={exports:{}};e[i][0].call(h.exports,(function(t){return n(e[i][1][t]||t)}),h,h.exports,t,e,s,r)}return s[i].exports}for(var a="function"==typeof require&&require,i=0;i<r.length;i++)n(r[i]);return n}({1:[function(t,e,s){class r{constructor(t,e,s){"object"==typeof t&&t.isFable?this.connectFable(t):this.fable=!1,this.fable?(this.UUID=t.getUUID(),this.options="object"==typeof e?e:{}):(this.options="object"!=typeof t||t.isFable?"object"==typeof e?e:{}:t,this.UUID="CORE-SVC-".concat(Math.floor(89999*Math.random()+1e4))),this.serviceType="Unknown-".concat(this.UUID),this.Hash="string"==typeof s?s:this.fable||"string"!=typeof e?"".concat(this.UUID):e}connectFable(t){if("object"!=typeof t||!t.isFable){let e="Fable Service Provider Base: Cannot connect to Fable, invalid Fable object passed in. The pFable parameter was a [".concat(typeof t,"].}");return console.log(e),new Error(e)}return this.fable||(this.fable=t),this.log||(this.log=this.fable.Logging),this.services||(this.services=this.fable.services),this.servicesMap||(this.servicesMap=this.fable.servicesMap),!0}}_defineProperty(r,"isFableService",!0),e.exports=r,e.exports.CoreServiceProviderBase=r},{}],2:[function(t,e,s){e.exports=(t,e)=>e.startsWith(t)&&e.endsWith(t)?e.substring(1,e.length-1):e},{}],3:[function(t,e,s){let r=t("./Manyfest-LogToConsole.js");e.exports=class{constructor(t,e){this.logInfo="function"==typeof t?t:r,this.logError="function"==typeof e?e:r,this.translationTable={}}translationCount(){return Object.keys(this.translationTable).length}addTranslation(t){if("object"!=typeof t)return this.logError("Hash translation addTranslation expected a translation be type object but was passed in ".concat(typeof t)),!1;Object.keys(t).forEach((e=>{"string"!=typeof t[e]?this.logError("Hash translation addTranslation expected a translation destination hash for [".concat(e,"] to be a string but the referrant was a ").concat(typeof t[e])):this.translationTable[e]=t[e]}))}removeTranslationHash(t){t in this.translationTable&&delete this.translationTable[t]}removeTranslation(t){if("string"==typeof t)return this.removeTranslationHash(t),!0;if("object"==typeof t){return Object.keys(t).forEach((t=>{this.removeTranslation(t)})),!0}return this.logError("Hash translation removeTranslation expected either a string or an object but the passed-in translation was type ".concat(typeof t)),!1}clearTranslations(){this.translationTable={}}translate(t){return t in this.translationTable?this.translationTable[t]:t}}},{"./Manyfest-LogToConsole.js":4}],4:[function(t,e,s){e.exports=(t,e)=>{let s="string"==typeof t?t:"";console.log("[Manyfest] ".concat(s)),e&&console.log(JSON.stringify(e))}},{}],5:[function(t,e,s){const r=t("./Manyfest-LogToConsole.js"),n=t("./Manyfest-ObjectAddress-GetValue.js");let a={DataFormat:t("./Manyfest-ObjectAddress-Parser.js")};e.exports=class{constructor(){this.getObjectValueClass=new n(r,r)}checkAddressExists(t,e,s){if("object"!=typeof t)return!1;if("string"!=typeof e)return!1;let r=void 0===s?t:s,n=a.DataFormat.stringGetFirstSegment(e);if(n.length==e.length){let s=e.indexOf("["),r=e.indexOf("]"),n=e.indexOf("(");if(n>0&&a.DataFormat.stringCountEnclosures(e)>0){let s=e.substring(0,n).trim();return s in t&&"function"==typeof t[s]}if(s>0&&r>s&&r-s>1){let n=e.substring(0,s).trim();if("object"!=typeof t[n])return!1;let a=e.substring(s+1,r).trim(),i=parseInt(a,10);return Array.isArray(t[n])!=isNaN(i)&&(isNaN(i)?(a=this.cleanWrapCharacters('"',a),a=this.cleanWrapCharacters("`",a),a=this.cleanWrapCharacters("'",a),a in t[n]):i in t[n])}return e in t}{let i=n,o=e.substring(n.length+1),c=i.indexOf("["),l=i.indexOf("]"),h=i.indexOf("(");if(h>0&&a.DataFormat.stringCountEnclosures(i)>0){let e=i.substring(0,h).trim();if("function"==(t[e],!1))return!1;let n=a.DataFormat.stringGetSegments(a.DataFormat.stringGetEnclosureValueByIndex(i.substring(e.length),0),",");if(0==n.length||""==n[0])return this.checkAddressExists(t[e].apply(t),o,r);{let r=[],a=void 0===s?t:s;for(let t=0;t<n.length;t++)r.push(this.getObjectValueClass.getValueAtAddress(a,n[t]));return this.checkAddressExists(t[e].apply(t,r),o,a)}}if(c>0&&l>c&&l-c>1){let e=i.substring(0,c).trim(),s=i.substring(c+1,l).trim(),n=parseInt(s,10);return Array.isArray(t[e])!=isNaN(n)&&(isNaN(n)?(s=this.cleanWrapCharacters('"',s),s=this.cleanWrapCharacters("`",s),s=this.cleanWrapCharacters("'",s),this.checkAddressExists(t[e][s],o,r)):this.checkAddressExists(t[e][n],o,r))}return(!(i in t)||"object"==typeof t[i])&&(i in t||(t[i]={}),this.checkAddressExists(t[i],o,r))}}}},{"./Manyfest-LogToConsole.js":4,"./Manyfest-ObjectAddress-GetValue.js":7,"./Manyfest-ObjectAddress-Parser.js":8}],6:[function(t,e,s){let r=t("./Manyfest-LogToConsole.js"),n=t("./Manyfest-CleanWrapCharacters.js"),a=t("../source/Manyfest-ParseConditionals.js");e.exports=class{constructor(t,e){this.logInfo="function"==typeof t?t:r,this.logError="function"==typeof e?e:r,this.cleanWrapCharacters=n}checkRecordFilters(t,e){return a(this,t,e)}deleteValueAtAddress(t,e,s){if("object"!=typeof t)return;if("string"!=typeof e)return;let r="";"string"==typeof s&&(r=s);let n=e.indexOf(".");if(-1==n){let s=e.indexOf("["),r=e.indexOf("]"),n=e.indexOf("{}");if(s>0&&r>s&&r-s>1){let n=e.substring(0,s).trim();if("object"!=typeof t[n])return!1;let a=e.substring(s+1,r).trim(),i=parseInt(a,10);return Array.isArray(t[n])!=isNaN(i)&&(isNaN(i)?(a=this.cleanWrapCharacters('"',a),a=this.cleanWrapCharacters("`",a),a=this.cleanWrapCharacters("'",a),delete t[n][a],!0):(delete t[n][i],!0))}if(s>0&&r>s&&r-s==1){let r=e.substring(0,s).trim();if(!Array.isArray(t[r]))return!1;let n=t[r];for(let t=n.length-1;t>=0;t--){this.checkRecordFilters(e,n[t])&&n.splice(t,1)}return!0}if(n>0){let s=e.substring(0,n).trim();return"object"==typeof t[s]&&(delete t[s],!0)}return delete t[e],!0}{let s=e.substring(0,n),a=e.substring(n+1),i=s.indexOf("["),o=s.indexOf("]");if(i>0&&o>i&&o-i>1){let e=s.substring(0,i).trim(),n=s.substring(i+1,o).trim(),c=parseInt(n,10);return Array.isArray(t[e])!=isNaN(c)&&("object"==typeof t[e]&&(isNaN(c)?(n=this.cleanWrapCharacters('"',n),n=this.cleanWrapCharacters("`",n),n=this.cleanWrapCharacters("'",n),r="".concat(r).concat(r.length>0?".":"").concat(s),this.deleteValueAtAddress(t[e][n],a,r)):(r="".concat(r).concat(r.length>0?".":"").concat(s),this.deleteValueAtAddress(t[e][c],a,r))))}if(i>0&&o>i&&o-i==1){let s=e.substring(0,i).trim();if(!Array.isArray(t[s]))return!1;let n=t[s];r="".concat(r).concat(r.length>0?".":"").concat(s);let o={};for(let e=0;e<n.length;e++){let n="".concat(r,"[").concat(e,"]"),i=this.deleteValueAtAddress(t[s][e],a,n);o["".concat(n,".").concat(a)]=i}return o}let c=e.indexOf("{}");if(c>0){let s=e.substring(0,c).trim();if("object"!=typeof t[s])return!1;let n=t[s],i=Object.keys(n);r="".concat(r).concat(r.length>0?".":"").concat(s);let o={};for(let n=0;n<i.length;n++){let c="".concat(r,".").concat(i[n]),l=this.deleteValueAtAddress(t[s][i[n]],a,c);this.checkRecordFilters(e,l)&&(o["".concat(c,".").concat(a)]=l)}return o}return s in t&&"object"!=typeof t[s]?void 0:s in t?(r="".concat(r).concat(r.length>0?".":"").concat(s),this.deleteValueAtAddress(t[s],a,r)):(r="".concat(r).concat(r.length>0?".":"").concat(s),t[s]={},this.deleteValueAtAddress(t[s],a,r))}}}},{"../source/Manyfest-ParseConditionals.js":11,"./Manyfest-CleanWrapCharacters.js":2,"./Manyfest-LogToConsole.js":4}],7:[function(t,e,s){let r=t("./Manyfest-LogToConsole.js"),n=t("./Manyfest-CleanWrapCharacters.js"),a=t("../source/Manyfest-ParseConditionals.js"),i={DataFormat:t("./Manyfest-ObjectAddress-Parser.js")};e.exports=class{constructor(t,e){this.logInfo="function"==typeof t?t:r,this.logError="function"==typeof e?e:r,this.cleanWrapCharacters=n}checkRecordFilters(t,e){return a(this,t,e)}getValueAtAddress(t,e,s,r){if("object"!=typeof t)return;if("string"!=typeof e)return;let n="";"string"==typeof s&&(n=s);let a=void 0===r?t:r,o=i.DataFormat.stringGetFirstSegment(e);if(""==o){let t=i.DataFormat.stringGetSegments(n),s=0;for(let t=0;t<e.length&&"."==e.charAt(t);t++)s++;let r=t.length-s;if(r<0)return;{let n=e.slice(s);return r>0&&(n="".concat(t.slice(0,r).join("."),".").concat(n)),this.logInfo("Back-navigation detected. Recursing back to address [".concat(n,"]")),this.getValueAtAddress(a,n)}}if(o.length==e.length){let s=e.indexOf("["),n=e.indexOf("]"),a=e.indexOf("{}"),o=e.indexOf("(");if(o>0&&i.DataFormat.stringCountEnclosures(e)>0){let s=e.substring(0,o).trim();if("function"==(t[s],!1))return!1;let n=i.DataFormat.stringGetSegments(i.DataFormat.stringGetEnclosureValueByIndex(e.substring(s.length),0),",");if(0==n.length||""==n[0])return t[s].apply(t);{let e=[],a=void 0===r?t:r;for(let t=0;t<n.length;t++)!(n[t].length>=2)||'"'!=n[t].charAt(0)&&"'"!=n[t].charAt(0)&&"`"!=n[t].charAt(0)||'"'!=n[t].charAt(n[t].length-1)&&"'"!=n[t].charAt(n[t].length-1)&&"`"!=n[t].charAt(n[t].length-1)?e.push(this.getValueAtAddress(a,n[t])):e.push(n[t].substring(1,n[t].length-1));return t[s].apply(t,e)}}if(s>0&&n>s&&n-s>1){let r=e.substring(0,s).trim();if("object"!=typeof t[r])return;let a=e.substring(s+1,n).trim(),i=parseInt(a,10);if(Array.isArray(t[r])==isNaN(i))return;return isNaN(i)?(a=this.cleanWrapCharacters('"',a),a=this.cleanWrapCharacters("`",a),a=this.cleanWrapCharacters("'",a),t[r][a]):t[r][i]}if(s>0&&n>s&&n-s==1){let r=e.substring(0,s).trim();if(!Array.isArray(t[r]))return!1;let n=t[r],a=[];for(let t=0;t<n.length;t++){this.checkRecordFilters(e,n[t])&&a.push(n[t])}return a}if(a>0){let s=e.substring(0,a).trim();return"object"==typeof t[s]&&t[s]}return null!=typeof t[e]?t[e]:void 0}{let s=o,c=e.substring(o.length+1),l=s.indexOf("["),h=s.indexOf("]"),f=s.indexOf("(");if(f>0&&i.DataFormat.stringCountEnclosures(s)>0){let e=s.substring(0,f).trim();if(n="".concat(n).concat(n.length>0?".":"").concat(s),"function"==(t[e],!1))return!1;let o=i.DataFormat.stringGetSegments(i.DataFormat.stringGetEnclosureValueByIndex(s.substring(e.length),0),",");if(0==o.length||""==o[0])return this.getValueAtAddress(t[e].apply(t),c,n,a);{let s=[],a=void 0===r?t:r;for(let t=0;t<o.length;t++)!(o[t].length>=2)||'"'!=o[t].charAt(0)&&"'"!=o[t].charAt(0)&&"`"!=o[t].charAt(0)||'"'!=o[t].charAt(o[t].length-1)&&"'"!=o[t].charAt(o[t].length-1)&&"`"!=o[t].charAt(o[t].length-1)?s.push(this.getValueAtAddress(a,o[t])):s.push(o[t].substring(1,o[t].length-1));return this.getValueAtAddress(t[e].apply(t,s),c,n,a)}}if(l>0&&h>l&&h-l>1){let e=s.substring(0,l).trim(),r=s.substring(l+1,h).trim(),i=parseInt(r,10);if(Array.isArray(t[e])==isNaN(i))return;if("object"!=typeof t[e])return;return isNaN(i)?(r=this.cleanWrapCharacters('"',r),r=this.cleanWrapCharacters("`",r),r=this.cleanWrapCharacters("'",r),n="".concat(n).concat(n.length>0?".":"").concat(s),this.getValueAtAddress(t[e][r],c,n,a)):(n="".concat(n).concat(n.length>0?".":"").concat(s),this.getValueAtAddress(t[e][i],c,n,a))}if(l>0&&h>l&&h-l==1){let s=e.substring(0,l).trim();if(!Array.isArray(t[s]))return!1;let r=t[s];n="".concat(n).concat(n.length>0?".":"").concat(s);let i={};for(let e=0;e<r.length;e++){let r="".concat(n,"[").concat(e,"]"),o=this.getValueAtAddress(t[s][e],c,r,a);i["".concat(r,".").concat(c)]=o}return i}let u=e.indexOf("{}");if(u>0){let s=e.substring(0,u).trim();if("object"!=typeof t[s])return!1;let r=t[s],i=Object.keys(r);n="".concat(n).concat(n.length>0?".":"").concat(s);let o={};for(let r=0;r<i.length;r++){let l="".concat(n,".").concat(i[r]),h=this.getValueAtAddress(t[s][i[r]],c,l,a);this.checkRecordFilters(e,h)&&(o["".concat(l,".").concat(c)]=h)}return o}return s in t&&"object"!=typeof t[s]?void 0:s in t?(n="".concat(n).concat(n.length>0?".":"").concat(s),this.getValueAtAddress(t[s],c,n,a)):(n="".concat(n).concat(n.length>0?".":"").concat(s),t[s]={},this.getValueAtAddress(t[s],c,n,a))}}}},{"../source/Manyfest-ParseConditionals.js":11,"./Manyfest-CleanWrapCharacters.js":2,"./Manyfest-LogToConsole.js":4,"./Manyfest-ObjectAddress-Parser.js":8}],8:[function(t,e,s){e.exports={stringCountSegments:(t,e,s,r)=>{let n="string"==typeof t?t:"",a="string"==typeof e?e:".",i="object"==typeof s?pEnclosureStart:{"{":0,"[":1,"(":2},o="object"==typeof r?pEnclosureEnd:{"}":0,"]":1,")":2};if(t.length<1)return 0;let c=1,l=[];for(let t=0;t<n.length;t++)n[t]==a&&0==l.length?c++:n[t]in i?l.push(i[n[t]]):n[t]in o&&o[n[t]]==l[l.length-1]&&l.pop();return c},stringGetFirstSegment:(t,e,s,r)=>{let n="string"==typeof t?t:"",a="string"==typeof e?e:".",i="object"==typeof s?pEnclosureStart:{"{":0,"[":1,"(":2},o="object"==typeof r?pEnclosureEnd:{"}":0,"]":1,")":2};if(t.length<1)return 0;let c=[];for(let t=0;t<n.length;t++){if(n[t]==a&&0==c.length)return n.substring(0,t);n[t]in i?c.push(i[n[t]]):n[t]in o&&o[n[t]]==c[c.length-1]&&c.pop()}return n},stringGetSegments:(t,e,s,r)=>{let n="string"==typeof t?t:"",a="string"==typeof e?e:".",i="object"==typeof s?pEnclosureStart:{"{":0,"[":1,"(":2},o="object"==typeof r?pEnclosureEnd:{"}":0,"]":1,")":2},c=0,l=[];if(t.length<1)return l;let h=[];for(let t=0;t<n.length;t++)n[t]==a&&0==h.length?(l.push(n.substring(c,t)),c=t+1):n[t]in i?h.push(i[n[t]]):n[t]in o&&o[n[t]]==h[h.length-1]&&h.pop();return c<n.length&&l.push(n.substring(c)),l},stringCountEnclosures:(t,e,s)=>{let r="string"==typeof t?t:"",n="string"==typeof e?e:"(",a="string"==typeof s?s:")",i=0,o=0;for(let t=0;t<r.length;t++)r[t]==n?(0==o&&i++,o++):r[t]==a&&o--;return i},stringGetEnclosureValueByIndex:(t,e,s,r)=>{let n="string"==typeof t?t:"",a="number"==typeof e?e:0,i="string"==typeof s?s:"(",o="string"==typeof r?r:")",c=0,l=0,h=!1,f=0,u=0;for(let t=0;t<n.length;t++)n[t]==i?(l++,1==l&&(c++,a==c-1&&(h=!0,f=t))):n[t]==o&&(l--,0==l&&h&&u<=f&&(u=t,h=!1));return c<=a?"":u>0&&u>f?n.substring(f+1,u):n.substring(f+1)}}},{}],9:[function(t,e,s){let r=t("./Manyfest-LogToConsole.js"),n=t("./Manyfest-CleanWrapCharacters.js");e.exports=class{constructor(t,e){this.logInfo="function"==typeof t?t:r,this.logError="function"==typeof e?e:r,this.cleanWrapCharacters=n}setValueAtAddress(t,e,s){if("object"!=typeof t)return!1;if("string"!=typeof e)return!1;let r=e.indexOf(".");if(-1==r){let r=e.indexOf("["),n=e.indexOf("]");if(r>0&&n>r&&n-r>1){let a=e.substring(0,r).trim();if("object"!=typeof t[a])return!1;let i=e.substring(r+1,n).trim(),o=parseInt(i,10);return Array.isArray(t[a])!=isNaN(o)&&(isNaN(o)?(i=this.cleanWrapCharacters('"',i),i=this.cleanWrapCharacters("`",i),i=this.cleanWrapCharacters("'",i),t[a][i]=s,!0):(t[a][o]=s,!0))}return t[e]=s,!0}{let n=e.substring(0,r),a=e.substring(r+1),i=n.indexOf("["),o=n.indexOf("]");if(i>0&&o>i&&o-i>1){let e=n.substring(0,i).trim(),r=n.substring(i+1,o).trim(),c=parseInt(r,10);return Array.isArray(t[e])!=isNaN(c)&&(isNaN(c)?(r=this.cleanWrapCharacters('"',r),r=this.cleanWrapCharacters("`",r),r=this.cleanWrapCharacters("'",r),this.setValueAtAddress(t[e][r],a,s)):this.setValueAtAddress(t[e][c],a,s))}return n in t&&"object"!=typeof t[n]?("__ERROR"in t||(t.__ERROR={}),t.__ERROR[e]=s,!1):(n in t||(t[n]={}),this.setValueAtAddress(t[n],a,s))}}}},{"./Manyfest-CleanWrapCharacters.js":2,"./Manyfest-LogToConsole.js":4}],10:[function(t,e,s){let r=t("./Manyfest-LogToConsole.js");e.exports=class{constructor(t,e){this.logInfo="function"==typeof t?t:r,this.logError="function"==typeof e?e:r}generateAddressses(t,e,s){let r="string"==typeof e?e:"",n="object"==typeof s?s:{},a=typeof t,i={Address:r,Hash:r,Name:r,InSchema:!1};switch("object"==a&&null==t&&(a="null"),a){case"string":i.DataType="String",i.Default=t,n[r]=i;break;case"number":case"bigint":i.DataType="Number",i.Default=t,n[r]=i;break;case"undefined":case"null":i.DataType="Any",i.Default=t,n[r]=i;break;case"object":if(Array.isArray(t)){i.DataType="Array",""!=r&&(n[r]=i);for(let e=0;e<t.length;e++)this.generateAddressses(t[e],"".concat(r,"[").concat(e,"]"),n)}else{i.DataType="Object",""!=r&&(n[r]=i,r+=".");let e=Object.keys(t);for(let s=0;s<e.length;s++)this.generateAddressses(t[e[s]],"".concat(r).concat(e[s]),n)}}return n}}},{"./Manyfest-LogToConsole.js":4}],11:[function(t,e,s){const r="<<~?",n="?~>>",a=(t,e,s,r,n)=>{switch(r){case"TRUE":return!0===t.getValueAtAddress(e,s);case"FALSE":return!1===t.getValueAtAddress(e,s);case"LNGT":case"LENGTH_GREATER_THAN":switch(typeof t.getValueAtAddress(e,s)){case"string":case"object":return t.getValueAtAddress(e,s).length>n;default:return!1}break;case"LNLT":case"LENGTH_LESS_THAN":switch(typeof t.getValueAtAddress(e,s)){case"string":case"object":return t.getValueAtAddress(e,s).length<n;default:return!1}break;case"!=":return t.getValueAtAddress(e,s)!=n;case"<":return t.getValueAtAddress(e,s)<n;case">":return t.getValueAtAddress(e,s)>n;case"<=":return t.getValueAtAddress(e,s)<=n;case">=":return t.getValueAtAddress(e,s)>=n;case"===":return t.getValueAtAddress(e,s)===n;default:return t.getValueAtAddress(e,s)==n}};e.exports=(t,e,s)=>{let i=!0,o=e.indexOf(r);for(;-1!=o;){let c=e.indexOf(n,o+4);if(-1!=c){let n=e.substring(o+4,c).split(","),l=n[0],h="EXISTS";n.length>1&&(h=n[1]);let f=!1;n.length>2&&(f=n[2]),i=i&&a(t,s,l,h,f),o=e.indexOf(r,c+4)}else o=-1}return i}},{}],12:[function(t,e,s){let r=t("./Manyfest-LogToConsole.js");e.exports=class{constructor(t,e){this.logInfo="function"==typeof t?t:r,this.logError="function"==typeof e?e:r}resolveAddressMappings(t,e){if("object"!=typeof t)return this.logError("Attempted to resolve address mapping but the descriptor was not an object."),!1;if("object"!=typeof e)return!0;let s=Object.keys(t),r={};return s.forEach((e=>{"Hash"in t[e]&&(r[t[e].Hash]=e)})),Object.keys(e).forEach((s=>{let n=e[s],a=!1,i=!1;s in t?a=s:s in r&&(a=r[s]),a?(i=t[a],delete t[a]):i={Hash:s},t[n]=i})),!0}safeResolveAddressMappings(t,e){let s=JSON.parse(JSON.stringify(t));return this.resolveAddressMappings(s,e),s}mergeAddressMappings(t,e){if("object"!=typeof e||"object"!=typeof t)return this.logError("Attempted to merge two schema descriptors but both were not objects."),!1;let s=JSON.parse(JSON.stringify(e)),r=JSON.parse(JSON.stringify(t));return Object.keys(s).forEach((t=>{t in r||(r[t]=s[t])})),r}}},{"./Manyfest-LogToConsole.js":4}],13:[function(t,e,s){const r=t("fable-serviceproviderbase");let n=t("./Manyfest-LogToConsole.js"),a=t("./Manyfest-HashTranslation.js"),i=t("./Manyfest-ObjectAddress-CheckAddressExists.js"),o=t("./Manyfest-ObjectAddress-GetValue.js"),c=t("./Manyfest-ObjectAddress-SetValue.js"),l=t("./Manyfest-ObjectAddress-DeleteValue.js"),h=t("./Manyfest-ObjectAddressGeneration.js"),f=t("./Manyfest-SchemaManipulation.js");const u={Scope:"DEFAULT",Descriptors:{}};class d extends r{constructor(t,e,s){void 0===t?super({}):super(t,e,s),this.serviceType="Manifest",this.logInfo=n,this.logError=n,this.objectAddressCheckAddressExists=new i(this.logInfo,this.logError),this.objectAddressGetValue=new o(this.logInfo,this.logError),this.objectAddressSetValue=new c(this.logInfo,this.logError),this.objectAddressDeleteValue=new l(this.logInfo,this.logError),"defaultValues"in this.options||(this.options.defaultValues={String:"",Number:0,Float:0,Integer:0,Boolean:!1,Binary:0,DateTime:0,Array:[],Object:{},Null:null}),"strict"in this.options||(this.options.strict=!1),this.scope=void 0,this.elementAddresses=void 0,this.elementHashes=void 0,this.elementDescriptors=void 0,this.reset(),"object"==typeof this.options&&this.loadManifest(this.options),this.schemaManipulations=new f(this.logInfo,this.logError),this.objectAddressGeneration=new h(this.logInfo,this.logError),this.hashTranslations=new a(this.logInfo,this.logError)}reset(){this.scope="DEFAULT",this.elementAddresses=[],this.elementHashes={},this.elementDescriptors={}}clone(){let t=JSON.parse(JSON.stringify(this.options)),e=new d(this.getManifest(),this.logInfo,this.logError,t);return e.hashTranslations.addTranslation(this.hashTranslations.translationTable),e}deserialize(t){return this.loadManifest(JSON.parse(t))}loadManifest(t){"object"!=typeof t&&this.logError("(".concat(this.scope,") Error loading manifest; expecting an object but parameter was type ").concat(typeof t,"."));let e="object"==typeof t?t:{},s=Object.keys(u);for(let t=0;t<s.length;t++)s[t]in e||(e[s[t]]=JSON.parse(JSON.stringify(u[s[t]])));if("Scope"in e?"string"==typeof e.Scope?this.scope=e.Scope:this.logError("(".concat(this.scope,") Error loading scope from manifest; expecting a string but property was type ").concat(typeof e.Scope,"."),e):this.logError("(".concat(this.scope,') Error loading scope from manifest object. Property "Scope" does not exist in the root of the object.'),e),"Descriptors"in e)if("object"==typeof e.Descriptors){let t=Object.keys(e.Descriptors);for(let s=0;s<t.length;s++)this.addDescriptor(t[s],e.Descriptors[t[s]])}else this.logError("(".concat(this.scope,") Error loading description object from manifest object. Expecting an object in 'Manifest.Descriptors' but the property was type ").concat(typeof e.Descriptors,"."),e);else this.logError("(".concat(this.scope,') Error loading object description from manifest object. Property "Descriptors" does not exist in the root of the Manifest object.'),e);if("HashTranslations"in e&&"object"==typeof e.HashTranslations)for(let t=0;t<e.HashTranslations.length;t++);}serialize(){return JSON.stringify(this.getManifest())}getManifest(){return{Scope:this.scope,Descriptors:JSON.parse(JSON.stringify(this.elementDescriptors)),HashTranslations:JSON.parse(JSON.stringify(this.hashTranslations.translationTable))}}addDescriptor(t,e){return"object"==typeof e?("Address"in e||(e.Address=t),t in this.elementDescriptors||this.elementAddresses.push(t),this.elementDescriptors[t]=e,this.elementHashes[t]=t,"Hash"in e?this.elementHashes[e.Hash]=t:e.Hash=t,!0):(this.logError("(".concat(this.scope,") Error loading object descriptor for address '").concat(t,"' from manifest object. Expecting an object but property was type ").concat(typeof e,".")),!1)}getDescriptorByHash(t){return this.getDescriptor(this.resolveHashAddress(t))}getDescriptor(t){return this.elementDescriptors[t]}eachDescriptor(t){let e=Object.keys(this.elementDescriptors);for(let s=0;s<e.length;s++)t(this.elementDescriptors[e[s]])}checkAddressExistsByHash(t,e){return this.checkAddressExists(t,this.resolveHashAddress(e))}checkAddressExists(t,e){return this.objectAddressCheckAddressExists.checkAddressExists(t,e)}resolveHashAddress(t){let e,s=t in this.elementHashes,r=t in this.hashTranslations.translationTable;return e=s&&!r?this.elementHashes[t]:r&&this.hashTranslations.translate(t)in this.elementHashes?this.elementHashes[this.hashTranslations.translate(t)]:r?this.hashTranslations.translate(t):t,e}getValueByHash(t,e){let s=this.getValueAtAddress(t,this.resolveHashAddress(e));return void 0===s&&(s=this.getDefaultValue(this.getDescriptorByHash(e))),s}getValueAtAddress(t,e){let s=this.objectAddressGetValue.getValueAtAddress(t,e);return void 0===s&&(s=this.getDefaultValue(this.getDescriptor(e))),s}setValueByHash(t,e,s){return this.setValueAtAddress(t,this.resolveHashAddress(e),s)}setValueAtAddress(t,e,s){return this.objectAddressSetValue.setValueAtAddress(t,e,s)}deleteValueByHash(t,e,s){return this.deleteValueAtAddress(t,this.resolveHashAddress(e),s)}deleteValueAtAddress(t,e,s){return this.objectAddressDeleteValue.deleteValueAtAddress(t,e,s)}validate(t){let e={Error:null,Errors:[],MissingElements:[]};"object"!=typeof t&&(e.Error=!0,e.Errors.push("Expected passed in object to be type object but was passed in ".concat(typeof t)));let s=(t,s)=>{e.Error=!0,e.Errors.push('Element at address "'.concat(t,'" ').concat(s,"."))};for(let r=0;r<this.elementAddresses.length;r++){let n=this.getDescriptor(this.elementAddresses[r]),a=this.checkAddressExists(t,n.Address),i=this.getValueAtAddress(t,n.Address);if(void 0!==i&&a||(e.MissingElements.push(n.Address),(n.Required||this.options.strict)&&s(n.Address,"is flagged REQUIRED but is not set in the object")),n.DataType){let t=typeof i;switch(n.DataType.toString().trim().toLowerCase()){case"string":"string"!=t&&s(n.Address,"has a DataType ".concat(n.DataType," but is of the type ").concat(t));break;case"number":"number"!=t&&s(n.Address,"has a DataType ".concat(n.DataType," but is of the type ").concat(t));break;case"integer":if("number"!=t)s(n.Address,"has a DataType ".concat(n.DataType," but is of the type ").concat(t));else{i.toString().indexOf(".")>-1&&s(n.Address,"has a DataType ".concat(n.DataType," but has a decimal point in the number."))}break;case"float":"number"!=t&&s(n.Address,"has a DataType ".concat(n.DataType," but is of the type ").concat(t));break;case"DateTime":"Invalid Date"==new Date(i).toString()&&s(n.Address,"has a DataType ".concat(n.DataType," but is not parsable as a Date by Javascript"));default:"string"!=t&&s(n.Address,"has a DataType ".concat(n.DataType," (which auto-converted to String because it was unrecognized) but is of the type ").concat(t))}}}return e}getDefaultValue(t){if("object"==typeof t){if("Default"in t)return t.Default;{let e="DataType"in t?t.DataType:"String";return e in this.options.defaultValues?this.options.defaultValues[e]:null}}}populateDefaults(t,e){return this.populateObject(t,e,(t=>"Default"in t))}populateObject(t,e,s){let r="object"==typeof t?t:{},n=void 0!==e&&e,a="function"==typeof s?s:t=>!0;return this.elementAddresses.forEach((t=>{let e=this.getDescriptor(t);a(e)&&(!n&&this.checkAddressExists(r,t)||this.setValueAtAddress(r,t,this.getDefaultValue(e)))})),r}}e.exports=d},{"./Manyfest-HashTranslation.js":3,"./Manyfest-LogToConsole.js":4,"./Manyfest-ObjectAddress-CheckAddressExists.js":5,"./Manyfest-ObjectAddress-DeleteValue.js":6,"./Manyfest-ObjectAddress-GetValue.js":7,"./Manyfest-ObjectAddress-SetValue.js":9,"./Manyfest-ObjectAddressGeneration.js":10,"./Manyfest-SchemaManipulation.js":12,"fable-serviceproviderbase":1}]},{},[13])(13)}));
|
|
1
|
+
"use strict";function _defineProperty(t,e,s){return(e=_toPropertyKey(e))in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t}function _toPropertyKey(t){var e=_toPrimitive(t,"string");return"symbol"==typeof e?e:e+""}function _toPrimitive(t,e){if("object"!=typeof t||!t)return t;var s=t[Symbol.toPrimitive];if(void 0!==s){var r=s.call(t,e||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Manyfest=t()}}((function(){return function t(e,s,r){function n(i,o){if(!s[i]){if(!e[i]){var c="function"==typeof require&&require;if(!o&&c)return c(i,!0);if(a)return a(i,!0);var l=new Error("Cannot find module '"+i+"'");throw l.code="MODULE_NOT_FOUND",l}var h=s[i]={exports:{}};e[i][0].call(h.exports,(function(t){return n(e[i][1][t]||t)}),h,h.exports,t,e,s,r)}return s[i].exports}for(var a="function"==typeof require&&require,i=0;i<r.length;i++)n(r[i]);return n}({1:[function(t,e,s){class r{constructor(t,e,s){"object"==typeof t&&t.isFable?this.connectFable(t):this.fable=!1,this.fable?(this.UUID=t.getUUID(),this.options="object"==typeof e?e:{}):(this.options="object"!=typeof t||t.isFable?"object"==typeof e?e:{}:t,this.UUID="CORE-SVC-".concat(Math.floor(89999*Math.random()+1e4))),this.serviceType="Unknown-".concat(this.UUID),this.Hash="string"==typeof s?s:this.fable||"string"!=typeof e?"".concat(this.UUID):e}connectFable(t){if("object"!=typeof t||!t.isFable){let e="Fable Service Provider Base: Cannot connect to Fable, invalid Fable object passed in. The pFable parameter was a [".concat(typeof t,"].}");return console.log(e),new Error(e)}return this.fable||(this.fable=t),this.log||(this.log=this.fable.Logging),this.services||(this.services=this.fable.services),this.servicesMap||(this.servicesMap=this.fable.servicesMap),!0}}_defineProperty(r,"isFableService",!0),e.exports=r,e.exports.CoreServiceProviderBase=r},{}],2:[function(t,e,s){e.exports=(t,e)=>e.startsWith(t)&&e.endsWith(t)?e.substring(1,e.length-1):e},{}],3:[function(t,e,s){let r=t("./Manyfest-LogToConsole.js");e.exports=class{constructor(t,e){this.logInfo="function"==typeof t?t:r,this.logError="function"==typeof e?e:r,this.translationTable={}}translationCount(){return Object.keys(this.translationTable).length}addTranslation(t){if("object"!=typeof t)return this.logError("Hash translation addTranslation expected a translation be type object but was passed in ".concat(typeof t)),!1;Object.keys(t).forEach((e=>{"string"!=typeof t[e]?this.logError("Hash translation addTranslation expected a translation destination hash for [".concat(e,"] to be a string but the referrant was a ").concat(typeof t[e])):this.translationTable[e]=t[e]}))}removeTranslationHash(t){t in this.translationTable&&delete this.translationTable[t]}removeTranslation(t){if("string"==typeof t)return this.removeTranslationHash(t),!0;if("object"==typeof t){return Object.keys(t).forEach((t=>{this.removeTranslation(t)})),!0}return this.logError("Hash translation removeTranslation expected either a string or an object but the passed-in translation was type ".concat(typeof t)),!1}clearTranslations(){this.translationTable={}}translate(t){return t in this.translationTable?this.translationTable[t]:t}}},{"./Manyfest-LogToConsole.js":4}],4:[function(t,e,s){e.exports=(t,e)=>{let s="string"==typeof t?t:"";console.log("[Manyfest] ".concat(s)),e&&console.log(JSON.stringify(e))}},{}],5:[function(t,e,s){const r=t("./Manyfest-LogToConsole.js"),n=t("./Manyfest-ObjectAddress-GetValue.js");let a={DataFormat:t("./Manyfest-ObjectAddress-Parser.js")};e.exports=class{constructor(){this.getObjectValueClass=new n(r,r)}checkAddressExists(t,e,s){if("object"!=typeof t)return!1;if("string"!=typeof e)return!1;let r=void 0===s?t:s,n=a.DataFormat.stringGetFirstSegment(e);if(n.length==e.length){let s=e.indexOf("["),r=e.indexOf("]"),n=e.indexOf("(");if(n>0&&a.DataFormat.stringCountEnclosures(e)>0){let s=e.substring(0,n).trim();return s in t&&"function"==typeof t[s]}if(s>0&&r>s&&r-s>1){let n=e.substring(0,s).trim();if("object"!=typeof t[n])return!1;let a=e.substring(s+1,r).trim(),i=parseInt(a,10);return Array.isArray(t[n])!=isNaN(i)&&(isNaN(i)?(a=this.cleanWrapCharacters('"',a),a=this.cleanWrapCharacters("`",a),a=this.cleanWrapCharacters("'",a),a in t[n]):i in t[n])}return e in t}{let i=n,o=e.substring(n.length+1),c=i.indexOf("["),l=i.indexOf("]"),h=i.indexOf("(");if(h>0&&a.DataFormat.stringCountEnclosures(i)>0){let e=i.substring(0,h).trim();if("function"==(t[e],!1))return!1;let n=a.DataFormat.stringGetSegments(a.DataFormat.stringGetEnclosureValueByIndex(i.substring(e.length),0),",");if(0==n.length||""==n[0])return this.checkAddressExists(t[e].apply(t),o,r);{let r=[],a=void 0===s?t:s;for(let t=0;t<n.length;t++)r.push(this.getObjectValueClass.getValueAtAddress(a,n[t]));return this.checkAddressExists(t[e].apply(t,r),o,a)}}if(c>0&&l>c&&l-c>1){let e=i.substring(0,c).trim(),s=i.substring(c+1,l).trim(),n=parseInt(s,10);return Array.isArray(t[e])!=isNaN(n)&&(isNaN(n)?(s=this.cleanWrapCharacters('"',s),s=this.cleanWrapCharacters("`",s),s=this.cleanWrapCharacters("'",s),this.checkAddressExists(t[e][s],o,r)):this.checkAddressExists(t[e][n],o,r))}return(!(i in t)||"object"==typeof t[i])&&(i in t||(t[i]={}),this.checkAddressExists(t[i],o,r))}}}},{"./Manyfest-LogToConsole.js":4,"./Manyfest-ObjectAddress-GetValue.js":7,"./Manyfest-ObjectAddress-Parser.js":8}],6:[function(t,e,s){let r=t("./Manyfest-LogToConsole.js"),n=t("./Manyfest-CleanWrapCharacters.js"),a=t("../source/Manyfest-ParseConditionals.js");e.exports=class{constructor(t,e){this.logInfo="function"==typeof t?t:r,this.logError="function"==typeof e?e:r,this.cleanWrapCharacters=n}checkRecordFilters(t,e){return a(this,t,e)}deleteValueAtAddress(t,e,s){if("object"!=typeof t)return;if("string"!=typeof e)return;let r="";"string"==typeof s&&(r=s);let n=e.indexOf(".");if(-1==n){let s=e.indexOf("["),r=e.indexOf("]"),n=e.indexOf("{}");if(s>0&&r>s&&r-s>1){let n=e.substring(0,s).trim();if("object"!=typeof t[n])return!1;let a=e.substring(s+1,r).trim(),i=parseInt(a,10);return Array.isArray(t[n])!=isNaN(i)&&(isNaN(i)?(a=this.cleanWrapCharacters('"',a),a=this.cleanWrapCharacters("`",a),a=this.cleanWrapCharacters("'",a),delete t[n][a],!0):(delete t[n][i],!0))}if(s>0&&r>s&&r-s==1){let r=e.substring(0,s).trim();if(!Array.isArray(t[r]))return!1;let n=t[r];for(let t=n.length-1;t>=0;t--){this.checkRecordFilters(e,n[t])&&n.splice(t,1)}return!0}if(n>0){let s=e.substring(0,n).trim();return"object"==typeof t[s]&&(delete t[s],!0)}return delete t[e],!0}{let s=e.substring(0,n),a=e.substring(n+1),i=s.indexOf("["),o=s.indexOf("]");if(i>0&&o>i&&o-i>1){let e=s.substring(0,i).trim(),n=s.substring(i+1,o).trim(),c=parseInt(n,10);return Array.isArray(t[e])!=isNaN(c)&&("object"==typeof t[e]&&(isNaN(c)?(n=this.cleanWrapCharacters('"',n),n=this.cleanWrapCharacters("`",n),n=this.cleanWrapCharacters("'",n),r="".concat(r).concat(r.length>0?".":"").concat(s),this.deleteValueAtAddress(t[e][n],a,r)):(r="".concat(r).concat(r.length>0?".":"").concat(s),this.deleteValueAtAddress(t[e][c],a,r))))}if(i>0&&o>i&&o-i==1){let s=e.substring(0,i).trim();if(!Array.isArray(t[s]))return!1;let n=t[s];r="".concat(r).concat(r.length>0?".":"").concat(s);let o={};for(let e=0;e<n.length;e++){let n="".concat(r,"[").concat(e,"]"),i=this.deleteValueAtAddress(t[s][e],a,n);o["".concat(n,".").concat(a)]=i}return o}let c=e.indexOf("{}");if(c>0){let s=e.substring(0,c).trim();if("object"!=typeof t[s])return!1;let n=t[s],i=Object.keys(n);r="".concat(r).concat(r.length>0?".":"").concat(s);let o={};for(let n=0;n<i.length;n++){let c="".concat(r,".").concat(i[n]),l=this.deleteValueAtAddress(t[s][i[n]],a,c);this.checkRecordFilters(e,l)&&(o["".concat(c,".").concat(a)]=l)}return o}return s in t&&"object"!=typeof t[s]?void 0:s in t?(r="".concat(r).concat(r.length>0?".":"").concat(s),this.deleteValueAtAddress(t[s],a,r)):(r="".concat(r).concat(r.length>0?".":"").concat(s),t[s]={},this.deleteValueAtAddress(t[s],a,r))}}}},{"../source/Manyfest-ParseConditionals.js":11,"./Manyfest-CleanWrapCharacters.js":2,"./Manyfest-LogToConsole.js":4}],7:[function(t,e,s){let r=t("./Manyfest-LogToConsole.js"),n=t("./Manyfest-CleanWrapCharacters.js"),a=t("../source/Manyfest-ParseConditionals.js"),i={DataFormat:t("./Manyfest-ObjectAddress-Parser.js")};e.exports=class{constructor(t,e){this.logInfo="function"==typeof t?t:r,this.logError="function"==typeof e?e:r,this.cleanWrapCharacters=n}checkRecordFilters(t,e){return a(this,t,e)}getValueAtAddress(t,e,s,r){if("object"!=typeof t)return;if("string"!=typeof e)return;let n="";"string"==typeof s&&(n=s);let a=void 0===r?t:r,o=i.DataFormat.stringGetFirstSegment(e);if(""==o){let t=i.DataFormat.stringGetSegments(n),s=0;for(let t=0;t<e.length&&"."==e.charAt(t);t++)s++;let r=t.length-s;if(r<0)return;{let n=e.slice(s);return r>0&&(n="".concat(t.slice(0,r).join("."),".").concat(n)),this.logInfo("Back-navigation detected. Recursing back to address [".concat(n,"]")),this.getValueAtAddress(a,n)}}if(o.length==e.length){let s=e.indexOf("["),n=e.indexOf("]"),a=e.indexOf("{}"),o=e.indexOf("(");if(o>0&&i.DataFormat.stringCountEnclosures(e)>0){let s=e.substring(0,o).trim();if("function"==(t[s],!1))return!1;let n=i.DataFormat.stringGetSegments(i.DataFormat.stringGetEnclosureValueByIndex(e.substring(s.length),0),",");if(0==n.length||""==n[0])return t[s].apply(t);{let e=[],a=void 0===r?t:r;for(let t=0;t<n.length;t++)!(n[t].length>=2)||'"'!=n[t].charAt(0)&&"'"!=n[t].charAt(0)&&"`"!=n[t].charAt(0)||'"'!=n[t].charAt(n[t].length-1)&&"'"!=n[t].charAt(n[t].length-1)&&"`"!=n[t].charAt(n[t].length-1)?e.push(this.getValueAtAddress(a,n[t])):e.push(n[t].substring(1,n[t].length-1));return t[s].apply(t,e)}}if(s>0&&n>s&&n-s>1){let r=e.substring(0,s).trim();if("object"!=typeof t[r])return;let a=e.substring(s+1,n).trim(),i=parseInt(a,10);if(Array.isArray(t[r])==isNaN(i))return;return isNaN(i)?(a=this.cleanWrapCharacters('"',a),a=this.cleanWrapCharacters("`",a),a=this.cleanWrapCharacters("'",a),t[r][a]):t[r][i]}if(s>0&&n>s&&n-s==1){let r=e.substring(0,s).trim();if(!Array.isArray(t[r]))return!1;let n=t[r],a=[];for(let t=0;t<n.length;t++){this.checkRecordFilters(e,n[t])&&a.push(n[t])}return a}if(a>0){let s=e.substring(0,a).trim();return"object"==typeof t[s]&&t[s]}return null!=typeof t[e]?t[e]:void 0}{let s=o,c=e.substring(o.length+1),l=s.indexOf("["),h=s.indexOf("]"),f=s.indexOf("(");if(f>0&&i.DataFormat.stringCountEnclosures(s)>0){let e=s.substring(0,f).trim();if(n="".concat(n).concat(n.length>0?".":"").concat(s),"function"==(t[e],!1))return!1;let o=i.DataFormat.stringGetSegments(i.DataFormat.stringGetEnclosureValueByIndex(s.substring(e.length),0),",");if(0==o.length||""==o[0])return this.getValueAtAddress(t[e].apply(t),c,n,a);{let s=[],a=void 0===r?t:r;for(let t=0;t<o.length;t++)!(o[t].length>=2)||'"'!=o[t].charAt(0)&&"'"!=o[t].charAt(0)&&"`"!=o[t].charAt(0)||'"'!=o[t].charAt(o[t].length-1)&&"'"!=o[t].charAt(o[t].length-1)&&"`"!=o[t].charAt(o[t].length-1)?s.push(this.getValueAtAddress(a,o[t])):s.push(o[t].substring(1,o[t].length-1));return this.getValueAtAddress(t[e].apply(t,s),c,n,a)}}if(l>0&&h>l&&h-l>1){let e=s.substring(0,l).trim(),r=s.substring(l+1,h).trim(),i=parseInt(r,10);if(Array.isArray(t[e])==isNaN(i))return;if("object"!=typeof t[e])return;return isNaN(i)?(r=this.cleanWrapCharacters('"',r),r=this.cleanWrapCharacters("`",r),r=this.cleanWrapCharacters("'",r),n="".concat(n).concat(n.length>0?".":"").concat(s),this.getValueAtAddress(t[e][r],c,n,a)):(n="".concat(n).concat(n.length>0?".":"").concat(s),this.getValueAtAddress(t[e][i],c,n,a))}if(l>0&&h>l&&h-l==1){let s=e.substring(0,l).trim();if(!Array.isArray(t[s]))return!1;let r=t[s];n="".concat(n).concat(n.length>0?".":"").concat(s);let i={};for(let e=0;e<r.length;e++){let r="".concat(n,"[").concat(e,"]"),o=this.getValueAtAddress(t[s][e],c,r,a);i["".concat(r,".").concat(c)]=o}return i}let u=e.indexOf("{}");if(u>0){let s=e.substring(0,u).trim();if("object"!=typeof t[s])return!1;let r=t[s],i=Object.keys(r);n="".concat(n).concat(n.length>0?".":"").concat(s);let o={};for(let r=0;r<i.length;r++){let l="".concat(n,".").concat(i[r]),h=this.getValueAtAddress(t[s][i[r]],c,l,a);this.checkRecordFilters(e,h)&&(o["".concat(l,".").concat(c)]=h)}return o}return s in t&&"object"!=typeof t[s]?void 0:s in t?(n="".concat(n).concat(n.length>0?".":"").concat(s),this.getValueAtAddress(t[s],c,n,a)):(n="".concat(n).concat(n.length>0?".":"").concat(s),t[s]={},this.getValueAtAddress(t[s],c,n,a))}}}},{"../source/Manyfest-ParseConditionals.js":11,"./Manyfest-CleanWrapCharacters.js":2,"./Manyfest-LogToConsole.js":4,"./Manyfest-ObjectAddress-Parser.js":8}],8:[function(t,e,s){e.exports={stringCountSegments:(t,e,s,r)=>{let n="string"==typeof t?t:"",a="string"==typeof e?e:".",i="object"==typeof s?pEnclosureStart:{"{":0,"[":1,"(":2},o="object"==typeof r?pEnclosureEnd:{"}":0,"]":1,")":2};if(t.length<1)return 0;let c=1,l=[];for(let t=0;t<n.length;t++)n[t]==a&&0==l.length?c++:n[t]in i?l.push(i[n[t]]):n[t]in o&&o[n[t]]==l[l.length-1]&&l.pop();return c},stringGetFirstSegment:(t,e,s,r)=>{let n="string"==typeof t?t:"",a="string"==typeof e?e:".",i="object"==typeof s?pEnclosureStart:{"{":0,"[":1,"(":2},o="object"==typeof r?pEnclosureEnd:{"}":0,"]":1,")":2};if(t.length<1)return 0;let c=[];for(let t=0;t<n.length;t++){if(n[t]==a&&0==c.length)return n.substring(0,t);n[t]in i?c.push(i[n[t]]):n[t]in o&&o[n[t]]==c[c.length-1]&&c.pop()}return n},stringGetSegments:(t,e,s,r)=>{let n="string"==typeof t?t:"",a="string"==typeof e?e:".",i="object"==typeof s?pEnclosureStart:{"{":0,"[":1,"(":2},o="object"==typeof r?pEnclosureEnd:{"}":0,"]":1,")":2},c=0,l=[];if(t.length<1)return l;let h=[];for(let t=0;t<n.length;t++)n[t]==a&&0==h.length?(l.push(n.substring(c,t)),c=t+1):n[t]in i?h.push(i[n[t]]):n[t]in o&&o[n[t]]==h[h.length-1]&&h.pop();return c<n.length&&l.push(n.substring(c)),l},stringCountEnclosures:(t,e,s)=>{let r="string"==typeof t?t:"",n="string"==typeof e?e:"(",a="string"==typeof s?s:")",i=0,o=0;for(let t=0;t<r.length;t++)r[t]==n?(0==o&&i++,o++):r[t]==a&&o--;return i},stringGetEnclosureValueByIndex:(t,e,s,r)=>{let n="string"==typeof t?t:"",a="number"==typeof e?e:0,i="string"==typeof s?s:"(",o="string"==typeof r?r:")",c=0,l=0,h=!1,f=0,u=0;for(let t=0;t<n.length;t++)n[t]==i?(l++,1==l&&(c++,a==c-1&&(h=!0,f=t))):n[t]==o&&(l--,0==l&&h&&u<=f&&(u=t,h=!1));return c<=a?"":u>0&&u>f?n.substring(f+1,u):n.substring(f+1)}}},{}],9:[function(t,e,s){let r=t("./Manyfest-LogToConsole.js"),n=t("./Manyfest-CleanWrapCharacters.js");e.exports=class{constructor(t,e){this.logInfo="function"==typeof t?t:r,this.logError="function"==typeof e?e:r,this.cleanWrapCharacters=n}setValueAtAddress(t,e,s){if("object"!=typeof t)return!1;if("string"!=typeof e)return!1;let r=e.indexOf(".");if(-1==r){let r=e.indexOf("["),n=e.indexOf("]");if(r>0&&n>r&&n-r>1){let a=e.substring(0,r).trim();if("object"!=typeof t[a])return!1;let i=e.substring(r+1,n).trim(),o=parseInt(i,10);return Array.isArray(t[a])!=isNaN(o)&&(isNaN(o)?(i=this.cleanWrapCharacters('"',i),i=this.cleanWrapCharacters("`",i),i=this.cleanWrapCharacters("'",i),t[a][i]=s,!0):(t[a][o]=s,!0))}return t[e]=s,!0}{let n=e.substring(0,r),a=e.substring(r+1),i=n.indexOf("["),o=n.indexOf("]");if(i>0&&o>i&&o-i>1){let e=n.substring(0,i).trim(),r=n.substring(i+1,o).trim(),c=parseInt(r,10);return Array.isArray(t[e])!=isNaN(c)&&(isNaN(c)?(r=this.cleanWrapCharacters('"',r),r=this.cleanWrapCharacters("`",r),r=this.cleanWrapCharacters("'",r),this.setValueAtAddress(t[e][r],a,s)):this.setValueAtAddress(t[e][c],a,s))}return n in t&&"object"!=typeof t[n]?("__ERROR"in t||(t.__ERROR={}),t.__ERROR[e]=s,!1):(n in t||(t[n]={}),this.setValueAtAddress(t[n],a,s))}}}},{"./Manyfest-CleanWrapCharacters.js":2,"./Manyfest-LogToConsole.js":4}],10:[function(t,e,s){let r=t("./Manyfest-LogToConsole.js");e.exports=class{constructor(t,e){this.logInfo="function"==typeof t?t:r,this.logError="function"==typeof e?e:r}generateAddressses(t,e,s){let r="string"==typeof e?e:"",n="object"==typeof s?s:{},a=typeof t,i={Address:r,Hash:r,Name:r,InSchema:!1};switch("object"==a&&null==t&&(a="null"),a){case"string":i.DataType="String",i.Default=t,n[r]=i;break;case"number":case"bigint":i.DataType="Number",i.Default=t,n[r]=i;break;case"undefined":case"null":i.DataType="Any",i.Default=t,n[r]=i;break;case"object":if(Array.isArray(t)){i.DataType="Array",""!=r&&(n[r]=i);for(let e=0;e<t.length;e++)this.generateAddressses(t[e],"".concat(r,"[").concat(e,"]"),n)}else{i.DataType="Object",""!=r&&(n[r]=i,r+=".");let e=Object.keys(t);for(let s=0;s<e.length;s++)this.generateAddressses(t[e[s]],"".concat(r).concat(e[s]),n)}}return n}}},{"./Manyfest-LogToConsole.js":4}],11:[function(t,e,s){const r="<<~?",n="?~>>",a=(t,e,s,r,n)=>{switch(r){case"TRUE":return!0===t.getValueAtAddress(e,s);case"FALSE":return!1===t.getValueAtAddress(e,s);case"LNGT":case"LENGTH_GREATER_THAN":switch(typeof t.getValueAtAddress(e,s)){case"string":case"object":return t.getValueAtAddress(e,s).length>n;default:return!1}break;case"LNLT":case"LENGTH_LESS_THAN":switch(typeof t.getValueAtAddress(e,s)){case"string":case"object":return t.getValueAtAddress(e,s).length<n;default:return!1}break;case"!=":return t.getValueAtAddress(e,s)!=n;case"<":return t.getValueAtAddress(e,s)<n;case">":return t.getValueAtAddress(e,s)>n;case"<=":return t.getValueAtAddress(e,s)<=n;case">=":return t.getValueAtAddress(e,s)>=n;case"===":return t.getValueAtAddress(e,s)===n;default:return t.getValueAtAddress(e,s)==n}};e.exports=(t,e,s)=>{let i=!0,o=e.indexOf(r);for(;-1!=o;){let c=e.indexOf(n,o+4);if(-1!=c){let n=e.substring(o+4,c).split(","),l=n[0],h="EXISTS";n.length>1&&(h=n[1]);let f=!1;n.length>2&&(f=n[2]),i=i&&a(t,s,l,h,f),o=e.indexOf(r,c+4)}else o=-1}return i}},{}],12:[function(t,e,s){let r=t("./Manyfest-LogToConsole.js");e.exports=class{constructor(t,e){this.logInfo="function"==typeof t?t:r,this.logError="function"==typeof e?e:r}resolveAddressMappings(t,e){if("object"!=typeof t)return this.logError("Attempted to resolve address mapping but the descriptor was not an object."),!1;if("object"!=typeof e)return!0;let s=Object.keys(t),r={};return s.forEach((e=>{"Hash"in t[e]&&(r[t[e].Hash]=e)})),Object.keys(e).forEach((s=>{let n=e[s],a=!1,i=!1;s in t?a=s:s in r&&(a=r[s]),a?(i=t[a],delete t[a]):i={Hash:s},t[n]=i})),!0}safeResolveAddressMappings(t,e){let s=JSON.parse(JSON.stringify(t));return this.resolveAddressMappings(s,e),s}mergeAddressMappings(t,e){if("object"!=typeof e||"object"!=typeof t)return this.logError("Attempted to merge two schema descriptors but both were not objects."),!1;let s=JSON.parse(JSON.stringify(e)),r=JSON.parse(JSON.stringify(t));return Object.keys(s).forEach((t=>{t in r||(r[t]=s[t])})),r}}},{"./Manyfest-LogToConsole.js":4}],13:[function(t,e,s){const r=t("fable-serviceproviderbase");let n=t("./Manyfest-LogToConsole.js"),a=t("./Manyfest-HashTranslation.js"),i=t("./Manyfest-ObjectAddress-CheckAddressExists.js"),o=t("./Manyfest-ObjectAddress-GetValue.js"),c=t("./Manyfest-ObjectAddress-SetValue.js"),l=t("./Manyfest-ObjectAddress-DeleteValue.js"),h=t("./Manyfest-ObjectAddressGeneration.js"),f=t("./Manyfest-SchemaManipulation.js");const u={Scope:"DEFAULT",Descriptors:{}};class d extends r{constructor(t,e,s){void 0===t?super({}):super(t,e,s),this.serviceType="Manifest",this.logInfo=n,this.logError=n,this.objectAddressCheckAddressExists=new i(this.logInfo,this.logError),this.objectAddressGetValue=new o(this.logInfo,this.logError),this.objectAddressSetValue=new c(this.logInfo,this.logError),this.objectAddressDeleteValue=new l(this.logInfo,this.logError),"defaultValues"in this.options||(this.options.defaultValues={String:"",Number:0,Float:0,Integer:0,PreciseNumber:"0.0",Boolean:!1,Binary:0,DateTime:0,Array:[],Object:{},Null:null}),"strict"in this.options||(this.options.strict=!1),this.scope=void 0,this.elementAddresses=void 0,this.elementHashes=void 0,this.elementDescriptors=void 0,this.reset(),"object"==typeof this.options&&this.loadManifest(this.options),this.schemaManipulations=new f(this.logInfo,this.logError),this.objectAddressGeneration=new h(this.logInfo,this.logError),this.hashTranslations=new a(this.logInfo,this.logError),this.numberRegex=/^[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?$/}reset(){this.scope="DEFAULT",this.elementAddresses=[],this.elementHashes={},this.elementDescriptors={}}clone(){let t=JSON.parse(JSON.stringify(this.options)),e=new d(this.getManifest(),this.logInfo,this.logError,t);return e.hashTranslations.addTranslation(this.hashTranslations.translationTable),e}deserialize(t){return this.loadManifest(JSON.parse(t))}loadManifest(t){"object"!=typeof t&&this.logError("(".concat(this.scope,") Error loading manifest; expecting an object but parameter was type ").concat(typeof t,"."));let e="object"==typeof t?t:{},s=Object.keys(u);for(let t=0;t<s.length;t++)s[t]in e||(e[s[t]]=JSON.parse(JSON.stringify(u[s[t]])));if("Scope"in e?"string"==typeof e.Scope?this.scope=e.Scope:this.logError("(".concat(this.scope,") Error loading scope from manifest; expecting a string but property was type ").concat(typeof e.Scope,"."),e):this.logError("(".concat(this.scope,') Error loading scope from manifest object. Property "Scope" does not exist in the root of the object.'),e),"Descriptors"in e)if("object"==typeof e.Descriptors){let t=Object.keys(e.Descriptors);for(let s=0;s<t.length;s++)this.addDescriptor(t[s],e.Descriptors[t[s]])}else this.logError("(".concat(this.scope,") Error loading description object from manifest object. Expecting an object in 'Manifest.Descriptors' but the property was type ").concat(typeof e.Descriptors,"."),e);else this.logError("(".concat(this.scope,') Error loading object description from manifest object. Property "Descriptors" does not exist in the root of the Manifest object.'),e);if("HashTranslations"in e&&"object"==typeof e.HashTranslations)for(let t=0;t<e.HashTranslations.length;t++);}serialize(){return JSON.stringify(this.getManifest())}getManifest(){return{Scope:this.scope,Descriptors:JSON.parse(JSON.stringify(this.elementDescriptors)),HashTranslations:JSON.parse(JSON.stringify(this.hashTranslations.translationTable))}}addDescriptor(t,e){return"object"==typeof e?("Address"in e||(e.Address=t),t in this.elementDescriptors||this.elementAddresses.push(t),this.elementDescriptors[t]=e,this.elementHashes[t]=t,"Hash"in e?this.elementHashes[e.Hash]=t:e.Hash=t,!0):(this.logError("(".concat(this.scope,") Error loading object descriptor for address '").concat(t,"' from manifest object. Expecting an object but property was type ").concat(typeof e,".")),!1)}getDescriptorByHash(t){return this.getDescriptor(this.resolveHashAddress(t))}getDescriptor(t){return this.elementDescriptors[t]}eachDescriptor(t){let e=Object.keys(this.elementDescriptors);for(let s=0;s<e.length;s++)t(this.elementDescriptors[e[s]])}checkAddressExistsByHash(t,e){return this.checkAddressExists(t,this.resolveHashAddress(e))}checkAddressExists(t,e){return this.objectAddressCheckAddressExists.checkAddressExists(t,e)}resolveHashAddress(t){let e,s=t in this.elementHashes,r=t in this.hashTranslations.translationTable;return e=s&&!r?this.elementHashes[t]:r&&this.hashTranslations.translate(t)in this.elementHashes?this.elementHashes[this.hashTranslations.translate(t)]:r?this.hashTranslations.translate(t):t,e}getValueByHash(t,e){let s=this.getValueAtAddress(t,this.resolveHashAddress(e));return void 0===s&&(s=this.getDefaultValue(this.getDescriptorByHash(e))),s}getValueAtAddress(t,e){let s=this.objectAddressGetValue.getValueAtAddress(t,e);return void 0===s&&(s=this.getDefaultValue(this.getDescriptor(e))),s}setValueByHash(t,e,s){return this.setValueAtAddress(t,this.resolveHashAddress(e),s)}setValueAtAddress(t,e,s){return this.objectAddressSetValue.setValueAtAddress(t,e,s)}deleteValueByHash(t,e,s){return this.deleteValueAtAddress(t,this.resolveHashAddress(e),s)}deleteValueAtAddress(t,e,s){return this.objectAddressDeleteValue.deleteValueAtAddress(t,e,s)}validate(t){let e={Error:null,Errors:[],MissingElements:[]};"object"!=typeof t&&(e.Error=!0,e.Errors.push("Expected passed in object to be type object but was passed in ".concat(typeof t)));let s=(t,s)=>{e.Error=!0,e.Errors.push('Element at address "'.concat(t,'" ').concat(s,"."))};for(let r=0;r<this.elementAddresses.length;r++){let n=this.getDescriptor(this.elementAddresses[r]),a=this.checkAddressExists(t,n.Address),i=this.getValueAtAddress(t,n.Address);if(void 0!==i&&a||(e.MissingElements.push(n.Address),(n.Required||this.options.strict)&&s(n.Address,"is flagged REQUIRED but is not set in the object")),n.DataType){let t=typeof i;switch(n.DataType.toString().trim().toLowerCase()){case"string":"string"!=t&&s(n.Address,"has a DataType ".concat(n.DataType," but is of the type ").concat(t));break;case"precisenumber":"string"!=t?s(n.Address,"has a DataType ".concat(n.DataType," but is of the type ").concat(t)):this.numberRegex.test(i)||s(n.Address,"has a DataType ".concat(n.DataType," but is not a valid number"));break;case"number":"number"!=t&&s(n.Address,"has a DataType ".concat(n.DataType," but is of the type ").concat(t));break;case"integer":if("number"!=t)s(n.Address,"has a DataType ".concat(n.DataType," but is of the type ").concat(t));else{i.toString().indexOf(".")>-1&&s(n.Address,"has a DataType ".concat(n.DataType," but has a decimal point in the number."))}break;case"float":"number"!=t&&s(n.Address,"has a DataType ".concat(n.DataType," but is of the type ").concat(t));break;case"datetime":"Invalid Date"==new Date(i).toString()&&s(n.Address,"has a DataType ".concat(n.DataType," but is not parsable as a Date by Javascript"));default:"string"!=t&&s(n.Address,"has a DataType ".concat(n.DataType," (which auto-converted to String because it was unrecognized) but is of the type ").concat(t))}}}return e}getDefaultValue(t){if("object"==typeof t){if("Default"in t)return t.Default;{let e="DataType"in t?t.DataType:"String";return e in this.options.defaultValues?this.options.defaultValues[e]:null}}}populateDefaults(t,e){return this.populateObject(t,e,(t=>"Default"in t))}populateObject(t,e,s){let r="object"==typeof t?t:{},n=void 0!==e&&e,a="function"==typeof s?s:t=>!0;return this.elementAddresses.forEach((t=>{let e=this.getDescriptor(t);a(e)&&(!n&&this.checkAddressExists(r,t)||this.setValueAtAddress(r,t,this.getDefaultValue(e)))})),r}}e.exports=d},{"./Manyfest-HashTranslation.js":3,"./Manyfest-LogToConsole.js":4,"./Manyfest-ObjectAddress-CheckAddressExists.js":5,"./Manyfest-ObjectAddress-DeleteValue.js":6,"./Manyfest-ObjectAddress-GetValue.js":7,"./Manyfest-ObjectAddress-SetValue.js":9,"./Manyfest-ObjectAddressGeneration.js":10,"./Manyfest-SchemaManipulation.js":12,"fable-serviceproviderbase":1}]},{},[13])(13)}));
|
|
2
2
|
//# sourceMappingURL=manyfest.min.js.map
|