var _ _create = Object . create ;
var _ _defProp = Object . defineProperty ;
var _ _getOwnPropDesc = Object . getOwnPropertyDescriptor ;
var _ _getOwnPropNames = Object . getOwnPropertyNames ;
var _ _getProtoOf = Object . getPrototypeOf ;
var _ _hasOwnProp = Object . prototype . hasOwnProperty ;
var _ _markAsModule = ( target ) => _ _defProp ( target , "__esModule" , { value : true } ) ;
var _ _export = ( target , all ) => {
_ _markAsModule ( target ) ;
for ( var name in all )
_ _defProp ( target , name , { get : all [ name ] , enumerable : true } ) ;
} ;
var _ _reExport = ( target , module2 , desc ) => {
if ( module2 && typeof module2 === "object" || typeof module2 === "function" ) {
for ( let key of _ _getOwnPropNames ( module2 ) )
if ( ! _ _hasOwnProp . call ( target , key ) && key !== "default" )
_ _defProp ( target , key , { get : ( ) => module2 [ key ] , enumerable : ! ( desc = _ _getOwnPropDesc ( module2 , key ) ) || desc . enumerable } ) ;
}
return target ;
} ;
var _ _toModule = ( module2 ) => {
return _ _reExport ( _ _markAsModule ( _ _defProp ( module2 != null ? _ _create ( _ _getProtoOf ( module2 ) ) : { } , "default" , module2 && module2 . _ _esModule && "default" in module2 ? { get : ( ) => module2 . default , enumerable : true } : { value : module2 , enumerable : true } ) ) , module2 ) ;
} ;
var _ _async = ( _ _this , _ _arguments , generator ) => {
return new Promise ( ( resolve , reject ) => {
var fulfilled = ( value ) => {
try {
step ( generator . next ( value ) ) ;
} catch ( e ) {
reject ( e ) ;
}
} ;
var rejected = ( value ) => {
try {
step ( generator . throw ( value ) ) ;
} catch ( e ) {
reject ( e ) ;
}
} ;
var step = ( x ) => x . done ? resolve ( x . value ) : Promise . resolve ( x . value ) . then ( fulfilled , rejected ) ;
step ( ( generator = generator . apply ( _ _this , _ _arguments ) ) . next ( ) ) ;
} ) ;
} ;
// src/main.ts
_ _export ( exports , {
default : ( ) => ThePlugin
} ) ;
var import _obsidian6 = _ _toModule ( require ( "obsidian" ) ) ;
// src/SettingsTab.ts
var import _obsidian = _ _toModule ( require ( "obsidian" ) ) ;
var SettingsTab = class extends import _obsidian . PluginSettingTab {
constructor ( app , plugin ) {
super ( app , plugin ) ;
this . plugin = plugin ;
}
display ( ) {
const { containerEl } = this ;
containerEl . empty ( ) ;
containerEl . createEl ( "h2" , { text : this . plugin . appName } ) ;
new import _obsidian . Setting ( containerEl ) . setName ( "Auto-update at startup" ) . setDesc ( "If enabled all beta plugins will be checked for updates each time Obsidian starts." ) . addToggle ( ( cb ) => {
cb . setValue ( this . plugin . settings . updateAtStartup ) ;
cb . onChange ( ( value ) => _ _async ( this , null , function * ( ) {
this . plugin . settings . updateAtStartup = value ;
yield this . plugin . saveSettings ( ) ;
} ) ) ;
} ) ;
containerEl . createEl ( "hr" ) ;
containerEl . createEl ( "h2" , { text : "Beta Plugin List" } ) ;
containerEl . createEl ( "div" , { text : ` The following is a list of beta plugins added via the command palette "Add a beta plugin for testing". ` } ) ;
containerEl . createEl ( "p" ) ;
containerEl . createEl ( "div" , { text : ` Click the x button next to a plugin to remove it from the list. ` } ) ;
containerEl . createEl ( "p" ) ;
containerEl . createEl ( "span" ) . createEl ( "b" , { text : "Note: " } ) ;
containerEl . createSpan ( { text : "This does not delete the plugin, this should be done from the Community Plugins tab in Settings." } ) ;
new import _obsidian . Setting ( containerEl ) . addButton ( ( cb ) => {
cb . setButtonText ( "Add Beta plugin" ) ;
cb . onClick ( ( ) => _ _async ( this , null , function * ( ) {
this . plugin . app . setting . close ( ) ;
yield this . plugin . betaPlugins . displayAddNewPluginModal ( true ) ;
} ) ) ;
} ) ;
for ( const bp of this . plugin . settings . pluginList ) {
new import _obsidian . Setting ( containerEl ) . setName ( bp ) . addButton ( ( btn ) => {
btn . setIcon ( "cross" ) ;
btn . setTooltip ( "Delete this beta plugin" ) ;
btn . onClick ( ( ) => _ _async ( this , null , function * ( ) {
if ( btn . buttonEl . textContent === "" )
btn . setButtonText ( "Click once more to confirm removal" ) ;
else {
btn . buttonEl . parentElement . parentElement . remove ( ) ;
yield this . plugin . betaPlugins . deletePlugin ( bp ) ;
}
} ) ) ;
} ) ;
}
}
} ;
// src/settings.ts
var DEFAULT _SETTINGS = {
pluginList : [ ] ,
updateAtStartup : false
} ;
function addBetaPluginToList ( plugin , repositoryPath ) {
return _ _async ( this , null , function * ( ) {
if ( ! plugin . settings . pluginList . contains ( repositoryPath ) ) {
plugin . settings . pluginList . unshift ( repositoryPath ) ;
plugin . saveSettings ( ) ;
}
} ) ;
}
function existBetaPluginInList ( plugin , repositoryPath ) {
return _ _async ( this , null , function * ( ) {
return plugin . settings . pluginList . contains ( repositoryPath ) ;
} ) ;
}
// src/AddNewPluginModal.ts
var import _obsidian2 = _ _toModule ( require ( "obsidian" ) ) ;
var AddNewPluginModal = class extends import _obsidian2 . Modal {
constructor ( plugin , betaPlugins , openSettingsTabAfterwards = false ) {
super ( plugin . app ) ;
this . plugin = plugin ;
this . betaPlugins = betaPlugins ;
this . address = "" ;
this . openSettingsTabAfterwards = openSettingsTabAfterwards ;
}
submitForm ( ) {
return _ _async ( this , null , function * ( ) {
if ( this . address === "" )
return ;
const scrubbedAddress = this . address . replace ( "https://github.com/" , "" ) ;
if ( yield existBetaPluginInList ( this . plugin , scrubbedAddress ) ) {
new import _obsidian2 . Notice ( ` BRAT
This plugin is already in the list for beta testing ` , 1e4);
return ;
}
const result = yield this . betaPlugins . addPlugin ( scrubbedAddress ) ;
if ( result ) {
this . close ( ) ;
}
} ) ;
}
onOpen ( ) {
this . contentEl . createEl ( "h4" , { text : "Github repository for beta plugin:" } ) ;
this . contentEl . createEl ( "form" , { } , ( formEl ) => {
new import _obsidian2 . Setting ( formEl ) . addText ( ( textEl ) => {
textEl . setPlaceholder ( "Repository (example: TfTHacker/obsidian-brat" ) ;
textEl . onChange ( ( value ) => {
this . address = value . trim ( ) ;
} ) ;
textEl . inputEl . addEventListener ( "keydown" , ( e ) => _ _async ( this , null , function * ( ) {
if ( e . key === "Enter" && this . address !== " " ) {
e . preventDefault ( ) ;
yield this . submitForm ( ) ;
}
} ) ) ;
textEl . inputEl . style . width = "100%" ;
window . setTimeout ( ( ) => {
const title = document . querySelector ( ".setting-item-info" ) ;
if ( title )
title . remove ( ) ;
textEl . inputEl . focus ( ) ;
} , 10 ) ;
} ) ;
formEl . createDiv ( "modal-button-container" , ( buttonContainerEl ) => {
buttonContainerEl . createEl ( "button" , { attr : { type : "button" } , text : "Never mind" } ) . addEventListener ( "click" , ( ) => this . close ( ) ) ;
buttonContainerEl . createEl ( "button" , {
attr : { type : "submit" } ,
cls : "mod-cta" ,
text : "Add Plugin"
} ) ;
} ) ;
formEl . addEventListener ( "submit" , ( e ) => _ _async ( this , null , function * ( ) {
e . preventDefault ( ) ;
if ( this . address !== "" )
yield this . submitForm ( ) ;
} ) ) ;
} ) ;
}
onClose ( ) {
return _ _async ( this , null , function * ( ) {
if ( this . openSettingsTabAfterwards ) {
yield this . plugin . app . setting . open ( ) ;
yield this . plugin . app . setting . openTabById ( "obsidian42-brat" ) ;
}
} ) ;
}
} ;
// src/githubUtils.ts
var import _obsidian3 = _ _toModule ( require ( "obsidian" ) ) ;
var GITHUB _RAW _USERCONTENT _PATH = "https://raw.githubusercontent.com/" ;
var grabReleaseFileFromRepository = ( repository , version , fileName ) => _ _async ( void 0 , null , function * ( ) {
const URL = ` https://github.com/ ${ repository } /releases/download/ ${ version } / ${ fileName } ` ;
try {
const download = yield ( 0 , import _obsidian3 . request ) ( { url : URL } ) ;
return download === "Not Found" || download === ` {"error":"Not Found"} ` ? null : download ;
} catch ( error ) {
console . log ( "error in grabReleaseFileFromRepository" , URL , error ) ;
}
} ) ;
var grabManifestJsonFromRepository = ( repositoryPath , rootManifest = true ) => _ _async ( void 0 , null , function * ( ) {
const manifestJsonPath = GITHUB _RAW _USERCONTENT _PATH + repositoryPath + ( rootManifest === true ? "/HEAD/manifest.json" : "/HEAD/manifest-beta.json" ) ;
try {
const response = yield ( 0 , import _obsidian3 . request ) ( { url : manifestJsonPath } ) ;
return response === "404: Not Found" ? null : yield JSON . parse ( response ) ;
} catch ( error ) {
console . log ( ` error in grabManifestJsonFromRepository for ${ manifestJsonPath } ` , error ) ;
}
} ) ;
var grabCommmunityPluginList = ( ) => _ _async ( void 0 , null , function * ( ) {
const pluginListURL = ` https://raw.githubusercontent.com/obsidianmd/obsidian-releases/HEAD/community-plugins.json ` ;
try {
const response = yield ( 0 , import _obsidian3 . request ) ( { url : pluginListURL } ) ;
return response === "404: Not Found" ? null : yield JSON . parse ( response ) ;
} catch ( error ) {
console . log ( "error in grabCommmunityPluginList" , error ) ;
}
} ) ;
// src/BetaPlugins.ts
var import _obsidian4 = _ _toModule ( require ( "obsidian" ) ) ;
var BetaPlugins = class {
constructor ( plugin ) {
this . plugin = plugin ;
}
displayAddNewPluginModal ( openSettingsTabAfterwards = false ) {
return _ _async ( this , null , function * ( ) {
const newPlugin = new AddNewPluginModal ( this . plugin , this , openSettingsTabAfterwards ) ;
newPlugin . open ( ) ;
} ) ;
}
validateRepository ( repositoryPath , getBetaManifest = false , reportIsues = false ) {
return _ _async ( this , null , function * ( ) {
const noticeTimeout = 15e3 ;
const manifestJson = yield grabManifestJsonFromRepository ( repositoryPath , ! getBetaManifest ) ;
if ( ! manifestJson ) {
if ( reportIsues )
new import _obsidian4 . Notice ( ` BRAT
$ { repositoryPath }
This does not seem to be an obsidian plugin , as there is no manifest . json file . ` , noticeTimeout);
return null ;
}
if ( ! ( "id" in manifestJson ) ) {
if ( reportIsues )
new import _obsidian4 . Notice ( ` BRAT
$ { repositoryPath }
The plugin id attribute for the release is missing from the manifest file ` , noticeTimeout);
return null ;
}
if ( ! ( "version" in manifestJson ) ) {
if ( reportIsues )
new import _obsidian4 . Notice ( ` BRAT
$ { repositoryPath }
The version attribute for the release is missing from the manifest file ` , noticeTimeout);
return null ;
}
return manifestJson ;
} ) ;
}
getAllReleaseFiles ( repositoryPath , manifest , getManifest ) {
return _ _async ( this , null , function * ( ) {
return {
mainJs : yield grabReleaseFileFromRepository ( repositoryPath , manifest . version , "main.js" ) ,
manifest : getManifest ? yield grabReleaseFileFromRepository ( repositoryPath , manifest . version , "manifest.json" ) : null ,
styles : yield grabReleaseFileFromRepository ( repositoryPath , manifest . version , "styles.css" )
} ;
} ) ;
}
writeReleaseFilesToPluginFolder ( betaPluginID , relFiles ) {
return _ _async ( this , null , function * ( ) {
const pluginTargetFolderPath = ( 0 , import _obsidian4 . normalizePath ) ( this . plugin . app . vault . configDir + "/plugins/" + betaPluginID ) + "/" ;
const adapter = this . plugin . app . vault . adapter ;
if ( ( yield adapter . exists ( pluginTargetFolderPath ) ) === false || ! ( yield adapter . exists ( pluginTargetFolderPath + "manifest.json" ) ) ) {
yield adapter . mkdir ( pluginTargetFolderPath ) ;
}
yield adapter . write ( pluginTargetFolderPath + "main.js" , relFiles . mainJs ) ;
yield adapter . write ( pluginTargetFolderPath + "manifest.json" , relFiles . manifest ) ;
if ( relFiles . styles )
yield adapter . write ( pluginTargetFolderPath + "styles.css" , relFiles . styles ) ;
} ) ;
}
addPlugin ( repositoryPath , updatePluginFiles = false , seeIfUpdatedOnly = false , reportIfNotUpdted = false ) {
return _ _async ( this , null , function * ( ) {
var _a ;
const noticeTimeout = 1e4 ;
let primaryManifest = yield this . validateRepository ( repositoryPath , true , false ) ;
const usingBetaManifest = primaryManifest ? true : false ;
if ( usingBetaManifest === false )
primaryManifest = yield this . validateRepository ( repositoryPath , false , true ) ;
if ( primaryManifest === null ) {
new import _obsidian4 . Notice ( ` BRAT
$ { repositoryPath }
A manifest . json or manifest - beta . json file does not exist in the root directory of the repository . This plugin cannot be installed . ` , noticeTimeout);
return false ;
}
if ( ! primaryManifest . hasOwnProperty ( "version" ) ) {
new import _obsidian4 . Notice ( ` BRAT
$ { repositoryPath }
The manifest$ { usingBetaManifest ? "-beta" : "" } . json file in the root directory of the repository does not have a version number in the file . This plugin cannot be installed . ` , noticeTimeout);
return false ;
}
const getRelease = ( ) => _ _async ( this , null , function * ( ) {
const rFiles = yield this . getAllReleaseFiles ( repositoryPath , primaryManifest , usingBetaManifest ) ;
if ( usingBetaManifest || rFiles . manifest === null )
rFiles . manifest = JSON . stringify ( primaryManifest ) ;
if ( rFiles . mainJs === null ) {
new import _obsidian4 . Notice ( ` BRAT
$ { repositoryPath }
The release is not complete and cannot be download . main . js is missing from the Release ` , noticeTimeout);
return null ;
}
return rFiles ;
} ) ;
if ( updatePluginFiles === false ) {
const releaseFiles = yield getRelease ( ) ;
if ( releaseFiles === null )
return ;
yield this . writeReleaseFilesToPluginFolder ( primaryManifest . id , releaseFiles ) ;
yield addBetaPluginToList ( this . plugin , repositoryPath ) ;
yield this . plugin . app . plugins . loadManifests ( ) ;
new import _obsidian4 . Notice ( ` BRAT
$ { repositoryPath }
The plugin has been registered with BRAT . You may still need to enable it the Community Plugin List . ` , noticeTimeout);
} else {
const pluginTargetFolderPath = this . plugin . app . vault . configDir + "/plugins/" + primaryManifest . id + "/" ;
let localManifestContents = null ;
try {
localManifestContents = yield this . plugin . app . vault . adapter . read ( pluginTargetFolderPath + "manifest.json" ) ;
} catch ( e ) {
if ( e . errno === - 4058 ) {
yield this . addPlugin ( repositoryPath , false , usingBetaManifest ) ;
return true ;
} else
console . log ( "BRAT - Local Manifest Load" , primaryManifest . id , JSON . stringify ( e , null , 2 ) ) ;
}
const localManifestJSON = yield JSON . parse ( localManifestContents ) ;
if ( localManifestJSON . version !== primaryManifest . version ) {
const releaseFiles = yield getRelease ( ) ;
if ( releaseFiles === null )
return ;
if ( seeIfUpdatedOnly ) {
new import _obsidian4 . Notice ( ` BRAT
There is an update available for $ { primaryManifest . id } from version $ { localManifestJSON . version } to $ { primaryManifest . version } ` , 3e4);
} else {
yield this . writeReleaseFilesToPluginFolder ( primaryManifest . id , releaseFiles ) ;
yield this . plugin . app . plugins . loadManifests ( ) ;
if ( ( _a = this . plugin . app . plugins . plugins [ primaryManifest . id ] ) == null ? void 0 : _a . manifest )
yield this . reloadPlugin ( primaryManifest . id ) ;
new import _obsidian4 . Notice ( ` BRAT
$ { primaryManifest . id }
Plugin has been updated from version $ { localManifestJSON . version } to $ { primaryManifest . version } . ` , 3e4);
}
} else if ( reportIfNotUpdted )
new import _obsidian4 . Notice ( ` BRAT
No update available for $ { repositoryPath } ` , 3e3);
}
return true ;
} ) ;
}
reloadPlugin ( pluginName ) {
return _ _async ( this , null , function * ( ) {
const plugins = this . plugin . app . plugins ;
try {
yield plugins . disablePlugin ( pluginName ) ;
yield plugins . enablePlugin ( pluginName ) ;
} catch ( e ) {
console . log ( "reload plugin" , e ) ;
}
} ) ;
}
updatePlugin ( repositoryPath , onlyCheckDontUpdate = false , reportIfNotUpdted = false ) {
return _ _async ( this , null , function * ( ) {
const result = yield this . addPlugin ( repositoryPath , true , onlyCheckDontUpdate , reportIfNotUpdted ) ;
if ( result === false && onlyCheckDontUpdate === false )
new import _obsidian4 . Notice ( ` BRAT
$ { repositoryPath }
Update of plugin failed . ` );
return result ;
} ) ;
}
checkForUpdatesAndInstallUpdates ( showInfo = false , onlyCheckDontUpdate = false ) {
return _ _async ( this , null , function * ( ) {
if ( showInfo )
new import _obsidian4 . Notice ( ` BRAT
Checking for plugin updates STARTED ` , 1e4);
for ( const bp of this . plugin . settings . pluginList ) {
yield this . updatePlugin ( bp , onlyCheckDontUpdate ) ;
}
if ( showInfo )
new import _obsidian4 . Notice ( ` BRAT
Checking for plugin updates COMPLETED ` , 1e4);
} ) ;
}
deletePlugin ( repositoryPath ) {
return _ _async ( this , null , function * ( ) {
this . plugin . settings . pluginList = this . plugin . settings . pluginList . filter ( ( b ) => b != repositoryPath ) ;
this . plugin . saveSettings ( ) ;
} ) ;
}
getEnabledDisabledPlugins ( enabled ) {
const pl = this . plugin . app . plugins ;
const manifests = Object . values ( pl . manifests ) ;
const enabledPlugins = Object . values ( pl . plugins ) . map ( ( p ) => p . manifest ) ;
console . log ( enabledPlugins ) ;
return enabled ? manifests . filter ( ( manifest ) => enabledPlugins . find ( ( pluginName ) => manifest . id === pluginName . id ) ) : manifests . filter ( ( manifest ) => ! enabledPlugins . find ( ( pluginName ) => manifest . id === pluginName . id ) ) ;
}
} ;
// src/GenericFuzzySuggester.ts
var import _obsidian5 = _ _toModule ( require ( "obsidian" ) ) ;
var GenericFuzzySuggester = class extends import _obsidian5 . FuzzySuggestModal {
constructor ( plugin ) {
super ( plugin . app ) ;
this . scope . register ( [ "Shift" ] , "Enter" , ( evt ) => this . enterTrigger ( evt ) ) ;
this . scope . register ( [ "Ctrl" ] , "Enter" , ( evt ) => this . enterTrigger ( evt ) ) ;
}
setSuggesterData ( suggesterData ) {
this . data = suggesterData ;
}
display ( callBack ) {
return _ _async ( this , null , function * ( ) {
this . callbackFunction = callBack ;
this . open ( ) ;
} ) ;
}
getItems ( ) {
return this . data ;
}
getItemText ( item ) {
return item . display ;
}
onChooseItem ( ) {
return ;
}
renderSuggestion ( item , el ) {
el . createEl ( "div" , { text : item . item . display } ) ;
}
enterTrigger ( evt ) {
const selectedText = document . querySelector ( ".suggestion-item.is-selected div" ) . textContent ;
const item = this . data . find ( ( i ) => i . display === selectedText ) ;
if ( item ) {
this . invokeCallback ( item , evt ) ;
this . close ( ) ;
}
}
onChooseSuggestion ( item , evt ) {
this . invokeCallback ( item . item , evt ) ;
}
invokeCallback ( item , evt ) {
this . callbackFunction ( item , evt ) ;
}
} ;
// src/main.ts
var ThePlugin = class extends import _obsidian6 . Plugin {
constructor ( ) {
super ( ... arguments ) ;
this . appName = "Obsidian42 - Beta Reviewer's Auto-update Tool (BRAT)" ;
this . appID = "obsidian42-brat" ;
}
onload ( ) {
return _ _async ( this , null , function * ( ) {
console . log ( "loading Obsidian42 - BRAT" ) ;
yield this . loadSettings ( ) ;
this . addSettingTab ( new SettingsTab ( this . app , this ) ) ;
this . betaPlugins = new BetaPlugins ( this ) ;
this . addCommand ( {
id : "BRAT-AddBetaPlugin" ,
name : "Add a beta plugin for testing" ,
callback : ( ) => _ _async ( this , null , function * ( ) {
yield this . betaPlugins . displayAddNewPluginModal ( ) ;
} )
} ) ;
this . addCommand ( {
id : "BRAT-checkForUpdatesAndUpdate" ,
name : "Check for updates to all beta plugins and UPDATE" ,
callback : ( ) => _ _async ( this , null , function * ( ) {
yield this . betaPlugins . checkForUpdatesAndInstallUpdates ( true , false ) ;
} )
} ) ;
this . addCommand ( {
id : "BRAT-checkForUpdatesAndDontUpdate" ,
name : "Only check for updates to beta plugins, but don't Update" ,
callback : ( ) => _ _async ( this , null , function * ( ) {
yield this . betaPlugins . checkForUpdatesAndInstallUpdates ( true , true ) ;
} )
} ) ;
this . addCommand ( {
id : "BRAT-updateOnePlugin" ,
name : "Choose a single plugin to update" ,
callback : ( ) => _ _async ( this , null , function * ( ) {
const pluginList = Object . values ( this . settings . pluginList ) . map ( ( m ) => {
return { display : m , info : m } ;
} ) ;
const gfs = new GenericFuzzySuggester ( this ) ;
gfs . setSuggesterData ( pluginList ) ;
yield gfs . display ( ( results ) => _ _async ( this , null , function * ( ) {
new import _obsidian6 . Notice ( ` BRAT
Checking for updates for $ { results . info } ` , 3e3);
yield this . betaPlugins . updatePlugin ( results . info , false , true ) ;
} ) ) ;
} )
} ) ;
this . addCommand ( {
id : "BRAT-restartPlugin" ,
name : "Restart a plugin that is already installed" ,
callback : ( ) => _ _async ( this , null , function * ( ) {
const pluginList = Object . values ( this . app . plugins . manifests ) . map ( ( m ) => {
return { display : m . id , info : m . id } ;
} ) ;
const gfs = new GenericFuzzySuggester ( this ) ;
gfs . setSuggesterData ( pluginList ) ;
yield gfs . display ( ( results ) => _ _async ( this , null , function * ( ) {
new import _obsidian6 . Notice ( ` ${ results . info }
Plugin reloading ... . . ` , 5e3);
yield this . betaPlugins . reloadPlugin ( results . info ) ;
} ) ) ;
} )
} ) ;
this . addCommand ( {
id : "BRAT-openGitHubRepository" ,
name : "Open the GitHub repository for a plugin" ,
callback : ( ) => _ _async ( this , null , function * ( ) {
const communityPlugins = yield grabCommmunityPluginList ( ) ;
const communityPluginList = Object . values ( communityPlugins ) . map ( ( p ) => {
return { display : ` Community: ${ p . name } ( ${ p . repo } ) ` , info : p . repo } ;
} ) ;
const bratList = Object . values ( this . settings . pluginList ) . map ( ( p ) => {
return { display : "BRAT: " + p , info : p } ;
} ) ;
communityPluginList . forEach ( ( si ) => bratList . push ( si ) ) ;
const gfs = new GenericFuzzySuggester ( this ) ;
gfs . setSuggesterData ( bratList ) ;
yield gfs . display ( ( results ) => _ _async ( this , null , function * ( ) {
if ( results . info )
window . open ( ` https://github.com/ ${ results . info } ` ) ;
} ) ) ;
} )
} ) ;
this . addCommand ( {
id : "BRAT-disablePlugin" ,
name : "Disable a plugin - toggle it off" ,
callback : ( ) => _ _async ( this , null , function * ( ) {
const pluginList = this . betaPlugins . getEnabledDisabledPlugins ( true ) . map ( ( manifest ) => {
return { display : ` ${ manifest . name } ( ${ manifest . id } ) ` , info : manifest . id } ;
} ) ;
const gfs = new GenericFuzzySuggester ( this ) ;
gfs . setSuggesterData ( pluginList ) ;
yield gfs . display ( ( results ) => _ _async ( this , null , function * ( ) {
yield this . app . plugins . disablePlugin ( results . info ) ;
} ) ) ;
} )
} ) ;
this . addCommand ( {
id : "BRAT-enablePlugin" ,
name : "Enable a plugin - toggle it on" ,
callback : ( ) => _ _async ( this , null , function * ( ) {
const pluginList = this . betaPlugins . getEnabledDisabledPlugins ( false ) . map ( ( manifest ) => {
return { display : ` ${ manifest . name } ( ${ manifest . id } ) ` , info : manifest . id } ;
} ) ;
const gfs = new GenericFuzzySuggester ( this ) ;
gfs . setSuggesterData ( pluginList ) ;
yield gfs . display ( ( results ) => _ _async ( this , null , function * ( ) {
yield this . app . plugins . enablePlugin ( results . info ) ;
} ) ) ;
} )
} ) ;
this . app . workspace . onLayoutReady ( ( ) => {
if ( this . settings . updateAtStartup )
setTimeout ( ( ) => _ _async ( this , null , function * ( ) {
yield this . betaPlugins . checkForUpdatesAndInstallUpdates ( false ) ;
} ) , 6e4 ) ;
} ) ;
} ) ;
}
onunload ( ) {
console . log ( "unloading " + this . appName ) ;
}
loadSettings ( ) {
return _ _async ( this , null , function * ( ) {
this . settings = Object . assign ( { } , DEFAULT _SETTINGS , yield this . loadData ( ) ) ;
} ) ;
}
saveSettings ( ) {
return _ _async ( this , null , function * ( ) {
yield this . saveData ( this . settings ) ;
} ) ;
}
} ;