@usebruno/converters
Version:
The converters package is responsible for converting collections from one format to a Bruno collection. It can be used as a standalone package or as a part of the Bruno framework.
80 lines (68 loc) • 2.13 kB
text/typescript
import { uuid } from '../common/index.js';
import type {
Environment,
Variable,
BrunoEnvironment,
BrunoEnvironmentVariable
} from './types';
interface OCVariable extends Omit<Variable, 'value'> {
name: string;
value?: string | { data: string };
secret?: boolean;
disabled?: boolean;
}
export const fromOpenCollectionEnvironments = (environments: Environment[] | undefined): BrunoEnvironment[] => {
if (!environments?.length) {
return [];
}
return environments.map((env): BrunoEnvironment => ({
uid: uuid(),
name: env.name || 'Untitled Environment',
variables: (env.variables || []).map((v): BrunoEnvironmentVariable => {
const variable = v as OCVariable;
const isSecret = variable.secret === true;
let value = '';
if (!isSecret && variable.value !== undefined) {
if (typeof variable.value === 'string') {
value = variable.value;
} else if (variable.value && typeof variable.value === 'object' && 'data' in variable.value) {
value = variable.value.data;
}
}
return {
uid: uuid(),
name: variable.name || '',
value,
type: 'text',
enabled: variable.disabled !== true,
secret: isSecret
};
})
}));
};
export const toOpenCollectionEnvironments = (environments: BrunoEnvironment[] | undefined): Environment[] | undefined => {
if (!environments?.length) {
return undefined;
}
return environments.map((env): Environment => {
const ocEnv: Environment = {
name: env.name || 'Untitled Environment',
variables: (env.variables || []).map((v): OCVariable => {
const ocVar: OCVariable = {
name: v.name || '',
value: typeof v.value === 'string' ? v.value : String(v.value ?? '')
};
if (v.secret) {
ocVar.secret = true;
// Secret variables don't include the value in export
delete ocVar.value;
}
if (v.enabled === false) {
ocVar.disabled = true;
}
return ocVar;
}) as Variable[]
};
return ocEnv;
});
};