in packages/cli/src/generators/auth-config.ts [89:170]
add_plugin: async (opts: {
direction_in_plugins_array: "append" | "prepend";
pluginFunctionName: string;
pluginContents: string;
config: string;
}): Promise<{ code: string; dependencies: string[]; envs: string[] }> => {
let start_of_plugins = getGroupInfo(
opts.config,
common_indexes.START_OF_PLUGINS,
{},
);
// console.log(`start of plugins:`, start_of_plugins);
if (!start_of_plugins) {
throw new Error(
"Couldn't find start of your plugins array in your auth config file.",
);
}
let end_of_plugins = getGroupInfo(
opts.config,
common_indexes.END_OF_PLUGINS,
{ start_of_plugins: start_of_plugins.index },
);
// console.log(`end of plugins:`, end_of_plugins);
if (!end_of_plugins) {
throw new Error(
"Couldn't find end of your plugins array in your auth config file.",
);
}
// console.log(
// "slice:\n",
// opts.config.slice(start_of_plugins.index, end_of_plugins.index),
// );
let new_content: string;
if (opts.direction_in_plugins_array === "prepend") {
new_content = insertContent({
line: start_of_plugins.line,
character: start_of_plugins.character,
content: opts.config,
insert_content: `${opts.pluginFunctionName}(${opts.pluginContents}),`,
});
} else {
let has_found_comma = false;
const str = opts.config
.slice(start_of_plugins.index, end_of_plugins.index)
.split("")
.reverse();
for (let index = 0; index < str.length; index++) {
const char = str[index];
if (char === ",") {
has_found_comma = true;
}
if (char === ")") {
break;
}
}
new_content = insertContent({
line: end_of_plugins.line,
character: end_of_plugins.character,
content: opts.config,
insert_content: `${!has_found_comma ? "," : ""}${
opts.pluginFunctionName
}(${opts.pluginContents})`,
});
}
// console.log(`new_content`, new_content);
try {
new_content = await format(new_content);
} catch (error) {
console.error(error);
throw new Error(
`Failed to generate new auth config during plugin addition phase.`,
);
}
return { code: await new_content, dependencies: [], envs: [] };
},