This commit applies `strictNullChecks` to the entire codebase to improve maintainability and type safety. Key changes include: - Remove some explicit null-checks where unnecessary. - Add necessary null-checks. - Refactor static factory functions for a more functional approach. - Improve some test names and contexts for better debugging. - Add unit tests for any additional logic introduced. - Refactor `createPositionFromRegexFullMatch` to its own function as the logic is reused. - Prefer `find` prefix on functions that may return `undefined` and `get` prefix for those that always return a value.
32 lines
734 B
TypeScript
32 lines
734 B
TypeScript
import { IScriptCode } from './IScriptCode';
|
|
|
|
export class ScriptCode implements IScriptCode {
|
|
constructor(
|
|
public readonly execute: string,
|
|
public readonly revert: string | undefined,
|
|
) {
|
|
validateCode(execute);
|
|
validateRevertCode(revert, execute);
|
|
}
|
|
}
|
|
|
|
function validateRevertCode(revertCode: string | undefined, execute: string) {
|
|
if (!revertCode) {
|
|
return;
|
|
}
|
|
try {
|
|
validateCode(revertCode);
|
|
if (execute === revertCode) {
|
|
throw new Error('Code itself and its reverting code cannot be the same');
|
|
}
|
|
} catch (err) {
|
|
throw Error(`(revert): ${err.message}`);
|
|
}
|
|
}
|
|
|
|
function validateCode(code: string): void {
|
|
if (code.length === 0) {
|
|
throw new Error('missing code');
|
|
}
|
|
}
|