eslint-plugin-smarthr 6.14.0 → 6.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [6.15.0](https://github.com/kufu/tamatebako/compare/eslint-plugin-smarthr-v6.14.0...eslint-plugin-smarthr-v6.15.0) (2026-05-17)
6
+
7
+
8
+ ### Features
9
+
10
+ * add v93-to-v94 migrator for smarthr-ui ([#1315](https://github.com/kufu/tamatebako/issues/1315)) ([06dce27](https://github.com/kufu/tamatebako/commit/06dce272572991f49f3de635790a06d2c6360f4f))
11
+ * best-practice-for-consecutive-definition-listルールを追加 ([#1313](https://github.com/kufu/tamatebako/issues/1313)) ([4e5778f](https://github.com/kufu/tamatebako/commit/4e5778f95d598b233ca3a2e66e023247ed2fdb2f))
12
+ * best-practice-for-default-propsルールを追加 ([#1312](https://github.com/kufu/tamatebako/issues/1312)) ([b0b0bb2](https://github.com/kufu/tamatebako/commit/b0b0bb2e8dd1a4533a9dbfe6583f45da8a6b8d81))
13
+ * 同階層のバレルファイル間のimportを禁止 ([#1310](https://github.com/kufu/tamatebako/issues/1310)) ([4420109](https://github.com/kufu/tamatebako/commit/4420109a6c9f7fc23175928f7c605b69332ddbb7))
14
+
5
15
  ## [6.14.0](https://github.com/kufu/tamatebako/compare/eslint-plugin-smarthr-v6.13.0...eslint-plugin-smarthr-v6.14.0) (2026-05-13)
6
16
 
7
17
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-smarthr",
3
- "version": "6.14.0",
3
+ "version": "6.15.0",
4
4
  "author": "SmartHR",
5
5
  "license": "MIT",
6
6
  "description": "A sharable ESLint plugin for SmartHR",
@@ -0,0 +1,65 @@
1
+ # smarthr-ui decorators属性の前提知識
2
+
3
+ ## decorators属性の本来の目的と用途
4
+
5
+ ### 基本的な目的
6
+ - **デフォルト文言の変更用**のAPI
7
+ - smarthr-uiがコンポーネント内部で表示するテキストをカスタマイズする手段
8
+
9
+ ### 主な使用用途
10
+ - **多言語化(翻訳)**: ほぼすべてのケースで多言語対応のために利用されている
11
+ - 例: 日本語 → 英語、中国語などへの翻訳
12
+ - 例: 「すべて選択」 → 「Select All」
13
+
14
+ ### 実装パターン
15
+ ```tsx
16
+ // v93以前の典型的な使い方(多言語化)
17
+ <ThCheckbox decorators={{ selectAll: () => 'Select All' }} />
18
+ <DropZone decorators={{ selectButtonLabel: () => 'Choose File' }} />
19
+ ```
20
+
21
+ ## v94以降の方針変更
22
+
23
+ ### 内部で翻訳対応
24
+ - v94以降、smarthr-ui内部で翻訳機能を提供
25
+ - decorators属性は**不要**になった
26
+ - 削除できる
27
+
28
+ ## migrator開発時の考慮事項
29
+
30
+ ### エラーメッセージの方針
31
+
32
+ **❌ 避けるべき表現:**
33
+ - 「IntlProviderのみを使用してください」(内部実装の詳細、利用者には意味不明)
34
+ - 「decorators属性を削除してください」(理由が不明)
35
+
36
+ **✅ 推奨される表現:**
37
+ - 「多言語対応はsmarthr-ui内で自動的に行われるため、decorators属性は不要です」
38
+ - 「翻訳はsmarthr-ui内で自動的に行われます」
39
+ - 利用者視点で「なぜ削除できるのか」が理解できる説明
40
+
41
+ ### 削除時の判断基準
42
+
43
+ - decoratorsは翻訳目的で使われていた
44
+ - smarthr-ui内部で翻訳対応済み
45
+ - → 自動修正で削除
46
+
47
+ ## 実績
48
+
49
+ ### v92-to-v93: DropZone
50
+ - decorators.selectButtonLabel → selectButtonLabel 属性へ移行
51
+ - 空のdecoratorsは削除
52
+ - IntlProviderの翻訳を使用
53
+
54
+ ### v93-to-v94: ThCheckbox
55
+ - decorators 完全削除(新属性への移行なし)
56
+ - 翻訳はsmarthr-ui内で自動対応
57
+ - 全ケースで自動修正可能
58
+
59
+ ## 今後のversion追加時のチェックリスト
60
+
61
+ 1. decorators削除対象のコンポーネントを確認
62
+ 2. 新属性への移行が必要か、完全削除か判断
63
+ 3. エラーメッセージは利用者視点で作成
64
+ - 「なぜ削除できるのか」を説明
65
+ - 「翻訳は内部で自動的に行われます」を明示
@@ -2,6 +2,16 @@
2
2
 
3
3
  このドキュメントは、`autofixer-smarthr-ui-migration` ルールに新しいバージョンの移行ルールを追加する開発者向けのガイドです。
4
4
 
5
+ ## 重要: decorators属性の前提知識
6
+
7
+ decorators属性に関する移行ルールを作成する際は、**必ず [DECORATORS.md](./DECORATORS.md) を参照してください。**
8
+
9
+ **要点:**
10
+ - decorators = デフォルト文言変更用(主用途: 多言語化)
11
+ - v94以降 = 内部で翻訳対応(decorators不要)
12
+ - エラーメッセージ = 利用者視点で「翻訳は自動対応」を明示
13
+ - 「IntlProviderのみ使用」等の内部実装詳細は避ける
14
+
5
15
  ## 新バージョン追加の流れ
6
16
 
7
17
  新しいバージョン(例: v91→v92)の移行ルールを追加する際の手順:
@@ -56,10 +66,10 @@ autofixer-smarthr-ui-migrationルールに新しいバージョン(v[XX]→v[Y
56
66
  ## 参考にするファイル
57
67
 
58
68
  必ず以下のファイルを読んで、実装パターンを踏襲してください(最新のversionディレクトリを参照):
59
- - rules/autofixer-smarthr-ui-migration/versions/v91-to-v92/REFERENCE.md(実装パターンの詳細説明)
60
- - rules/autofixer-smarthr-ui-migration/versions/v91-to-v92/index.js(実装例)
61
- - rules/autofixer-smarthr-ui-migration/versions/v91-to-v92/README.md(ユーザー向け移行ガイド)
62
- - rules/autofixer-smarthr-ui-migration/versions/v91-to-v92/test.js(テストケース)
69
+ - rules/autofixer-smarthr-ui-migration/versions/v93-to-v94/REFERENCE.md(実装パターンの詳細説明)
70
+ - rules/autofixer-smarthr-ui-migration/versions/v93-to-v94/index.js(実装例)
71
+ - rules/autofixer-smarthr-ui-migration/versions/v93-to-v94/README.md(ユーザー向け移行ガイド)
72
+ - rules/autofixer-smarthr-ui-migration/versions/v93-to-v94/test.js(テストケース)
63
73
  - test/autofixer-smarthr-ui-migration.js(メインテスト)
64
74
  - libs/common.js(rootPathの取得、tsconfig.jsonのpaths設定読み込み)
65
75
 
@@ -578,7 +588,7 @@ https://github.com/kufu/smarthr-ui/releases
578
588
 
579
589
  各versionディレクトリに`REFERENCE.md`があり、実装パターンや注意点が記載されています。
580
590
 
581
- **最新version:** [v91-to-v92/REFERENCE.md](./versions/v91-to-v92/REFERENCE.md)
591
+ **最新version:** [v93-to-v94/REFERENCE.md](./versions/v93-to-v94/REFERENCE.md)
582
592
 
583
593
  このドキュメントには以下が含まれます:
584
594
  - ファイル構造と各セクションの説明
@@ -193,6 +193,8 @@ export const ActionDialog = (props) => <div>{props.children}</div>
193
193
  |-----------|------|
194
194
  | `90` → `91` | [移行ガイド](./versions/v90-to-v91/README.md) |
195
195
  | `91` → `92` | [移行ガイド](./versions/v91-to-v92/README.md) |
196
+ | `92` → `93` | [移行ガイド](./versions/v92-to-v93/README.md) |
197
+ | `93` → `94` | [移行ガイド](./versions/v93-to-v94/README.md) |
196
198
 
197
199
  ## 使用方法
198
200
 
@@ -18,12 +18,14 @@
18
18
  const v90ToV91 = require('./versions/v90-to-v91/index')
19
19
  const v91ToV92 = require('./versions/v91-to-v92/index')
20
20
  const v92ToV93 = require('./versions/v92-to-v93/index')
21
+ const v93ToV94 = require('./versions/v93-to-v94/index')
21
22
 
22
23
  // サポートしているバージョン間の移行モジュール
23
24
  const VERSION_MODULES = {
24
25
  'v90-v91': v90ToV91,
25
26
  'v91-v92': v91ToV92,
26
27
  'v92-v93': v92ToV93,
28
+ 'v93-v94': v93ToV94,
27
29
  }
28
30
 
29
31
  module.exports = {
@@ -0,0 +1,98 @@
1
+ # smarthr-ui v93 → v94 移行ガイド
2
+
3
+ このドキュメントは、smarthr-ui v93からv94への移行に必要な変更をまとめたものです。
4
+
5
+ ## 対応する破壊的変更
6
+
7
+ ### 1. ThCheckbox: decorators属性の削除
8
+
9
+ v94では、`ThCheckbox`コンポーネントから`decorators`属性が削除されました。チェックボックスラベルの翻訳はsmarthr-ui内で自動的に行われます。
10
+
11
+ #### 変更内容
12
+
13
+ **削除された属性:**
14
+ - `decorators?: DecoratorsType<'selectAll'>`
15
+
16
+ **翻訳:**
17
+ - デフォルトラベル: 「すべて選択」
18
+ - 翻訳はsmarthr-ui内で自動的に行われます
19
+
20
+ #### 移行方法
21
+
22
+ **Before (v93):**
23
+ ```tsx
24
+ <ThCheckbox decorators={{ selectAll: () => 'Select All' }} />
25
+ ```
26
+
27
+ **After (v94):**
28
+ ```tsx
29
+ <ThCheckbox />
30
+ ```
31
+
32
+ #### 自動修正可能なパターン
33
+
34
+ 以下のパターンは、ESLintの`--fix`オプションで自動的に修正されます:
35
+
36
+ ```tsx
37
+ // decorators属性を削除
38
+ <ThCheckbox decorators={{ selectAll: () => '全選択' }} />
39
+ → <ThCheckbox />
40
+
41
+ // 空のdecoratorsも削除
42
+ <ThCheckbox decorators={{}} />
43
+ → <ThCheckbox />
44
+
45
+ // 複雑な式でも削除
46
+ <ThCheckbox decorators={{ selectAll: () => getLabel() }} />
47
+ → <ThCheckbox />
48
+ ```
49
+
50
+ #### escape hatch className の変更
51
+
52
+ v94では、ThCheckboxコンポーネントのescape hatch用className(`smarthr-ui-ThCheckbox`等)に変更はありません。
53
+
54
+ ## ESLintルールの使用方法
55
+
56
+ ### .eslintrc.js の設定
57
+
58
+ ```javascript
59
+ module.exports = {
60
+ rules: {
61
+ 'smarthr/autofixer-smarthr-ui-migration': ['error', { from: '93', to: '94' }],
62
+ },
63
+ }
64
+ ```
65
+
66
+ ### 自動修正の実行
67
+
68
+ ```bash
69
+ # エラーを確認
70
+ pnpm run lint
71
+
72
+ # 自動修正を実行
73
+ pnpm run lint --fix
74
+ ```
75
+
76
+ ### smarthrUiAlias オプション
77
+
78
+ プロジェクト固有のsmarthr-ui aliasパスを使用している場合は、`smarthrUiAlias`オプションを指定してください。
79
+
80
+ ```javascript
81
+ module.exports = {
82
+ rules: {
83
+ 'smarthr/autofixer-smarthr-ui-migration': [
84
+ 'error',
85
+ {
86
+ from: '93',
87
+ to: '94',
88
+ smarthrUiAlias: '@/components/parts/smarthr-ui', // プロジェクト固有のalias
89
+ },
90
+ ],
91
+ },
92
+ }
93
+ ```
94
+
95
+ ## 参考リンク
96
+
97
+ - [smarthr-ui v94.0.0 リリースノート](https://github.com/kufu/smarthr-ui/releases/tag/smarthr-ui-v94.0.0)
98
+ - [PR #6235: ThCheckbox の decorators 属性削除](https://github.com/kufu/smarthr-ui/pull/6235)
@@ -0,0 +1,217 @@
1
+ # v93-to-v94 実装の参考ポイント
2
+
3
+ このドキュメントは、v93→v94の移行ルール実装の構造と、新しいversionを追加する際の参考ポイントを説明します。
4
+
5
+ ## v93→v94 特有の実装パターン
6
+
7
+ ### 1. ThCheckbox の decorators 属性削除
8
+
9
+ v94では ThCheckbox コンポーネントから `decorators` 属性が削除されました。v92-to-v93のDropZoneと異なり、**新しい属性への移行はなく、完全に削除する**だけのシンプルなパターンです。
10
+
11
+ #### 1-1. decorators属性のチェッカー(シンプルな削除)
12
+
13
+ ```javascript
14
+ 'JSXAttribute[name.name="decorators"]'(node) {
15
+ const componentName = node.parent.name.name
16
+
17
+ // ThCheckboxコンポーネントのみを対象
18
+ if (componentName !== 'ThCheckbox') return
19
+
20
+ context.report({
21
+ node,
22
+ messageId: 'removeDecorators',
23
+ data: { component: componentName, to: TARGET_VERSION },
24
+ fix(fixer) {
25
+ // decorators属性を削除
26
+ const tokenBefore = sourceCode.getTokenBefore(node)
27
+ if (tokenBefore && tokenBefore.range[1] < node.range[0]) {
28
+ return fixer.removeRange([tokenBefore.range[1], node.range[1]])
29
+ }
30
+ return fixer.remove(node)
31
+ },
32
+ })
33
+ }
34
+ ```
35
+
36
+ **ポイント:**
37
+ - **v92-to-v93のDropZoneとの違い**:
38
+ - DropZone: `decorators.selectButtonLabel` → `selectButtonLabel`属性への移行
39
+ - ThCheckbox: `decorators` 完全削除(IntlProviderのみ使用)
40
+ - **値の解析不要**: decoratorsの内容に関わらず削除するため、`extractSelectButtonLabel`のような解析関数は不要
41
+ - **条件分岐なし**: spread syntax、他のキーの存在など、複雑な条件分岐が不要
42
+ - **自動修正: 常に可能**: 手動対応が必要なケースなし
43
+
44
+ #### 1-2. 前後の空白処理
45
+
46
+ ```javascript
47
+ // decorators属性を削除
48
+ const tokenBefore = sourceCode.getTokenBefore(node)
49
+ if (tokenBefore && tokenBefore.range[1] < node.range[0]) {
50
+ // 前のトークンとの間に空白がある場合、空白も含めて削除
51
+ return fixer.removeRange([tokenBefore.range[1], node.range[1]])
52
+ }
53
+ return fixer.remove(node)
54
+ ```
55
+
56
+ **重要:**
57
+ - `getTokenBefore`で前のトークン(他の属性やコンポーネント名)を取得
58
+ - 前のトークンの終了位置とdecorators属性の開始位置の間に空白があれば、空白も含めて削除
59
+ - これにより `<ThCheckbox decorators={{}}` → `<ThCheckbox` のように余分な空白が残らない
60
+
61
+ ## v92-to-v93との実装比較
62
+
63
+ ### DropZone (v92-to-v93) - 複雑
64
+
65
+ ```javascript
66
+ // decoratorsの値を解析
67
+ const result = extractSelectButtonLabel(node)
68
+
69
+ // 条件分岐
70
+ if (result.type === 'spread') { /* 手動対応 */ }
71
+ if (result.type === 'other-keys') { /* 手動対応 */ }
72
+ if (result.type === 'migratable') {
73
+ // selectButtonLabel属性を追加 + decorators削除
74
+ fix(fixer) {
75
+ const fixes = []
76
+ fixes.push(fixer.insertTextAfter(node.parent.name, selectButtonLabelAttr))
77
+ fixes.push(fixer.removeRange([tokenBefore.range[1], node.range[1]]))
78
+ return fixes
79
+ }
80
+ }
81
+ ```
82
+
83
+ ### ThCheckbox (v93-to-v94) - シンプル
84
+
85
+ ```javascript
86
+ // 値の解析不要、条件分岐なし
87
+ context.report({
88
+ node,
89
+ messageId: 'removeDecorators',
90
+ fix(fixer) {
91
+ // decorators削除のみ
92
+ const tokenBefore = sourceCode.getTokenBefore(node)
93
+ if (tokenBefore && tokenBefore.range[1] < node.range[0]) {
94
+ return fixer.removeRange([tokenBefore.range[1], node.range[1]])
95
+ }
96
+ return fixer.remove(node)
97
+ }
98
+ })
99
+ ```
100
+
101
+ ## 共通パターン
102
+
103
+ ### setupSmarthrUiAliasOptions の使用
104
+
105
+ ```javascript
106
+ const { validSources, isAliasFile, filename } = setupSmarthrUiAliasOptions(context, options)
107
+ ```
108
+
109
+ **目的:**
110
+ - `smarthrUiAlias`オプションに対応
111
+ - aliasファイル(`@/components/parts/smarthr-ui`等)の検出
112
+ - export変数名の置換(コンポーネント名変更時のみ必要)
113
+
114
+ **v93-to-v94では:**
115
+ - ThCheckboxはリネームされないため、export変数名の置換は不要
116
+ - ただし`setupSmarthrUiAliasOptions`は他のversionとの一貫性のため呼び出す
117
+
118
+ ## テストケースのパターン
119
+
120
+ ### valid(エラーにならないケース)
121
+
122
+ ```javascript
123
+ '<ThCheckbox>Label</ThCheckbox>', // decoratorsなし
124
+ '<OtherComponent decorators={{}} />', // ThCheckbox以外
125
+ ```
126
+
127
+ ### invalid(エラーになるケース)
128
+
129
+ ```javascript
130
+ {
131
+ code: '<ThCheckbox decorators={{ selectAll: () => "全選択" }}>Label</ThCheckbox>',
132
+ output: '<ThCheckbox>Label</ThCheckbox>',
133
+ errors: [{ messageId: 'removeDecorators' }]
134
+ },
135
+ {
136
+ code: '<ThCheckbox decorators={{}}>Label</ThCheckbox>',
137
+ output: '<ThCheckbox>Label</ThCheckbox>',
138
+ errors: [{ messageId: 'removeDecorators' }]
139
+ }
140
+ ```
141
+
142
+ ## 新しいversionを追加する場合
143
+
144
+ ### シンプルな削除パターン(ThCheckboxタイプ)の場合
145
+
146
+ 1. **セレクター**: `JSXAttribute[name.name="属性名"]`
147
+ 2. **コンポーネント判定**: `if (componentName !== 'TargetComponent') return`
148
+ 3. **fix**: decorators属性を削除(前の空白も含む)
149
+ 4. **テスト**: valid(属性なし、他コンポーネント)、invalid(属性あり → 削除)
150
+
151
+ ### 複雑な移行パターン(DropZoneタイプ)の場合
152
+
153
+ 1. **解析関数**: decoratorsの値を解析し、移行可能性を判定
154
+ 2. **条件分岐**: spread / migratable / not-migratable / no-label 等
155
+ 3. **fix**: 新属性追加 + decorators削除(migratableの場合のみ)
156
+ 4. **テスト**: valid(新属性、他コンポーネント)、invalid(各パターン)
157
+
158
+ ## 実装の参考ポイント
159
+
160
+ **最新version:** [v93-to-v94/REFERENCE.md](./versions/v93-to-v94/REFERENCE.md)
161
+
162
+ ### ESLint fixer API
163
+
164
+ - `fixer.remove(node)`: ノードを削除
165
+ - `fixer.removeRange([start, end])`: 範囲を削除
166
+ - `fixer.insertTextAfter(node, text)`: ノードの後にテキスト挿入
167
+ - `sourceCode.getTokenBefore(node)`: 前のトークンを取得
168
+ - `sourceCode.getText(node)`: ノードのテキストを取得
169
+
170
+ ### ASTノード構造
171
+
172
+ ```javascript
173
+ // <ThCheckbox decorators={{ selectAll: () => "全選択" }}>
174
+ {
175
+ type: 'JSXAttribute',
176
+ name: { type: 'JSXIdentifier', name: 'decorators' },
177
+ value: {
178
+ type: 'JSXExpressionContainer',
179
+ expression: {
180
+ type: 'ObjectExpression',
181
+ properties: [...]
182
+ }
183
+ },
184
+ parent: {
185
+ type: 'JSXOpeningElement',
186
+ name: { type: 'JSXIdentifier', name: 'ThCheckbox' }
187
+ }
188
+ }
189
+ ```
190
+
191
+ ## トラブルシューティング
192
+
193
+ ### 前の空白が残る
194
+
195
+ **原因**: `fixer.remove(node)`のみだと、前の空白が残る
196
+
197
+ **解決策**:
198
+ ```javascript
199
+ const tokenBefore = sourceCode.getTokenBefore(node)
200
+ if (tokenBefore && tokenBefore.range[1] < node.range[0]) {
201
+ return fixer.removeRange([tokenBefore.range[1], node.range[1]])
202
+ }
203
+ ```
204
+
205
+ ### aliasファイルで動作しない
206
+
207
+ **原因**: `smarthrUiAlias`オプションが設定されていない
208
+
209
+ **解決策**:
210
+ - `setupSmarthrUiAliasOptions`を呼び出す
211
+ - テストで`smarthrUiAlias`オプションを指定したケースを追加
212
+
213
+ ### export変数名が置換されない
214
+
215
+ **原因**: コンポーネント名変更時、aliasファイルのexport変数名を置換していない
216
+
217
+ **解決策**: v90-to-v91の`renameExportedIdentifiers`パターンを参照
@@ -0,0 +1,66 @@
1
+ /**
2
+ * smarthr-ui v93 → v94 移行ルール
3
+ *
4
+ * v94での破壊的変更に対応する自動修正を提供します。
5
+ *
6
+ * 対応する破壊的変更:
7
+ * 1. ThCheckbox の decorators 属性削除
8
+ * - decorators属性を削除し、IntlProviderのみを使用
9
+ *
10
+ * 参考: https://github.com/kufu/smarthr-ui/releases/tag/smarthr-ui-v94.0.0
11
+ */
12
+
13
+ const { setupSmarthrUiAliasOptions } = require('../../helpers')
14
+
15
+ // ============================================================
16
+ // 定数定義
17
+ // ============================================================
18
+
19
+ // v94を示す定数(メッセージで使用)
20
+ const TARGET_VERSION = 'v94'
21
+
22
+ // ============================================================
23
+ // モジュールエクスポート
24
+ // ============================================================
25
+
26
+ module.exports = {
27
+ messages: {
28
+ removeDecorators: 'smarthr-ui {{to}} では {{component}} の decorators 属性は削除されました。翻訳はsmarthr-ui内で自動的に行われます',
29
+ },
30
+
31
+ createCheckers(context, sourceCode, options = {}) {
32
+ const { validSources, isAliasFile, filename } = setupSmarthrUiAliasOptions(context, options)
33
+
34
+ const checkers = {
35
+ // ============================================================
36
+ // ThCheckbox の decorators 属性削除
37
+ // ============================================================
38
+
39
+ 'JSXAttribute[name.name="decorators"]'(node) {
40
+ const componentName = node.parent.name.name
41
+
42
+ // ThCheckboxコンポーネントのみを対象
43
+ if (componentName !== 'ThCheckbox') return
44
+
45
+ context.report({
46
+ node,
47
+ messageId: 'removeDecorators',
48
+ data: { component: componentName, to: TARGET_VERSION },
49
+ fix(fixer) {
50
+ // decorators属性を削除
51
+ const tokenBefore = sourceCode.getTokenBefore(node)
52
+ if (tokenBefore && tokenBefore.range[1] < node.range[0]) {
53
+ return fixer.removeRange([tokenBefore.range[1], node.range[1]])
54
+ }
55
+ return fixer.remove(node)
56
+ },
57
+ })
58
+ },
59
+ }
60
+
61
+ // aliasファイルの場合、export変数名の置換は不要
62
+ // (ThCheckboxはリネームされないため)
63
+
64
+ return checkers
65
+ },
66
+ }