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

@adobe/reactor-sandbox

v13.1.0

Published

Tasks for creating a sandbox for manually testing Tags extensions.

Downloads

2,006

Readme

Adobe Experience Platform Tags Extension Sandbox

npm (scoped)

Adobe Experience Platform Tags is a next-generation tag management solution enabling simplified deployment of marketing technologies. For more information regarding Tags, please visit our product website.

This project provides a sandbox in which you can manually test your Tags extension. You can test both (1) your views that will eventually appear in the Tags UI and (2) your library logic that will eventually run on the user's website.

For more information about developing an extension for Tags, please visit our extension development guide.

Usage

Running the Sandbox

Before running the sandbox, you must first have Node.js installed on your computer.

Once Node.js is installed, run the sandbox by executing the following command from the command line within your project's directory:

npx @adobe/reactor-sandbox

A server will be started at http://localhost:3000 (HTTP) and https://localhost:4000 (HTTPS). If you navigate to one of addresses in your browser (you may have to accept a security certificate if you use the HTTPS server), you will see the View Sandbox which allows you to test your views. You'll need to have previously created a view in your extension for it to show up in the sandbox. You can switch between views you would like to test using the controls toward the top of the page.

You may also click on the "Go to library sandbox" button at the top-right of the page to navigate to the library sandbox where you can test your library logic. See Configuring the Sandbox for how to configure the library sandbox for proper testing.

Once this is in place, you may then run the sandbox by executing the command npm run sandbox from the command line.

Configuring the Sandbox

Web Extensions can also test the library logic inside the sandbox. To configure the Library Sandbox portion, execute the following command from the command line within your project's directory:

npx @adobe/reactor-sandbox init

This will generate a directory within your project named .sandbox that contains two files you may edit to configure the sandbox:

  • container.js When Tags publishes a library, it consists of two parts: (1) a data structure that stores information about saved rules, data elements, and extension configuration and (2) an engine to operate on such a data structure. container.js is the data structure (not the engine) that you may modify to simulate saved rules, data elements, and extension configuration. This template will be used to produce a complete container.js (JavaScript from your extension will be added) which will be used in tandem with the Turbine engine inside the sandbox. We have tried to provide inline comments on how to modify container.js, but if you need further help, please let the Tags team know and we can help you out.

  • libSandbox.html includes some simple HTML along with a single script tag called launch-EN00000000000000000000000000000000.js, which simulates a production Tags library. The simulated library contains the combined contents of your container.js file and the Turbine engine.

    libSandbox.html can be modified to manually test whatever you would like. For example, if you'd like to test that your brand new "focus" event type is working as desired, you can add a text input to the libSandbox.html to ensure your dummy rule fires when a form element receives focus.

Mobile extensions don't have a Library Sandbox portion. Running npx @adobe/reactor-sandbox init from inside a mobile extension, will show an error.

You are welcome to commit .sandbox to your version control repository.

Installing as a Dependency

If you find yourself using the the sandbox tool frequently, you may wish to install it as a dependency in your project. This will allow the sandbox tool to run more quickly and provide more control over when you upgrade to newer versions of the sandbox.

If you do not yet have a package.json in your project's directory, you will need to generate one by running the following command from the command line within your project's directory:

npm init

You will need to provide the information requested on the screen. The values you provide are not particularly important and will not affect how your extension operates. After this process is complete, you should have a file called package.json inside your directory.

Once you have a package.json, you can install the sandbox as a dependency by running the following command from the command line within your project's directory:

npm i -D @adobe/reactor-sandbox

At this point, you can continue running the sandbox as outlined above.

Advanced Integration with Node Scripts

For advanced users who need greater control of the sandbox from node-based build tools, you also have the option of importing the sandbox tool into your scripts and controlling it programmatically.

After installing the sandbox as a dependency, you may use it from your node scripts as follows:

const sandbox = require('@adobe/reactor-sandbox');
sandbox.run();

The sandbox module provides the following methods:

run - Runs the sandbox. A promise will be returned that will be resolved once the server is ready.

init - Initializes sandbox configuration files. A promise will be returned that will be resolved once the files have been generated.

Contributing

Contributions are welcomed! Read the Contributing Guide for more information.

To get started:

  1. Install node.js.
  2. Clone the repository.
  3. After navigating into the project directory, install project dependencies by running npm install.

To manually test your changes, first run the following command from the sandbox tool directory:

npm link

Then, in a directory containing an extension (any extension you would like to use for testing), run the following command:

npx @adobe/reactor-sandbox

Npx will execute the sandbox tool using your locally linked code rather than the code published on the public npm repository.

Scripts

To ensure your code meets our linting standards, run the following command:

npm run lint

Licensing

This project is licensed under the Apache V2 License. See LICENSE for more information.