mirror of
https://github.com/ansible/awx.git
synced 2026-03-24 12:25:01 -02:30
Merge pull request #1 from gconsidine/275-delete-warnings
275 delete warnings
This commit is contained in:
@@ -45,6 +45,7 @@ module.exports = {
|
|||||||
ignoreTemplateLiterals: true,
|
ignoreTemplateLiterals: true,
|
||||||
}],
|
}],
|
||||||
'no-continue': 'off',
|
'no-continue': 'off',
|
||||||
|
'no-debugger': 'off',
|
||||||
'no-mixed-operators': 'off',
|
'no-mixed-operators': 'off',
|
||||||
'no-param-reassign': 'off',
|
'no-param-reassign': 'off',
|
||||||
'no-plusplus': 'off',
|
'no-plusplus': 'off',
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ function AddCredentialsController (models, $state, strings) {
|
|||||||
vm.form.save = data => {
|
vm.form.save = data => {
|
||||||
data.user = me.get('id');
|
data.user = me.get('id');
|
||||||
|
|
||||||
return credential.request('post', data);
|
return credential.request('post', { data });
|
||||||
};
|
};
|
||||||
|
|
||||||
vm.form.onSaveSuccess = res => {
|
vm.form.onSaveSuccess = res => {
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ function EditCredentialsController (models, $state, $scope, strings) {
|
|||||||
data.user = me.get('id');
|
data.user = me.get('id');
|
||||||
credential.unset('inputs');
|
credential.unset('inputs');
|
||||||
|
|
||||||
return credential.request('put', data);
|
return credential.request('put', { data });
|
||||||
};
|
};
|
||||||
|
|
||||||
vm.form.onSaveSuccess = () => {
|
vm.form.onSaveSuccess = () => {
|
||||||
|
|||||||
@@ -1,34 +1,46 @@
|
|||||||
let $http;
|
let $http;
|
||||||
let $q;
|
let $q;
|
||||||
let cache;
|
let cache;
|
||||||
|
let strings;
|
||||||
|
|
||||||
function request (method, resource) {
|
function request (method, resource, config) {
|
||||||
if (Array.isArray(method)) {
|
let req = this.parseRequestConfig(method, resource, config);
|
||||||
const promises = method.map((_method_, i) =>
|
|
||||||
this.request(_method_, Array.isArray(resource) ? resource[i] : resource));
|
if (Array.isArray(req.method)) {
|
||||||
|
const promises = req.method.map((_method, i) => {
|
||||||
|
const _resource = Array.isArray(req.resource) ? req.resource[i] : req.resource;
|
||||||
|
|
||||||
|
req = this.parseRequestConfig(_method, _resource, config);
|
||||||
|
|
||||||
|
if (this.isCacheable(req)) {
|
||||||
|
return this.requestWithCache(req);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.request(req);
|
||||||
|
});
|
||||||
|
|
||||||
return $q.all(promises);
|
return $q.all(promises);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.isCacheable(method, resource)) {
|
if (this.isCacheable(req)) {
|
||||||
return this.requestWithCache(method, resource);
|
return this.requestWithCache(req);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.http[method](resource);
|
return this.http[req.method](req);
|
||||||
}
|
}
|
||||||
|
|
||||||
function requestWithCache (method, resource) {
|
function requestWithCache (config) {
|
||||||
const key = cache.createKey(method, this.path, resource);
|
const key = cache.createKey(config.method, this.path, config.resource);
|
||||||
|
|
||||||
return cache.get(key)
|
return cache.get(key)
|
||||||
.then(data => {
|
.then(data => {
|
||||||
if (data) {
|
if (data) {
|
||||||
this.model[method.toUpperCase()] = data;
|
this.model[config.method.toUpperCase()] = data;
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.http[method](resource)
|
return this.http[config.method](config)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
cache.put(key, res.data);
|
cache.put(key, res.data);
|
||||||
|
|
||||||
@@ -77,22 +89,22 @@ function search (params, config) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function httpGet (resource, config) {
|
function httpGet (config = {}) {
|
||||||
const req = {
|
const req = {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
url: this.path
|
url: this.path
|
||||||
};
|
};
|
||||||
|
|
||||||
if (config && config.params) {
|
if (config.params) {
|
||||||
req.params = config.params;
|
req.params = config.params;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof resource === 'object') {
|
if (typeof config.resource === 'object') {
|
||||||
this.model.GET = resource;
|
this.model.GET = config.resource;
|
||||||
|
|
||||||
return $q.resolve();
|
return $q.resolve();
|
||||||
} else if (resource) {
|
} else if (config.resource) {
|
||||||
req.url = `${this.path}${resource}/`;
|
req.url = `${this.path}${config.resource}/`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $http(req)
|
return $http(req)
|
||||||
@@ -103,40 +115,51 @@ function httpGet (resource, config) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function httpPost (data) {
|
function httpPost (config = {}) {
|
||||||
const req = {
|
const req = {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
url: this.path,
|
url: this.path,
|
||||||
data
|
data: config.data
|
||||||
};
|
};
|
||||||
|
|
||||||
return $http(req).then(res => {
|
return $http(req)
|
||||||
this.model.GET = res.data;
|
.then(res => {
|
||||||
|
this.model.GET = res.data;
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function httpPut (changes) {
|
function httpPatch (config = {}) {
|
||||||
const model = Object.assign(this.get(), changes);
|
const req = {
|
||||||
|
method: 'PUT',
|
||||||
|
url: `${this.path}${this.get('id')}/`,
|
||||||
|
data: config.changes
|
||||||
|
};
|
||||||
|
|
||||||
|
return $http(req);
|
||||||
|
}
|
||||||
|
|
||||||
|
function httpPut (config = {}) {
|
||||||
|
const model = _.merge(this.get(), config.data);
|
||||||
|
|
||||||
const req = {
|
const req = {
|
||||||
method: 'PUT',
|
method: 'PUT',
|
||||||
url: `${this.path}${model.id}/`,
|
url: `${this.path}${this.get('id')}/`,
|
||||||
data: model
|
data: model
|
||||||
};
|
};
|
||||||
|
|
||||||
return $http(req).then(res => res);
|
return $http(req);
|
||||||
}
|
}
|
||||||
|
|
||||||
function httpOptions (resource) {
|
function httpOptions (config = {}) {
|
||||||
const req = {
|
const req = {
|
||||||
method: 'OPTIONS',
|
method: 'OPTIONS',
|
||||||
url: this.path
|
url: this.path
|
||||||
};
|
};
|
||||||
|
|
||||||
if (resource) {
|
if (config.resource) {
|
||||||
req.url = `${this.path}${resource}/`;
|
req.url = `${this.path}${config.resource}/`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $http(req)
|
return $http(req)
|
||||||
@@ -147,17 +170,17 @@ function httpOptions (resource) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function httpDelete (resource) {
|
function httpDelete (config = {}) {
|
||||||
const req = {
|
const req = {
|
||||||
method: 'DELETE',
|
method: 'DELETE',
|
||||||
url: this.path
|
url: this.path
|
||||||
};
|
};
|
||||||
|
|
||||||
if (resource) {
|
if (config.resource) {
|
||||||
req.url = `${this.path}${resource}/`;
|
req.url = `${this.path}${config.resource}/`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $http(req).then(res => res);
|
return $http(req);
|
||||||
}
|
}
|
||||||
|
|
||||||
function options (keys) {
|
function options (keys) {
|
||||||
@@ -367,29 +390,19 @@ function graft (id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getDependentResourceCounts (id) {
|
function getDependentResourceCounts (id) {
|
||||||
if (this.setDependentResources) {
|
this.setDependentResources(id);
|
||||||
this.setDependentResources(id);
|
|
||||||
} else {
|
|
||||||
return Promise.resolve([]);
|
|
||||||
}
|
|
||||||
|
|
||||||
const dependentResourcePromises = [];
|
const promises = [];
|
||||||
|
|
||||||
this.dependentResources.forEach(dependentResource => {
|
this.dependentResources.forEach(resource => {
|
||||||
const config = {};
|
promises.push(resource.model.request('get', resource.params)
|
||||||
|
.then(res => ({
|
||||||
if (dependentResource.params) {
|
label: resource.model.label,
|
||||||
config.params = dependentResource.params;
|
count: res.data.count
|
||||||
}
|
|
||||||
|
|
||||||
dependentResourcePromises.push(dependentResource.model.http.get(undefined, config)
|
|
||||||
.then((val) => ({
|
|
||||||
label: dependentResource.model.label,
|
|
||||||
count: val.data.count
|
|
||||||
})));
|
})));
|
||||||
});
|
});
|
||||||
|
|
||||||
return Promise.all(dependentResourcePromises);
|
return Promise.all(promises);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -401,20 +414,22 @@ function getDependentResourceCounts (id) {
|
|||||||
* @arg {string=} method - Populate the model with `GET` or `OPTIONS` data.
|
* @arg {string=} method - Populate the model with `GET` or `OPTIONS` data.
|
||||||
* @arg {(string|Object)=} resource - An `id` reference to a particular
|
* @arg {(string|Object)=} resource - An `id` reference to a particular
|
||||||
* resource or an existing model's data.
|
* resource or an existing model's data.
|
||||||
* @arg {boolean=} isGraft - Create a new instance from existing model data.
|
* @arg {config=} config - Create a new instance from existing model data.
|
||||||
*
|
*
|
||||||
* @returns {(Object|Promise)} - Returns a reference to the model instance
|
* @returns {(Object|Promise)} - Returns a reference to the model instance
|
||||||
* if an empty instance or graft is created. Otherwise, a promise yielding
|
* if an empty instance or graft is created. Otherwise, a promise yielding
|
||||||
* a model instance is returned.
|
* a model instance is returned.
|
||||||
*/
|
*/
|
||||||
function create (method, resource, isGraft, config) {
|
function create (method, resource, config) {
|
||||||
if (!method) {
|
const req = this.parseRequestConfig(method, resource, config);
|
||||||
|
|
||||||
|
if (!req || !req.method) {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.promise = this.request(method, resource, config);
|
this.promise = this.request(req);
|
||||||
|
|
||||||
if (isGraft) {
|
if (req.graft) {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -422,17 +437,51 @@ function create (method, resource, isGraft, config) {
|
|||||||
.then(() => this);
|
.then(() => this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function parseRequestConfig (method, resource, config) {
|
||||||
|
if (!method) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
let req = {};
|
||||||
|
|
||||||
|
if (Array.isArray(method)) {
|
||||||
|
if (Array.isArray(resource)) {
|
||||||
|
req.resource = resource;
|
||||||
|
} else if (typeof resource === 'object') {
|
||||||
|
req = resource;
|
||||||
|
}
|
||||||
|
|
||||||
|
req.method = method;
|
||||||
|
} else if (typeof method === 'string') {
|
||||||
|
if (typeof resource === 'object') {
|
||||||
|
req = resource;
|
||||||
|
} else {
|
||||||
|
req.resource = resource;
|
||||||
|
}
|
||||||
|
|
||||||
|
req.method = method;
|
||||||
|
} else if (typeof method === 'object') {
|
||||||
|
req = method;
|
||||||
|
} else {
|
||||||
|
req = config;
|
||||||
|
req.method = method;
|
||||||
|
req.resource = resource;
|
||||||
|
}
|
||||||
|
|
||||||
|
return req;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base functionality for API interaction.
|
* Base functionality for API interaction.
|
||||||
*
|
*
|
||||||
* @arg {string} path - The API resource for the model extending BaseModel to
|
* @arg {string} resource - The API resource for the model extending BaseModel to
|
||||||
* use.
|
* use.
|
||||||
* @arg {Object=} settings - Configuration applied to all instances of the
|
* @arg {Object=} settings - Configuration applied to all instances of the
|
||||||
* extending model.
|
* extending model.
|
||||||
* @arg {boolean=} settings.cache - Cache the model data.
|
* @arg {boolean=} settings.cache - Cache the model data.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function BaseModel (path, settings) {
|
function BaseModel (resource, settings) {
|
||||||
this.create = create;
|
this.create = create;
|
||||||
this.find = find;
|
this.find = find;
|
||||||
this.get = get;
|
this.get = get;
|
||||||
@@ -444,6 +493,7 @@ function BaseModel (path, settings) {
|
|||||||
this.match = match;
|
this.match = match;
|
||||||
this.normalizePath = normalizePath;
|
this.normalizePath = normalizePath;
|
||||||
this.options = options;
|
this.options = options;
|
||||||
|
this.parseRequestConfig = parseRequestConfig;
|
||||||
this.request = request;
|
this.request = request;
|
||||||
this.requestWithCache = requestWithCache;
|
this.requestWithCache = requestWithCache;
|
||||||
this.search = search;
|
this.search = search;
|
||||||
@@ -455,24 +505,27 @@ function BaseModel (path, settings) {
|
|||||||
this.http = {
|
this.http = {
|
||||||
get: httpGet.bind(this),
|
get: httpGet.bind(this),
|
||||||
options: httpOptions.bind(this),
|
options: httpOptions.bind(this),
|
||||||
|
patch: httpPatch.bind(this),
|
||||||
post: httpPost.bind(this),
|
post: httpPost.bind(this),
|
||||||
put: httpPut.bind(this),
|
put: httpPut.bind(this),
|
||||||
delete: httpDelete.bind(this)
|
delete: httpDelete.bind(this)
|
||||||
};
|
};
|
||||||
|
|
||||||
this.model = {};
|
this.model = {};
|
||||||
this.path = this.normalizePath(path);
|
this.path = this.normalizePath(resource);
|
||||||
|
this.label = strings.get(`${resource}.LABEL`);
|
||||||
this.settings = settings || {};
|
this.settings = settings || {};
|
||||||
}
|
}
|
||||||
|
|
||||||
function BaseModelLoader (_$http_, _$q_, _cache_) {
|
function BaseModelLoader (_$http_, _$q_, _cache_, ModelsStrings) {
|
||||||
$http = _$http_;
|
$http = _$http_;
|
||||||
$q = _$q_;
|
$q = _$q_;
|
||||||
cache = _cache_;
|
cache = _cache_;
|
||||||
|
strings = ModelsStrings;
|
||||||
|
|
||||||
return BaseModel;
|
return BaseModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
BaseModelLoader.$inject = ['$http', '$q', 'CacheService'];
|
BaseModelLoader.$inject = ['$http', '$q', 'CacheService', 'ModelsStrings'];
|
||||||
|
|
||||||
export default BaseModelLoader;
|
export default BaseModelLoader;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
let $log;
|
let $log;
|
||||||
let BaseModel;
|
let Base;
|
||||||
|
|
||||||
function getTruncatedVersion () {
|
function getTruncatedVersion () {
|
||||||
let version;
|
let version;
|
||||||
@@ -17,18 +17,18 @@ function isOpen () {
|
|||||||
return this.get('license_info.license_type') === 'open';
|
return this.get('license_info.license_type') === 'open';
|
||||||
}
|
}
|
||||||
|
|
||||||
function ConfigModel (method, resource, graft) {
|
function ConfigModel (method, resource, config) {
|
||||||
BaseModel.call(this, 'config', { cache: true });
|
Base.call(this, 'config', { cache: true });
|
||||||
|
|
||||||
this.Constructor = ConfigModel;
|
this.Constructor = ConfigModel;
|
||||||
this.getTruncatedVersion = getTruncatedVersion;
|
this.getTruncatedVersion = getTruncatedVersion;
|
||||||
this.isOpen = isOpen;
|
this.isOpen = isOpen;
|
||||||
|
|
||||||
return this.create(method, resource, graft);
|
return this.create(method, resource, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
function ConfigModelLoader (_BaseModel_, _$log_) {
|
function ConfigModelLoader (BaseModel, _$log_) {
|
||||||
BaseModel = _BaseModel_;
|
Base = BaseModel;
|
||||||
$log = _$log_;
|
$log = _$log_;
|
||||||
|
|
||||||
return ConfigModel;
|
return ConfigModel;
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
const ENCRYPTED_VALUE = '$encrypted$';
|
const ENCRYPTED_VALUE = '$encrypted$';
|
||||||
|
|
||||||
let BaseModel;
|
let Base;
|
||||||
let ProjectModel;
|
let Project;
|
||||||
let JobTemplateModel;
|
let JobTemplate;
|
||||||
let InventoryModel;
|
let Inventory;
|
||||||
let InventorySourceModel;
|
let InventorySource;
|
||||||
let ModelsStrings;
|
|
||||||
|
|
||||||
function createFormSchema (method, config) {
|
function createFormSchema (method, config) {
|
||||||
if (!config) {
|
if (!config) {
|
||||||
@@ -48,26 +47,26 @@ function assignInputGroupValues (inputs) {
|
|||||||
function setDependentResources (id) {
|
function setDependentResources (id) {
|
||||||
this.dependentResources = [
|
this.dependentResources = [
|
||||||
{
|
{
|
||||||
model: new ProjectModel(),
|
model: new Project(),
|
||||||
params: {
|
params: {
|
||||||
credential: id
|
credential: id
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
model: new JobTemplateModel(),
|
model: new JobTemplate(),
|
||||||
params: {
|
params: {
|
||||||
credential: id,
|
credential: id,
|
||||||
ask_credential_on_launch: false
|
ask_credential_on_launch: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
model: new InventoryModel(),
|
model: new Inventory(),
|
||||||
params: {
|
params: {
|
||||||
insights_credential: id
|
insights_credential: id
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
model: new InventorySourceModel(),
|
model: new InventorySource(),
|
||||||
params: {
|
params: {
|
||||||
credential: id
|
credential: id
|
||||||
}
|
}
|
||||||
@@ -75,32 +74,29 @@ function setDependentResources (id) {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
function CredentialModel (method, resource, graft) {
|
function CredentialModel (method, resource, config) {
|
||||||
BaseModel.call(this, 'credentials');
|
Base.call(this, 'credentials');
|
||||||
|
|
||||||
this.Constructor = CredentialModel;
|
this.Constructor = CredentialModel;
|
||||||
this.createFormSchema = createFormSchema.bind(this);
|
this.createFormSchema = createFormSchema.bind(this);
|
||||||
this.assignInputGroupValues = assignInputGroupValues.bind(this);
|
this.assignInputGroupValues = assignInputGroupValues.bind(this);
|
||||||
this.setDependentResources = setDependentResources.bind(this);
|
this.setDependentResources = setDependentResources.bind(this);
|
||||||
this.label = ModelsStrings.get('labels.CREDENTIAL');
|
|
||||||
|
|
||||||
return this.create(method, resource, graft);
|
return this.create(method, resource, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
function CredentialModelLoader (
|
function CredentialModelLoader (
|
||||||
_BaseModel_,
|
BaseModel,
|
||||||
_ProjectModel_,
|
ProjectModel,
|
||||||
_JobTemplateModel_,
|
JobTemplateModel,
|
||||||
_InventoryModel_,
|
InventoryModel,
|
||||||
_InventorySourceModel_,
|
InventorySourceModel
|
||||||
_ModelsStrings_
|
|
||||||
) {
|
) {
|
||||||
BaseModel = _BaseModel_;
|
Base = BaseModel;
|
||||||
ProjectModel = _ProjectModel_;
|
Project = ProjectModel;
|
||||||
JobTemplateModel = _JobTemplateModel_;
|
JobTemplate = JobTemplateModel;
|
||||||
InventoryModel = _InventoryModel_;
|
Inventory = InventoryModel;
|
||||||
InventorySourceModel = _InventorySourceModel_;
|
InventorySource = InventorySourceModel;
|
||||||
ModelsStrings = _ModelsStrings_;
|
|
||||||
|
|
||||||
return CredentialModel;
|
return CredentialModel;
|
||||||
}
|
}
|
||||||
@@ -110,8 +106,7 @@ CredentialModelLoader.$inject = [
|
|||||||
'ProjectModel',
|
'ProjectModel',
|
||||||
'JobTemplateModel',
|
'JobTemplateModel',
|
||||||
'InventoryModel',
|
'InventoryModel',
|
||||||
'InventorySourceModel',
|
'InventorySourceModel'
|
||||||
'ModelsStrings'
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export default CredentialModelLoader;
|
export default CredentialModelLoader;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
let BaseModel;
|
let Base;
|
||||||
let CredentialModel;
|
let Credential;
|
||||||
let ModelsStrings;
|
|
||||||
|
|
||||||
function categorizeByKind () {
|
function categorizeByKind () {
|
||||||
const group = {};
|
const group = {};
|
||||||
@@ -35,7 +34,7 @@ function mergeInputProperties () {
|
|||||||
function setDependentResources (id) {
|
function setDependentResources (id) {
|
||||||
this.dependentResources = [
|
this.dependentResources = [
|
||||||
{
|
{
|
||||||
model: new CredentialModel(),
|
model: new Credential(),
|
||||||
params: {
|
params: {
|
||||||
credential_type: id
|
credential_type: id
|
||||||
}
|
}
|
||||||
@@ -43,34 +42,27 @@ function setDependentResources (id) {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
function CredentialTypeModel (method, resource, graft) {
|
function CredentialTypeModel (method, resource, config) {
|
||||||
BaseModel.call(this, 'credential_types');
|
Base.call(this, 'credential_types');
|
||||||
|
|
||||||
this.Constructor = CredentialTypeModel;
|
this.Constructor = CredentialTypeModel;
|
||||||
this.categorizeByKind = categorizeByKind.bind(this);
|
this.categorizeByKind = categorizeByKind.bind(this);
|
||||||
this.mergeInputProperties = mergeInputProperties.bind(this);
|
this.mergeInputProperties = mergeInputProperties.bind(this);
|
||||||
this.setDependentResources = setDependentResources.bind(this);
|
this.setDependentResources = setDependentResources.bind(this);
|
||||||
this.label = ModelsStrings.get('labels.CREDENTIAL_TYPE');
|
|
||||||
|
|
||||||
return this.create(method, resource, graft);
|
return this.create(method, resource, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
function CredentialTypeModelLoader (
|
function CredentialTypeModelLoader (BaseModel, CredentialModel) {
|
||||||
_BaseModel_,
|
Base = BaseModel;
|
||||||
_CredentialModel_,
|
Credential = CredentialModel;
|
||||||
_ModelsStrings_
|
|
||||||
) {
|
|
||||||
BaseModel = _BaseModel_;
|
|
||||||
CredentialModel = _CredentialModel_;
|
|
||||||
ModelsStrings = _ModelsStrings_;
|
|
||||||
|
|
||||||
return CredentialTypeModel;
|
return CredentialTypeModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
CredentialTypeModelLoader.$inject = [
|
CredentialTypeModelLoader.$inject = [
|
||||||
'BaseModel',
|
'BaseModel',
|
||||||
'CredentialModel',
|
'CredentialModel'
|
||||||
'ModelsStrings'
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export default CredentialTypeModelLoader;
|
export default CredentialTypeModelLoader;
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
let BaseModel;
|
let Base;
|
||||||
let JobTemplateModel;
|
let JobTemplate;
|
||||||
let ModelsStrings;
|
|
||||||
|
|
||||||
function setDependentResources (id) {
|
function setDependentResources (id) {
|
||||||
this.dependentResources = [
|
this.dependentResources = [
|
||||||
{
|
{
|
||||||
model: new JobTemplateModel(),
|
model: new JobTemplate(),
|
||||||
params: {
|
params: {
|
||||||
inventory: id
|
inventory: id
|
||||||
}
|
}
|
||||||
@@ -13,32 +12,25 @@ function setDependentResources (id) {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
function InventoryModel (method, resource, graft) {
|
function InventoryModel (method, resource, config) {
|
||||||
BaseModel.call(this, 'inventories');
|
Base.call(this, 'inventories');
|
||||||
|
|
||||||
this.Constructor = InventoryModel;
|
this.Constructor = InventoryModel;
|
||||||
this.setDependentResources = setDependentResources.bind(this);
|
this.setDependentResources = setDependentResources.bind(this);
|
||||||
this.label = ModelsStrings.get('labels.INVENTORY');
|
|
||||||
|
|
||||||
return this.create(method, resource, graft);
|
return this.create(method, resource, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
function InventoryModelLoader (
|
function InventoryModelLoader (BaseModel, JobTemplateModel) {
|
||||||
_BaseModel_,
|
Base = BaseModel;
|
||||||
_JobTemplateModel_,
|
JobTemplate = JobTemplateModel;
|
||||||
_ModelsStrings_
|
|
||||||
) {
|
|
||||||
BaseModel = _BaseModel_;
|
|
||||||
JobTemplateModel = _JobTemplateModel_;
|
|
||||||
ModelsStrings = _ModelsStrings_;
|
|
||||||
|
|
||||||
return InventoryModel;
|
return InventoryModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
InventoryModelLoader.$inject = [
|
InventoryModelLoader.$inject = [
|
||||||
'BaseModel',
|
'BaseModel',
|
||||||
'JobTemplateModel',
|
'JobTemplateModel'
|
||||||
'ModelsStrings'
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export default InventoryModelLoader;
|
export default InventoryModelLoader;
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
let BaseModel;
|
let Base;
|
||||||
let InventorySourceModel;
|
let InventorySource;
|
||||||
let ModelsStrings;
|
|
||||||
|
|
||||||
function setDependentResources (id) {
|
function setDependentResources (id) {
|
||||||
this.dependentResources = [
|
this.dependentResources = [
|
||||||
{
|
{
|
||||||
model: new InventorySourceModel(),
|
model: new InventorySource(),
|
||||||
params: {
|
params: {
|
||||||
source_script: id
|
source_script: id
|
||||||
}
|
}
|
||||||
@@ -13,32 +12,25 @@ function setDependentResources (id) {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
function InventoryScriptModel (method, resource, graft) {
|
function InventoryScriptModel (method, resource, config) {
|
||||||
BaseModel.call(this, 'inventory_scripts');
|
Base.call(this, 'inventory_scripts');
|
||||||
|
|
||||||
this.Constructor = InventoryScriptModel;
|
this.Constructor = InventoryScriptModel;
|
||||||
this.setDependentResources = setDependentResources.bind(this);
|
this.setDependentResources = setDependentResources.bind(this);
|
||||||
this.label = ModelsStrings.get('labels.INVENTORY_SCRIPT');
|
|
||||||
|
|
||||||
return this.create(method, resource, graft);
|
return this.create(method, resource, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
function InventoryScriptModelLoader (
|
function InventoryScriptModelLoader (BaseModel, InventorySourceModel) {
|
||||||
_BaseModel_,
|
Base = BaseModel;
|
||||||
_InventorySourceModel_,
|
InventorySource = InventorySourceModel;
|
||||||
_ModelsStrings_
|
|
||||||
) {
|
|
||||||
BaseModel = _BaseModel_;
|
|
||||||
InventorySourceModel = _InventorySourceModel_;
|
|
||||||
ModelsStrings = _ModelsStrings_;
|
|
||||||
|
|
||||||
return InventoryScriptModel;
|
return InventoryScriptModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
InventoryScriptModelLoader.$inject = [
|
InventoryScriptModelLoader.$inject = [
|
||||||
'BaseModel',
|
'BaseModel',
|
||||||
'InventorySourceModel',
|
'InventorySourceModel'
|
||||||
'ModelsStrings'
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export default InventoryScriptModelLoader;
|
export default InventoryScriptModelLoader;
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
let BaseModel;
|
let Base;
|
||||||
let WorkflowJobTemplateNodeModel;
|
let WorkflowJobTemplateNode;
|
||||||
let ModelsStrings;
|
|
||||||
|
|
||||||
function setDependentResources (id) {
|
function setDependentResources (id) {
|
||||||
this.dependentResources = [
|
this.dependentResources = [
|
||||||
{
|
{
|
||||||
model: new WorkflowJobTemplateNodeModel(),
|
model: new WorkflowJobTemplateNode(),
|
||||||
params: {
|
params: {
|
||||||
unified_job_template: id
|
unified_job_template: id
|
||||||
}
|
}
|
||||||
@@ -13,32 +12,28 @@ function setDependentResources (id) {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
function InventorySourceModel (method, resource, graft) {
|
function InventorySourceModel (method, resource, config) {
|
||||||
BaseModel.call(this, 'inventory_sources');
|
Base.call(this, 'inventory_sources');
|
||||||
|
|
||||||
this.Constructor = InventorySourceModel;
|
this.Constructor = InventorySourceModel;
|
||||||
this.setDependentResources = setDependentResources.bind(this);
|
this.setDependentResources = setDependentResources.bind(this);
|
||||||
this.label = ModelsStrings.get('labels.INVENTORY_SOURCE');
|
|
||||||
|
|
||||||
return this.create(method, resource, graft);
|
return this.create(method, resource, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
function InventorySourceModelLoader (
|
function InventorySourceModelLoader (
|
||||||
_BaseModel_,
|
BaseModel,
|
||||||
_WorkflowJobTemplateNodeModel_,
|
WorkflowJobTemplateNodeModel
|
||||||
_ModelsStrings_
|
|
||||||
) {
|
) {
|
||||||
BaseModel = _BaseModel_;
|
Base = BaseModel;
|
||||||
WorkflowJobTemplateNodeModel = _WorkflowJobTemplateNodeModel_;
|
WorkflowJobTemplateNode = WorkflowJobTemplateNodeModel;
|
||||||
ModelsStrings = _ModelsStrings_;
|
|
||||||
|
|
||||||
return InventorySourceModel;
|
return InventorySourceModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
InventorySourceModelLoader.$inject = [
|
InventorySourceModelLoader.$inject = [
|
||||||
'BaseModel',
|
'BaseModel',
|
||||||
'WorkflowJobTemplateNodeModel',
|
'WorkflowJobTemplateNodeModel'
|
||||||
'ModelsStrings'
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export default InventorySourceModelLoader;
|
export default InventorySourceModelLoader;
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
let BaseModel;
|
let Base;
|
||||||
let WorkflowJobTemplateNodeModel;
|
let WorkflowJobTemplateNode;
|
||||||
let ModelsStrings;
|
|
||||||
|
|
||||||
function setDependentResources (id) {
|
function setDependentResources (id) {
|
||||||
this.dependentResources = [
|
this.dependentResources = [
|
||||||
{
|
{
|
||||||
model: new WorkflowJobTemplateNodeModel(),
|
model: new WorkflowJobTemplateNode(),
|
||||||
params: {
|
params: {
|
||||||
unified_job_template: id
|
unified_job_template: id
|
||||||
}
|
}
|
||||||
@@ -13,32 +12,25 @@ function setDependentResources (id) {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
function JobTemplateModel (method, resource, graft) {
|
function JobTemplateModel (method, resource, config) {
|
||||||
BaseModel.call(this, 'job_templates');
|
Base.call(this, 'job_templates');
|
||||||
|
|
||||||
this.Constructor = JobTemplateModel;
|
this.Constructor = JobTemplateModel;
|
||||||
this.setDependentResources = setDependentResources.bind(this);
|
this.setDependentResources = setDependentResources.bind(this);
|
||||||
this.label = ModelsStrings.get('labels.JOB_TEMPLATE');
|
|
||||||
|
|
||||||
return this.create(method, resource, graft);
|
return this.create(method, resource, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
function JobTemplateModelLoader (
|
function JobTemplateModelLoader (BaseModel, WorkflowJobTemplateNodeModel) {
|
||||||
_BaseModel_,
|
Base = BaseModel;
|
||||||
_WorkflowJobTemplateNodeModel_,
|
WorkflowJobTemplateNode = WorkflowJobTemplateNodeModel;
|
||||||
_ModelsStrings_
|
|
||||||
) {
|
|
||||||
BaseModel = _BaseModel_;
|
|
||||||
WorkflowJobTemplateNodeModel = _WorkflowJobTemplateNodeModel_;
|
|
||||||
ModelsStrings = _ModelsStrings_;
|
|
||||||
|
|
||||||
return JobTemplateModel;
|
return JobTemplateModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
JobTemplateModelLoader.$inject = [
|
JobTemplateModelLoader.$inject = [
|
||||||
'BaseModel',
|
'BaseModel',
|
||||||
'WorkflowJobTemplateNodeModel',
|
'WorkflowJobTemplateNodeModel'
|
||||||
'ModelsStrings'
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export default JobTemplateModelLoader;
|
export default JobTemplateModelLoader;
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
let BaseModel;
|
let Base;
|
||||||
|
|
||||||
function MeModel (method, resource, graft) {
|
function MeModel (method, resource, config) {
|
||||||
BaseModel.call(this, 'me');
|
Base.call(this, 'me');
|
||||||
|
|
||||||
this.Constructor = MeModel;
|
this.Constructor = MeModel;
|
||||||
|
|
||||||
return this.create(method, resource, graft)
|
return this.create(method, resource, config)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
if (this.has('results')) {
|
if (this.has('results')) {
|
||||||
_.merge(this.model.GET, this.get('results[0]'));
|
_.merge(this.model.GET, this.get('results[0]'));
|
||||||
@@ -16,8 +16,8 @@ function MeModel (method, resource, graft) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function MeModelLoader (_BaseModel_) {
|
function MeModelLoader (BaseModel) {
|
||||||
BaseModel = _BaseModel_;
|
Base = BaseModel;
|
||||||
|
|
||||||
return MeModel;
|
return MeModel;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,28 +1,21 @@
|
|||||||
let BaseModel;
|
let Base;
|
||||||
let ModelsStrings;
|
|
||||||
|
|
||||||
function OrganizationModel (method, resource, graft) {
|
function OrganizationModel (method, resource, config) {
|
||||||
BaseModel.call(this, 'organizations');
|
Base.call(this, 'organizations');
|
||||||
|
|
||||||
this.Constructor = OrganizationModel;
|
this.Constructor = OrganizationModel;
|
||||||
this.label = ModelsStrings.get('labels.ORGANIZATION');
|
|
||||||
|
|
||||||
return this.create(method, resource, graft);
|
return this.create(method, resource, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
function OrganizationModelLoader (
|
function OrganizationModelLoader (BaseModel) {
|
||||||
_BaseModel_,
|
Base = BaseModel;
|
||||||
_ModelsStrings_
|
|
||||||
) {
|
|
||||||
BaseModel = _BaseModel_;
|
|
||||||
ModelsStrings = _ModelsStrings_;
|
|
||||||
|
|
||||||
return OrganizationModel;
|
return OrganizationModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
OrganizationModelLoader.$inject = [
|
OrganizationModelLoader.$inject = [
|
||||||
'BaseModel',
|
'BaseModel'
|
||||||
'ModelsStrings'
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export default OrganizationModelLoader;
|
export default OrganizationModelLoader;
|
||||||
|
|||||||
@@ -1,25 +1,24 @@
|
|||||||
let BaseModel;
|
let Base;
|
||||||
let JobTemplateModel;
|
let JobTemplate;
|
||||||
let WorkflowJobTemplateNodeModel;
|
let WorkflowJobTemplateNode;
|
||||||
let InventorySourceModel;
|
let InventorySource;
|
||||||
let ModelsStrings;
|
|
||||||
|
|
||||||
function setDependentResources (id) {
|
function setDependentResources (id) {
|
||||||
this.dependentResources = [
|
this.dependentResources = [
|
||||||
{
|
{
|
||||||
model: new JobTemplateModel(),
|
model: new JobTemplate(),
|
||||||
params: {
|
params: {
|
||||||
project: id
|
project: id
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
model: new WorkflowJobTemplateNodeModel(),
|
model: new WorkflowJobTemplateNode(),
|
||||||
params: {
|
params: {
|
||||||
unified_job_template: id
|
unified_job_template: id
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
model: new InventorySourceModel(),
|
model: new InventorySource(),
|
||||||
params: {
|
params: {
|
||||||
source_project: id
|
source_project: id
|
||||||
}
|
}
|
||||||
@@ -27,28 +26,25 @@ function setDependentResources (id) {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
function ProjectModel (method, resource, graft) {
|
function ProjectModel (method, resource, config) {
|
||||||
BaseModel.call(this, 'projects');
|
Base.call(this, 'projects');
|
||||||
|
|
||||||
this.Constructor = ProjectModel;
|
this.Constructor = ProjectModel;
|
||||||
this.setDependentResources = setDependentResources.bind(this);
|
this.setDependentResources = setDependentResources.bind(this);
|
||||||
this.label = ModelsStrings.get('labels.PROJECT');
|
|
||||||
|
|
||||||
return this.create(method, resource, graft);
|
return this.create(method, resource, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
function ProjectModelLoader (
|
function ProjectModelLoader (
|
||||||
_BaseModel_,
|
BaseModel,
|
||||||
_JobTemplateModel_,
|
JobTemplateModel,
|
||||||
_WorkflowJobTemplateNodeModel_,
|
WorkflowJobTemplateNodeModel,
|
||||||
_InventorySourceModel_,
|
InventorySourceModel,
|
||||||
_ModelsStrings_
|
|
||||||
) {
|
) {
|
||||||
BaseModel = _BaseModel_;
|
Base = BaseModel;
|
||||||
JobTemplateModel = _JobTemplateModel_;
|
JobTemplate = JobTemplateModel;
|
||||||
WorkflowJobTemplateNodeModel = _WorkflowJobTemplateNodeModel_;
|
WorkflowJobTemplateNode = WorkflowJobTemplateNodeModel;
|
||||||
InventorySourceModel = _InventorySourceModel_;
|
InventorySource = InventorySourceModel;
|
||||||
ModelsStrings = _ModelsStrings_;
|
|
||||||
|
|
||||||
return ProjectModel;
|
return ProjectModel;
|
||||||
}
|
}
|
||||||
@@ -57,8 +53,7 @@ ProjectModelLoader.$inject = [
|
|||||||
'BaseModel',
|
'BaseModel',
|
||||||
'JobTemplateModel',
|
'JobTemplateModel',
|
||||||
'WorkflowJobTemplateNodeModel',
|
'WorkflowJobTemplateNodeModel',
|
||||||
'InventorySourceModel',
|
'InventorySourceModel'
|
||||||
'ModelsStrings'
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export default ProjectModelLoader;
|
export default ProjectModelLoader;
|
||||||
|
|||||||
@@ -1,28 +1,21 @@
|
|||||||
let BaseModel;
|
let Base;
|
||||||
let ModelsStrings;
|
|
||||||
|
|
||||||
function WorkflowJobTemplateNodeModel (method, resource, graft) {
|
function WorkflowJobTemplateNodeModel (method, resource, config) {
|
||||||
BaseModel.call(this, 'workflow_job_template_nodes');
|
Base.call(this, 'workflow_job_template_nodes');
|
||||||
|
|
||||||
this.Constructor = WorkflowJobTemplateNodeModel;
|
this.Constructor = WorkflowJobTemplateNodeModel;
|
||||||
this.label = ModelsStrings.get('labels.WORKFLOW_JOB_TEMPLATE_NODE');
|
|
||||||
|
|
||||||
return this.create(method, resource, graft);
|
return this.create(method, resource, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
function WorkflowJobTemplateNodeModelLoader (
|
function WorkflowJobTemplateNodeModelLoader (BaseModel) {
|
||||||
_BaseModel_,
|
Base = BaseModel;
|
||||||
_ModelsStrings_
|
|
||||||
) {
|
|
||||||
BaseModel = _BaseModel_;
|
|
||||||
ModelsStrings = _ModelsStrings_;
|
|
||||||
|
|
||||||
return WorkflowJobTemplateNodeModel;
|
return WorkflowJobTemplateNodeModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
WorkflowJobTemplateNodeModelLoader.$inject = [
|
WorkflowJobTemplateNodeModelLoader.$inject = [
|
||||||
'BaseModel',
|
'BaseModel'
|
||||||
'ModelsStrings'
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export default WorkflowJobTemplateNodeModelLoader;
|
export default WorkflowJobTemplateNodeModelLoader;
|
||||||
|
|||||||
@@ -4,16 +4,46 @@ function ModelsStrings (BaseString) {
|
|||||||
const { t } = this;
|
const { t } = this;
|
||||||
const ns = this.models;
|
const ns = this.models;
|
||||||
|
|
||||||
ns.labels = {
|
ns.credentials = {
|
||||||
CREDENTIAL: t.s('Credentials'),
|
LABEL: t.s('Credentials')
|
||||||
CREDENTIAL_TYPE: t.s('Credential Types'),
|
};
|
||||||
INVENTORY: t.s('Inventories'),
|
|
||||||
INVENTORY_SCRIPT: t.s('Inventory Scripts'),
|
ns.credential_types = {
|
||||||
INVENTORY_SOURCE: t.s('Inventory Sources'),
|
LABEL: t.s('Credential Types')
|
||||||
JOB_TEMPLATE: t.s('Job Templates'),
|
};
|
||||||
ORGANIZATION: t.s('Organizations'),
|
|
||||||
PROJECT: t.s('Projects'),
|
ns.inventories = {
|
||||||
WORKFLOW_JOB_TEMPLATE_NODE: t.s('Workflow Job Template Nodes')
|
LABEL: t.s('Inventories')
|
||||||
|
};
|
||||||
|
|
||||||
|
ns.inventory_scripts = {
|
||||||
|
LABEL: t.s('Inventory Scripts')
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
ns.inventory_sources = {
|
||||||
|
LABEL: t.s('Inventory Sources')
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
ns.job_templates = {
|
||||||
|
LABEL: t.s('Job Templates')
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
ns.organizations = {
|
||||||
|
LABEL: t.s('Organizations')
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
ns.projects = {
|
||||||
|
LABEL: t.s('Projects')
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
ns.workflow_job_template_nodes = {
|
||||||
|
LABEL: t.s('Workflow Job Template Nodes')
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ let i18n;
|
|||||||
|
|
||||||
function BaseStringService (namespace) {
|
function BaseStringService (namespace) {
|
||||||
const ERROR_NO_NAMESPACE = 'BaseString cannot be extended without providing a namespace';
|
const ERROR_NO_NAMESPACE = 'BaseString cannot be extended without providing a namespace';
|
||||||
const ERROR_NO_STRING = 'No string exists with this name';
|
|
||||||
|
|
||||||
if (!namespace) {
|
if (!namespace) {
|
||||||
throw new Error(ERROR_NO_NAMESPACE);
|
throw new Error(ERROR_NO_NAMESPACE);
|
||||||
@@ -67,8 +66,6 @@ function BaseStringService (namespace) {
|
|||||||
* the more globally relevant strings defined here. Strings with with dots as delimeters are
|
* the more globally relevant strings defined here. Strings with with dots as delimeters are
|
||||||
* supported to give flexibility to extending classes to nest strings as necessary.
|
* supported to give flexibility to extending classes to nest strings as necessary.
|
||||||
*
|
*
|
||||||
* If no match is found, an error is thrown to alert the developer immediately instead of
|
|
||||||
* failing silently.
|
|
||||||
*
|
*
|
||||||
* The `t.s` and `t.p` calls should only be used where strings are defined in
|
* The `t.s` and `t.p` calls should only be used where strings are defined in
|
||||||
* <name>.strings.js` files. To use translated strings elsewhere, access them through this
|
* <name>.strings.js` files. To use translated strings elsewhere, access them through this
|
||||||
@@ -88,13 +85,13 @@ function BaseStringService (namespace) {
|
|||||||
} else {
|
} else {
|
||||||
value = value[key];
|
value = value[key];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!value) {
|
|
||||||
throw new Error(`${ERROR_NO_STRING}: ${name}`);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return typeof value === 'string' ? value : value(...args);
|
if (!value || typeof value === 'string') {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return value(...args);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user