npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

sails-affiliate-tracker

v0.0.1

Published

A simple http middleware package to track your websites affiliates visitors in a sails application

Downloads

8

Readme

sails-affiliate-tracker

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 %>" />
<% } %>

Installation

Via git:

$ git clone git://github.com/mrpetef10/sails-affiliate-tracker.git ~/.node_libraries/sails-affiliate-tracker

Via npm:

$ npm install sails-affiliate-tracker

Setup

There are a couple of things you must do to set this up first.

  1. Require this in your config/http.js config file and add an entry 'affiliateTracker' after cookieParser:

    middleware: {

     affiliateTracker: require('sails-affiliate-tracker'),

    /***************************************************************************

    •                                                                      *
    • The order in which middleware should be run for HTTP request. (the Sails *
    • router is invoked by the "router" middleware below.) *
    •                                                                      *

    ***************************************************************************/

    order: [ ....., ....., 'cookieParser', 'affiliateTracker', ....., ....., ],

  2. 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.