mcpField
E
es5-compliance

es5-compliance

github.com/serac-labs開発7760 回インストール9 週間前に更新
リポジトリ

es5-compliance について

ServiceNowのサーバーサイドスクリプト開発者向けのES5準拠スキルです。Rhinoで使えない構文と、一般的なJavaScript記法のES5での代替方法を説明します。

主な機能

  1. 01非対応のES6以降の構文を列挙
  2. 02ES5での代替記法を提示
  3. 03デプロイ前の構文確認項目
  4. 04サーバーとクライアントの規則を区別

活用シーン

  1. 01ServiceNowサーバーサイドスクリプトの作成
  2. 02デプロイ前の構文確認
  3. 03モダンJavaScriptのES5への書き換え

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/serac-labs/serac --skill es5-compliance

インストール後、Claude Code で/es5-complianceを入力して読み込まれたか確認します。

詳細

ServiceNow の ES5 準拠

ServiceNow は Mozilla Rhino エンジンで動作し、ES5 JavaScript(2009 年標準)のみをサポートします。サーバーサイドスクリプトでは、必ず ES5 構文を使用してください。

使用禁止の構文(構文エラーの原因になります)

ES6 以降の構文ES5 の代替構文
const x = 5var x = 5
let items = []var items = []
() => {}function() {}
`Hello ${name}`'Hello ' + name
for (x of arr)for (var i = 0; i < arr.length; i++)
{a, b} = objvar a = obj.a; var b = obj.b;
[a, b] = arrvar a = arr[0]; var b = arr[1];
...spreadArray.prototype.slice.call() を使用
class MyClass {}コンストラクター関数を使用
async/awaitGlideRecord コールバックを使用
Promiseコールバック付きの GlideRecord を使用

よく使われるパターン

変数宣言
// WRONG - ES6
const MAX_RETRIES = 3
let currentUser = gs.getUser()

// CORRECT - ES5
var MAX_RETRIES = 3
var currentUser = gs.getUser()
関数
// WRONG - Arrow functions
var active = incidents.filter((inc) => inc.active)
var process = () => {
  return "done"
}

// CORRECT - ES5 functions
var active = []
for (var i = 0; i < incidents.length; i++) {
  if (incidents[i].active) {
    active.push(incidents[i])
  }
}
var process = function () {
  return "done"
}
文字列の連結
// WRONG - Template literals
var message = `Incident ${number} assigned to ${user}`

// CORRECT - String concatenation
var message = "Incident " + number + " assigned to " + user
ループ
// WRONG - for...of
for (var item of items) {
  gs.info(item)
}

// CORRECT - Traditional for loop
for (var i = 0; i < items.length; i++) {
  gs.info(items[i])
}
デフォルトパラメーター
// WRONG - Default parameters
function process(incident, priority = 3) {
  // ...
}

// CORRECT - Manual defaults
function process(incident, priority) {
  if (typeof priority === "undefined") {
    priority = 3
  }
  // ...
}

自動検証

サーバーサイドスクリプトをデプロイする前に、次の点を確認してください。

  1. const/let 宣言を確認し、var に置き換えます
  2. アロー関数 => を確認し、function() に置き換えます
  3. テンプレートリテラル ` を確認し、文字列の連結に置き換えます
  4. 分割代入 {a, b} を確認し、明示的なプロパティアクセスに置き換えます
  5. for...of ループを確認し、インデックスベースのループに置き換えます

例外:クライアントスクリプト

クライアントサイドスクリプト(クライアントスクリプト、UI ポリシー)はブラウザーで実行されるため、ユーザーのブラウザーによっては ES6 以降をサポートする場合があります。ただし、最大限の互換性を確保するため、ES5 の使用を引き続き推奨します。

コメント