Merge pull request #251 from flyboarder/github-loader-recursive

[Fix] Make GithubLoader Recursive
This commit is contained in:
Henry Heng
2023-06-10 18:02:06 +01:00
committed by GitHub
@@ -40,6 +40,12 @@ class Github_DocumentLoaders implements INode {
placeholder: '<GITHUB_ACCESS_TOKEN>', placeholder: '<GITHUB_ACCESS_TOKEN>',
optional: true optional: true
}, },
{
label: 'Recursive',
name: 'recursive',
type: 'boolean',
optional: true
},
{ {
label: 'Text Splitter', label: 'Text Splitter',
name: 'textSplitter', name: 'textSplitter',
@@ -59,41 +65,33 @@ class Github_DocumentLoaders implements INode {
async init(nodeData: INodeData): Promise<any> { async init(nodeData: INodeData): Promise<any> {
const repoLink = nodeData.inputs?.repoLink as string const repoLink = nodeData.inputs?.repoLink as string
const branch = nodeData.inputs?.branch as string const branch = nodeData.inputs?.branch as string
const recursive = nodeData.inputs?.recursive as boolean
const accessToken = nodeData.inputs?.accessToken as string const accessToken = nodeData.inputs?.accessToken as string
const textSplitter = nodeData.inputs?.textSplitter as TextSplitter const textSplitter = nodeData.inputs?.textSplitter as TextSplitter
const metadata = nodeData.inputs?.metadata const metadata = nodeData.inputs?.metadata
const options: GithubRepoLoaderParams = { const options: GithubRepoLoaderParams = {
branch, branch,
recursive: false, recursive,
unknown: 'warn' unknown: 'warn'
} }
if (accessToken) options.accessToken = accessToken if (accessToken) options.accessToken = accessToken
const loader = new GithubRepoLoader(repoLink, options) const loader = new GithubRepoLoader(repoLink, options)
let docs = [] const docs = textSplitter ? await loader.loadAndSplit(textSplitter) : await loader.load()
if (textSplitter) {
docs = await loader.loadAndSplit(textSplitter)
} else {
docs = await loader.load()
}
if (metadata) { if (metadata) {
const parsedMetadata = typeof metadata === 'object' ? metadata : JSON.parse(metadata) const parsedMetadata = typeof metadata === 'object' ? metadata : JSON.parse(metadata)
let finaldocs = [] return docs.map((doc) => {
for (const doc of docs) { return {
const newdoc = {
...doc, ...doc,
metadata: { metadata: {
...doc.metadata, ...doc.metadata,
...parsedMetadata ...parsedMetadata
} }
} }
finaldocs.push(newdoc) })
}
return finaldocs
} }
return docs return docs