javascript-obfuscator / javascript-obfuscator/webpack-obfuscator

How to make webpack obfuscator config type safe?

オープン
#180 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
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

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。