Separate componentType to its own file
This commit is contained in:
parent
3397771a85
commit
fdbe5a664f
|
@ -36,7 +36,7 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@jenkins-cd/design-language": "0.0.60",
|
||||
"@jenkins-cd/js-extensions": "0.0.19-beta-1",
|
||||
"@jenkins-cd/js-extensions": "0.0.19-beta-2",
|
||||
"@jenkins-cd/js-modules": "0.0.5",
|
||||
"@jenkins-cd/sse-gateway": "0.0.5",
|
||||
"immutable": "3.8.1",
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@jenkins-cd/design-language": "0.0.60",
|
||||
"@jenkins-cd/js-extensions": "0.0.19-beta-1",
|
||||
"@jenkins-cd/js-extensions": "0.0.19-beta-2",
|
||||
"@jenkins-cd/js-modules": "0.0.5",
|
||||
"history": "2.0.2",
|
||||
"immutable": "3.8.1",
|
||||
|
|
|
@ -9,7 +9,9 @@ exports.dataType = function dataType(dataType) { return exports.classMetadataSto
|
|||
|
||||
exports.untyped = function untyped() { return exports.classMetadataStore.untyped(); };
|
||||
|
||||
exports.componentType = function componentType(componentType) { return exports.classMetadataStore.componentType(componentType); };
|
||||
exports.isType = require('./dist/ComponentTypeFilter.js').isType;
|
||||
|
||||
exports.componentType = require('./dist/ComponentTypeFilter.js').componentType;
|
||||
|
||||
exports.init = function init(args) {
|
||||
exports.classMetadataStore.init(args.classMetadataProvider);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@jenkins-cd/js-extensions",
|
||||
"version": "0.0.19-beta-1",
|
||||
"version": "0.0.19-beta-2",
|
||||
"description": "Jenkins Extension Store",
|
||||
"main": "index.js",
|
||||
"files": [
|
||||
|
|
|
@ -2,6 +2,7 @@ var jsTest = require('@jenkins-cd/js-test');
|
|||
var expect = require('chai').expect;
|
||||
var ExtensionStore = require('../dist/ExtensionStore').ExtensionStore;
|
||||
var ClassMetadataStore = require('../dist/ClassMetadataStore').instance;
|
||||
var componentType = require('../dist/ComponentTypeFilter').componentType;
|
||||
var javaScriptExtensionInfo = require('./javaScriptExtensionInfo-01.json');
|
||||
|
||||
// js modules calling console.debug
|
||||
|
@ -262,22 +263,22 @@ describe("ExtensionStore.js", function () {
|
|||
classMetadataStore: makeClassMetadataStore(function(type, cb) { cb({}); })
|
||||
});
|
||||
|
||||
extensionStore.getExtensions('ep-3', [ClassMetadataStore.componentType(PretendComponent1)], function(extensions) {
|
||||
extensionStore.getExtensions('ep-3', [componentType(PretendComponent1)], function(extensions) {
|
||||
expect(extensions.length).to.equal(1);
|
||||
expect(extensions).to.include.members([PretendComponent1]);
|
||||
});
|
||||
|
||||
extensionStore.getExtensions('ep-3', [ClassMetadataStore.componentType(PretendComponent2)], function(extensions) {
|
||||
extensionStore.getExtensions('ep-3', [componentType(PretendComponent2)], function(extensions) {
|
||||
expect(extensions.length).to.equal(1);
|
||||
expect(extensions).to.include.members([PretendComponent2]);
|
||||
});
|
||||
|
||||
extensionStore.getExtensions('ep-3', [ClassMetadataStore.componentType(PretendReactClass)], function(extensions) {
|
||||
extensionStore.getExtensions('ep-3', [componentType(PretendReactClass)], function(extensions) {
|
||||
expect(extensions.length).to.equal(2);
|
||||
expect(extensions).to.include.members([PretendComponent1, PretendComponent2]);
|
||||
});
|
||||
|
||||
extensionStore.getExtensions('ep-3', [ClassMetadataStore.componentType(PretendReactClass), ClassMetadataStore.componentType(PretendComponent1)], function(extensions) {
|
||||
extensionStore.getExtensions('ep-3', [componentType(PretendReactClass), componentType(PretendComponent1)], function(extensions) {
|
||||
expect(extensions.length).to.equal(1);
|
||||
expect(extensions).to.include.members([PretendComponent1]);
|
||||
});
|
||||
|
|
|
@ -34,46 +34,6 @@ export class ClassMetadataStore {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Tries to determine if the objectToTest is of the given type.
|
||||
* Will normalize things like String/'string' inconsistencies
|
||||
* as well as ES6 class & traditional prototype inheritance.
|
||||
* NOTE: This ALSO tests the prototype hierarchy if objectToTest
|
||||
* is a Function.
|
||||
*/
|
||||
static isType(objectToTest, type) {
|
||||
var o = objectToTest;
|
||||
if (typeof o === type) {
|
||||
return true;
|
||||
}
|
||||
if (type === String || type === 'string') {
|
||||
return o instanceof String;
|
||||
}
|
||||
if (type === Function || type === 'function') {
|
||||
return o instanceof Function;
|
||||
}
|
||||
if (type === Object || type === 'object') {
|
||||
return o instanceof Object;
|
||||
}
|
||||
if (objectToTest instanceof Function) {
|
||||
var proto = objectToTest;
|
||||
while (proto) {
|
||||
if (proto === type) {
|
||||
return true;
|
||||
}
|
||||
proto = Object.getPrototypeOf(proto);
|
||||
}
|
||||
}
|
||||
return objectToTest instanceof type;
|
||||
}
|
||||
|
||||
componentType(componentType) {
|
||||
return (extensions, onload) => {
|
||||
extensions = extensions.filter(e => ClassMetadataStore.isType(e.instance, componentType));
|
||||
onload(extensions);
|
||||
};
|
||||
}
|
||||
|
||||
dataType(dataType) {
|
||||
return (extensions, onload) => {
|
||||
if (dataType && typeof(dataType) === 'object'
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
/**
|
||||
* Tries to determine if the objectToTest is of the given type.
|
||||
* Will normalize things like String/'string' inconsistencies
|
||||
* as well as ES6 class & traditional prototype inheritance.
|
||||
* NOTE: This ALSO tests the prototype hierarchy if objectToTest
|
||||
* is a Function.
|
||||
*/
|
||||
export function isType(objectToTest, type) {
|
||||
var o = objectToTest;
|
||||
if (typeof o === type) {
|
||||
return true;
|
||||
}
|
||||
if (type === String || type === 'string') {
|
||||
return o instanceof String;
|
||||
}
|
||||
if (type === Function || type === 'function') {
|
||||
return o instanceof Function;
|
||||
}
|
||||
if (type === Object || type === 'object') {
|
||||
return o instanceof Object;
|
||||
}
|
||||
if (objectToTest instanceof Function) {
|
||||
var proto = objectToTest;
|
||||
while (proto) {
|
||||
if (proto === type) {
|
||||
return true;
|
||||
}
|
||||
proto = Object.getPrototypeOf(proto);
|
||||
}
|
||||
}
|
||||
return objectToTest instanceof type;
|
||||
}
|
||||
|
||||
export function componentType(componentType) {
|
||||
return (extensions, onload) => {
|
||||
extensions = extensions.filter(e => isType(e.instance, componentType));
|
||||
onload(extensions);
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue