@salesforce/plugin-custom-metadata 1.1.0 → 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.
Files changed (52) hide show
  1. package/CHANGELOG.md +14 -12
  2. package/LICENSE.txt +2 -2
  3. package/README.md +137 -133
  4. package/lib/commands/force/cmdt/create.d.ts +8 -2
  5. package/lib/commands/force/cmdt/create.js +15 -21
  6. package/lib/commands/force/cmdt/create.js.map +1 -1
  7. package/lib/commands/force/cmdt/field/create.d.ts +7 -2
  8. package/lib/commands/force/cmdt/field/create.js +15 -20
  9. package/lib/commands/force/cmdt/field/create.js.map +1 -1
  10. package/lib/commands/force/cmdt/generate.d.ts +6 -2
  11. package/lib/commands/force/cmdt/generate.js +79 -150
  12. package/lib/commands/force/cmdt/generate.js.map +1 -1
  13. package/lib/commands/force/cmdt/record/create.d.ts +14 -3
  14. package/lib/commands/force/cmdt/record/create.js +25 -33
  15. package/lib/commands/force/cmdt/record/create.js.map +1 -1
  16. package/lib/commands/force/cmdt/record/insert.d.ts +2 -2
  17. package/lib/commands/force/cmdt/record/insert.js +28 -40
  18. package/lib/commands/force/cmdt/record/insert.js.map +1 -1
  19. package/lib/lib/helpers/createUtil.d.ts +10 -6
  20. package/lib/lib/helpers/createUtil.js +48 -100
  21. package/lib/lib/helpers/createUtil.js.map +1 -1
  22. package/lib/lib/helpers/fileWriter.d.ts +11 -11
  23. package/lib/lib/helpers/fileWriter.js +14 -24
  24. package/lib/lib/helpers/fileWriter.js.map +1 -1
  25. package/lib/lib/helpers/metadataUtil.d.ts +25 -51
  26. package/lib/lib/helpers/metadataUtil.js +55 -131
  27. package/lib/lib/helpers/metadataUtil.js.map +1 -1
  28. package/lib/lib/helpers/validationUtil.d.ts +25 -26
  29. package/lib/lib/helpers/validationUtil.js +66 -43
  30. package/lib/lib/helpers/validationUtil.js.map +1 -1
  31. package/lib/lib/interfaces/createConfig.d.ts +3 -2
  32. package/lib/lib/templates/templates.d.ts +8 -99
  33. package/lib/lib/templates/templates.js +38 -67
  34. package/lib/lib/templates/templates.js.map +1 -1
  35. package/messages/createField.json +22 -31
  36. package/messages/generate.json +38 -51
  37. package/messages/template.json +2 -2
  38. package/messages/validation.json +5 -0
  39. package/oclif.manifest.json +1 -1
  40. package/package.json +53 -42
  41. package/lib/lib/interfaces/customField.d.ts +0 -7
  42. package/lib/lib/interfaces/customField.js +0 -9
  43. package/lib/lib/interfaces/customField.js.map +0 -1
  44. package/lib/lib/interfaces/errorMessage.d.ts +0 -4
  45. package/lib/lib/interfaces/errorMessage.js +0 -9
  46. package/lib/lib/interfaces/errorMessage.js.map +0 -1
  47. package/lib/lib/interfaces/record.d.ts +0 -3
  48. package/lib/lib/interfaces/record.js +0 -9
  49. package/lib/lib/interfaces/record.js.map +0 -1
  50. package/lib/lib/interfaces/saveResults.d.ts +0 -5
  51. package/lib/lib/interfaces/saveResults.js +0 -9
  52. package/lib/lib/interfaces/saveResults.js.map +0 -1
@@ -6,136 +6,60 @@
6
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.MetadataUtil = void 0;
10
- const ts_types_1 = require("@salesforce/ts-types");
11
- class MetadataUtil {
12
- constructor(conn) {
13
- this.conn = conn;
14
- }
15
- /**
16
- * Returns a describe object from the API name you specify
17
- *
18
- * @param objName API name of the object
19
- * @returns Promise - JSON representation of the describe object
20
- */
21
- async describeObj(objName) {
22
- const result = await this.conn.metadata.read('CustomObject', objName, (err, meta) => {
23
- if (err) {
24
- const errorResponse = {
25
- errorCode: '',
26
- errorMessage: '',
27
- };
28
- errorResponse.errorCode = err.name;
29
- errorResponse.errorMessage = err.message;
30
- return errorResponse;
31
- }
32
- return meta;
33
- });
34
- return (0, ts_types_1.toAnyJson)(result);
35
- }
36
- /**
37
- * Returns an array of object records from a SOQL query
38
- *
39
- * @param soqlStr String representation of the SOQL query
40
- * @returns Promise - Array of records in JSON format
41
- */
42
- async queryObject(soqlStr) {
43
- const result = await this.conn.query(soqlStr, {}, (err, meta) => {
44
- if (err) {
45
- const errorResponse = { errorCode: '', errorMessage: '' };
46
- errorResponse.errorCode = err.name;
47
- errorResponse.errorMessage = err.message;
48
- return errorResponse;
49
- }
50
- return meta;
51
- });
52
- return (0, ts_types_1.toAnyJson)(result);
53
- }
54
- /**
55
- * Returns an array of object records
56
- *
57
- * @param describeResult object describe result
58
- * @returns Promise - Promise - Array of records in JSON format
59
- */
60
- async queryRecords(describeResult) {
61
- const query = await this._getSoqlQuery(describeResult['fields'], describeResult['fullName']);
62
- const queryResult = await this.queryObject(query);
63
- return (0, ts_types_1.toAnyJson)(queryResult);
64
- }
65
- /**
66
- * Returns describe object for the field API name from the Object API name you specify
67
- *
68
- * @param objDescribe describe object JSON
69
- * @param fieldName API name of the field to query
70
- * @returns Promise - Promise - record in JSON format
71
- */
72
- describeField(objDescribe, fieldName) {
73
- const fieldsDescribe = objDescribe['fields'];
74
- let fieldsDescribeResult;
75
- fieldsDescribe.map((field) => {
76
- if (field.fullName === fieldName) {
77
- fieldsDescribeResult = field;
78
- }
79
- });
80
- return fieldsDescribeResult;
81
- }
82
- /**
83
- * Returns describe object for all fields from the object API name you specify
84
- *
85
- * @param objDescribe object describe JSON
86
- * @returns Promise - Promise - record in JSON format
87
- */
88
- describeObjFields(objDescribe) {
89
- const fieldsDescribe = objDescribe['fields'];
90
- return fieldsDescribe;
91
- }
92
- /**
93
- * Returns true if the object name you specify is a list type custom setting
94
- *
95
- * @param objName API name of the object to query
96
- * @returns boolean
97
- */
98
- validCustomSettingType(objDescribe) {
99
- if (objDescribe['customSettingsType'] === 'List' &&
100
- objDescribe['visibility'] === 'Public') {
101
- 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
+ ];
102
61
  }
103
- return false;
104
- }
105
- cleanQueryResponse(sObjecRecord, objectDescribe) {
106
- const record = {};
107
- Object.keys(sObjecRecord).forEach((fieldName) => {
108
- if (fieldName !== 'attributes' && fieldName !== 'Name') {
109
- const fieldDescribe = this.describeField(objectDescribe, fieldName);
110
- const fieldType = fieldDescribe['type'];
111
- const fieldValue = JSON.stringify(sObjecRecord[fieldName]);
112
- if (fieldType === 'Location') {
113
- if (fieldValue.includes('latitude') ||
114
- fieldValue.includes('longitude')) {
115
- record['Lat_' + fieldName] = fieldValue.slice(fieldValue.indexOf(':') + 1, fieldValue.indexOf(','));
116
- record['Long_' + fieldName] = fieldValue.slice(fieldValue.lastIndexOf(':') + 1, fieldValue.indexOf('}'));
117
- }
118
- else {
119
- record['Lat_' + fieldName] = '';
120
- record['Long_' + fieldName] = '';
121
- }
122
- }
123
- else {
124
- record[fieldName] = sObjecRecord[fieldName];
125
- }
126
- }
127
- });
128
- return record;
129
- }
130
- _getSoqlQuery(arr, objName) {
131
- const fieldNames = arr
132
- .map((field) => {
133
- return field.fullName;
134
- })
135
- .join(',');
136
- // Added Name hardcoded as Name field is not retreived as part of object describe.
137
- return `SELECT Name, ${fieldNames} FROM ${objName}`;
138
- }
139
- }
140
- exports.MetadataUtil = MetadataUtil;
62
+ }));
63
+ };
64
+ exports.cleanQueryResponse = cleanQueryResponse;
141
65
  //# sourceMappingURL=metadataUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadataUtil.js","sourceRoot":"","sources":["../../../src/lib/helpers/metadataUtil.ts"],"names":[],"mappings":"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"}
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
- export declare class ValidationUtil {
2
- /**
3
- * Returns true if the fieldname is a valid api name
4
- *
5
- * @param fieldName API name of the object
6
- */
7
- validateAPIName(fieldName: any): boolean;
8
- /**
9
- * Returns true if the fieldname is a valid metadata object name
10
- *
11
- * @param fieldName API name of the field
12
- */
13
- validateMetadataTypeName(typeName: any): 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
- validateMetadataRecordName(typeName: any): boolean;
20
- /**
21
- * Returns true if name is below 40 characters
22
- *
23
- * @param name label name or plural label
24
- */
25
- validateLessThanForty(name: any): boolean;
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,55 +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
5
  * Copyright (c) 2020, salesforce.com, inc.
4
6
  * All rights reserved.
5
7
  * Licensed under the BSD 3-Clause license.
6
8
  * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
9
  */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.ValidationUtil = void 0;
10
- class ValidationUtil {
11
- /**
12
- * Returns true if the fieldname is a valid api name
13
- *
14
- * @param fieldName API name of the object
15
- */
16
- validateAPIName(fieldName) {
17
- // trimming the __c from the field during character count since it does not count towards the limit
18
- // Regex makes sure that the field name is alpha numeric, doesn't end in an underscore
19
- // and optionally if it ends in __c
20
- return (fieldName.replace('__c', '').replace('__C', '').length <= 40 &&
21
- /^[a-zA-Z][a-zA-Z0-9]*(_[a-zA-Z0-9]+)*(__[cC])?$/.test(fieldName));
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]));
22
29
  }
23
- /**
24
- * Returns true if the fieldname is a valid metadata object name
25
- *
26
- * @param fieldName API name of the field
27
- */
28
- validateMetadataTypeName(typeName) {
29
- // trimming the __mdt from the field during character count since it does not count towards the limit
30
- // Regex makes sure that the field name is alpha numeric, doesn't end in an underscore
31
- // and optionally if it ends in __mdt
32
- return (typeName.replace('__mdt', '').length <= 40 &&
33
- /^[a-zA-Z][a-zA-Z0-9]*(_[a-zA-Z0-9]+)*(__mdt)?$/.test(typeName));
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]));
34
45
  }
35
- /**
36
- * Returns true if the fieldname is a valid metadata record name
37
- *
38
- * @param fieldName record name of a metadata record
39
- */
40
- validateMetadataRecordName(typeName) {
41
- // Regex makes sure that the field name is alpha numeric, doesn't end in an underscore
42
- return (typeName.length <= 40 &&
43
- /^[a-zA-Z][a-zA-Z0-9]*(_[a-zA-Z0-9]+)*$/.test(typeName));
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]));
44
62
  }
45
- /**
46
- * Returns true if name is below 40 characters
47
- *
48
- * @param name label name or plural label
49
- */
50
- validateLessThanForty(name) {
51
- return name.length <= 40;
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);
52
74
  }
53
- }
54
- exports.ValidationUtil = ValidationUtil;
75
+ return name;
76
+ };
77
+ exports.validateLessThanForty = validateLessThanForty;
55
78
  //# sourceMappingURL=validationUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validationUtil.js","sourceRoot":"","sources":["../../../src/lib/helpers/validationUtil.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,MAAa,cAAc;IACzB;;;;OAIG;IACI,eAAe,CAAC,SAAS;QAC9B,mGAAmG;QACnG,sFAAsF;QACtF,mCAAmC;QACnC,OAAO,CACL,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;YAC5D,iDAAiD,CAAC,IAAI,CAAC,SAAS,CAAC,CAClE,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,wBAAwB,CAAC,QAAQ;QACtC,qGAAqG;QACrG,sFAAsF;QACtF,qCAAqC;QACrC,OAAO,CACL,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;YAC1C,gDAAgD,CAAC,IAAI,CAAC,QAAQ,CAAC,CAChE,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,0BAA0B,CAAC,QAAQ;QACxC,sFAAsF;QACtF,OAAO,CACL,QAAQ,CAAC,MAAM,IAAI,EAAE;YACrB,wCAAwC,CAAC,IAAI,CAAC,QAAQ,CAAC,CACxD,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,qBAAqB,CAAC,IAAI;QAC/B,OAAO,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF;AApDD,wCAoDC"}
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 { CustomField } from './customField';
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?: object;
10
+ varargs?: Record;
10
11
  fileData?: CustomField[];
11
12
  ignorefields?: boolean;
12
13
  }
@@ -1,3 +1,4 @@
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,110 +6,19 @@ export declare class Templates {
5
6
  * @param data
6
7
  * @param visibility
7
8
  */
8
- createObjectXML(data: any, visibility: any): string;
9
+ createObjectXML({ label, pluralLabel }: {
10
+ label: string;
11
+ pluralLabel: string;
12
+ }, visibility: string): string;
9
13
  /**
10
14
  * Using the given data and defaultToString, creates the body for a field file.
11
15
  *
12
16
  * @param data Record details
13
17
  * @param defaultToString If the defaultToString set type to Text for unsupported field types
14
18
  */
15
- createFieldXML(data: any, defaultToString: boolean): string;
16
- createDefaultTypeStructure(fullName: string, type: string, label: string, picklistValues: string[], decimalplaces?: number): {
17
- fullName: string;
18
- defaultValue: string;
19
- type: "Checkbox";
20
- label: string;
21
- unique?: undefined;
22
- precision?: undefined;
23
- scale?: undefined;
24
- valueSet?: undefined;
25
- length?: undefined;
26
- visibleLines?: undefined;
27
- } | {
28
- fullName: string;
29
- type: "Email";
30
- label: string;
31
- unique: string;
32
- defaultValue?: undefined;
33
- precision?: undefined;
34
- scale?: undefined;
35
- valueSet?: undefined;
36
- length?: undefined;
37
- visibleLines?: undefined;
38
- } | {
39
- fullName: string;
40
- type: "Number";
41
- label: string;
42
- precision: number;
43
- scale: number;
44
- unique: string;
45
- defaultValue?: undefined;
46
- valueSet?: undefined;
47
- length?: undefined;
48
- visibleLines?: undefined;
49
- } | {
50
- fullName: string;
51
- type: "Percent";
52
- label: string;
53
- precision: number;
54
- scale: number;
55
- defaultValue?: undefined;
56
- unique?: undefined;
57
- valueSet?: undefined;
58
- length?: undefined;
59
- visibleLines?: undefined;
60
- } | {
61
- fullName: string;
62
- type: "Picklist";
63
- label: string;
64
- valueSet: {
65
- restricted: string;
66
- valueSetDefinition: {
67
- sorted: string;
68
- value: any[];
69
- };
70
- };
71
- defaultValue?: undefined;
72
- unique?: undefined;
73
- precision?: undefined;
74
- scale?: undefined;
75
- length?: undefined;
76
- visibleLines?: undefined;
77
- } | {
78
- fullName: string;
79
- type: "Text";
80
- label: string;
81
- unique: string;
82
- length: string;
83
- defaultValue?: undefined;
84
- precision?: undefined;
85
- scale?: undefined;
86
- valueSet?: undefined;
87
- visibleLines?: undefined;
88
- } | {
89
- fullName: string;
90
- type: "LongTextArea";
91
- label: string;
92
- length: string;
93
- visibleLines: number;
94
- defaultValue?: undefined;
95
- unique?: undefined;
96
- precision?: undefined;
97
- scale?: undefined;
98
- valueSet?: undefined;
99
- } | {
100
- fullName: string;
101
- type: string;
102
- label: string;
103
- defaultValue?: undefined;
104
- unique?: undefined;
105
- precision?: undefined;
106
- scale?: undefined;
107
- valueSet?: undefined;
108
- length?: undefined;
109
- visibleLines?: undefined;
110
- };
111
- 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;
112
22
  private getType;
113
23
  private getConvertType;
114
24
  private getFullName;
@@ -124,5 +34,4 @@ export declare class Templates {
124
34
  private getVisibleLines;
125
35
  private getDefaultValue;
126
36
  private getValueSet;
127
- private createPicklistValues;
128
37
  }