chore: import upstream snapshot with attribution

This commit is contained in:
wehub-resource-sync
2026-07-13 13:34:48 +08:00
commit 77bb5bf71f
3762 changed files with 353249 additions and 0 deletions
@@ -0,0 +1,112 @@
import * as sdk from '@botpress/sdk'
import * as consts from '../../consts'
import { Module, ModuleProps } from '../../module'
import { PluginTypingsModule } from '../../plugin-implementation/plugin-typings'
type PluginInstance = NonNullable<sdk.BotDefinition['plugins']>[string]
class BundleJsModule extends Module {
private _indexJs: string
public constructor(plugin: PluginInstance) {
super({
path: 'bundle.js',
exportName: 'default',
})
this._indexJs = plugin.implementation.toString()
}
public async getContent() {
return this._indexJs
}
}
class BundleDtsModule extends Module {
public constructor(private _typingsModule: PluginTypingsModule) {
super({
path: 'bundle.d.ts',
exportName: 'default',
})
}
public async getContent() {
const typingsImport = this._typingsModule.import(this)
return [
consts.GENERATED_HEADER,
'import * as sdk from "@botpress/sdk"',
`import * as ${this._typingsModule.name} from "./${typingsImport}"`,
`type TPlugin = sdk.DefaultPlugin<${this._typingsModule.name}.${this._typingsModule.exportName}>`,
'export default new sdk.Plugin<TPlugin>({})',
'',
].join('\n')
}
}
class PluginConfigModule extends Module {
private _plugin: PluginInstance
public constructor(config: ModuleProps & { plugin: PluginInstance }) {
super(config)
this._plugin = config.plugin
}
public async getContent() {
const { interfaces, integrations, configuration, alias } = this._plugin
const content = JSON.stringify({ alias, interfaces, integrations, configuration }, null, 2)
return `export default ${content}`
}
}
export class BotPluginModule extends Module {
private _typingsModule: PluginTypingsModule
private _bundleJsModule: BundleJsModule
private _bundleDtsModule: BundleDtsModule
private _configModule: PluginConfigModule
public readonly pluginKey: string
public constructor(plugin: PluginInstance) {
super({
exportName: 'default',
path: consts.INDEX_FILE,
})
this.pluginKey = plugin.alias ?? plugin.name
this._typingsModule = new PluginTypingsModule(plugin.definition)
this._typingsModule.unshift('typings')
this.pushDep(this._typingsModule)
this._bundleJsModule = new BundleJsModule(plugin)
this.pushDep(this._bundleJsModule)
this._bundleDtsModule = new BundleDtsModule(this._typingsModule)
this.pushDep(this._bundleDtsModule)
this._configModule = new PluginConfigModule({
path: 'config.ts',
exportName: 'default',
plugin,
})
this.pushDep(this._configModule)
}
public async getContent() {
const configImport = this._configModule.import(this)
const typingsImport = this._typingsModule.import(this)
return [
consts.GENERATED_HEADER,
'import * as sdk from "@botpress/sdk"',
'import bundle from "./bundle"',
`import * as ${this._typingsModule.name} from "./${typingsImport}"`,
`import * as ${this._configModule.name} from "./${configImport}"`,
'',
`export type TPlugin = sdk.DefaultPlugin<${this._typingsModule.name}.${this._typingsModule.exportName}>`,
'',
`export const configuration = ${this._configModule.name}.${this._configModule.exportName}.configuration`,
`export const interfaces = ${this._configModule.name}.${this._configModule.exportName}.interfaces`,
'',
`export default bundle.initialize(${this._configModule.name}.${this._configModule.exportName})`,
'',
].join('\n')
}
}