
Product
Announcing Bun and vlt Support in Socket
Bringing supply chain security to the next generation of JavaScript package managers
sails-affiliate-tracker
Advanced tools
A simple http middleware package to track your websites affiliates visitors in a sails application
sails-affiliate-tracker is middleware that can be used to track your application affiliate's by checking if an affiliate code is present in the URL.
It will assign a cookie '{referral:1234}' to the request, if one does not already exist, based on a user ID found from the username in the URL after a Users.find({username:username}) query.
This is quite a rigid package and will only work if you want your affiliate URL structures in the format of: http://mydomain.com/{unique-affiliate-username} or http://mydomain.com/page1/page2/etc/{unique-affiliate-username}. It will not work for query strings, although it could be modified quite easily to do so. I just do not have the need to do so.
However, it does have some nifty features for SEO, in that it will NOT perform a redirect to serve the original page. Instead it will modify the req.url to remove the affiliates username and pass that through behind the scenes - meaning your normal routes apply and controller logic for that page is executed.
One other SEO thing it will do is provide your views with a parameter for canonical links, should it be required. You use it like this in your view files:
<% if(typeof req.affiliateTracker !== 'undefined' && typeof req.affiliateTracker.canon !== 'undefined'){ %>
<link rel="canonical" href="<%= sails.getBaseurl() + req.affiliateTracker.canon %>" />
<% } %>
Via git:
$ git clone git://github.com/mrpetef10/sails-affiliate-tracker.git ~/.node_libraries/sails-affiliate-tracker
Via npm:
$ npm install sails-affiliate-tracker
There are a couple of things you must do to set this up first.
Require this in your config/http.js config file and add an entry 'affiliateTracker' after cookieParser:
middleware: {
affiliateTracker: require('sails-affiliate-tracker'),
/***************************************************************************
*
*
***************************************************************************/
order: [ ....., ....., 'cookieParser', 'affiliateTracker', ....., ....., ],
Since I am still new to working with node.js/sails.js I am unsure how to actually pass custom config vars to this middleware (I would welcome anyone to create a pull request with an update to add this in!). Due to that you need to go into the node_modules/sails-affiliate-tracker/index.js file, go to line 42 and change the regex to your specific affiliate URL format. I set mine to use:
// Will match /page1/user-mrpetef10 // or /page1/user-anotherusername var regex = /^user-[\w]{5,22}$/i;
I set it in this way so that it is easily extractable from URLs and I could still if I want to in future link to my users profile pages without concern of this breaking it.
Not the best way to creating this I know, however it is an initial version that took around 15 mins to put together.
FAQs
A simple http middleware package to track your websites affiliates visitors in a sails application
We found that sails-affiliate-tracker demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Bringing supply chain security to the next generation of JavaScript package managers

Product
A safer, faster way to eliminate vulnerabilities without updating dependencies

Product
Reachability analysis for Ruby is now in beta, helping teams identify which vulnerabilities are truly exploitable in their applications.