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 🙏

© 2026 – Pkg Stats / Ryan Hefner

vscode-suitescript-governance

v1.0.0

Published

Right-click any SuiteScript file to check governance point consumption. Visual analysis of API costs with detailed breakdowns.

Readme

SuiteScript Governance Checker - VS Code Extension

Right-click any SuiteScript file → 🔍 Check Governance Limit untuk melihat laporan konsumsi governance points secara visual.

⚙️ Persiapan Penting (MANDATORY)

Sebelum ekstensi VS Code dapat berfungsi melakukan analisis, Anda HARUS menginstal plugin linter engine (yang sudah tersedia secara publik di npm) pada project NetSuite Anda:

1. Instalasi Plugin via NPM

Buka terminal di folder project NetSuite Anda (tempat di mana file eslint.config.mjs atau package.json Anda berada) dan jalankan:

npm install eslint-plugin-suitescript-governance --save-dev

2. Buat Konfigurasi ESLint

Di root folder project NetSuite (tempat folder FileCabinet), buat file eslint.config.mjs:

import suiteScriptGovernance from "eslint-plugin-suitescript-governance";

export default [
  {
    files: ["**/*.js"],
    plugins: { "suitescript-governance": suiteScriptGovernance },
    rules: {
      "suitescript-governance/no-api-call-in-loop": "warn",
      "suitescript-governance/governance-limit-check": "warn",
      "suitescript-governance/require-script-type": "warn",
      "suitescript-governance/recommend-remaining-usage": "warn",
    },
  },
];

❓ Mengapa Menu Tidak Muncul? (Troubleshooting)

Jika Anda sudah menginstal VSIX tapi menu "Check Governance Limit" tidak muncul:

  1. Pastikan File adalah .js: Menu hanya muncul pada file dengan ekstensi .js yang dideteksi oleh VS Code sebagai bahasa JavaScript.
  2. Cek Status Bar: Di pojok kanan bawah, seharusnya muncul tulisan 🛡️ Governance. Jika tidak ada, berarti extension belum aktif.
  3. Restart VS Code: Setelah instal VSIX, terkadang VS Code perlu di-restart (Ctrl+Shift+P > Developer: Reload Window).
  4. Output Channel: Jika Anda klik menu tapi tidak terjadi apa-apa, buka panel Output di bawah, lalu pilih SuiteScript Governance dari dropdown di pojok kanan panel tersebut untuk melihat pesan error.
  5. Path Error: Pastikan Anda menjalankan VS Code di folder yang benar (root project). Linter ini mencari file eslint.config.mjs di folder tempat Anda membuka editor.

✨ Fitur Utama

Ekstensi ini dirancang khusus untuk mempermudah developer NetSuite dalam memantau dan menjaga batas penggunaan API (Governance Points).

1. 🔍 One-Click Governance Check Melalui Context Menu (Klik Kanan) baik di area Editor maupun di Explorer (daftar file), Anda bisa langsung memicu analisis governance pada file SuiteScript 2.x tanpa menuliskan perintah manual di terminal. Anda juga bisa menggunakan Keyboard Shortcut Ctrl+Shift+G untuk proses yang lebih cepat.

2. 📊 Visual Dashboard via Output Channel Hasil analisis dari ESLint parser tidak ditampilkan mentah, melainkan divisualisasikan dengan elegan pada panel Output VS Code. Ini mencakup:

  • Progress Bar Konsumsi: Menampilkan persentase penggunaan poin terhadap total limit script (misalnya 1000 points untuk User Event).
  • Cost Breakdown: Rincian detail API NetSuite apa saja yang dipanggil beserta total beban governance yang digunakan.
  • High-Cost Operations: Penanda bahaya (high-cost) pada API berat seperti N/render.xmlToPdf atau manipulasi query rumit.

3. 🛡️ Status Bar Indicator Setiap kali Anda membuka file yang berpotensi menjadi SuiteScript (file dengan ekstensi .js), indikator khusus bertuliskan 🛡️ Governance akan otomatis muncul di panel Status Bar (pojok kanan bawah), memudahkan satu kali klik untuk menjalankan pengecekan.

4. ⚠️ Smart Danger & Loop Detection Mendeteksi penggunaan API NetSuite secara tidak optimal, seperti memanggil record.load() atau record.submitFields() di dalam sebuah loop (for, while, .each()). Ekstensi ini akan memberikan notifikasi peringatan VS Code (Pop-up Warning) jika hal ini terdeteksi.

5. 🤖 Auto-check on Save (Opsional) Anda dapat mengaktifkan konfigurasi suiteGovernance.autoCheckOnSave via VS Code Settings. Saat aktif, ekstensi akan melakukan validasi limit konsumsi governance secara otomatis di background setiap kali Anda menekan Ctrl+S (Save) pada file .js.

6. 📋 Missing Annotations Detection Secara otomatis akan mengingatkan jika file skrip Anda lupa mendefinisikan JSDoc tag yang esensial di NetSuite, terutama jenis skrip (@NScriptType) agar linter dapat mengenali base governance limit-nya dengan tepat.

7. 💡 Actionable Recommendations Linter ini didesain tidak sekadar mendeteksi error, tapi mengedukasi best practice. Ia bisa mendeteksi blok iterasi besar dan langsung menyarankan untuk menambahkan mekanisme "Yield" atau menggunakan runtime.getCurrentScript().getRemainingUsage() guna menghindari error "Script Execution Usage Limit Exceeded".

📦 Instalasi

Metode 1: Install dari VSIX (Recommended)

# Build VSIX package
npx @vscode/vsce package

# Install ke VS Code
code --install-extension vscode-suitescript-governance-1.0.0.vsix

Metode 2: Development Mode

  1. Buka folder ini di VS Code
  2. Tekan F5 untuk launch Extension Development Host
  3. Buka project SuiteScript di window baru

⚙️ Prasyarat

Project target harus memiliki:

  1. ESLint terinstall: npm install --save-dev eslint
  2. Plugin governance: npm install --save-dev eslint-plugin-suitescript-governance
  3. File eslint.config.mjs di root project:
import suiteScriptGovernance from "eslint-plugin-suitescript-governance";
export default [
  {
    files: ["**/*.js"],
    plugins: { "suitescript-governance": suiteScriptGovernance },
    rules: {
      "suitescript-governance/no-api-call-in-loop": "warn",
      "suitescript-governance/governance-limit-check": "warn",
      "suitescript-governance/require-script-type": "warn",
      "suitescript-governance/recommend-remaining-usage": "warn",
    },
  },
];

📊 Contoh Output

══════════════════════════════════════════════════════════════════════
  🛡️  SUITESCRIPT GOVERNANCE REPORT
  📄 File: balance_sheet_fdd_sl.js
  🕐 Time: 15:30:45
══════════════════════════════════════════════════════════════════════

  📊 GOVERNANCE SUMMARY
──────────────────────────────────────────────────────────────────────
  Points Used : 85 / 1000 (8.5%)
    🟢 [████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░]

  Breakdown:
    • N/record.load (20 pts)
    • N/search.each (10 pts)
    • N/render.xmlToPdf (45 pts)
    • N/record.save (10 pts)

  🔥 High-Cost Operations:
    ⚡ N/render.xmlToPdf (45 pts)

──────────────────────────────────────────────────────────────────────
  💡 RECOMMENDATIONS
──────────────────────────────────────────────────────────────────────
  💡 SUGGESTION: Loop contains 'N/record.load' (10 pts/iteration).
     Add runtime.getCurrentScript().getRemainingUsage() check.

══════════════════════════════════════════════════════════════════════

⌨️ Keyboard Shortcuts

| Shortcut | Action | | -------------- | -------------------------------------- | | Ctrl+Shift+G | Check Governance Limit pada file aktif |

⚙️ Settings

| Setting | Type | Default | Description | | --------------------------------- | ------- | ------- | ------------------------------------------------------------ | | suiteGovernance.pluginPath | string | "" | Path absolute ke plugin (kosongkan = pakai workspace config) | | suiteGovernance.autoCheckOnSave | boolean | false | Auto-check saat save file .js |


🌍 Dukungan IDE Lain (Selain VS Code)

Meskipun ekstensi One-Click Report ini dibuat khusus untuk VS Code, core engine-nya (linter) 100% independen dan tersedia di publik (NPM).

Karena dibangun di atas ekosistem ESLint, Anda bisa menggunakannya di IDE / Editor mana pun yang mendukung ESLint, seperti:

  • WebStorm / IntelliJ IDEA: Secata otomatis akan mendeteksi eslint.config.mjs dan menampilkan error/warning governance limit berbentuk garis bawah (squiggly lines).
  • Cursor IDE / Windsurf: Sama-sama berbasis VS Code, semuanya berfungsi persis seperti VS Code.
  • Sublime Text, Neovim, Emacs: Bisa digunakan selama Anda memiliki LSP ESLint plugin yang diaktifkan.

Cara menggunakannya di IDE lain: Cukup jalankan npm install eslint-plugin-suitescript-governance --save-dev di proyek Anda, buat file konfigurasi eslint.config.mjs, lalu aktifkan ESLint pada IDE favorit Anda. Error governance (loop API detection, missing requirements) akan tersorot secara real-time di kode Anda!