javascript-obfuscator / javascript-obfuscator/webpack-obfuscator
How to make webpack obfuscator config type safe?
- 主要言語
- TypeScript
- スター
- 928
- フォーク
- 92
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
I want to ensure the values I use in my webpack obfuscator config are type safe. But for some reason the TypeScript compiler gives me no error if, for example, I use incorrect values like `high-obfuscation123` for `optionsPreset`:
webpack.config.ts
```typescript
export const mainConfig: Configuration = {
// ...
plugins: [
// ...
new WebpackObfuscatorPlugin({
optionsPreset: "high-obfuscation123", // No compile time errors. Only runtime ones (during webpack running).
// ...
})
],
// ...
}
```
I also tried to access configuration types directly but it causes an another runtime error although VSCode successfully recognize imports:
webpack.config.ts
```typescript
// ...
import WebpackObfuscatorPlugin from 'webpack-obfuscator';
import { OptionsPreset } from 'javascript-obfuscator/typings/src/enums/options/presets/OptionsPreset';
import { SourceMapMode } from 'javascript-obfuscator/typings/src/enums/source-map/SourceMapMode';
import { SourceMapSourcesMode } from 'javascript-obfuscator/typings/src/enums/source-map/SourceMapSourcesMode';
export const mainConfig: Configuration = {
// ...
plugins: [
// ...
new WebpackObfuscatorPlugin({
// ...
optionsPreset: OptionsPreset.LowObfuscation,
sourceMapMode: SourceMapMode.Separate,
sourceMapSourcesMode: SourceMapSourcesMode.Sources,
stringArrayIndexesType: [StringArrayIndexesType.HexadecimalNumericString],
target: ObfuscationTarget.Node
})
],
// ...
}
```
How can I make my webpack obfuscator config type safe?
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
webpack.config.ts と参照されている javascript-obfuscator の typings パスから始め、WebpackObfuscatorPlugin がオプションをどのように宣言しているか、またそれらの enum の import が実行時にどのように出力されるかを調査します。optionsPreset の無効な値が TypeScript によって拒否され、サポートされている設定を報告された実行時エラーなしで import できれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- typescript, webpack
- 領域
- build-system, tooling
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100