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

ddl-tools

v1.0.1

Published

Digital data layer helper functions supporting data layer schema validation for highly-decoupled analytics reporting

Downloads

17

Readme

ddl-tools

A digital data layer helper utility for highly-decoupled analytics reporting. This utility includes a limited number of general-use functions and supports external data layer schema validation (see ddl-validator). It can also be extended to provide additional functionality by passing specialized plugins to the use function.

Installation

Via yarn:

yarn add 'ddl-tools'

Via npm

npm install --save 'ddl-tools'

Usage

Instantiation

To use, you will need to import the DDLTools class, which is the default export of the ddl-tools package. You will also need a DDL validator, which you can either custom-build or just use the ddl-validator package. You will also require a DDL schema, which is typically a custom-built JSON Schema.

Next you will want to create an instance of the DDL validator, passing it your schema. Finally, you will create a DDLTools object, passing a reference to the digital data object you wish to use (such as window.digitalData) as well as the DDL validator instance.

For example:

import DDLTools from 'ddl-tools';
import DDLValidator from 'ddl-validator';
import schema from './path/to/mySchema';

const ddlValidator = new DDLValidator(schema);
const ddlTools = new DDLTools(window.digitalData, ddlValidator);

Configuration

You will also probably want to configure your DDLTools instance. This can be done by either passing a plain configuration object as a third parameter to the constructor, or by calling configure() method and passing the plain configuration object at that time.

const ddlConfig = {
  reset: {
    exclude: ['user'],
  },
  emitEvents: true,
};
const ddlTools = new DDLTools(window.digitalData, ddlValidator, ddlConfig);
ddlTools.configure(ddlConfig);

Plugins

One major benefit of ddl-tools is the use of the convenience methods loaded via plugins. These are loaded via the use method.

import pageDeepPlugin from 'ddl-tools-plugin-page-deep';
ddlTools.use(pageDeepPlugin);

Operations

Once instantiated, you may perform a myriad of operations to manipulate the digital data object. For example, to process a new page after a hash change in a single page application, you might reset the digital data layer and set the page name.

ddlTools
  .reset()
  .set('page.pageInfo.pageName', 'cart:review');

Or, you might prefer to do the same with the ddl-tools-plugin-page-deep plugin:

ddlTools
  .reset()
  .setPageName('cart:review');

You can also use ddl-tools to retrieve the values (although it's basically just a thin wrapper around Lodash's get method).

ddlTools.get('page.pageInfo.pageName');

See the Technical Documentation for more details about what is possible.

Technical Documentation

Local Installation

These steps are not necessary (nor useful) for normal use. These steps are only necessary to view the source or run tests.

To install locally, clone this repository, install dependencies, and build it.

git clone https://github.com/dash-/mono-ddl-tools.git
cd mono-ddl-tools/packages/ddl-tools
yarn install
npm run build

Tests

To run the unit tests, you must have this package installed locally.

Once you have this package installed locally, from the package's base directory, run npm run test.

ddl-tools $ npm run test

> [email protected] pretest mono-ddl-tools/packages/ddl-tools
> npm run -s lint

Lint finished...


> [email protected] test mono-ddl-tools/packages/ddl-tools
> jasmine test/specs/**/*Spec.js

Started
.................


17 specs, 0 failures
Finished in 0.024 seconds

Contribute

The easiest way to contribute is to submit issues on GitHub. We welcome feedback and deeply appreciate your contribution of an issue for:

  • Improvement ideas
  • Feature requests
  • Bugs

Of course, code contributions are welcome as well!

To contribute code to this project, first fork the monorepo in GitHub, create a feature or bug branch, and commit code to the branch. You can then create a PR against the main repository. More information can be found on this topic in Rob Allen's guide: