react-native-app-auth
Version:
React Native bridge for AppAuth for supporting any OAuth 2 provider
31 lines (29 loc) • 875 B
text/typescript
interface InsertProtocolDeclarationParams {
source: string;
interfaceName: string;
protocolName: string;
baseClassName?: string;
}
export const insertProtocolDeclaration = ({
source,
interfaceName,
protocolName,
baseClassName = 'NSObject',
}: InsertProtocolDeclarationParams): string => {
const matchInterfaceDeclarationRegexp = new RegExp(
`(@interface\\s+${interfaceName}\\s*:\\s*${baseClassName})(\\s*\\<(.*)\\>)?`
);
const match = source.match(matchInterfaceDeclarationRegexp);
if (match) {
const [line, interfaceDeclaration, , existingProtocols] = match;
if (!existingProtocols || !existingProtocols.includes(protocolName)) {
source = source.replace(
line,
`${interfaceDeclaration} <${
existingProtocols ? `${existingProtocols},` : ''
}${protocolName}>`
);
}
}
return source;
};