packages/@aws-cdk/cloudformation-diff/lib/diff/maybe-parsed.ts (18 lines of code) (raw):

/** * A value that may or may not be parseable */ export type MaybeParsed<A> = Parsed<A> | UnparseableCfn; export interface Parsed<A> { readonly type: 'parsed'; readonly value: A; } export interface UnparseableCfn { readonly type: 'unparseable'; readonly repr: string; } export function mkParsed<A>(value: A): Parsed<A> { return { type: 'parsed', value }; } export function mkUnparseable(value: any): UnparseableCfn { return { type: 'unparseable', repr: typeof value === 'string' ? value : JSON.stringify(value), }; }