@adobe-mcid/visitor-js-server
Advanced tools
Comparing version
@@ -32,2 +32,2 @@ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _slicedToArray=function(){function sliceIterator(arr,i){var _arr=[],_n=!0,_d=!1,_e=void 0;try{for(var _s,_i=arr[Symbol.iterator]();!(_n=(_s=_i.next()).done)&&(_arr.push(_s.value),!(i&&_arr.length===i));_n=!0);}catch(err){_d=!0,_e=err}finally{try{!_n&&_i["return"]&&_i["return"]()}finally{if(_d)throw _e}}return _arr}return function(arr,i){if(Array.isArray(arr))return arr;if(Symbol.iterator in Object(arr))return sliceIterator(arr,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source)Object.prototype.hasOwnProperty.call(source,key)&&(target[key]=source[key])}return target};/************************************************************************* | ||
*/// Parse into: { settingsDigest: { value: 3213, expire: 0, shouldExpireOnSession: false, hasExpired: false... }} | ||
function isSettingsDigest(a){return a.match(/^[\-0-9]+$/)}function parseSettingsDigest(a){var b=1>=arguments.length||void 0===arguments[1]?{}:arguments[1];if(isSettingsDigest(a[0])){var c={value:a[0],hasExpired:!1,shouldExpireOnSession:!1,expire:0};b.settingsDigest=c,a.shift(),1==a.length%2&&a.pop()}return b}function makeAmcvEntry(a){var b=new Date;return _extends({},a,{hasExpired:!!(0<a.expire&&b.getTime()>=1000*a.expire)})}var amcvCookie={pickValues:function pickValues(){var a=0>=arguments.length||void 0===arguments[0]?"":arguments[0],b=1>=arguments.length||void 0===arguments[1]?[]:arguments[1],c=amcvCookie.parse(a);return b.reduce(function(d,e){var f=c[e];return f&&(d[e]=f.value),d},{})},parse:function parse(a){if(!a||"T"===a)return{};var b=decodeURIComponent(a).split("|"),c=parseSettingsDigest(b);for(var d=0,e=b.length;d<e;d+=2){var _b$d$split=b[d].split("-"),_b$d$split2=_slicedToArray(_b$d$split,2),f=_b$d$split2[0],_b$d$split2$=_b$d$split2[1],g=_b$d$split2$===void 0?0:_b$d$split2$,h=b[d+1],j=!!(g&&g.includes("s")),k=g?parseInt(g,10):g;c[f]=makeAmcvEntry({value:h,expire:k,shouldExpireOnSession:j})}return c}};exports.default=amcvCookie;module.exports=exports["default"]; | ||
function isSettingsDigest(a){return a.match(/^[\-0-9]+$/)}function parseSettingsDigest(a){var b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if(isSettingsDigest(a[0])){var c={value:a[0],hasExpired:!1,shouldExpireOnSession:!1,expire:0};b.settingsDigest=c,a.shift(),1==a.length%2&&a.pop()}return b}function makeAmcvEntry(a){var b=new Date;return _extends({},a,{hasExpired:!!(0<a.expire&&b.getTime()>=1000*a.expire)})}var amcvCookie={pickValues:function pickValues(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"",b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[],c=amcvCookie.parse(a);return b.reduce(function(d,e){var f=c[e];return f&&(d[e]=f.value),d},{})},parse:function parse(a){if(!a||"T"===a)return{};var b=decodeURIComponent(a).split("|"),c=parseSettingsDigest(b);for(var d=0,e=b.length;d<e;d+=2){var _b$d$split=b[d].split("-"),_b$d$split2=_slicedToArray(_b$d$split,2),f=_b$d$split2[0],_b$d$split2$=_b$d$split2[1],g=_b$d$split2$===void 0?0:_b$d$split2$,h=b[d+1],j=!!(g&&g.includes("s")),k=g?parseInt(g,10):g;c[f]=makeAmcvEntry({value:h,expire:k,shouldExpireOnSession:j})}return c}};exports.default=amcvCookie;module.exports=exports["default"]; |
@@ -18,4 +18,4 @@ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _utils=require("./utils");function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}function _toConsumableArray(arr){if(Array.isArray(arr)){for(var i=0,arr2=Array(arr.length);i<arr.length;i++)arr2[i]=arr[i];return arr2}return Array.from(arr)}/************************************************************************* | ||
**************************************************************************/// Target adapter will transform an object into the format of `targetSchema`. | ||
function adapt(a){var b=renameKeys(a,payloadToTargetKeyMap),c=createTargetSchema();return populateCustomerIDs(c,b),populate(c,b)}exports.default={adapt:adapt};// Helpers and Consts: | ||
var ID_KEY_BASE="vst",ID_KEY_SEPARATOR=".",payloadToTargetKeyMap={MCMID:"marketingCloudVisitorId",MCAAMB:"mboxAAMB",MCAAMLH:"mboxMCGLH",sdid:"mboxMCSDID"};function createTargetSchema(){return{marketingCloudVisitorId:void 0,mboxParameters:{mboxAAMB:void 0,mboxMCGLH:void 0,mboxMCSDID:void 0}}}function renameKeys(a,b){return Object.assign.apply(Object,[{}].concat(_toConsumableArray(Object.keys(a).map(function(c){var d=b[c]?b[c]:c;return _defineProperty({},d,a[c])}))))}function populateCustomerIDs(a,_ref2){var _ref2$customerIDs=_ref2.customerIDs,b=_ref2$customerIDs===void 0?{}:_ref2$customerIDs;(0,_utils.forEachKey)(b,function(c){var d=""+ID_KEY_BASE+ID_KEY_SEPARATOR+c,e=b[c];// If value is an object, populate this id in schema per this object's keys. | ||
function adapt(a){var b=renameKeys(a,payloadToTargetKeyMap),c=createTargetSchema();return populateCustomerIDs(c,b),populate(c,b)}function adaptToBatch(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],b=arguments[1],c=adapt(b);return createTargetBatchSchema(c,a)}exports.default={adapt:adapt,adaptToBatch:adaptToBatch};// Helpers and Consts: | ||
var ID_KEY_BASE="vst",ID_KEY_SEPARATOR=".",payloadToTargetKeyMap={MCMID:"marketingCloudVisitorId",MCAAMB:"mboxAAMB",MCAAMLH:"mboxMCGLH",sdid:"mboxMCSDID"};function createTargetSchema(){return{marketingCloudVisitorId:void 0,mboxParameters:{mboxAAMB:void 0,mboxMCGLH:void 0,mboxMCSDID:void 0}}}function createTargetBatchSchema(_ref,c){var a=_ref.marketingCloudVisitorId,b=_ref.mboxParameters;"string"==typeof c&&(c=[c]);var d=a?{marketingCloudVisitorId:a,mboxRequests:[]}:{mboxRequests:[]};return c.reduce(function(e,f){return d.mboxRequests.push({name:f,mboxParameters:b}),d},d)}function renameKeys(a,b){return Object.assign.apply(Object,[{}].concat(_toConsumableArray(Object.keys(a).map(function(c){var d=b[c]?b[c]:c;return _defineProperty({},d,a[c])}))))}function populateCustomerIDs(a,_ref3){var _ref3$customerIDs=_ref3.customerIDs,b=void 0===_ref3$customerIDs?{}:_ref3$customerIDs;(0,_utils.forEachKey)(b,function(c){var d=""+ID_KEY_BASE+ID_KEY_SEPARATOR+c,e=b[c];// If value is an object, populate this id in schema per this object's keys. | ||
(0,_utils.isObject)(e)?(0,_utils.forEachKey)(e,function(f){var g=""+d+ID_KEY_SEPARATOR+f;a.mboxParameters[g]=e[f]}):a.mboxParameters[d]=e})}function populate(a,b){return Object.keys(a).forEach(function(c){(0,_utils.isObject)(a[c])?populate(a[c],b):b.hasOwnProperty(c)&&(a[c]=b[c])}),(0,_utils.filterBadProps)(a)}module.exports=exports["default"]; |
@@ -17,2 +17,2 @@ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.default=createVisitorPayload;/************************************************************************* | ||
* from Adobe Systems Incorporated. | ||
**************************************************************************/function createVisitorPayload(_ref,d){var a=_ref.sdid,_ref$amcvValues=_ref.amcvValues,c=_ref$amcvValues===void 0?{}:_ref$amcvValues,b=_ref.customerIDs,e=Object.assign(Object.create(null),{sdid:a},c,{customerIDs:b});return d.adapt(e)}module.exports=exports["default"]; | ||
**************************************************************************/function createVisitorPayload(_ref,d){var a=_ref.sdid,_ref$amcvValues=_ref.amcvValues,c=void 0===_ref$amcvValues?{}:_ref$amcvValues,b=_ref.customerIDs,e=Object.assign(Object.create(null),{sdid:a},c,{customerIDs:b});return d(e)}module.exports=exports["default"]; |
@@ -17,2 +17,2 @@ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _visitorJsShared=require("@adobe-mcid/visitor-js-shared"),_amcvCookie=require("./amcv-cookie"),_targetAdapter=require("./target-adapter"),_targetAdapter2=_interopRequireDefault(_targetAdapter),_visitorPayload=require("./visitor-payload"),_visitorPayload2=_interopRequireDefault(_visitorPayload),_utils=require("./utils");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}/************************************************************************* | ||
* from Adobe Systems Incorporated. | ||
**************************************************************************/var CONSUMER_ID_BASE="payload:",AMCV_PREFIX="AMCV_";function Visitor(){var a=0>=arguments.length||void 0===arguments[0]?(0,_utils.throwError)("Visitor requires an Org ID!"):arguments[0],b={},c=(0,_utils.normalizeOrgId)(a),d=function d(g){return b=Object.assign({},b,g)},e=(0,_visitorJsShared.supplementalDataIDFactory)(),f=function f(){var g=0>=arguments.length||void 0===arguments[0]?(0,_utils.throwError)("sdidConsumerID is required"):arguments[0],h=e.getID(""+CONSUMER_ID_BASE+g),i=e.getState();return d({sdid:i}),h};this.generatePayload=function(_ref){var g=_ref.sdidConsumerID,h=_ref.amcvCookie,i=f(g),j=(0,_amcvCookie.pickValues)(h,["MCMID","MCAAMB","MCAAMLH"]),_b=b,k=_b.customerIDs;return(0,_visitorPayload2.default)({sdid:i,amcvValues:j,customerIDs:k},_targetAdapter2.default)},this.setCustomerIDs=function(){var g=0>=arguments.length||void 0===arguments[0]?{}:arguments[0];d({customerIDs:g})},this.getState=function(){return _defineProperty({},c,b)},this.getCookieName=function(){return AMCV_PREFIX+c}}Visitor.AuthState=_visitorJsShared.AuthState;exports.default=Visitor;module.exports=exports["default"]; | ||
**************************************************************************/var CONSUMER_ID_BASE="payload:",AMCV_PREFIX="AMCV_";function Visitor(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:(0,_utils.throwError)("Visitor requires an Org ID!"),b={},c=(0,_utils.normalizeOrgId)(a),d=function d(h){return b=Object.assign({},b,h)},e=(0,_visitorJsShared.supplementalDataIDFactory)(),f=function f(){var h=0<arguments.length&&void 0!==arguments[0]?arguments[0]:(0,_utils.throwError)("sdidConsumerID is required"),i=e.getID(""+CONSUMER_ID_BASE+h),j=e.getState();return d({sdid:j}),i},g=function g(h,i){var j=f(h),k=(0,_amcvCookie.pickValues)(i,["MCMID","MCAAMB","MCAAMLH"]),_b=b,l=_b.customerIDs;return{sdid:j,amcvValues:k,customerIDs:l}};this.generatePayload=function(_ref){var h=_ref.sdidConsumerID,i=_ref.amcvCookie,j=g(h,i);return(0,_visitorPayload2.default)(j,_targetAdapter2.default.adapt)},this.generateBatchPayload=function(_ref2){var h=_ref2.sdidConsumerID,i=_ref2.amcvCookie,_ref2$mboxNames=_ref2.mboxNames,j=void 0===_ref2$mboxNames?(0,_utils.throwError)("mboxNames is required"):_ref2$mboxNames,k=g(h,i),l=_targetAdapter2.default.adaptToBatch.bind(_targetAdapter2.default,j);return(0,_visitorPayload2.default)(k,l)},this.setCustomerIDs=function(){var h=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};d({customerIDs:h})},this.getState=function(){return _defineProperty({},c,b)},this.getCookieName=function(){return AMCV_PREFIX+c}}Visitor.AuthState=_visitorJsShared.AuthState;exports.default=Visitor;module.exports=exports["default"]; |
{ | ||
"name": "@adobe-mcid/visitor-js-server", | ||
"version": "0.0.9", | ||
"version": "1.0.0", | ||
"description": "Server compatible Visitor ID service", | ||
@@ -29,2 +29,3 @@ "main": "lib/Visitor.js", | ||
"babel-plugin-add-module-exports": "^0.2.1", | ||
"babel-plugin-minify-mangle-names": "0.0.3", | ||
"babel-plugin-transform-object-rest-spread": "^6.8.0", | ||
@@ -31,0 +32,0 @@ "babel-preset-babili": "0.0.3", |
@@ -8,3 +8,4 @@ # Visitor JS - Server Side | ||
- generatePayload(sdidConsumerID: string, amcvCookie: string) : VisitorPayload | ||
- generatePayload({ sdidConsumerID: string, amcvCookie: string }) : VisitorPayload | ||
- generateBatchPayload({ sdidConsumerID: string, amcvCookie: string, mboxNames: string OR array }) : VisitorBatchPayload | ||
- getState() : State { OrgID: { sdid, customerIDs } | ||
@@ -69,3 +70,36 @@ - Visitor#AuthState : Static Enum | ||
## `generateBatchPayload` | ||
Similar to `generatePayload`, this method should be used when requesting batch mboxes from Target in a single call. [View Target docs](https://docs.adobe.com/dev/products/target/reference/delivery.html) (Scroll to Multiple mbox requests in the same call) | ||
Parameter is an object with the following props: | ||
- `sdidConsumerID`: As mentioned above, an `sdidConsumerID` must be provided. | ||
- `amcvCookie`: If an AMCV cookie exists in the browser request, you will need to provide it as well. Use the `visitor#getCookieName` helper to retrieve the cookie name related to your OrgID. | ||
- `mboxNames` (Required): Names of the mboxes you are requesting. If you are requesting only one, the value can be a string. Otherwise, it's an array or mbox names. | ||
```javascript | ||
// 1. Retrieve the AMCV cookie from the request. | ||
var cookies = cookie.parse(req.headers.cookie || ""); | ||
var cookieName = visitor.getCookieName(); | ||
var amcvCookie = cookies[cookieName]; | ||
// 2. Generate Visitor Payload by passing sdidConsumerID (mbox name/id) and AMCV Cookie if found in Req. | ||
var visitorPayload = visitor.generatePayload({ | ||
sdidConsumerID: mboxName, | ||
amcvCookie: amcvCookie, | ||
mboxNames: ["mboxOne", "mboxTwo"] | ||
}); | ||
// 3. Merge the `visitorPayload` with you target specific into and make the Target call. | ||
var targetPayload = { | ||
thirdPartyId: "2047337005", | ||
tntId: "123455", | ||
imsOrgId: "xxx@AdobeOrg", | ||
apiClientId: "clientid" | ||
}; | ||
var fullPayload = Object.assign({}, visitorPayload, targetPayload); | ||
... | ||
``` | ||
## `getState` | ||
@@ -72,0 +106,0 @@ |
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 2 instances in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
36319
7.71%104
1.96%158
27.42%13
8.33%