open-consul/ui/packages/consul-ui/tests/dictionary.js
John Cowen 9fc31000f5
ui: Dependency Upgrade (#9907)
* Pin ember-changeset-validations and its dependencies to 3.9

Future versions produce a 'validator is not a function' error

* yarn upgrade

* Upgrade the majority of user facing deps that don't required add. change

not upgraded here due to more changes required:

- ember-page-title
- ember-href-to

* Upgrade ember-page-title which no longer requires ember-cli-head

* Upgrade some devtools related dependencies

* Upgrade some non ember-core test utils

* Upgrade js-yaml which required safeLoad > load

* Upgrade some compilation utils

* Yarn install from workspace root

* Add Python-2.0 to compliance checker
2021-03-19 15:14:07 +00:00

97 lines
3.1 KiB
JavaScript

/* eslint no-control-regex: "off" */
import Yadda from 'yadda';
import YAML from 'js-yaml';
import { env } from '../env';
export default utils => (annotations, nspace, dict = new Yadda.Dictionary()) => {
dict
.define('pageObject', /(\S+)/, function(path, cb) {
const $el = utils.find(path);
cb(null, $el);
})
.define('model', /(\w+)/, function(model, cb) {
switch (model) {
case 'datacenter':
case 'datacenters':
case 'dcs':
model = 'dc';
break;
case 'services':
model = 'service';
break;
case 'nodes':
model = 'node';
break;
case 'kvs':
model = 'kv';
break;
case 'acls':
model = 'acl';
break;
case 'sessions':
model = 'session';
break;
case 'intentions':
model = 'intention';
break;
}
cb(null, model);
})
.define('number', /(\d+)/, Yadda.converters.integer)
.define('json', /([^\u0000]*)/, function(val, cb) {
// replace any instance of @namespace in the string
val = val.replace(
/@namespace/g,
typeof nspace === 'undefined' || nspace === '' ? 'default' : nspace
);
cb(null, JSON.parse(val));
})
.define('yaml', /([^\u0000]*)/, function(val, cb) {
// sometimes we need to always force a namespace queryParam
// mainly for DELETEs
if (env('CONSUL_NSPACES_ENABLED')) {
val = val.replace(/ns=@!namespace/g, `ns=${nspace || 'default'}`);
} else {
val = val.replace(/&ns=@!namespace/g, '');
val = val.replace(/&ns=\*/g, '');
val = val.replace(/- \/v1\/namespaces/g, '');
}
if (typeof nspace === 'undefined' || nspace === '') {
val = val.replace(/Namespace: @namespace/g, '').replace(/&ns=@namespace/g, '');
}
// replace any other instance of @namespace in the string
val = val.replace(
/@namespace/g,
typeof nspace === 'undefined' || nspace === '' ? 'default' : nspace
);
cb(null, YAML.load(val));
})
.define('endpoint', /([^\u0000]*)/, function(val, cb) {
// if is @namespace is !important, always replace with namespace
// or if its undefined or empty then use default
if (env('CONSUL_NSPACES_ENABLED')) {
val = val.replace(/ns=@!namespace/g, `ns=${nspace || 'default'}`);
} else {
val = val.replace(/&ns=@!namespace/g, '');
val = val.replace(/&ns=\*/g, '');
}
// for endpoints if namespace isn't specified it should
// never add the ns= unless its !important...
if (typeof nspace !== 'undefined' && nspace !== '') {
val = val.replace(/ns=@namespace/g, `ns=${nspace}`);
} else {
val = val
.replace(/&ns=@namespace/g, '')
.replace(/ns=@namespace&/g, '')
.replace(/ns=@namespace/g, '');
}
cb(null, val);
});
if (typeof nspace !== 'undefined' && nspace !== '') {
dict.define('url', /([^\u0000]*)/, function(val, cb) {
val = `/~${nspace}${val}`;
cb(null, val);
});
}
return dict;
};