@valo/extensibility
Advanced tools
Comparing version 1.0.0 to 1.1.0-cb44bb3ea54c3b9e8ba38d8ebddb2a3cc82f4899
import { ExtensionService, TriggerService, ProviderService, DataSourceService } from '..'; | ||
export interface ExtensibilityWindow extends Window { | ||
export interface ExtensibilityWindow<T> extends Window { | ||
ValoExtensionPoints: ExtensionService; | ||
ValoExtensionTriggers: TriggerService; | ||
ValoExtensionProviders: ProviderService; | ||
ValoExtensionProviders: ProviderService<T>; | ||
ValoExtensionDataSource: DataSourceService; | ||
} |
@@ -5,9 +5,10 @@ export * from './DataSource'; | ||
export * from './ExtensionPoint'; | ||
export * from './ExtensionProvider'; | ||
export * from './ExtensionTrigger'; | ||
export * from './ExtensionProvider'; | ||
export * from './IBaseDataSourceProvider'; | ||
export * from './IUserProperties'; | ||
export * from './UnbindedDataSource'; | ||
export * from './UnbindedDefer'; | ||
export * from './UnbindedExtensionPoint'; | ||
export * from './UnbindedExtensionProvider'; | ||
export * from './UnbindedExtensionTrigger'; | ||
export * from './IUserProperties'; | ||
export * from './IBaseDataSourceProvider'; |
@@ -1,5 +0,5 @@ | ||
import { IntranetProvider } from '..'; | ||
export interface UnbindedExtensionProvider { | ||
import { IntranetProvider, UnbindedDefer } from '..'; | ||
export interface UnbindedExtensionProvider<T> { | ||
provider: IntranetProvider; | ||
callback: (instance: any) => void; | ||
defer: UnbindedDefer<T>; | ||
} |
import { ExtensionProvider, IntranetProvider } from '..'; | ||
export declare class ProviderService { | ||
export declare class ProviderService<T> { | ||
private providers; | ||
@@ -8,3 +8,3 @@ private unbindedProviders; | ||
*/ | ||
static getInstance(): ProviderService; | ||
static getInstance<T>(): ProviderService<any>; | ||
/** | ||
@@ -15,3 +15,3 @@ * Register the extension provider {internal} that implements interface T | ||
*/ | ||
registerProviderListener<T>(extProvider: ExtensionProvider<T>): void; | ||
registerProviderListener(extProvider: ExtensionProvider<T>): void; | ||
/** | ||
@@ -21,5 +21,4 @@ * Use this to register your listener {external} | ||
* @param {IntranetProvider} providerType - The provider type | ||
* @param {Function} updateRegistrationCb - Callback function when extension is ready | ||
*/ | ||
registerProvider<T>(providerType: IntranetProvider, updateRegistrationCb: (provider: ExtensionProvider<T>) => void): void; | ||
getProvider(providerType: IntranetProvider): Promise<ExtensionProvider<T>>; | ||
/** | ||
@@ -30,3 +29,9 @@ * Use this to retrieve already binded trigger listeners | ||
*/ | ||
getProvider<T>(providerType: IntranetProvider): ExtensionProvider<T> | null; | ||
private getBindedProvider; | ||
/** | ||
* Creates the provider promise | ||
* | ||
* @param providerType | ||
*/ | ||
private providerPromise; | ||
} |
@@ -41,3 +41,4 @@ "use strict"; | ||
var crntProvider = crntUnbindedProviders_1[_i]; | ||
crntProvider.callback(this.getProvider(crntProvider.provider)); | ||
var provider = this.getBindedProvider(crntProvider.provider); | ||
crntProvider.defer.resolve(provider); | ||
// Find the index of the updated binding | ||
@@ -56,6 +57,5 @@ var ubdIdx = findIndex(this.unbindedProviders, function (ext) { return ext.provider === ext.provider; }); | ||
* @param {IntranetProvider} providerType - The provider type | ||
* @param {Function} updateRegistrationCb - Callback function when extension is ready | ||
*/ | ||
ProviderService.prototype.registerProvider = function (providerType, updateRegistrationCb) { | ||
var foundExt = this.getProvider(providerType); | ||
ProviderService.prototype.getProvider = function (providerType) { | ||
var foundExt = this.getBindedProvider(providerType); | ||
// Register the unbinded WP | ||
@@ -66,9 +66,11 @@ if (!foundExt) { | ||
if (unbindedWp) { | ||
unbindedWp.callback = updateRegistrationCb; | ||
return unbindedWp.defer.promise; | ||
} | ||
else { | ||
var defer = this.providerPromise(); | ||
this.unbindedProviders.push({ | ||
provider: providerType, | ||
callback: updateRegistrationCb | ||
defer: defer | ||
}); | ||
return defer.promise; | ||
} | ||
@@ -78,5 +80,3 @@ } | ||
// The trigger already existed, so call the callback | ||
if (updateRegistrationCb) { | ||
updateRegistrationCb(foundExt); | ||
} | ||
return Promise.resolve(foundExt); | ||
} | ||
@@ -89,7 +89,25 @@ }; | ||
*/ | ||
ProviderService.prototype.getProvider = function (providerType) { | ||
ProviderService.prototype.getBindedProvider = function (providerType) { | ||
return find(this.providers, function (ext) { return ext.type === providerType; }); | ||
}; | ||
/** | ||
* Creates the provider promise | ||
* | ||
* @param providerType | ||
*/ | ||
ProviderService.prototype.providerPromise = function () { | ||
var defer = { | ||
promise: null, | ||
resolve: null, | ||
reject: null | ||
}; | ||
var promise = new Promise(function (resolve, reject) { | ||
defer.resolve = resolve; | ||
defer.reject = reject; | ||
}); | ||
defer.promise = promise; | ||
return defer; | ||
}; | ||
return ProviderService; | ||
}()); | ||
exports.ProviderService = ProviderService; |
{ | ||
"name": "@valo/extensibility", | ||
"version": "1.0.0", | ||
"version": "1.1.0-cb44bb3ea54c3b9e8ba38d8ebddb2a3cc82f4899", | ||
"description": "", | ||
"main": "lib/index.js", | ||
"scripts": { | ||
"publish": "npm run tsc && npm publish --access=public", | ||
"publish": "npm run tsc && npm publish", | ||
"publish:next": "npm run tsc && npm publish --tag=next --access=public", | ||
@@ -24,2 +24,2 @@ "tsc": "rm -rf lib && tsc" | ||
} | ||
} | ||
} |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
34922
60
876
2