This commit is contained in:
@ -1,6 +0,0 @@
|
||||
import { Transform } from "./Transform";
|
||||
|
||||
export const Base64DecodeTransform: Transform = {
|
||||
name: 'base64d',
|
||||
fn: () => 'Hello, world!'
|
||||
}
|
11
src/Transforms/Base64Transforms.ts
Normal file
11
src/Transforms/Base64Transforms.ts
Normal file
@ -0,0 +1,11 @@
|
||||
import { Transform } from "./Transform";
|
||||
|
||||
export const Base64DecodeTransform: Transform = {
|
||||
name: 'base64d',
|
||||
fn: (v) => btoa(v)
|
||||
}
|
||||
|
||||
export const Base64EncodeTransform: Transform = {
|
||||
name: 'base64e',
|
||||
fn: (v) => atob(v)
|
||||
}
|
@ -1,12 +1,59 @@
|
||||
import { Base64DecodeTransform } from "./Base64DecodeTransform"
|
||||
import { Base64DecodeTransform, Base64EncodeTransform } from "./Base64Transforms"
|
||||
import { URIDecodeTransform, URIEncodeTransform } from "./URITransforms"
|
||||
|
||||
export interface TransformCheckboxOption {
|
||||
type: 'CHECKBOX',
|
||||
key: string,
|
||||
label?: string,
|
||||
value?: boolean
|
||||
}
|
||||
|
||||
|
||||
export interface TransformTextboxOption {
|
||||
type: 'TEXTBOX',
|
||||
key: string,
|
||||
label?: string,
|
||||
value?: string
|
||||
}
|
||||
|
||||
export type TransformOption =
|
||||
TransformCheckboxOption | TransformTextboxOption
|
||||
|
||||
export interface Transform {
|
||||
name: string
|
||||
fn: () => string
|
||||
fn: (value: string, options: Map<string, TransformOption>) => string
|
||||
options?: TransformOption[]
|
||||
}
|
||||
|
||||
export interface WrappedTransform extends Omit<Transform, 'fn'> {
|
||||
wrapped: true,
|
||||
fn: (value: string, options: Map<string, TransformOption>) => {
|
||||
error: boolean,
|
||||
value: string
|
||||
}
|
||||
}
|
||||
|
||||
export const wrapTransform = (transform: Transform): WrappedTransform => ({
|
||||
...transform,
|
||||
fn: (...args) => {
|
||||
try {
|
||||
return {
|
||||
error: false,
|
||||
value: transform.fn(...args)
|
||||
}
|
||||
} catch (err: any) {
|
||||
return {
|
||||
error: true,
|
||||
value: err.toString()
|
||||
}
|
||||
}
|
||||
},
|
||||
wrapped: true
|
||||
})
|
||||
|
||||
export const transforms: Transform[] = [
|
||||
Base64DecodeTransform,
|
||||
Base64DecodeTransform,
|
||||
Base64DecodeTransform,
|
||||
Base64EncodeTransform,
|
||||
URIDecodeTransform,
|
||||
URIEncodeTransform
|
||||
]
|
||||
|
29
src/Transforms/URITransforms.ts
Normal file
29
src/Transforms/URITransforms.ts
Normal file
@ -0,0 +1,29 @@
|
||||
import { Transform } from "./Transform";
|
||||
|
||||
export const URIDecodeTransform: Transform = {
|
||||
name: 'urid',
|
||||
|
||||
fn: (v, o) =>
|
||||
o.get('cmp')?.value === true
|
||||
? decodeURIComponent(v)
|
||||
: decodeURI(v),
|
||||
|
||||
options: [{
|
||||
type: 'CHECKBOX',
|
||||
key: 'cmp'
|
||||
}]
|
||||
}
|
||||
|
||||
export const URIEncodeTransform: Transform = {
|
||||
name: 'urie',
|
||||
|
||||
fn: (v, o) =>
|
||||
o.get('cmp')?.value === true
|
||||
? encodeURIComponent(v)
|
||||
: encodeURI(v),
|
||||
|
||||
options: [{
|
||||
type: 'CHECKBOX',
|
||||
key: 'cmp'
|
||||
}]
|
||||
}
|
Reference in New Issue
Block a user