@salesforce/plugin-custom-metadata 2.0.9 → 2.0.11

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 (77) hide show
  1. package/README.md +0 -1
  2. package/lib/commands/generate/cmdt/field.d.ts +23 -0
  3. package/lib/commands/generate/cmdt/field.js +100 -0
  4. package/lib/commands/generate/cmdt/field.js.map +1 -0
  5. package/lib/commands/generate/cmdt/fromorg.d.ts +26 -0
  6. package/lib/commands/generate/cmdt/fromorg.js +184 -0
  7. package/lib/commands/generate/cmdt/fromorg.js.map +1 -0
  8. package/lib/commands/generate/cmdt/object.d.ts +23 -0
  9. package/lib/commands/generate/cmdt/object.js +79 -0
  10. package/lib/commands/generate/cmdt/object.js.map +1 -0
  11. package/lib/commands/generate/cmdt/record.d.ts +29 -0
  12. package/lib/commands/generate/cmdt/record.js +111 -0
  13. package/lib/commands/generate/cmdt/record.js.map +1 -0
  14. package/lib/commands/generate/cmdt/records.d.ts +18 -0
  15. package/lib/commands/generate/cmdt/records.js +105 -0
  16. package/lib/commands/generate/cmdt/records.js.map +1 -0
  17. package/lib/shared/helpers/createUtil.d.ts +51 -0
  18. package/lib/shared/helpers/createUtil.js +168 -0
  19. package/lib/shared/helpers/createUtil.js.map +1 -0
  20. package/lib/shared/helpers/fileWriter.d.ts +24 -0
  21. package/lib/shared/helpers/fileWriter.js +59 -0
  22. package/lib/shared/helpers/fileWriter.js.map +1 -0
  23. package/lib/{lib → shared}/helpers/metadataUtil.d.ts +1 -1
  24. package/lib/{lib → shared}/helpers/metadataUtil.js +1 -1
  25. package/lib/shared/helpers/metadataUtil.js.map +1 -0
  26. package/lib/{lib → shared}/helpers/validationUtil.d.ts +0 -0
  27. package/lib/{lib → shared}/helpers/validationUtil.js +0 -0
  28. package/lib/shared/helpers/validationUtil.js.map +1 -0
  29. package/lib/{lib → shared}/interfaces/createConfig.d.ts +3 -2
  30. package/lib/{lib → shared}/interfaces/createConfig.js +0 -0
  31. package/lib/shared/interfaces/createConfig.js.map +1 -0
  32. package/lib/shared/templates/templates.d.ts +20 -0
  33. package/lib/shared/templates/templates.js +208 -0
  34. package/lib/shared/templates/templates.js.map +1 -0
  35. package/messages/field.md +79 -0
  36. package/messages/fromorg.md +87 -0
  37. package/messages/object.md +73 -0
  38. package/messages/record.md +53 -0
  39. package/messages/records.md +49 -0
  40. package/messages/template.md +3 -0
  41. package/messages/validation.md +11 -0
  42. package/oclif.manifest.json +1 -1
  43. package/package.json +17 -16
  44. package/lib/commands/force/cmdt/create.d.ts +0 -25
  45. package/lib/commands/force/cmdt/create.js +0 -94
  46. package/lib/commands/force/cmdt/create.js.map +0 -1
  47. package/lib/commands/force/cmdt/field/create.d.ts +0 -25
  48. package/lib/commands/force/cmdt/field/create.js +0 -113
  49. package/lib/commands/force/cmdt/field/create.js.map +0 -1
  50. package/lib/commands/force/cmdt/generate.d.ts +0 -27
  51. package/lib/commands/force/cmdt/generate.js +0 -219
  52. package/lib/commands/force/cmdt/generate.js.map +0 -1
  53. package/lib/commands/force/cmdt/record/create.d.ts +0 -32
  54. package/lib/commands/force/cmdt/record/create.js +0 -140
  55. package/lib/commands/force/cmdt/record/create.js.map +0 -1
  56. package/lib/commands/force/cmdt/record/insert.d.ts +0 -16
  57. package/lib/commands/force/cmdt/record/insert.js +0 -110
  58. package/lib/commands/force/cmdt/record/insert.js.map +0 -1
  59. package/lib/lib/helpers/createUtil.d.ts +0 -62
  60. package/lib/lib/helpers/createUtil.js +0 -170
  61. package/lib/lib/helpers/createUtil.js.map +0 -1
  62. package/lib/lib/helpers/fileWriter.d.ts +0 -27
  63. package/lib/lib/helpers/fileWriter.js +0 -63
  64. package/lib/lib/helpers/fileWriter.js.map +0 -1
  65. package/lib/lib/helpers/metadataUtil.js.map +0 -1
  66. package/lib/lib/helpers/validationUtil.js.map +0 -1
  67. package/lib/lib/interfaces/createConfig.js.map +0 -1
  68. package/lib/lib/templates/templates.d.ts +0 -37
  69. package/lib/lib/templates/templates.js +0 -221
  70. package/lib/lib/templates/templates.js.map +0 -1
  71. package/messages/createField.json +0 -24
  72. package/messages/createRecord.json +0 -32
  73. package/messages/createType.json +0 -33
  74. package/messages/generate.json +0 -40
  75. package/messages/insertRecord.json +0 -26
  76. package/messages/template.json +0 -3
  77. package/messages/validation.json +0 -5
package/README.md CHANGED
@@ -3,7 +3,6 @@
3
3
  Tools for working with custom metadata types and their records.
4
4
 
5
5
  [![Version](https://img.shields.io/npm/v/@salesforce/plugin-custom-metadata.svg)](https://www.npmjs.com/package/@salesforce/plugin-custom-metadata)
6
- [![CircleCI](https://circleci.com/gh/salesforcecli/plugin-custom-metadata/tree/master.svg?style=shield)](https://circleci.com/gh/salesforcecli/plugin-custom-metadata/tree/master)
7
6
  [![License](https://img.shields.io/npm/l/@salesforce/plugin-custom-metadata.svg)](https://github.com/salesforcecli/plugin-custom-metadata/blob/master/LICENSE.txt)
8
7
 
9
8
  This plugin is bundled with the [Salesforce CLI](https://developer.salesforce.com/tools/sfdxcli). For more information on the CLI, read the [getting started guide](https://developer.salesforce.com/docs/atlas.en-us.sfdx_setup.meta/sfdx_setup/sfdx_setup_intro.htm).
@@ -0,0 +1,23 @@
1
+ import { SfCommand } from '@salesforce/sf-plugins-core';
2
+ export interface CmdtFieldCreateResponse {
3
+ fieldName: string;
4
+ label: string;
5
+ fieldtype: string;
6
+ }
7
+ export default class Create extends SfCommand<CmdtFieldCreateResponse> {
8
+ static readonly summary: string;
9
+ static readonly description: string;
10
+ static readonly examples: string[];
11
+ static readonly requiresProject = true;
12
+ static readonly aliases: string[];
13
+ static readonly flags: {
14
+ loglevel: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
15
+ name: import("@oclif/core/lib/interfaces").OptionFlag<string>;
16
+ type: import("@oclif/core/lib/interfaces").OptionFlag<string>;
17
+ 'picklist-values': import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined>;
18
+ 'decimal-places': import("@oclif/core/lib/interfaces").OptionFlag<number>;
19
+ label: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
20
+ 'output-directory': import("@oclif/core/lib/interfaces").OptionFlag<string>;
21
+ };
22
+ run(): Promise<CmdtFieldCreateResponse>;
23
+ }
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ /*
5
+ * Copyright (c) 2020, salesforce.com, inc.
6
+ * All rights reserved.
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
9
+ */
10
+ const fs = require("fs");
11
+ const sf_plugins_core_1 = require("@salesforce/sf-plugins-core");
12
+ const core_1 = require("@salesforce/core");
13
+ const fileWriter_1 = require("../../../shared/helpers/fileWriter");
14
+ const validationUtil_1 = require("../../../shared/helpers/validationUtil");
15
+ const templates_1 = require("../../../shared/templates/templates");
16
+ core_1.Messages.importMessagesDirectory(__dirname);
17
+ const messages = core_1.Messages.loadMessages('@salesforce/plugin-custom-metadata', 'field');
18
+ class Create extends sf_plugins_core_1.SfCommand {
19
+ async run() {
20
+ var _b, _c, _d;
21
+ const { flags } = await this.parse(Create);
22
+ const picklistvalues = (_b = flags['picklist-values']) !== null && _b !== void 0 ? _b : [];
23
+ if (flags.type === 'Picklist' && (picklistvalues === null || picklistvalues === void 0 ? void 0 : picklistvalues.length) === 0) {
24
+ throw new core_1.SfError(messages.getMessage('picklistValuesNotSuppliedError'));
25
+ }
26
+ const data = (0, templates_1.createDefaultTypeStructure)(flags.name, flags.type, (_c = flags.label) !== null && _c !== void 0 ? _c : flags.name, picklistvalues, flags['decimal-places']);
27
+ const fieldXML = (0, templates_1.createFieldXML)(data, false);
28
+ const saveResults = await (0, fileWriter_1.writeFieldFile)(fs, flags['output-directory'], flags.name, fieldXML);
29
+ this.log(messages.getMessage('targetDirectory', [saveResults.dir]));
30
+ this.log(messages.getMessage(saveResults.updated ? 'fileUpdate' : 'fileCreated', [saveResults.fileName]));
31
+ return {
32
+ fieldName: flags.name,
33
+ label: (_d = flags.label) !== null && _d !== void 0 ? _d : flags.name,
34
+ fieldtype: flags.type,
35
+ };
36
+ }
37
+ }
38
+ exports.default = Create;
39
+ _a = Create;
40
+ Create.summary = messages.getMessage('summary');
41
+ Create.description = messages.getMessage('description');
42
+ Create.examples = messages.getMessages('examples');
43
+ Create.requiresProject = true;
44
+ Create.aliases = ['force:cmdt:field:create', 'cmdt:field:create'];
45
+ Create.flags = {
46
+ loglevel: sf_plugins_core_1.loglevel,
47
+ name: sf_plugins_core_1.Flags.string({
48
+ char: 'n',
49
+ required: true,
50
+ summary: messages.getMessage('flags.name.summary'),
51
+ parse: async (input) => Promise.resolve((0, validationUtil_1.validateAPIName)(input, messages.getMessage('invalidCustomFieldError', [input]))),
52
+ aliases: ['fieldname'],
53
+ }),
54
+ type: sf_plugins_core_1.Flags.string({
55
+ char: 'f',
56
+ required: true,
57
+ summary: messages.getMessage('flags.type.summary'),
58
+ description: messages.getMessage('flags.type.description'),
59
+ options: [
60
+ 'Checkbox',
61
+ 'Date',
62
+ 'DateTime',
63
+ 'Email',
64
+ 'Number',
65
+ 'Percent',
66
+ 'Phone',
67
+ 'Picklist',
68
+ 'Text',
69
+ 'TextArea',
70
+ 'LongTextArea',
71
+ 'Url',
72
+ ],
73
+ aliases: ['fieldtype'],
74
+ }),
75
+ 'picklist-values': (0, sf_plugins_core_1.arrayWithDeprecation)({
76
+ char: 'p',
77
+ summary: messages.getMessage('flags.picklist-values.summary'),
78
+ aliases: ['picklistvalues'],
79
+ }),
80
+ 'decimal-places': sf_plugins_core_1.Flags.integer({
81
+ char: 's',
82
+ summary: messages.getMessage('flags.decimal-places.summary'),
83
+ description: messages.getMessage('flags.decimal-places.description'),
84
+ default: 0,
85
+ min: 0,
86
+ aliases: ['decimalplaces'],
87
+ }),
88
+ label: sf_plugins_core_1.Flags.string({
89
+ char: 'l',
90
+ summary: messages.getMessage('flags.label.summary'),
91
+ }),
92
+ 'output-directory': sf_plugins_core_1.Flags.directory({
93
+ char: 'd',
94
+ summary: messages.getMessage('flags.output-directory.summary'),
95
+ description: messages.getMessage('flags.output-directory.description'),
96
+ default: '',
97
+ aliases: ['outputdir', 'outputdirectory'],
98
+ }),
99
+ };
100
+ //# sourceMappingURL=field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.js","sourceRoot":"","sources":["../../../../src/commands/generate/cmdt/field.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { SfCommand } from '@salesforce/sf-plugins-core';
2
+ export interface CmdtGenerateResponse {
3
+ outputDir: string;
4
+ recordsOutputDir: string;
5
+ }
6
+ export default class Generate extends SfCommand<CmdtGenerateResponse> {
7
+ static readonly summary: string;
8
+ static readonly description: string;
9
+ static readonly examples: string[];
10
+ static readonly requiresProject = true;
11
+ static readonly aliases: string[];
12
+ static readonly flags: {
13
+ 'target-org': import("@oclif/core/lib/interfaces").OptionFlag<import("@salesforce/core").Org>;
14
+ 'api-version': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
15
+ loglevel: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
16
+ 'dev-name': import("@oclif/core/lib/interfaces").OptionFlag<string>;
17
+ label: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
18
+ 'plural-label': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
19
+ visibility: import("@oclif/core/lib/interfaces").OptionFlag<string>;
20
+ sobject: import("@oclif/core/lib/interfaces").OptionFlag<string>;
21
+ 'ignore-unsupported': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
22
+ 'type-output-directory': import("@oclif/core/lib/interfaces").OptionFlag<string>;
23
+ 'records-output-dir': import("@oclif/core/lib/interfaces").OptionFlag<string>;
24
+ };
25
+ run(): Promise<CmdtGenerateResponse>;
26
+ }
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ /*
5
+ * Copyright (c) 2020, salesforce.com, inc.
6
+ * All rights reserved.
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
9
+ */
10
+ const fs = require("fs");
11
+ const path = require("path");
12
+ const sf_plugins_core_1 = require("@salesforce/sf-plugins-core");
13
+ const core_1 = require("@salesforce/core");
14
+ const kit_1 = require("@salesforce/kit");
15
+ const createUtil_1 = require("../../../shared/helpers/createUtil");
16
+ const fileWriter_1 = require("../../../shared/helpers/fileWriter");
17
+ const metadataUtil_1 = require("../../../shared/helpers/metadataUtil");
18
+ const validationUtil_1 = require("../../../shared/helpers/validationUtil");
19
+ const templates_1 = require("../../../shared/templates/templates");
20
+ core_1.Messages.importMessagesDirectory(__dirname);
21
+ const messages = core_1.Messages.loadMessages('@salesforce/plugin-custom-metadata', 'fromorg');
22
+ class Generate extends sf_plugins_core_1.SfCommand {
23
+ async run() {
24
+ var _b, _c;
25
+ const { flags } = await this.parse(Generate);
26
+ const conn = flags['target-org'].getConnection(flags['api-version']);
27
+ // use default target org connection to get object describe if no source is provided.
28
+ const describeObj = await conn.metadata.read('CustomObject', flags.sobject);
29
+ // throw error if the object doesnot exist(empty json as response from the describe call.)
30
+ if ((0, kit_1.isEmpty)(describeObj.fields)) {
31
+ const errMsg = messages.getMessage('sobjectnameNoResultError', [flags.sobject]);
32
+ throw new core_1.SfError(errMsg, 'sobjectnameNoResultError');
33
+ }
34
+ // check for custom setting
35
+ if (describeObj.customSettingsType) {
36
+ // if custom setting check for type and visibility
37
+ if (!(0, metadataUtil_1.validCustomSettingType)(describeObj)) {
38
+ const errMsg = messages.getMessage('customSettingTypeError', [flags.sobject]);
39
+ throw new core_1.SfError(errMsg, 'customSettingTypeError');
40
+ }
41
+ }
42
+ const label = (_b = flags.label) !== null && _b !== void 0 ? _b : flags['dev-name'];
43
+ const pluralLabel = (_c = flags['plural-label']) !== null && _c !== void 0 ? _c : label;
44
+ const { 'type-output-directory': outputDir, 'records-output-dir': recordsOutputDir } = flags;
45
+ try {
46
+ this.spinner.start('creating the CMDT object');
47
+ // create custom metadata type
48
+ const objectXML = (0, templates_1.createObjectXML)({ label, pluralLabel }, flags.visibility);
49
+ await (0, fileWriter_1.writeTypeFile)(fs, outputDir, flags['dev-name'], objectXML);
50
+ this.spinner.status = 'creating the CMDT fields';
51
+ // get all the field details before creating field metadata
52
+ const fields = (0, metadataUtil_1.describeObjFields)(describeObj)
53
+ // added type check here to skip the creation of un supported fields
54
+ .filter((f) => !flags['ignore-unsupported'] || (0, templates_1.canConvert)(f['type']))
55
+ .flatMap((f) =>
56
+ // check for Geo Location fields before hand and create two different fields for longitude and latitude.
57
+ f.type !== 'Location' ? [f] : convertLocationFieldToText(f));
58
+ // create custom metdata fields
59
+ await Promise.all(fields.map((f) => (0, fileWriter_1.writeFieldFile)(fs, path.join(outputDir, `${flags['dev-name']}__mdt`), f.fullName, (0, templates_1.createFieldXML)(f, !flags['ignore-unsupported']))));
60
+ this.spinner.status = 'creating the CMDT records';
61
+ // if customMetadata folder does not exist, create it
62
+ await fs.promises.mkdir(recordsOutputDir, { recursive: true });
63
+ const fieldDirPath = path.join(outputDir, `${flags['dev-name']}__mdt`, 'fields');
64
+ const fileNames = await fs.promises.readdir(fieldDirPath);
65
+ const fileData = await (0, createUtil_1.getFileData)(fieldDirPath, fileNames);
66
+ // query records from source
67
+ const sObjectRecords = await conn.query(getSoqlQuery(describeObj));
68
+ await Promise.all(sObjectRecords.records.map((rec) => {
69
+ const record = (0, metadataUtil_1.cleanQueryResponse)(rec, describeObj);
70
+ const lblName = rec['Name'];
71
+ const recordName = (0, validationUtil_1.isValidMetadataRecordName)(lblName) ? lblName : lblName.replace(/ +/g, '_');
72
+ return (0, createUtil_1.createRecord)({
73
+ typename: flags['dev-name'],
74
+ recordname: recordName,
75
+ label: lblName,
76
+ inputdir: outputDir,
77
+ outputdir: recordsOutputDir,
78
+ protected: flags.visibility !== 'Public',
79
+ varargs: record,
80
+ fileData,
81
+ ignorefields: flags['ignore-unsupported'],
82
+ });
83
+ }));
84
+ this.spinner.stop('custom metadata type and records creation in completed');
85
+ this.log(`Congrats! Created a ${flags['dev-name']} custom metadata type with ${sObjectRecords.records.length} records!`);
86
+ }
87
+ catch (e) {
88
+ const targetDir = `${outputDir}${flags['dev-name']}__mdt`;
89
+ // dir might not exist if we never got to the creation step
90
+ if (fs.existsSync(targetDir)) {
91
+ await fs.promises.rm(targetDir, { recursive: true });
92
+ }
93
+ await Promise.all((await fs.promises.readdir(recordsOutputDir))
94
+ .filter((f) => f.startsWith(flags['dev-name']))
95
+ .map((f) => fs.promises.unlink(path.join(recordsOutputDir, f))));
96
+ this.spinner.stop('generate command failed to run');
97
+ const errMsg = messages.getMessage('generateError', [e instanceof Error ? e.message : 'unknown error']);
98
+ throw new core_1.SfError(errMsg, 'generateError');
99
+ }
100
+ return { outputDir, recordsOutputDir };
101
+ }
102
+ }
103
+ exports.default = Generate;
104
+ _a = Generate;
105
+ Generate.summary = messages.getMessage('summary');
106
+ Generate.description = messages.getMessage('description');
107
+ Generate.examples = messages.getMessages('examples');
108
+ Generate.requiresProject = true;
109
+ Generate.aliases = ['force:cmdt:generate', 'cmdt:generate'];
110
+ Generate.flags = {
111
+ 'target-org': sf_plugins_core_1.requiredOrgFlagWithDeprecations,
112
+ 'api-version': sf_plugins_core_1.orgApiVersionFlagWithDeprecations,
113
+ loglevel: sf_plugins_core_1.loglevel,
114
+ // flag with a value (-n, --name=VALUE)
115
+ 'dev-name': sf_plugins_core_1.Flags.string({
116
+ char: 'n',
117
+ required: true,
118
+ summary: messages.getMessage('flags.dev-name.summary'),
119
+ parse: async (input) => Promise.resolve((0, validationUtil_1.validateMetadataTypeName)(input)),
120
+ aliases: ['devname'],
121
+ }),
122
+ label: sf_plugins_core_1.Flags.string({
123
+ char: 'l',
124
+ summary: messages.getMessage('flags.label.summary'),
125
+ }),
126
+ 'plural-label': sf_plugins_core_1.Flags.string({
127
+ char: 'p',
128
+ summary: messages.getMessage('flags.plural-label.summary'),
129
+ aliases: ['plurallabel'],
130
+ }),
131
+ visibility: sf_plugins_core_1.Flags.string({
132
+ char: 'v',
133
+ summary: messages.getMessage('flags.visibility.summary'),
134
+ description: messages.getMessage('flags.visibility.description'),
135
+ options: ['PackageProtected', 'Protected', 'Public'],
136
+ default: 'Public',
137
+ }),
138
+ sobject: sf_plugins_core_1.Flags.string({
139
+ char: 's',
140
+ required: true,
141
+ summary: messages.getMessage('flags.sobject.summary'),
142
+ parse: async (sobjectname) => Promise.resolve((0, validationUtil_1.validateAPIName)(sobjectname)),
143
+ aliases: ['sobjectname'],
144
+ }),
145
+ 'ignore-unsupported': sf_plugins_core_1.Flags.boolean({
146
+ char: 'i',
147
+ summary: messages.getMessage('flags.ignore-unsupported.summary'),
148
+ description: messages.getMessage('flags.ignore-unsupported.description'),
149
+ aliases: ['ignoreunsupported'],
150
+ }),
151
+ 'type-output-directory': sf_plugins_core_1.Flags.directory({
152
+ char: 'd',
153
+ summary: messages.getMessage('flags.type-output-directory.summary'),
154
+ default: path.join('force-app', 'main', 'default', 'objects'),
155
+ aliases: ['typeoutputdir'],
156
+ }),
157
+ 'records-output-dir': sf_plugins_core_1.Flags.directory({
158
+ char: 'r',
159
+ summary: messages.getMessage('flags.records-output-dir.summary'),
160
+ default: path.join('force-app', 'main', 'default', 'customMetadata'),
161
+ aliases: ['recordsoutputdir'],
162
+ }),
163
+ };
164
+ const getSoqlQuery = (describeResult) => {
165
+ const fieldNames = describeResult.fields.map((field) => field.fullName).join(',');
166
+ // Added Name hardcoded as Name field is not retrieved as part of object describe.
167
+ return `SELECT Name, ${fieldNames} FROM ${describeResult.fullName}`;
168
+ };
169
+ const convertLocationFieldToText = (field) => {
170
+ const baseTextField = {
171
+ required: field['required'],
172
+ trackHistory: field['trackHistory'],
173
+ trackTrending: field['trackTrending'],
174
+ type: 'Text',
175
+ length: 40,
176
+ summaryFilterItems: [],
177
+ };
178
+ return ['Lat_', 'Long_'].map((prefix) => ({
179
+ ...baseTextField,
180
+ fullName: `${prefix}${field.fullName}`,
181
+ label: `${prefix}${field.label}`,
182
+ }));
183
+ };
184
+ //# sourceMappingURL=fromorg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fromorg.js","sourceRoot":"","sources":["../../../../src/commands/generate/cmdt/fromorg.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { SfCommand } from '@salesforce/sf-plugins-core';
2
+ export interface CmdtCreateResponse {
3
+ typename: string;
4
+ label: string;
5
+ pluralLabel: string;
6
+ visibility: string;
7
+ }
8
+ export default class Create extends SfCommand<CmdtCreateResponse> {
9
+ static readonly summary: string;
10
+ static readonly description: string;
11
+ static readonly examples: string[];
12
+ static readonly aliases: string[];
13
+ static readonly requiresProject = true;
14
+ static readonly flags: {
15
+ loglevel: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
16
+ 'type-name': import("@oclif/core/lib/interfaces").OptionFlag<string>;
17
+ label: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
18
+ 'plural-label': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
19
+ visibility: import("@oclif/core/lib/interfaces").OptionFlag<string>;
20
+ 'output-directory': import("@oclif/core/lib/interfaces").OptionFlag<string>;
21
+ };
22
+ run(): Promise<CmdtCreateResponse>;
23
+ }
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ /*
5
+ * Copyright (c) 2020, salesforce.com, inc.
6
+ * All rights reserved.
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
9
+ */
10
+ const fs = require("fs");
11
+ const sf_plugins_core_1 = require("@salesforce/sf-plugins-core");
12
+ const core_1 = require("@salesforce/core");
13
+ const fileWriter_1 = require("../../../shared/helpers/fileWriter");
14
+ const validationUtil_1 = require("../../../shared/helpers/validationUtil");
15
+ const templates_1 = require("../../../shared/templates/templates");
16
+ core_1.Messages.importMessagesDirectory(__dirname);
17
+ const messages = core_1.Messages.loadMessages('@salesforce/plugin-custom-metadata', 'object');
18
+ class Create extends sf_plugins_core_1.SfCommand {
19
+ async run() {
20
+ var _b, _c;
21
+ const { flags } = await this.parse(Create);
22
+ const label = (_b = flags.label) !== null && _b !== void 0 ? _b : flags['type-name'].replace('__mdt', ''); // If a label is not provided default using the dev name. trim __mdt out
23
+ const pluralLabel = (_c = flags['plural-label']) !== null && _c !== void 0 ? _c : label;
24
+ const objectXML = (0, templates_1.createObjectXML)({ label, pluralLabel }, flags.visibility);
25
+ const saveResults = await (0, fileWriter_1.writeTypeFile)(fs, flags['output-directory'], flags['type-name'], objectXML);
26
+ this.log(messages.getMessage('targetDirectory', [saveResults.dir]));
27
+ this.log(messages.getMessage(saveResults.updated ? 'fileUpdate' : 'fileCreated', [saveResults.fileName]));
28
+ return {
29
+ typename: flags['type-name'],
30
+ label,
31
+ pluralLabel,
32
+ visibility: flags.visibility,
33
+ };
34
+ }
35
+ }
36
+ exports.default = Create;
37
+ _a = Create;
38
+ Create.summary = messages.getMessage('summary');
39
+ Create.description = messages.getMessage('description');
40
+ Create.examples = messages.getMessages('examples');
41
+ Create.aliases = ['force:cmdt:create', 'cmdt:create'];
42
+ Create.requiresProject = true;
43
+ Create.flags = {
44
+ loglevel: sf_plugins_core_1.loglevel,
45
+ 'type-name': sf_plugins_core_1.Flags.string({
46
+ char: 'n',
47
+ summary: messages.getMessage('flags.type-name.summary'),
48
+ description: messages.getMessage('flags.type-name.description'),
49
+ required: true,
50
+ parse: async (input) => Promise.resolve((0, validationUtil_1.validateMetadataTypeName)(input)),
51
+ aliases: ['typename'],
52
+ }),
53
+ label: sf_plugins_core_1.Flags.string({
54
+ char: 'l',
55
+ summary: messages.getMessage('flags.label.summary'),
56
+ parse: async (input) => Promise.resolve((0, validationUtil_1.validateLessThanForty)(input, messages.getMessage('errorNotValidLabelName', [input]))),
57
+ }),
58
+ 'plural-label': sf_plugins_core_1.Flags.string({
59
+ char: 'p',
60
+ summary: messages.getMessage('flags.plural-label.summary'),
61
+ parse: async (input) => Promise.resolve((0, validationUtil_1.validateLessThanForty)(input, messages.getMessage('errorNotValidPluralLabelName', [input]))),
62
+ aliases: ['plurallabel'],
63
+ }),
64
+ visibility: sf_plugins_core_1.Flags.string({
65
+ char: 'v',
66
+ summary: messages.getMessage('flags.visibility.summary'),
67
+ description: messages.getMessage('flags.visibility.description'),
68
+ options: ['PackageProtected', 'Protected', 'Public'],
69
+ default: 'Public',
70
+ }),
71
+ 'output-directory': sf_plugins_core_1.Flags.directory({
72
+ char: 'd',
73
+ summary: messages.getMessage('flags.output-directory.summary'),
74
+ description: messages.getMessage('flags.output-directory.description'),
75
+ default: '',
76
+ aliases: ['outputdir', 'outputdirectory'],
77
+ }),
78
+ };
79
+ //# sourceMappingURL=object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../src/commands/generate/cmdt/object.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { SfCommand } from '@salesforce/sf-plugins-core';
2
+ import { CustomField } from 'jsforce/api/metadata';
3
+ export interface CmdtRecordCreateResponse {
4
+ typename: string;
5
+ recordname: string;
6
+ label: string;
7
+ inputdir: string;
8
+ outputdir: string;
9
+ protectedFlag: boolean;
10
+ varargs: Record<string, unknown>;
11
+ fileData: CustomField[];
12
+ }
13
+ export default class Create extends SfCommand<CmdtRecordCreateResponse> {
14
+ static readonly summary: string;
15
+ static readonly description: string;
16
+ static readonly requiresProject = true;
17
+ static aliases: string[];
18
+ static readonly examples: string[];
19
+ static readonly flags: {
20
+ loglevel: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
21
+ 'type-name': import("@oclif/core/lib/interfaces").OptionFlag<string>;
22
+ 'record-name': import("@oclif/core/lib/interfaces").OptionFlag<string>;
23
+ label: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
24
+ protected: import("@oclif/core/lib/interfaces").OptionFlag<string>;
25
+ 'input-directory': import("@oclif/core/lib/interfaces").OptionFlag<string>;
26
+ 'output-directory': import("@oclif/core/lib/interfaces").OptionFlag<string>;
27
+ };
28
+ run(): Promise<CmdtRecordCreateResponse>;
29
+ }
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ /*
5
+ * Copyright (c) 2020, salesforce.com, inc.
6
+ * All rights reserved.
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
9
+ */
10
+ const fs = require("fs");
11
+ const path = require("path");
12
+ const sf_plugins_core_1 = require("@salesforce/sf-plugins-core");
13
+ const core_1 = require("@salesforce/core");
14
+ const createUtil_1 = require("../../../shared/helpers/createUtil");
15
+ const validationUtil_1 = require("../../../shared/helpers/validationUtil");
16
+ core_1.Messages.importMessagesDirectory(__dirname);
17
+ const messages = core_1.Messages.loadMessages('@salesforce/plugin-custom-metadata', 'record');
18
+ class Create extends sf_plugins_core_1.SfCommand {
19
+ async run() {
20
+ var _b;
21
+ const { flags, args, argv } = await this.parse(Create);
22
+ const varargs = (0, sf_plugins_core_1.parseVarArgs)(args, argv);
23
+ const label = (_b = flags.label) !== null && _b !== void 0 ? _b : flags['record-name'];
24
+ const protectedFlag = flags.protected === 'true';
25
+ const dirName = (0, createUtil_1.appendDirectorySuffix)(flags['type-name']);
26
+ const fieldDirPath = path.join(flags['input-directory'], dirName, 'fields');
27
+ const fileNames = await fs.promises.readdir(fieldDirPath);
28
+ // if customMetadata folder does not exist, create it
29
+ await fs.promises.mkdir(flags['output-directory'], { recursive: true });
30
+ const fileData = await (0, createUtil_1.getFileData)(fieldDirPath, fileNames);
31
+ await (0, createUtil_1.createRecord)({
32
+ typename: flags['type-name'],
33
+ recordname: flags['record-name'],
34
+ label,
35
+ inputdir: flags['input-directory'],
36
+ outputdir: flags['output-directory'],
37
+ protected: protectedFlag,
38
+ varargs,
39
+ fileData,
40
+ });
41
+ this.log(messages.getMessage('successResponse', [
42
+ flags['type-name'],
43
+ flags['record-name'],
44
+ label,
45
+ protectedFlag,
46
+ flags['output-directory'],
47
+ ]));
48
+ // Return an object to be displayed with --json
49
+ return {
50
+ typename: flags['type-name'],
51
+ recordname: flags['record-name'],
52
+ label,
53
+ inputdir: flags['input-directory'],
54
+ outputdir: flags['output-directory'],
55
+ protectedFlag,
56
+ varargs,
57
+ fileData,
58
+ };
59
+ }
60
+ }
61
+ exports.default = Create;
62
+ _a = Create;
63
+ Create.summary = messages.getMessage('summary');
64
+ Create.description = messages.getMessage('description');
65
+ Create.requiresProject = true;
66
+ Create.aliases = ['force:cmdt:record:create', 'cmdt:record:create'];
67
+ Create.examples = messages.getMessages('examples');
68
+ Create.flags = {
69
+ loglevel: sf_plugins_core_1.loglevel,
70
+ 'type-name': sf_plugins_core_1.Flags.string({
71
+ char: 't',
72
+ summary: messages.getMessage('flags.type-name.summary'),
73
+ required: true,
74
+ parse: async (input) => Promise.resolve((0, validationUtil_1.validateMetadataTypeName)(input)),
75
+ aliases: ['typename'],
76
+ }),
77
+ 'record-name': sf_plugins_core_1.Flags.string({
78
+ char: 'n',
79
+ summary: messages.getMessage('flags.record-name.summary'),
80
+ required: true,
81
+ parse: async (input) => Promise.resolve((0, validationUtil_1.validateMetadataRecordName)(input)),
82
+ aliases: ['recordname'],
83
+ }),
84
+ label: sf_plugins_core_1.Flags.string({
85
+ char: 'l',
86
+ summary: messages.getMessage('flags.label.summary'),
87
+ parse: async (input) => Promise.resolve((0, validationUtil_1.validateLessThanForty)(input, messages.getMessage('notAValidLabelNameError', [input]))),
88
+ }),
89
+ // I hate this flag so much, but have to preserve it
90
+ protected: sf_plugins_core_1.Flags.string({
91
+ char: 'p',
92
+ summary: messages.getMessage('flags.protected.summary'),
93
+ description: messages.getMessage('flags.protected.description'),
94
+ options: ['true', 'false'],
95
+ default: 'false',
96
+ }),
97
+ 'input-directory': sf_plugins_core_1.Flags.directory({
98
+ char: 'i',
99
+ summary: messages.getMessage('flags.input-directory.summary'),
100
+ default: path.join('force-app', 'main', 'default', 'objects'),
101
+ aliases: ['inputdir', 'inputdirectory'],
102
+ exists: true,
103
+ }),
104
+ 'output-directory': sf_plugins_core_1.Flags.directory({
105
+ char: 'd',
106
+ summary: messages.getMessage('flags.output-directory.summary'),
107
+ default: path.join('force-app', 'main', 'default', 'customMetadata'),
108
+ aliases: ['outputdir', 'outputdirectory'],
109
+ }),
110
+ };
111
+ //# sourceMappingURL=record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../../../src/commands/generate/cmdt/record.ts"],"names":[],"mappings":"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"}