-
Notifications
You must be signed in to change notification settings - Fork 98
/
get-messages.js
45 lines (37 loc) · 1.25 KB
/
get-messages.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/* globals requirejs, requireModule */
import { A as emberArray } from '@ember/array';
import { isPresent } from '@ember/utils';
import config from 'ember-get-config';
import defaultMessages from 'ember-changeset-validations/utils/messages';
import withDefaults from 'ember-changeset-validations/utils/with-defaults';
const { keys } = Object;
const moduleName = `${config.modulePrefix}/validations/messages`;
let cachedRef = null;
/**
* Find and load messages module on consuming app. Defaults to addon messages.
* To define a custom message map, create `my-app/app/validations/messages.js`
* and export an object.
*
* @param {Object} moduleMap
* @param {Boolean} useCache Pass `false` to ignore cached key
* @return {Object}
*/
export default function getMessages(
moduleMap = requirejs.entries,
useCache = true
) {
let messagesModule = defaultMessages;
if (useCache && isPresent(cachedRef)) {
return cachedRef;
}
let moduleKey = emberArray(keys(moduleMap)).find((key) => key === moduleName);
if (isPresent(moduleKey)) {
// Merge the user specified messages with the defaults
messagesModule = withDefaults(
requireModule(moduleKey).default,
messagesModule
);
}
cachedRef = messagesModule;
return messagesModule;
}