Salesforceのオブジェクト定義を使って文字列を出力できるジェネレータを作ってみましたー
モチベーションとしては、VF + JSRemoting + Frontのフレームワークな構成を試していたんだけど SObjectの定義を使ってJSやApexのファイルを作成する必要があったので若干面倒だったというやーつ
使い方
インストール
$ npm install -g sf-metadata-converter
ID/PWDは環境変数で指定して叩くと、テンプレートにSObjectの定義をパラメータとしてバインドした文字列が標準出力に出力されます
$ export SALESFORCE_USERNAME=xxx
$ export SALESFORCE_PASSWORD=xxx
$ sfmconv -T {SObject Name} -t {template file}
template fileはEJSでこんな感じで書きます
class <%= name %> {
constructor() {
this.params = [<%- fields.map(f => `'${f.name}'`).join(','); %>];
}
}
ビルトインのテンプレートも持っていて、js
typescript
apex
を指定するとそれっぽいのが表示されます
テンプレートにはURLの指定もOK
$ sfmconv -T Account -t "https://httpbin.org/get?q=%3C%=%20name%20%%3E"
バインドしているパラメータはjsforceでmetadata describeしたときのレスポンスが入ります
Apexのテストデータ作成とかSObjectのTypeScriptの型定義やJSのクラス生成とかに役立つのではないかと思いまっす