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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@ventum-digital/iiq-plugin-project-generator

v1.2.0

Published

A npm tool to set-up the project structure for developing an IIQ Plugin.

Downloads

26

Readme

npm (scoped) NPM npm

IIQ Plugin Project Generator

The IIQ Plugin Project Generator is an NPM tool designed to streamline the setup of project structures for developing IdentityIQ (IIQ) plugins. It automates the creation of plugin projects and modules with customizable options and templates.

Features

  • Generate Plugins: Quickly scaffold new plugin projects.
  • Generate Plugin Modules: Create reusable npm packages tailored for IIQ plugins.
  • Bundled-in Plugin Examples: Includes pre-defined templates, that can build and upload the plugin immediately project generation. The templates are:
    • DOM Customization: Demonstrates how to customize the IdentityIQ UI by adding a custom message to the 'Identity View' page.
    • Widget: A template that illustrates how to create a custom homepage widget in IdentityIQ.
    • Custom Page: Shows how to build custom pages in IdentityIQ, featuring a snake game powered by the p5.js library. (Why a game? Because plugins can be whatever you want!)
  • NPM, TypeScript and SCSS Support: The generated projects include NPM, TypeScript and SCSS support for frontend development.
  • Customizable Options: Easily specify details such as version, package name, and plugin description during project generation.
  • Modularized Project Structure: The generated projects are divided into four IntelliJ modules for organized development:
    • Backend: Contains the Java code for the plugin.
    • Frontend: Contains the TypeScript, SCSS and HTML code for UI development.
    • Latex: Contains the LaTeX files for documentation.
    • Resources: Contains the plugins manifest and other IIQ XML resources (e.g. Capabilities).
  • IntelliJ IDEA Support: The generated project is designed for IntelliJ IDEA with predefined UI scopes for each module, making it easy to navigate the project.
  • Gradle Support: Includes Gradle build scripts for easy project management and building.
  • Automatic Upload: Automatically upload the plugin to your IdentityIQ instance directly from the command line or with the IntelliJ "Run" function.
  • Pre-defined Gitlab CI/CD Pipeline: The project includes a pre-defined Gitlab CI/CD pipeline for building and publishing.

Prerequisites

  • Node.js: Ensure Node.js is installed.
    • Tested with node v23.7.0. It is confirmed, that the node v20.x will not work.
  • NPM: Comes with Node.js.
  • IntelliJ IDEA: Required to open the generated project automatically.

TL;DR

  1. Install the package globally:
    npm install -g @ventum-digital/iiq-plugin-project-generator
  2. Generate a plugin project:
     generate-plugin -n <pluginName> -l <pluginDisplayName> -i <iiqVersion> -m <minSystemVersion> -p <packageName> [-d <pluginDescription>] [-x <maxSystemVersion>]
  3. Read the First time opening the plugin project section to set up the project in IntelliJ IDEA.

Installation

To install the package globally from npm, run the following command:

npm install -g @ventum-digital/iiq-plugin-project-generator

Commands

Generate a Plugin

To scaffold a new plugin project, run:

generate-plugin -n <pluginName> -l <pluginDisplayName> -i <iiqVersion> -m <minSystemVersion> -p <packageName> [-d <pluginDescription>] [-x <maxSystemVersion>]

Example:

generate-plugin --packageName custom-page-test --version 0.1.0 --iiqVersion 8.3 --pluginName CustomPageTest --pluginDisplayName "Custom Page Test" --minSystemVersion 8.0

Generate a Plugin Module

To create a new npm package to use with plugins, run:

generate-plugin-module -p <packageName> -s <npmScope> -v <version> [-d <packageDescription>] [-a <author>]

Example:

generate-plugin-module -p utility-functions -s ventum -v 1.0.0 -d "A sample module." -a "John Doe"

Command Line Options

Plugin Generation

| Option | Alias | Description | |-----------------------|-------|-------------------------------------------------| | --version | -v | Specify the plugin version. | | --iiqVersion | -i | Specify the target IIQ version. | | --pluginName | -n | Name of the plugin (lowercase, no spaces). | | --pluginDisplayName | -l | Display name for the plugin. | | --minSystemVersion | -m | Minimum system version required. | | --packageName | -p | Package name for the plugin (folder name). | | --pluginDescription | -d | Description of the plugin (optional). | | --maxSystemVersion | -x | Maximum supported system version (optional). | | --template | -t | Plugin template to use (optional). | | --author | -a | Author of the plugin (optional, used in Latex). | | --companyName | -c | Company name (optional, used in Latex). | | --supportMail | -m | Support email (optional, used in Latex). | | --javaVersion | -j | Java version (optional, defaults to 11). |

Plugin Module Generation

| Option | Alias | Description | |------------------------|-------|---------------------------------------| | --npmScope | -s | Scope for the NPM package. | | --packageName | -p | Package name for the module. | | --version | -v | Module version. | | --packageDescription | -d | Description of the module (optional). | | --author | -a | Author of the module (optional). |


First time opening the plugin project

JDK

When you first open the generated project in IntelliJ IDEA, you may need to configure the project SDK. Follow these steps:

  1. Open the project in IntelliJ IDEA.
  2. Go to File > Project Structure.
  3. Select Project from the left sidebar.
  4. Set the Project SDK to the appropriate version of Java (e.g., Java 11). Project SDK

Gradle

When you first open the generated project in IntelliJ IDEA, you may need to sync the Gradle project. Follow these steps:

  1. Open the project in IntelliJ IDEA.
  2. Right click build.gradle file in the project explorer.
  3. Select Link Gradle Project.
    Link Gradle Project

SailPoint IdentityIQ JARs (Important!)

To build the plugin, SailPoint IdentityIQ JARs need to be available to gradle.

Unfortunately, these JARs are not included in the project due to licensing restrictions and I cannot publish them to a public mvn repository myself. I have contacted SailPoint about the possibility of an official mvn repo and I will update this package to use it, if it happens.

For now, you will need to obtain them separately and:

  1. You can place them in the libs directory of the project.
  2. You can upload the JARs to a Maven repository and configure the build.gradle file to use that repository.

You can find the required commented out code in the sources/backend/build.gradle file, under the repositories section. Uncomment the relevant lines and adjust the paths to point to your local JARs or Maven repository. Gradle Repositories

(Optional) Automatic Plugin Upload

To allow for automatic upload of the plugin to the IdentityIQ instance, you need to set up the iiqUrl and iiq_base64Credentials properties in the gradle.properties file.

  1. Open the gradle.properties file in the root of the project. If it doesn't exist, create it.

  2. Add iiqUrl, iiqClientId and iiqClientSecret properties with the appropriate values:

    • iiqUrl: The URL of your IdentityIQ instance (e.g., http://localhost:8080/identityiq).
    • iiqClientId: Client ID for API authentication.
    • iiqClientSecret: Client Secret for API authentication

    Consult the step below on how to obtain these credentials.

  3. Save the gradle.properties file. It should look something like this:

    iiqUrl=http://localhost:8080/identityiq
    iiqClientId=MYgjmYn1VZuFtvFfD55rqjmohWqve0MJ
    iiqClientSecret=pqy0BMMuChrddR9V

Getting the Client ID and Secret

  1. Log in to your IdentityIQ instance.
  2. Navigate to Global Settings > API Authentication. API Authentication
  3. Click on Create API Authentication Click
  4. Give it a name (e.g., IIQ Plugin Project Generator), select the proxy user (e.g., spadmin in your local environment) and click on Save. API Authentication Create
  5. You can now copy the Client ID and Client Secret from the created API client. API Authentication Save

Build Targets

To build the plugin, do the following:

  1. Open the project in IntelliJ IDEA.
  2. Open the Gradle tool window (usually on the right side).
  3. Navigate to Tasks > ventum plugin
  4. Double-click on one of the build tasks to build the plugin. Gradle Build Task

Build tasks

| Task Name | Description | |------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | packageClean | Builds the plugin ZIP file. This is the production config, that will also minify and obfuscate JS files. | | packageDevClean | Builds the plugin ZIP file in debug mode. The plugin version is saved under dev/dev.properties and incremented with each build. This is useful for development and testing. | | buildAndUploadPlugin | Builds the plugin (using packageDevClean) and uploads it to the IIQ instance. This task requires the iiqUrl, iiqClientId and iiqClientSecret properties to be set in the gradle.properties file. |

Output

The output of the build tasks will be located in the build directory of the project. The generated ZIP file can be uploaded to the IdentityIQ instance.


Author

Adam Mazurkiewicz-Madej ([email protected])