@salesforce/plugin-custom-metadata 1.0.11 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -7
- package/LICENSE.txt +2 -2
- package/README.md +153 -149
- package/lib/commands/force/cmdt/create.d.ts +12 -6
- package/lib/commands/force/cmdt/create.js +80 -82
- package/lib/commands/force/cmdt/create.js.map +1 -1
- package/lib/commands/force/cmdt/field/create.d.ts +10 -5
- package/lib/commands/force/cmdt/field/create.js +98 -90
- package/lib/commands/force/cmdt/field/create.js.map +1 -1
- package/lib/commands/force/cmdt/generate.d.ts +12 -8
- package/lib/commands/force/cmdt/generate.js +199 -257
- package/lib/commands/force/cmdt/generate.js.map +1 -1
- package/lib/commands/force/cmdt/record/create.d.ts +20 -9
- package/lib/commands/force/cmdt/record/create.js +123 -125
- package/lib/commands/force/cmdt/record/create.js.map +1 -1
- package/lib/commands/force/cmdt/record/insert.d.ts +7 -7
- package/lib/commands/force/cmdt/record/insert.js +97 -109
- package/lib/commands/force/cmdt/record/insert.js.map +1 -1
- package/lib/index.js +3 -3
- package/lib/lib/helpers/createUtil.d.ts +10 -6
- package/lib/lib/helpers/createUtil.js +50 -98
- package/lib/lib/helpers/createUtil.js.map +1 -1
- package/lib/lib/helpers/fileWriter.d.ts +13 -11
- package/lib/lib/helpers/fileWriter.js +19 -27
- package/lib/lib/helpers/fileWriter.js.map +1 -1
- package/lib/lib/helpers/metadataUtil.d.ts +25 -51
- package/lib/lib/helpers/metadataUtil.js +58 -127
- package/lib/lib/helpers/metadataUtil.js.map +1 -1
- package/lib/lib/helpers/validationUtil.d.ts +25 -26
- package/lib/lib/helpers/validationUtil.js +69 -43
- package/lib/lib/helpers/validationUtil.js.map +1 -1
- package/lib/lib/interfaces/createConfig.d.ts +3 -2
- package/lib/lib/interfaces/createConfig.js +3 -3
- package/lib/lib/templates/templates.d.ts +10 -99
- package/lib/lib/templates/templates.js +52 -40
- package/lib/lib/templates/templates.js.map +1 -1
- package/messages/createField.json +22 -31
- package/messages/generate.json +38 -51
- package/messages/template.json +2 -2
- package/messages/validation.json +5 -0
- package/oclif.manifest.json +1 -1
- package/package.json +57 -46
- package/lib/lib/interfaces/customField.d.ts +0 -7
- package/lib/lib/interfaces/customField.js +0 -9
- package/lib/lib/interfaces/customField.js.map +0 -1
- package/lib/lib/interfaces/errorMessage.d.ts +0 -4
- package/lib/lib/interfaces/errorMessage.js +0 -9
- package/lib/lib/interfaces/errorMessage.js.map +0 -1
- package/lib/lib/interfaces/record.d.ts +0 -3
- package/lib/lib/interfaces/record.js +0 -9
- package/lib/lib/interfaces/record.js.map +0 -1
- package/lib/lib/interfaces/saveResults.d.ts +0 -5
- package/lib/lib/interfaces/saveResults.js +0 -9
- package/lib/lib/interfaces/saveResults.js.map +0 -1
|
@@ -1,134 +1,65 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c)
|
|
3
|
+
* Copyright (c) 2020, salesforce.com, inc.
|
|
4
4
|
* All rights reserved.
|
|
5
|
-
*
|
|
6
|
-
* For full license text, see
|
|
5
|
+
* Licensed under the BSD 3-Clause license.
|
|
6
|
+
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
return
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Returns describe object for the field API name from the Object API name you specify
|
|
64
|
-
*
|
|
65
|
-
* @param objDescribe describe object JSON
|
|
66
|
-
* @param fieldName API name of the field to query
|
|
67
|
-
* @returns Promise - Promise - record in JSON format
|
|
68
|
-
*/
|
|
69
|
-
describeField(objDescribe, fieldName) {
|
|
70
|
-
const fieldsDescribe = objDescribe['fields'];
|
|
71
|
-
let fieldsDescribeResult;
|
|
72
|
-
fieldsDescribe.map(field => {
|
|
73
|
-
if (field.fullName === fieldName) {
|
|
74
|
-
fieldsDescribeResult = field;
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
return fieldsDescribeResult;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Returns describe object for all fields from the object API name you specify
|
|
81
|
-
*
|
|
82
|
-
* @param objDescribe object describe JSON
|
|
83
|
-
* @returns Promise - Promise - record in JSON format
|
|
84
|
-
*/
|
|
85
|
-
describeObjFields(objDescribe) {
|
|
86
|
-
const fieldsDescribe = objDescribe['fields'];
|
|
87
|
-
return fieldsDescribe;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Returns true if the object name you specify is a list type custom setting
|
|
91
|
-
*
|
|
92
|
-
* @param objName API name of the object to query
|
|
93
|
-
* @returns boolean
|
|
94
|
-
*/
|
|
95
|
-
validCustomSettingType(objDescribe) {
|
|
96
|
-
if (objDescribe['customSettingsType'] === 'List' && objDescribe['visibility'] === 'Public') {
|
|
97
|
-
return true;
|
|
9
|
+
exports.cleanQueryResponse = exports.describeObjFields = exports.validCustomSettingType = exports.describeField = void 0;
|
|
10
|
+
/**
|
|
11
|
+
* Returns describe object for the field API name from the Object API name you specify
|
|
12
|
+
*
|
|
13
|
+
* @param objDescribe describe object JSON
|
|
14
|
+
* @param fieldName API name of the field to query
|
|
15
|
+
* @returns Promise - Promise - record in JSON format
|
|
16
|
+
*/
|
|
17
|
+
const describeField = (objDescribe, fieldName) => {
|
|
18
|
+
return (0, exports.describeObjFields)(objDescribe).find((field) => field.fullName === fieldName);
|
|
19
|
+
};
|
|
20
|
+
exports.describeField = describeField;
|
|
21
|
+
/**
|
|
22
|
+
* Returns true if the object name you specify is a list type custom setting
|
|
23
|
+
*
|
|
24
|
+
* @param objName object describe JSON
|
|
25
|
+
* @returns boolean
|
|
26
|
+
*/
|
|
27
|
+
const validCustomSettingType = (objDescribe) => objDescribe.customSettingsType === 'List' && objDescribe.visibility === 'Public';
|
|
28
|
+
exports.validCustomSettingType = validCustomSettingType;
|
|
29
|
+
/**
|
|
30
|
+
* Returns describe object for all fields from the object API name you specify
|
|
31
|
+
*
|
|
32
|
+
* @param objDescribe object describe JSON
|
|
33
|
+
* @returns Promise - Promise - record in JSON format
|
|
34
|
+
*/
|
|
35
|
+
const describeObjFields = (objDescribe) => {
|
|
36
|
+
return objDescribe.fields;
|
|
37
|
+
};
|
|
38
|
+
exports.describeObjFields = describeObjFields;
|
|
39
|
+
const cleanQueryResponse = (sObjectRecord, objectDescribe) => {
|
|
40
|
+
return Object.fromEntries(Object.entries(sObjectRecord)
|
|
41
|
+
.filter(([fieldName]) => fieldName !== 'attributes' && fieldName !== 'Name')
|
|
42
|
+
.flatMap(([fieldName, value]) => {
|
|
43
|
+
const fieldDescribe = (0, exports.describeField)(objectDescribe, fieldName);
|
|
44
|
+
// everything but location returns as is
|
|
45
|
+
if (fieldDescribe.type !== 'Location') {
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
47
|
+
return [[fieldName, value]];
|
|
48
|
+
}
|
|
49
|
+
const fieldValue = JSON.stringify(value);
|
|
50
|
+
if (fieldValue.includes('latitude') || fieldValue.includes('longitude')) {
|
|
51
|
+
return [
|
|
52
|
+
[`Lat_${fieldName}`, fieldValue.slice(fieldValue.indexOf(':') + 1, fieldValue.indexOf(','))],
|
|
53
|
+
[`Long_${fieldName}`, fieldValue.slice(fieldValue.lastIndexOf(':') + 1, fieldValue.indexOf('}'))],
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
return [
|
|
58
|
+
[`Lat_${fieldName}`, ''],
|
|
59
|
+
[`Long_${fieldName}`, ''],
|
|
60
|
+
];
|
|
98
61
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
const record = {};
|
|
103
|
-
Object.keys(sObjecRecord).forEach(fieldName => {
|
|
104
|
-
if (fieldName !== 'attributes' && fieldName !== 'Name') {
|
|
105
|
-
const fieldDescribe = this.describeField(objectDescribe, fieldName);
|
|
106
|
-
const fieldType = fieldDescribe['type'];
|
|
107
|
-
const fieldValue = JSON.stringify(sObjecRecord[fieldName]);
|
|
108
|
-
if (fieldType === 'Location') {
|
|
109
|
-
if (fieldValue.includes('latitude') || fieldValue.includes('longitude')) {
|
|
110
|
-
record['Lat_' + fieldName] = fieldValue.slice(fieldValue.indexOf(':') + 1, fieldValue.indexOf(','));
|
|
111
|
-
record['Long_' + fieldName] = fieldValue.slice(fieldValue.lastIndexOf(':') + 1, fieldValue.indexOf('}'));
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
record['Lat_' + fieldName] = '';
|
|
115
|
-
record['Long_' + fieldName] = '';
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
record[fieldName] = sObjecRecord[fieldName];
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
return record;
|
|
124
|
-
}
|
|
125
|
-
_getSoqlQuery(arr, objName) {
|
|
126
|
-
const fieldNames = arr.map(field => {
|
|
127
|
-
return field.fullName;
|
|
128
|
-
}).join(',');
|
|
129
|
-
// Added Name hardcoded as Name field is not retreived as part of object describe.
|
|
130
|
-
return `SELECT Name, ${fieldNames} FROM ${objName}`;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
exports.MetadataUtil = MetadataUtil;
|
|
62
|
+
}));
|
|
63
|
+
};
|
|
64
|
+
exports.cleanQueryResponse = cleanQueryResponse;
|
|
134
65
|
//# sourceMappingURL=metadataUtil.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadataUtil.js","sourceRoot":"","sources":["../../../src/lib/helpers/metadataUtil.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;
|
|
1
|
+
{"version":3,"file":"metadataUtil.js","sourceRoot":"","sources":["../../../src/lib/helpers/metadataUtil.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAIH;;;;;;GAMG;AACI,MAAM,aAAa,GAAG,CAAC,WAAyB,EAAE,SAAiB,EAAe,EAAE;IACzF,OAAO,IAAA,yBAAiB,EAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;AACtF,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB;AAEF;;;;;GAKG;AACI,MAAM,sBAAsB,GAAG,CAAC,WAAyB,EAAW,EAAE,CAC3E,WAAW,CAAC,kBAAkB,KAAK,MAAM,IAAI,WAAW,CAAC,UAAU,KAAK,QAAQ,CAAC;AADtE,QAAA,sBAAsB,0BACgD;AAEnF;;;;;GAKG;AACI,MAAM,iBAAiB,GAAG,CAAC,WAAyB,EAAiB,EAAE;IAC5E,OAAO,WAAW,CAAC,MAAM,CAAC;AAC5B,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B;AAEK,MAAM,kBAAkB,GAAG,CAAC,aAAqB,EAAE,cAA4B,EAAU,EAAE;IAChG,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;SAC1B,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,KAAK,YAAY,IAAI,SAAS,KAAK,MAAM,CAAC;SAC3E,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE;QAC9B,MAAM,aAAa,GAAG,IAAA,qBAAa,EAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAC/D,wCAAwC;QACxC,IAAI,aAAa,CAAC,IAAI,KAAK,UAAU,EAAE;YACrC,+DAA+D;YAC/D,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;SAC7B;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACvE,OAAO;gBACL,CAAC,OAAO,SAAS,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5F,CAAC,QAAQ,SAAS,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;aAClG,CAAC;SACH;aAAM;YACL,OAAO;gBACL,CAAC,OAAO,SAAS,EAAE,EAAE,EAAE,CAAC;gBACxB,CAAC,QAAQ,SAAS,EAAE,EAAE,EAAE,CAAC;aAC1B,CAAC;SACH;IACH,CAAC,CAAC,CACL,CAAC;AACJ,CAAC,CAAC;AAzBW,QAAA,kBAAkB,sBAyB7B"}
|
|
@@ -1,26 +1,25 @@
|
|
|
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
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Returns true if the name is a valid api name for an sobject/field
|
|
3
|
+
*
|
|
4
|
+
* @param name API name of the object
|
|
5
|
+
*/
|
|
6
|
+
export declare const validateAPIName: (name: string, message?: string) => string;
|
|
7
|
+
/**
|
|
8
|
+
* Returns true if the fieldname is a valid metadata object name
|
|
9
|
+
*
|
|
10
|
+
* @param fieldName API name of the field
|
|
11
|
+
*/
|
|
12
|
+
export declare const validateMetadataTypeName: (typeName: string) => string;
|
|
13
|
+
export declare const isValidMetadataRecordName: (recordName: string) => boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Returns true if the fieldname is a valid metadata record name
|
|
16
|
+
*
|
|
17
|
+
* @param fieldName record name of a metadata record
|
|
18
|
+
*/
|
|
19
|
+
export declare const validateMetadataRecordName: (typeName: string) => string;
|
|
20
|
+
/**
|
|
21
|
+
* Returns true if name is below 40 characters
|
|
22
|
+
*
|
|
23
|
+
* @param name label name or plural label
|
|
24
|
+
*/
|
|
25
|
+
export declare const validateLessThanForty: (name: string, message: string) => string;
|
|
@@ -1,52 +1,78 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateLessThanForty = exports.validateMetadataRecordName = exports.isValidMetadataRecordName = exports.validateMetadataTypeName = exports.validateAPIName = void 0;
|
|
2
4
|
/*
|
|
3
|
-
* Copyright (c)
|
|
5
|
+
* Copyright (c) 2020, salesforce.com, inc.
|
|
4
6
|
* All rights reserved.
|
|
5
|
-
*
|
|
6
|
-
* For full license text, see
|
|
7
|
+
* Licensed under the BSD 3-Clause license.
|
|
8
|
+
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
7
9
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
10
|
+
const core_1 = require("@salesforce/core");
|
|
11
|
+
core_1.Messages.importMessagesDirectory(__dirname);
|
|
12
|
+
const messages = core_1.Messages.load('@salesforce/plugin-custom-metadata', 'validation', [
|
|
13
|
+
'sobjectnameFlagError',
|
|
14
|
+
'invalidCMDTApiName',
|
|
15
|
+
'notAValidRecordNameError',
|
|
16
|
+
]);
|
|
17
|
+
/**
|
|
18
|
+
* Returns true if the name is a valid api name for an sobject/field
|
|
19
|
+
*
|
|
20
|
+
* @param name API name of the object
|
|
21
|
+
*/
|
|
22
|
+
const validateAPIName = (name, message) => {
|
|
23
|
+
// trimming the __c from the field during character count since it does not count towards the limit
|
|
24
|
+
// Regex makes sure that the field name is alpha numeric, doesn't end in an underscore
|
|
25
|
+
// and optionally if it ends in __c
|
|
26
|
+
const cleanedValue = name.replace('__c', '').replace('__C', '');
|
|
27
|
+
if (cleanedValue.length > 40 || !/^[a-zA-Z][a-zA-Z0-9]*(_[a-zA-Z0-9]+)*(__[cC])?$/.test(cleanedValue)) {
|
|
28
|
+
throw new core_1.SfError(message !== null && message !== void 0 ? message : messages.getMessage('sobjectnameFlagError', [name]));
|
|
21
29
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
return name;
|
|
31
|
+
};
|
|
32
|
+
exports.validateAPIName = validateAPIName;
|
|
33
|
+
/**
|
|
34
|
+
* Returns true if the fieldname is a valid metadata object name
|
|
35
|
+
*
|
|
36
|
+
* @param fieldName API name of the field
|
|
37
|
+
*/
|
|
38
|
+
const validateMetadataTypeName = (typeName) => {
|
|
39
|
+
// trimming the __mdt from the field during character count since it does not count towards the limit
|
|
40
|
+
// Regex makes sure that the field name is alpha numeric, doesn't end in an underscore
|
|
41
|
+
// and optionally if it ends in __mdt
|
|
42
|
+
const trimmedValue = typeName.replace(/__mdt$/gi, '');
|
|
43
|
+
if (trimmedValue.length > 40 || !/^[a-zA-Z][a-zA-Z0-9]*(_[a-zA-Z0-9]+)*(__[mdtT])?$/.test(trimmedValue)) {
|
|
44
|
+
throw new core_1.SfError(messages.getMessage('invalidCMDTApiName', [typeName]));
|
|
32
45
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
46
|
+
return trimmedValue;
|
|
47
|
+
};
|
|
48
|
+
exports.validateMetadataTypeName = validateMetadataTypeName;
|
|
49
|
+
const isValidMetadataRecordName = (recordName) => {
|
|
50
|
+
return recordName.length <= 40 && /^[a-zA-Z][a-zA-Z0-9]*(_[a-zA-Z0-9]+)*$/.test(recordName);
|
|
51
|
+
};
|
|
52
|
+
exports.isValidMetadataRecordName = isValidMetadataRecordName;
|
|
53
|
+
/**
|
|
54
|
+
* Returns true if the fieldname is a valid metadata record name
|
|
55
|
+
*
|
|
56
|
+
* @param fieldName record name of a metadata record
|
|
57
|
+
*/
|
|
58
|
+
const validateMetadataRecordName = (typeName) => {
|
|
59
|
+
// Regex makes sure that the field name is alpha numeric, doesn't end in an underscore
|
|
60
|
+
if (!(0, exports.isValidMetadataRecordName)(typeName)) {
|
|
61
|
+
throw new core_1.SfError(messages.getMessage('notAValidRecordNameError', [typeName]));
|
|
41
62
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
63
|
+
return typeName;
|
|
64
|
+
};
|
|
65
|
+
exports.validateMetadataRecordName = validateMetadataRecordName;
|
|
66
|
+
/**
|
|
67
|
+
* Returns true if name is below 40 characters
|
|
68
|
+
*
|
|
69
|
+
* @param name label name or plural label
|
|
70
|
+
*/
|
|
71
|
+
const validateLessThanForty = (name, message) => {
|
|
72
|
+
if (name.length > 40) {
|
|
73
|
+
throw new core_1.SfError(message);
|
|
49
74
|
}
|
|
50
|
-
|
|
51
|
-
|
|
75
|
+
return name;
|
|
76
|
+
};
|
|
77
|
+
exports.validateLessThanForty = validateLessThanForty;
|
|
52
78
|
//# sourceMappingURL=validationUtil.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validationUtil.js","sourceRoot":"","sources":["../../../src/lib/helpers/validationUtil.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validationUtil.js","sourceRoot":"","sources":["../../../src/lib/helpers/validationUtil.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,2CAAqD;AACrD,eAAQ,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAC5C,MAAM,QAAQ,GAAG,eAAQ,CAAC,IAAI,CAAC,oCAAoC,EAAE,YAAY,EAAE;IACjF,sBAAsB;IACtB,oBAAoB;IACpB,0BAA0B;CAC3B,CAAC,CAAC;AAEH;;;;GAIG;AACI,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,OAAgB,EAAU,EAAE;IACxE,mGAAmG;IACnG,sFAAsF;IACtF,mCAAmC;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChE,IAAI,YAAY,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,iDAAiD,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;QACrG,MAAM,IAAI,cAAO,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,QAAQ,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnF;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AATW,QAAA,eAAe,mBAS1B;AAEF;;;;GAIG;AACI,MAAM,wBAAwB,GAAG,CAAC,QAAgB,EAAU,EAAE;IACnE,qGAAqG;IACrG,sFAAsF;IACtF,qCAAqC;IACrC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACtD,IAAI,YAAY,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,mDAAmD,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;QACvG,MAAM,IAAI,cAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC1E;IACD,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AATW,QAAA,wBAAwB,4BASnC;AAEK,MAAM,yBAAyB,GAAG,CAAC,UAAkB,EAAW,EAAE;IACvE,OAAO,UAAU,CAAC,MAAM,IAAI,EAAE,IAAI,wCAAwC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9F,CAAC,CAAC;AAFW,QAAA,yBAAyB,6BAEpC;AACF;;;;GAIG;AACI,MAAM,0BAA0B,GAAG,CAAC,QAAgB,EAAU,EAAE;IACrE,sFAAsF;IACtF,IAAI,CAAC,IAAA,iCAAyB,EAAC,QAAQ,CAAC,EAAE;QACxC,MAAM,IAAI,cAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,0BAA0B,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAChF;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AANW,QAAA,0BAA0B,8BAMrC;AAEF;;;;GAIG;AACI,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,OAAe,EAAU,EAAE;IAC7E,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE;QACpB,MAAM,IAAI,cAAO,CAAC,OAAO,CAAC,CAAC;KAC5B;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AALW,QAAA,qBAAqB,yBAKhC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Record } from 'jsforce';
|
|
2
|
+
import { CustomField } from 'jsforce/api/metadata';
|
|
2
3
|
export interface CreateConfig {
|
|
3
4
|
typename: string;
|
|
4
5
|
recordname: string;
|
|
@@ -6,7 +7,7 @@ export interface CreateConfig {
|
|
|
6
7
|
inputdir: string;
|
|
7
8
|
outputdir: string;
|
|
8
9
|
protected?: boolean;
|
|
9
|
-
varargs?:
|
|
10
|
+
varargs?: Record;
|
|
10
11
|
fileData?: CustomField[];
|
|
11
12
|
ignorefields?: boolean;
|
|
12
13
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c)
|
|
3
|
+
* Copyright (c) 2020, salesforce.com, inc.
|
|
4
4
|
* All rights reserved.
|
|
5
|
-
*
|
|
6
|
-
* For full license text, see
|
|
5
|
+
* Licensed under the BSD 3-Clause license.
|
|
6
|
+
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
//# sourceMappingURL=createConfig.js.map
|
|
@@ -1,112 +1,24 @@
|
|
|
1
|
+
import { CustomField } from 'jsforce/api/metadata';
|
|
1
2
|
export declare class Templates {
|
|
2
3
|
/**
|
|
3
4
|
* Using the given data and visibility, creates the body of a type metadata file
|
|
5
|
+
*
|
|
4
6
|
* @param data
|
|
5
7
|
* @param visibility
|
|
6
8
|
*/
|
|
7
|
-
createObjectXML(
|
|
9
|
+
createObjectXML({ label, pluralLabel }: {
|
|
10
|
+
label: string;
|
|
11
|
+
pluralLabel: string;
|
|
12
|
+
}, visibility: string): string;
|
|
8
13
|
/**
|
|
9
14
|
* Using the given data and defaultToString, creates the body for a field file.
|
|
15
|
+
*
|
|
10
16
|
* @param data Record details
|
|
11
17
|
* @param defaultToString If the defaultToString set type to Text for unsupported field types
|
|
12
18
|
*/
|
|
13
|
-
createFieldXML(data:
|
|
14
|
-
createDefaultTypeStructure(fullName: string, type: string, label: string, picklistValues: string[], decimalplaces?: number):
|
|
15
|
-
|
|
16
|
-
defaultValue: string;
|
|
17
|
-
type: "Checkbox";
|
|
18
|
-
label: string;
|
|
19
|
-
unique?: undefined;
|
|
20
|
-
precision?: undefined;
|
|
21
|
-
scale?: undefined;
|
|
22
|
-
valueSet?: undefined;
|
|
23
|
-
length?: undefined;
|
|
24
|
-
visibleLines?: undefined;
|
|
25
|
-
} | {
|
|
26
|
-
fullName: string;
|
|
27
|
-
type: "Email";
|
|
28
|
-
label: string;
|
|
29
|
-
unique: string;
|
|
30
|
-
defaultValue?: undefined;
|
|
31
|
-
precision?: undefined;
|
|
32
|
-
scale?: undefined;
|
|
33
|
-
valueSet?: undefined;
|
|
34
|
-
length?: undefined;
|
|
35
|
-
visibleLines?: undefined;
|
|
36
|
-
} | {
|
|
37
|
-
fullName: string;
|
|
38
|
-
type: "Number";
|
|
39
|
-
label: string;
|
|
40
|
-
precision: number;
|
|
41
|
-
scale: number;
|
|
42
|
-
unique: string;
|
|
43
|
-
defaultValue?: undefined;
|
|
44
|
-
valueSet?: undefined;
|
|
45
|
-
length?: undefined;
|
|
46
|
-
visibleLines?: undefined;
|
|
47
|
-
} | {
|
|
48
|
-
fullName: string;
|
|
49
|
-
type: "Percent";
|
|
50
|
-
label: string;
|
|
51
|
-
precision: number;
|
|
52
|
-
scale: number;
|
|
53
|
-
defaultValue?: undefined;
|
|
54
|
-
unique?: undefined;
|
|
55
|
-
valueSet?: undefined;
|
|
56
|
-
length?: undefined;
|
|
57
|
-
visibleLines?: undefined;
|
|
58
|
-
} | {
|
|
59
|
-
fullName: string;
|
|
60
|
-
type: "Picklist";
|
|
61
|
-
label: string;
|
|
62
|
-
valueSet: {
|
|
63
|
-
restricted: string;
|
|
64
|
-
valueSetDefinition: {
|
|
65
|
-
sorted: string;
|
|
66
|
-
value: any[];
|
|
67
|
-
};
|
|
68
|
-
};
|
|
69
|
-
defaultValue?: undefined;
|
|
70
|
-
unique?: undefined;
|
|
71
|
-
precision?: undefined;
|
|
72
|
-
scale?: undefined;
|
|
73
|
-
length?: undefined;
|
|
74
|
-
visibleLines?: undefined;
|
|
75
|
-
} | {
|
|
76
|
-
fullName: string;
|
|
77
|
-
type: "Text";
|
|
78
|
-
label: string;
|
|
79
|
-
unique: string;
|
|
80
|
-
length: string;
|
|
81
|
-
defaultValue?: undefined;
|
|
82
|
-
precision?: undefined;
|
|
83
|
-
scale?: undefined;
|
|
84
|
-
valueSet?: undefined;
|
|
85
|
-
visibleLines?: undefined;
|
|
86
|
-
} | {
|
|
87
|
-
fullName: string;
|
|
88
|
-
type: "LongTextArea";
|
|
89
|
-
label: string;
|
|
90
|
-
length: string;
|
|
91
|
-
visibleLines: number;
|
|
92
|
-
defaultValue?: undefined;
|
|
93
|
-
unique?: undefined;
|
|
94
|
-
precision?: undefined;
|
|
95
|
-
scale?: undefined;
|
|
96
|
-
valueSet?: undefined;
|
|
97
|
-
} | {
|
|
98
|
-
fullName: string;
|
|
99
|
-
type: string;
|
|
100
|
-
label: string;
|
|
101
|
-
defaultValue?: undefined;
|
|
102
|
-
unique?: undefined;
|
|
103
|
-
precision?: undefined;
|
|
104
|
-
scale?: undefined;
|
|
105
|
-
valueSet?: undefined;
|
|
106
|
-
length?: undefined;
|
|
107
|
-
visibleLines?: undefined;
|
|
108
|
-
};
|
|
109
|
-
canConvert(type: any): boolean;
|
|
19
|
+
createFieldXML(data: CustomField, defaultToString: boolean): string;
|
|
20
|
+
createDefaultTypeStructure(fullName: string, type: string, label: string, picklistValues: string[], decimalplaces?: number): CustomField;
|
|
21
|
+
canConvert(type: string): boolean;
|
|
110
22
|
private getType;
|
|
111
23
|
private getConvertType;
|
|
112
24
|
private getFullName;
|
|
@@ -122,5 +34,4 @@ export declare class Templates {
|
|
|
122
34
|
private getVisibleLines;
|
|
123
35
|
private getDefaultValue;
|
|
124
36
|
private getValueSet;
|
|
125
|
-
private createPicklistValues;
|
|
126
37
|
}
|