@terafina/tffa-sfdx-plugin 16.0.0-rc.1 → 16.0.0-rc.3
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/README.md +121 -18
- package/assets/homepage.html +1 -1
- package/lib/commands/tffa/apexdoc.js +1 -1
- package/lib/commands/tffa/apexdoc.js.map +1 -1
- package/lib/commands/tffa/data/export.d.ts +71 -0
- package/lib/commands/tffa/data/export.js +382 -0
- package/lib/commands/tffa/data/export.js.map +1 -0
- package/lib/commands/tffa/meta.js +2 -2
- package/lib/commands/tffa/meta.js.map +1 -1
- package/lib/services/apexdoc/common/line-reader.js +1 -1
- package/lib/services/apexdoc/common/line-reader.js.map +1 -1
- package/lib/services/apexdoc/engine/generators/models/source-markup-generator.js +12 -1
- package/lib/services/apexdoc/engine/generators/models/source-markup-generator.js.map +1 -1
- package/lib/services/lint/rules.js +2 -2
- package/lib/services/lint/rules.js.map +1 -1
- package/messages/apexdoc.json +1 -1
- package/messages/dataExport.js +32 -0
- package/messages/lint.js +31 -0
- package/messages/ping.json +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +27 -27
- package/yarn.lock +586 -381
- package/messages/lint.json +0 -5
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Copyright (c) NCR Terafina
|
|
5
|
+
**/
|
|
6
|
+
const command_1 = require("@salesforce/command");
|
|
7
|
+
const core_1 = require("@salesforce/core");
|
|
8
|
+
const fs_extra_1 = require("fs-extra");
|
|
9
|
+
// Initialize Messages with the current plugin directory
|
|
10
|
+
core_1.Messages.importMessagesDirectory(__dirname);
|
|
11
|
+
// Load the specific messages for this file. Messages from @salesforce/command, @salesforce/core,
|
|
12
|
+
// or any library that is using the messages framework can also be loaded this way.
|
|
13
|
+
const messages = core_1.Messages.loadMessages('@terafina/tffa-sfdx-plugin', 'dataExport');
|
|
14
|
+
/**
|
|
15
|
+
* Represents a plan to export records of a specific SObject type.
|
|
16
|
+
*/
|
|
17
|
+
class ExportPlan {
|
|
18
|
+
constructor(plan) {
|
|
19
|
+
Object.assign(this, plan);
|
|
20
|
+
if (!this.name) {
|
|
21
|
+
this.name = this.sObjectType;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Common regex used
|
|
27
|
+
*/
|
|
28
|
+
const NON_ALPHANUM_RE = /[^a-zA-Z0-9]+/g;
|
|
29
|
+
const UPPER_LOWER_RE = /[A-Z][a-z]+/g;
|
|
30
|
+
const REFERENCE_ID_RE = /referenceId/g;
|
|
31
|
+
const MAX_OBJECTS_IN_FILE = 200;
|
|
32
|
+
/**
|
|
33
|
+
* Some internal configurations
|
|
34
|
+
*/
|
|
35
|
+
const EXCLUDED_FIELDS = new Set(['OwnerId', 'RecordTypeId', 'tffa__IsDeleted__c']);
|
|
36
|
+
const EXTERNAL_ID_FIELDS = new Set(['ExternalId__c', 'tffa__ExternalId__c']);
|
|
37
|
+
const SORT_ORDER_FIELDS = new Set(['SortOrder__c', 'tffa__SortOrder__c']);
|
|
38
|
+
const CONTENT_URL_FIELDS = new Set(['ImageUrl__c', 'tffa__ImageUrl__c', 'tffa__Url__c']);
|
|
39
|
+
/**
|
|
40
|
+
* Export plans of SObject types that require fetching of child relationships, custom grouping, sorting etc.
|
|
41
|
+
* Export plans of SObject types that are simple and limited to itself need not be included here.
|
|
42
|
+
*/
|
|
43
|
+
const EXPORT_PLANS = Object.fromEntries([
|
|
44
|
+
new ExportPlan({
|
|
45
|
+
sObjectType: 'tffa__Product__c',
|
|
46
|
+
children: ['tffa__Features__r', 'tffa__Terms__r'],
|
|
47
|
+
where: "tffa__Type__c='PRODUCT'"
|
|
48
|
+
}),
|
|
49
|
+
new ExportPlan({
|
|
50
|
+
sObjectType: 'tffa__Questionnaire__c',
|
|
51
|
+
groupBy: 'tffa__Type__c',
|
|
52
|
+
children: ['tffa__Outcomes__r', 'tffa__QuestionGroups__r'],
|
|
53
|
+
prefix: 'qn'
|
|
54
|
+
}),
|
|
55
|
+
new ExportPlan({ sObjectType: 'tffa__QuestionGroupTemplate__c', children: ['tffa__Questions__r'] }),
|
|
56
|
+
new ExportPlan({ sObjectType: 'tffa__AddOnService__c', orderBy: ['tffa__Type__c', 'Name'] }),
|
|
57
|
+
new ExportPlan({
|
|
58
|
+
sObjectType: 'tffa__ApplicationDecisionMatrix__c',
|
|
59
|
+
children: ['tffa__CounterOffers__r'],
|
|
60
|
+
orderBy: ['tffa__Type__c', 'tffa__SortOrder__c']
|
|
61
|
+
}),
|
|
62
|
+
new ExportPlan({ sObjectType: 'tffa__Brand__c', children: ['tffa__Locations__r'], prefix: 'brand', orderBy: ['tffa__SortOrder__c'] }),
|
|
63
|
+
new ExportPlan({ sObjectType: 'tffa__DecisionStrategyConfiguration__c', children: ['tffa__Strategies__r'] }),
|
|
64
|
+
new ExportPlan({ sObjectType: 'tffa__Offer__c', children: ['tffa__Terms__r'], orderBy: ['tffa__ProductCategory__c', 'Name'] }),
|
|
65
|
+
new ExportPlan({ sObjectType: 'tffa__Promotion__c', children: ['tffa__Plans__r'], prefix: 'pr' }),
|
|
66
|
+
new ExportPlan({ sObjectType: 'tffa__ListOfValues__c', groupBy: 'tffa__Locale__c' }),
|
|
67
|
+
new ExportPlan({
|
|
68
|
+
name: 'tffa__ProductBundle__c',
|
|
69
|
+
sObjectType: 'tffa__Product__c',
|
|
70
|
+
children: ['tffa__Features__r', 'tffa__Terms__r', 'tffa__ProductXrefs__r'],
|
|
71
|
+
where: "tffa__Type__c='BUNDLE'"
|
|
72
|
+
}),
|
|
73
|
+
new ExportPlan({ name: 'tffa__Address__c', sObjectType: 'tffa__Location__c', map: l => l.tffa__Address__r, prefix: 'addr' }),
|
|
74
|
+
new ExportPlan({ sObjectType: 'tffa__AddOnServiceChecklist__c', children: ['tffa__Items__r'], prefix: 'aoscl' }),
|
|
75
|
+
new ExportPlan({ sObjectType: 'tffa__DisclosureChecklist__c', children: ['tffa__Items__r'], prefix: 'dcl' }),
|
|
76
|
+
new ExportPlan({ sObjectType: 'tffa__StipulationChecklist__c', children: ['tffa__Items__r'], prefix: 'scl' }),
|
|
77
|
+
new ExportPlan({ sObjectType: 'tffa__DepositBoxConfiguration__c', children: ['tffa__Items__r'] }),
|
|
78
|
+
new ExportPlan({ sObjectType: 'tffa__RecommendationConfiguration__c', children: ['tffa__Items__r'] }),
|
|
79
|
+
new ExportPlan({ sObjectType: 'tffa__UXStrategy__c', prefix: 'uxs', orderBy: ['tffa__AppPage__c', 'tffa__SortOrder__c'] }),
|
|
80
|
+
new ExportPlan({ sObjectType: 'tffa__AllowedAddress__c', orderBy: ['tffa__SortOrder__c'] }),
|
|
81
|
+
new ExportPlan({ sObjectType: 'tffa__QuestionnaireMatrix__c', orderBy: ['tffa__Type__c', 'tffa__SortOrder__c'] })
|
|
82
|
+
].map(p => [p.name, p]));
|
|
83
|
+
class DataExport extends command_1.SfdxCommand {
|
|
84
|
+
constructor() {
|
|
85
|
+
super(...arguments);
|
|
86
|
+
/**
|
|
87
|
+
* Custom prefixes
|
|
88
|
+
*/
|
|
89
|
+
this.sObjectTypePrefixMap = new Map();
|
|
90
|
+
}
|
|
91
|
+
async run() {
|
|
92
|
+
for (const sObjectType of this.flags.sobjecttype) {
|
|
93
|
+
const plan = this.getExportPlan(sObjectType);
|
|
94
|
+
this.ux.startSpinner(`Fetching record(s) of ${sObjectType}`);
|
|
95
|
+
const records = await this.execute(plan);
|
|
96
|
+
this.ux.stopSpinner(`completed`);
|
|
97
|
+
this.log(`Fetched ${records.length} records of ${sObjectType}`);
|
|
98
|
+
this.transform(records);
|
|
99
|
+
if (records.length) {
|
|
100
|
+
this.writeRecords(records, plan);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async execute(plan, parent) {
|
|
105
|
+
let qb = this.org
|
|
106
|
+
.getConnection()
|
|
107
|
+
.sobject(plan.sObjectType)
|
|
108
|
+
.select(await this.getFields(plan, !!parent))
|
|
109
|
+
.orderby((await this.getOrderBy(plan, !parent && !plan.sObjectType.endsWith('Matrix__c'))).map(e => [e, 'asc']))
|
|
110
|
+
.where(plan.where);
|
|
111
|
+
for (const child of plan.children || []) {
|
|
112
|
+
const childPlan = await this.getChildExportPlan(plan.sObjectType, child);
|
|
113
|
+
qb = qb
|
|
114
|
+
.include(child)
|
|
115
|
+
.select(await this.getFields(childPlan, true))
|
|
116
|
+
.orderby((await this.getOrderBy(childPlan)).map(e => [e, 'asc']))
|
|
117
|
+
.end();
|
|
118
|
+
}
|
|
119
|
+
let records = await qb.execute();
|
|
120
|
+
if (plan.map) {
|
|
121
|
+
records = records.map(plan.map);
|
|
122
|
+
}
|
|
123
|
+
for (const child of plan.children || []) {
|
|
124
|
+
const childPlan = await this.getChildExportPlan(plan.sObjectType, child);
|
|
125
|
+
if (childPlan.children?.length) {
|
|
126
|
+
const childRecordMap = this.toMap(await this.execute(childPlan, plan));
|
|
127
|
+
for (const record of records) {
|
|
128
|
+
const relationshipNode = record[child];
|
|
129
|
+
if (relationshipNode) {
|
|
130
|
+
for (const [i, childRecord] of relationshipNode.records.entries()) {
|
|
131
|
+
relationshipNode.records[i] = childRecordMap.get(childRecord.Id) || childRecord;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return records;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Gets fields to be included when exporting records.
|
|
141
|
+
*/
|
|
142
|
+
async getFields(plan, skipMasterDetail = false, skipLookup = false) {
|
|
143
|
+
const sObjectType = plan.sObjectType;
|
|
144
|
+
const fields = ['Id'];
|
|
145
|
+
const conn = this.org.getConnection();
|
|
146
|
+
const describeResult = await conn.describe$(sObjectType);
|
|
147
|
+
for (const f of describeResult.fields) {
|
|
148
|
+
if (EXCLUDED_FIELDS.has(f.name) || !f.createable) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
if (f.referenceTo?.length) {
|
|
152
|
+
if (!skipLookup && (f.relationshipOrder !== 0 || !skipMasterDetail)) {
|
|
153
|
+
fields.push(f.name);
|
|
154
|
+
const refFields = await this.getFields(new ExportPlan({ sObjectType: f.referenceTo[0] }), true, true);
|
|
155
|
+
refFields.forEach(lf => fields.push(`${f.relationshipName}.${lf}`));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
fields.push(f.name);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return fields;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Gets the field to be used for ordering when exporting the records.
|
|
166
|
+
*/
|
|
167
|
+
async getOrderBy(plan, skipSortOrder = false) {
|
|
168
|
+
const sObjectType = plan.sObjectType;
|
|
169
|
+
if (plan.orderBy) {
|
|
170
|
+
return plan.orderBy;
|
|
171
|
+
}
|
|
172
|
+
let sortOrderField = ['Name'];
|
|
173
|
+
if (!skipSortOrder) {
|
|
174
|
+
const describeResult = await this.org.getConnection().describe$(sObjectType);
|
|
175
|
+
for (const f of describeResult.fields) {
|
|
176
|
+
if (SORT_ORDER_FIELDS.has(f.name)) {
|
|
177
|
+
sortOrderField = [f.name];
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return sortOrderField;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Transforms the exported records, making it ready for writing to config files
|
|
186
|
+
* @param records
|
|
187
|
+
*/
|
|
188
|
+
transform(records) {
|
|
189
|
+
for (const record of records) {
|
|
190
|
+
record.attributes.referenceId = this.getReferenceId(record);
|
|
191
|
+
record.attributes.url = undefined;
|
|
192
|
+
record.Id = undefined;
|
|
193
|
+
for (const [k, v] of Object.entries(record)) {
|
|
194
|
+
if (v === null || v === undefined) {
|
|
195
|
+
record[k] = undefined;
|
|
196
|
+
}
|
|
197
|
+
else if (typeof v === 'object' && k.endsWith('__r')) {
|
|
198
|
+
if (v.records) {
|
|
199
|
+
this.transform(v.records);
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
record[k.replace('__r', '__c')] = `@${this.getReferenceId(v)}`;
|
|
203
|
+
record[k] = undefined;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
if (CONTENT_URL_FIELDS.has(k) && v.startsWith('/file-asset')) {
|
|
208
|
+
const url = new URL(v, 'http://localhost');
|
|
209
|
+
url.searchParams.delete('oid');
|
|
210
|
+
record[k] = url.pathname + url.search;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Gets the external id of the record
|
|
218
|
+
* @param record
|
|
219
|
+
* @returns
|
|
220
|
+
* @throws Error if external id or equivalent is not found
|
|
221
|
+
*/
|
|
222
|
+
getExternalId(record) {
|
|
223
|
+
let externalId;
|
|
224
|
+
for (const externalIdField of EXTERNAL_ID_FIELDS) {
|
|
225
|
+
externalId = record[externalIdField];
|
|
226
|
+
if (externalId) {
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (!externalId) {
|
|
231
|
+
throw new Error(`No external id found for sobject ${record.attributes.type} id=${record.Id}`);
|
|
232
|
+
}
|
|
233
|
+
return externalId;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Gets the reference id for the record
|
|
237
|
+
* @param record
|
|
238
|
+
*/
|
|
239
|
+
getReferenceId(record) {
|
|
240
|
+
const sObjectType = record.attributes.type;
|
|
241
|
+
return `${this.getPrefix(sObjectType)}_${this.getExternalId(record)}`.replace(NON_ALPHANUM_RE, '_');
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Gets the object prefix to be used when building the reference id
|
|
245
|
+
* @param sObjectType
|
|
246
|
+
* @returns
|
|
247
|
+
*/
|
|
248
|
+
getPrefix(sObjectType) {
|
|
249
|
+
let prefix = this.sObjectTypePrefixMap.get(sObjectType) || this.getExportPlan(sObjectType).prefix;
|
|
250
|
+
if (!prefix) {
|
|
251
|
+
prefix = sObjectType
|
|
252
|
+
.match(UPPER_LOWER_RE)
|
|
253
|
+
.map(e => e[0])
|
|
254
|
+
.join('')
|
|
255
|
+
.toLowerCase();
|
|
256
|
+
this.sObjectTypePrefixMap.set(sObjectType, prefix);
|
|
257
|
+
}
|
|
258
|
+
return prefix;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Writes records to JSON files
|
|
262
|
+
* @param records
|
|
263
|
+
*/
|
|
264
|
+
writeRecords(records, plan) {
|
|
265
|
+
const objectName = plan.name.replace('tffa__', '');
|
|
266
|
+
const outputDir = this.flags.outputdir;
|
|
267
|
+
const groupBy = plan.groupBy || '_';
|
|
268
|
+
(0, fs_extra_1.mkdirpSync)(outputDir);
|
|
269
|
+
const groupMap = new Map();
|
|
270
|
+
if (groupBy === '_') {
|
|
271
|
+
groupMap.set(groupBy, records);
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
for (const record of records) {
|
|
275
|
+
const k = record[groupBy] || '_';
|
|
276
|
+
const group = groupMap.get(k) || groupMap.set(k, []).get(k);
|
|
277
|
+
group.push(record);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
const filenames = [];
|
|
281
|
+
for (const [k, group] of groupMap.entries()) {
|
|
282
|
+
let batch = [];
|
|
283
|
+
let batchObjectCount = 0;
|
|
284
|
+
const batches = [batch];
|
|
285
|
+
for (const record of group) {
|
|
286
|
+
const count = this.getSObjectCount(record);
|
|
287
|
+
if (count + batchObjectCount > MAX_OBJECTS_IN_FILE) {
|
|
288
|
+
batch = [];
|
|
289
|
+
batches.push(batch);
|
|
290
|
+
batchObjectCount = 0;
|
|
291
|
+
}
|
|
292
|
+
batch.push(record);
|
|
293
|
+
batchObjectCount += count;
|
|
294
|
+
}
|
|
295
|
+
for (const [i, batch] of batches.entries()) {
|
|
296
|
+
const filename = `${objectName}${k === '_' ? '' : '-' + k}${i || ''}.json`;
|
|
297
|
+
const filepath = `${outputDir}/${filename}`;
|
|
298
|
+
this.log(`Writing ${batch.length} records to ${filepath}`);
|
|
299
|
+
(0, fs_extra_1.writeFileSync)(filepath, JSON.stringify({ records: batch }, null, 2));
|
|
300
|
+
filenames.push(filename);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
if (!this.flags.skipconfigplan && plan.name === plan.sObjectType) {
|
|
304
|
+
const configPlanFilepath = `${outputDir}/config-data-plan.json`;
|
|
305
|
+
if ((0, fs_extra_1.existsSync)(configPlanFilepath)) {
|
|
306
|
+
const configPlans = JSON.parse((0, fs_extra_1.readFileSync)(configPlanFilepath, 'utf-8'));
|
|
307
|
+
let configPlan = configPlans.find(cp => cp.sobject === plan.sObjectType);
|
|
308
|
+
if (!configPlan) {
|
|
309
|
+
configPlan = { sobject: plan.sObjectType, files: [] };
|
|
310
|
+
configPlans.push(configPlan);
|
|
311
|
+
}
|
|
312
|
+
// update only if something changed
|
|
313
|
+
if (configPlan.files?.toString() !== filenames.toString()) {
|
|
314
|
+
configPlan.files = filenames;
|
|
315
|
+
(0, fs_extra_1.writeFileSync)(configPlanFilepath, JSON.stringify(configPlans, null, 2));
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Counts the number of SObjects within the record. e.g. a record containing child relationships may contain more than one SObject.
|
|
322
|
+
* @param record
|
|
323
|
+
* @returns
|
|
324
|
+
*/
|
|
325
|
+
getSObjectCount(record) {
|
|
326
|
+
return (JSON.stringify(record).match(REFERENCE_ID_RE) || []).length;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Gets the export plan for the specified object type.
|
|
330
|
+
* @param sObjectType
|
|
331
|
+
* @returns
|
|
332
|
+
*/
|
|
333
|
+
getExportPlan(sObjectType) {
|
|
334
|
+
const plan = new ExportPlan({ sObjectType, ...(EXPORT_PLANS[sObjectType] || {}) });
|
|
335
|
+
const { sobjecttype: sobjecttypes, children, groupby, orderby } = this.flags;
|
|
336
|
+
if (sobjecttypes.length === 1 && sobjecttypes[0] === sObjectType) {
|
|
337
|
+
if (children) {
|
|
338
|
+
plan.children = children;
|
|
339
|
+
}
|
|
340
|
+
if (groupby) {
|
|
341
|
+
plan.groupBy = groupby;
|
|
342
|
+
}
|
|
343
|
+
if (orderby) {
|
|
344
|
+
plan.orderBy = orderby;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
return plan;
|
|
348
|
+
}
|
|
349
|
+
async getChildExportPlan(sObjectType, relationshipName) {
|
|
350
|
+
const describeResult = await this.org.getConnection().describe$(sObjectType);
|
|
351
|
+
const relationship = describeResult.childRelationships.find(f => f.relationshipName === relationshipName);
|
|
352
|
+
if (!relationship) {
|
|
353
|
+
throw new Error(`Relationship ${relationshipName} not found on SObjectType ${sObjectType}`);
|
|
354
|
+
}
|
|
355
|
+
return this.getExportPlan(relationship.childSObject);
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Returns a map of records where key is record.Id and value is record.
|
|
359
|
+
* @param records
|
|
360
|
+
* @returns
|
|
361
|
+
*/
|
|
362
|
+
toMap(records) {
|
|
363
|
+
const recordMap = new Map();
|
|
364
|
+
for (const record of records) {
|
|
365
|
+
recordMap.set(record.Id, record);
|
|
366
|
+
}
|
|
367
|
+
return recordMap;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
exports.default = DataExport;
|
|
371
|
+
DataExport.requiresUsername = true;
|
|
372
|
+
DataExport.description = messages.getMessage('commandDescription');
|
|
373
|
+
DataExport.examples = messages.getMessages('commandExamples');
|
|
374
|
+
DataExport.flagsConfig = {
|
|
375
|
+
sobjecttype: command_1.flags.array({ char: 's', required: true, description: messages.getMessage('sobjecttypeFlagDescription') }),
|
|
376
|
+
outputdir: command_1.flags.string({ char: 'd', description: messages.getMessage('outputdirFlagDescription'), default: './data/configuration' }),
|
|
377
|
+
groupby: command_1.flags.string({ char: 'g', required: false, description: messages.getMessage('groupbyFlagDescription') }),
|
|
378
|
+
orderby: command_1.flags.array({ char: 'o', required: false, description: messages.getMessage('orderbyFlagDescription') }),
|
|
379
|
+
children: command_1.flags.array({ char: 'c', required: false, description: messages.getMessage('childrenFlagDescription') }),
|
|
380
|
+
skipconfigplan: command_1.flags.boolean({ char: 's', required: false, description: messages.getMessage('skipconfigplanFlagDescription') })
|
|
381
|
+
};
|
|
382
|
+
//# sourceMappingURL=export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../../src/commands/tffa/data/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,8 +17,8 @@ class Meta extends command_1.SfdxCommand {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
exports.default = Meta;
|
|
20
|
-
Meta.description = '
|
|
21
|
-
Meta.examples = [
|
|
20
|
+
Meta.description = 'Scan a sfdx project for generating metadata summary information';
|
|
21
|
+
Meta.examples = ['$ sfdx tffa:meta'];
|
|
22
22
|
Meta.flagsConfig = {
|
|
23
23
|
sourcefolder: command_1.flags.directory({
|
|
24
24
|
char: 's',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../src/commands/tffa/meta.ts"],"names":[],"mappings":";AAAA;;IAEI;;;AAEJ,iDAAyD;AACzD,2CAA+C;AAC/C,wFAAuD;AAEvD,MAAqB,IAAK,SAAQ,qBAAW;IA+B3C,8DAA8D;IACvD,KAAK,CAAC,GAAG;QACd,MAAM,kBAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACrB,IAAI,oBAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC9G;IACH,CAAC;;AAtCH,uBAuCC;AAtCe,gBAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../src/commands/tffa/meta.ts"],"names":[],"mappings":";AAAA;;IAEI;;;AAEJ,iDAAyD;AACzD,2CAA+C;AAC/C,wFAAuD;AAEvD,MAAqB,IAAK,SAAQ,qBAAW;IA+B3C,8DAA8D;IACvD,KAAK,CAAC,GAAG;QACd,MAAM,kBAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACrB,IAAI,oBAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC9G;IACH,CAAC;;AAtCH,uBAuCC;AAtCe,gBAAW,GAAG,iEAAiE,CAAC;AAChF,aAAQ,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAE7B,gBAAW,GAAG;IAC7B,YAAY,EAAE,eAAK,CAAC,SAAS,CAAC;QAC5B,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,GAAG;KACb,CAAC;IACF,QAAQ,EAAE,eAAK,CAAC,SAAS,CAAC;QACxB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,uBAAuB;QACpC,OAAO,EAAE,GAAG;KACb,CAAC;IACF,UAAU,EAAE,eAAK,CAAC,SAAS,CAAC;QAC1B,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,oBAAoB;QACjC,OAAO,EAAE,GAAG;KACb,CAAC;IACF,MAAM,EAAE,eAAK,CAAC,IAAI,CAAC;QACjB,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;QACjC,WAAW,EAAE,8BAA8B;KAC5C,CAAC;IACF,MAAM,EAAE,eAAK,CAAC,OAAO,CAAC;QACpB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,uBAAuB;KACrC,CAAC;CACH,CAAC"}
|
|
@@ -18,7 +18,7 @@ class LineReader {
|
|
|
18
18
|
try {
|
|
19
19
|
// NOTE: could use Node's os.EOL constant instead of the regexp
|
|
20
20
|
// but hesitant because user could have EOL set contrary to the
|
|
21
|
-
// platform they're on in
|
|
21
|
+
// platform they're on in. This might be safer in the end.
|
|
22
22
|
const EOL = /(?:\r\n|[\r\n])/;
|
|
23
23
|
this.content = (0, fs_1.readFileSync)(filePath).toString('utf8');
|
|
24
24
|
this.lines = this.content.split(EOL);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"line-reader.js","sourceRoot":"","sources":["../../../../src/services/apexdoc/common/line-reader.ts"],"names":[],"mappings":";;;AAAA;;IAEI;AACJ,gFAA6C;AAE7C,2BAAkC;AAElC;;;;;GAKG;AACH,MAAM,UAAU;IAMd,YAAmB,QAAgB;QAJ3B,cAAS,GAAG,CAAC,CAAC;QAKpB,IAAI;YACF,+DAA+D;YAC/D,+DAA+D;YAC/D,
|
|
1
|
+
{"version":3,"file":"line-reader.js","sourceRoot":"","sources":["../../../../src/services/apexdoc/common/line-reader.ts"],"names":[],"mappings":";;;AAAA;;IAEI;AACJ,gFAA6C;AAE7C,2BAAkC;AAElC;;;;;GAKG;AACH,MAAM,UAAU;IAMd,YAAmB,QAAgB;QAJ3B,cAAS,GAAG,CAAC,CAAC;QAKpB,IAAI;YACF,+DAA+D;YAC/D,+DAA+D;YAC/D,0DAA0D;YAC1D,MAAM,GAAG,GAAG,iBAAiB,CAAC;YAC9B,IAAI,CAAC,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;SAC9B;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,IAAI,yBAAY,CAAC,CAAC,CAAC,CAAC;SAC3B;IACH,CAAC;IAED;;;OAGG;IACI,QAAQ;QACb,IAAI,MAAM,CAAC;QACX,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;YAC7B,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACpC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC;SACf;QAED,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,YAAY;QACjB,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;SACvC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,YAAY;QACjB,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;YACjC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;SACvC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACI,QAAQ,CAAC,IAAI,GAAG,KAAK,EAAE,SAAS,GAAG,EAAE;QAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACrB,IAAI,IAAI,EAAE;gBACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;aACzD;YAED,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACnC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,OAAO;QACZ,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED,kBAAe,UAAU,CAAC"}
|
|
@@ -19,14 +19,25 @@ class SourceMarkupGenerator extends markup_generator_1.default {
|
|
|
19
19
|
return '';
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
|
|
22
|
+
let source = model.source;
|
|
23
23
|
if (model.groupName === 'Pages') {
|
|
24
|
+
source = source.replace(/</g, '<').replace(/>/g, '>');
|
|
24
25
|
markup = `<div class="subsection code">
|
|
25
26
|
<h3 class="subsection-title code">${model.name} Code</h3>
|
|
26
27
|
<pre class="code-example"><code class="language-xml">${source}</code></pre>
|
|
27
28
|
</div>`;
|
|
28
29
|
}
|
|
29
30
|
else {
|
|
31
|
+
const NS = 'tffa';
|
|
32
|
+
const classNames = new Set(Array.from(models.values()).map(p => p.name));
|
|
33
|
+
const className = model.name;
|
|
34
|
+
source = source.replace(/[']?\w+__[cr][']?/g, word => {
|
|
35
|
+
return word.startsWith("'") || word.indexOf('__') !== word.length - 3 ? word : `${NS}__${word}`;
|
|
36
|
+
});
|
|
37
|
+
source = source.replace(/[.'a-z0-9]?[A-Z]\w+/g, word => {
|
|
38
|
+
return !classNames.has(word) || word === className ? word : `${NS}.${word}`;
|
|
39
|
+
});
|
|
40
|
+
source = source.replace(/</g, '<').replace(/>/g, '>');
|
|
30
41
|
markup = `<div class="subsection code">
|
|
31
42
|
<h3 class="subsection-title code">${model.name} Code</h3>
|
|
32
43
|
<pre class="code-example"><code class="language-java">${source}</code></pre>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-markup-generator.js","sourceRoot":"","sources":["../../../../../../src/services/apexdoc/engine/generators/models/source-markup-generator.ts"],"names":[],"mappings":";;;AAAA;;IAEI;AACJ,kFAAiD;AACjD,mDAAmE;AAEnE,MAAM,qBAAsB,SAAQ,0BAA8B;IAChE,YAAsB,KAAoB,EAAE,MAAkC;QAC5E,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,KAAoB,EAAE,MAAkC;QAC7E,6DAA6D;QAC7D,MAAM,SAAS,GAAG,IAAI,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAE3D,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,KAAK,YAAY,mBAAU,EAAE;YAC/B,IAAI,KAAK,CAAC,YAAY,EAAE;gBACtB,OAAO,EAAE,CAAC;aACX;SACF;QACD,
|
|
1
|
+
{"version":3,"file":"source-markup-generator.js","sourceRoot":"","sources":["../../../../../../src/services/apexdoc/engine/generators/models/source-markup-generator.ts"],"names":[],"mappings":";;;AAAA;;IAEI;AACJ,kFAAiD;AACjD,mDAAmE;AAEnE,MAAM,qBAAsB,SAAQ,0BAA8B;IAChE,YAAsB,KAAoB,EAAE,MAAkC;QAC5E,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,KAAoB,EAAE,MAAkC;QAC7E,6DAA6D;QAC7D,MAAM,SAAS,GAAG,IAAI,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAE3D,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,KAAK,YAAY,mBAAU,EAAE;YAC/B,IAAI,KAAK,CAAC,YAAY,EAAE;gBACtB,OAAO,EAAE,CAAC;aACX;SACF;QACD,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1B,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,EAAE;YAC/B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1D,MAAM,GAAG;gDACiC,KAAK,CAAC,IAAI;mEACS,MAAM;mBACtD,CAAC;SACf;aAAM;YACL,MAAM,EAAE,GAAG,MAAM,CAAC;YAClB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACzE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;YAC7B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,EAAE;gBACnD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC;YAClG,CAAC,CAAC,CAAC;YACH,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,EAAE;gBACrD,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC;YAC9E,CAAC,CAAC,CAAC;YACH,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1D,MAAM,GAAG;gDACiC,KAAK,CAAC,IAAI;oEACU,MAAM;mBACvD,CAAC;SACf;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,kBAAe,qBAAqB,CAAC"}
|
|
@@ -62,7 +62,7 @@ Rules.customrules = {
|
|
|
62
62
|
label: 'Instances of (tffa\\.AbstractRepository\\.|tffa\\.AbstractController\\.|tffa\\.AbstractRESTService\\.)',
|
|
63
63
|
category: 'INTERNAL',
|
|
64
64
|
level: 'FATAL',
|
|
65
|
-
message: 'Do not call methods directly of an abstract class
|
|
65
|
+
message: 'Do not call methods directly of an abstract class. Extend the abstract class and use methods directly'
|
|
66
66
|
},
|
|
67
67
|
SOQL_REPOSITORY: {
|
|
68
68
|
label: 'Instances of (\\[select |\\[update |\\[upsert |\\[delete |\\bDatabase\\.query\\b|\\bDatabase\\.update\\b|\\bDatabase\\.insert\\b|\\bDatabase\\.upsert\\b|\\bDatabase\\.delete\\b)',
|
|
@@ -80,7 +80,7 @@ Rules.customrules = {
|
|
|
80
80
|
label: 'Instances of (System\\.assertEquals\\(true\\, true\\)|System\\.assertNotEquals\\(true\\, false\\)|System\\.assertNotEquals\\(false\\, true\\)|System\\.assert\\(true\\))',
|
|
81
81
|
category: 'PMD',
|
|
82
82
|
level: 'FATAL',
|
|
83
|
-
message: 'Apex unit tests should include at least one assertion
|
|
83
|
+
message: 'Apex unit tests should include at least one assertion. Do not hard code values. Use proper variables'
|
|
84
84
|
}
|
|
85
85
|
};
|
|
86
86
|
//# sourceMappingURL=rules.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/services/lint/rules.ts"],"names":[],"mappings":";;;;AAAA;;IAEI;AACJ,sFAAqD;AASrD,MAAa,KAAK;;AAAlB,sBA6EC;AA5Ee,iBAAW,GAAyB;IAChD,oBAAoB,EAAE;QACpB,KAAK,EAAE,oCAAoC;QAC3C,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,gBAAgB,GAAG,cAAc,GAAG,uBAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG;KACnG;IACD,sBAAsB,EAAE;QACtB,KAAK,EAAE,0CAA0C;QACjD,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,+DAA+D;KACzE;IACD,wBAAwB,EAAE;QACxB,KAAK,EAAE,yCAAyC;QAChD,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,6DAA6D;KACvE;IACD,uBAAuB,EAAE;QACvB,KAAK,EAAE,+CAA+C;QACtD,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,0EAA0E;KACpF;IACD,eAAe,EAAE;QACf,KAAK,EAAE,uDAAuD;QAC9D,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,oFAAoF;KAC9F;IACD,aAAa,EAAE;QACb,KAAK,EAAE,sCAAsC;QAC7C,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,oGAAoG;KAC9G;IACD,cAAc,EAAE;QACd,KAAK,EAAE,gCAAgC;QACvC,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,mFAAmF;KAC7F;IACD,mBAAmB,EAAE;QACnB,KAAK,EAAE,2DAA2D;QAClE,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,qDAAqD;KAC/D;IACD,qBAAqB,EAAE;QACrB,KAAK,EAAE,wGAAwG;QAC/G,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/services/lint/rules.ts"],"names":[],"mappings":";;;;AAAA;;IAEI;AACJ,sFAAqD;AASrD,MAAa,KAAK;;AAAlB,sBA6EC;AA5Ee,iBAAW,GAAyB;IAChD,oBAAoB,EAAE;QACpB,KAAK,EAAE,oCAAoC;QAC3C,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,gBAAgB,GAAG,cAAc,GAAG,uBAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG;KACnG;IACD,sBAAsB,EAAE;QACtB,KAAK,EAAE,0CAA0C;QACjD,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,+DAA+D;KACzE;IACD,wBAAwB,EAAE;QACxB,KAAK,EAAE,yCAAyC;QAChD,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,6DAA6D;KACvE;IACD,uBAAuB,EAAE;QACvB,KAAK,EAAE,+CAA+C;QACtD,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,0EAA0E;KACpF;IACD,eAAe,EAAE;QACf,KAAK,EAAE,uDAAuD;QAC9D,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,oFAAoF;KAC9F;IACD,aAAa,EAAE;QACb,KAAK,EAAE,sCAAsC;QAC7C,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,oGAAoG;KAC9G;IACD,cAAc,EAAE;QACd,KAAK,EAAE,gCAAgC;QACvC,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,mFAAmF;KAC7F;IACD,mBAAmB,EAAE;QACnB,KAAK,EAAE,2DAA2D;QAClE,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,qDAAqD;KAC/D;IACD,qBAAqB,EAAE;QACrB,KAAK,EAAE,wGAAwG;QAC/G,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,uGAAuG;KACjH;IACD,eAAe,EAAE;QACf,KAAK,EACH,mLAAmL;QACrL,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,gHAAgH;KAC1H;IACD,mBAAmB,EAAE;QACnB,KAAK,EAAE,+BAA+B;QACtC,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,iDAAiD;KAC3D;IACD,2BAA2B,EAAE;QAC3B,KAAK,EACH,2KAA2K;QAC7K,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,sGAAsG;KAChH;CACF,CAAC"}
|
package/messages/apexdoc.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"commandDescription": "
|
|
2
|
+
"commandDescription": "Command to generate apex documentation similar to javadoc based on the comments in apex classes.\nPlease read more at [Documenting Apex Classes](development-guidelines/documentation).\nOnce generated you can use vscode plugin [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer) and select index.html from generated folder and run Open with LiveServer to render the html",
|
|
3
3
|
"sourceFolderDescription": "directory containing sfdx project",
|
|
4
4
|
"destFolderDescription": "directory to generate the api docs"
|
|
5
5
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) NCR Terafina
|
|
3
|
+
**/
|
|
4
|
+
module.exports = {
|
|
5
|
+
commandDescription: `Exports records of specified sobject types from target org into JSON file(s). Primarily used for exporting business configurations.
|
|
6
|
+
The export command requires a target org for exporting records. Run this command from within a sfdx project containing a default username or specify targetusername explicitly.`,
|
|
7
|
+
sobjecttypeFlagDescription: 'sobject types of records to be exported',
|
|
8
|
+
outputdirFlagDescription: 'output directory where the JSON files of exported records will be placed',
|
|
9
|
+
groupbyFlagDescription:
|
|
10
|
+
'the field to be used for grouping the exported records; records belonging to each group are placed in separate JSON files (filename suffixed by group name)',
|
|
11
|
+
orderbyFlagDescription: 'the fields to be used for sorting the exported records',
|
|
12
|
+
childrenFlagDescription:
|
|
13
|
+
'the child relationships to be included in the exported records; this is not required for tffa package objects. e.g. tffa__Features__r,tffa__Terms__r child relationships are auto included when running export command for tffa__Product__c',
|
|
14
|
+
skipconfigplanFlagDescription: 'skip import of exported record JSON files into configuration plan',
|
|
15
|
+
commandExamples: [
|
|
16
|
+
`$ sfdx tffa:data:export --sobjecttype tffa__Product__c
|
|
17
|
+
Fetched 101 records of tffa__Product__c
|
|
18
|
+
Writing 24 records to ./data/configuration/Product__c.json
|
|
19
|
+
Writing 30 records to ./data/configuration/Product__c1.json
|
|
20
|
+
Writing 20 records to ./data/configuration/Product__c2.json
|
|
21
|
+
Writing 27 records to ./data/configuration/Product__c3.json
|
|
22
|
+
`,
|
|
23
|
+
`$ sfdx tffa:data:export --sobjecttype tffa__DisclosureTemplate__c,tffa__DisclosureChecklist__c,tffa__DisclosureMatrix__c
|
|
24
|
+
Fetched 81 records of tffa__DisclosureTemplate__c
|
|
25
|
+
Writing 81 records to ./data/configuration/DisclosureTemplate__c.json
|
|
26
|
+
Fetched 57 records of tffa__DisclosureChecklist__c
|
|
27
|
+
Writing 57 records to ./data/configuration/DisclosureChecklist__c.json
|
|
28
|
+
Fetched 144 records of tffa__DisclosureMatrix__c
|
|
29
|
+
Writing 144 records to ./data/configuration/DisclosureMatrix__c.json
|
|
30
|
+
`
|
|
31
|
+
]
|
|
32
|
+
};
|
package/messages/lint.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) NCR Terafina
|
|
3
|
+
**/
|
|
4
|
+
module.exports = {
|
|
5
|
+
commandDescription: `Scans a sfdx project and provide a violations report based on defined standards.
|
|
6
|
+
Performs static analysis of source code with a command-line interface and report output.
|
|
7
|
+
The command creates "Rule Violations" when the it identifies issues. Developers use this information as feedback to fix their code.
|
|
8
|
+
|
|
9
|
+
The rules used in the lint command are:
|
|
10
|
+
|
|
11
|
+
- [Apex PMD](https://pmd.github.io/latest/pmd_rules_apex.html) to statically analyse Apex Code to find design, performance and security vulnerabilities. It allowes us to have a better quality and avoid maintenance, performance and bug problems in our Apex code. for Salesforce apex classes are scans during build and development process.
|
|
12
|
+
- Custom rules
|
|
13
|
+
- Custom Objects should have a description
|
|
14
|
+
- Custom Fields should have a description'
|
|
15
|
+
- Custom fields should not contain underscores.
|
|
16
|
+
- Custom fields in managed object should start with CZ.
|
|
17
|
+
- Custom objects should start with CZ.
|
|
18
|
+
- Using Metadata API Version and Project source api version should be the latest supported.
|
|
19
|
+
- Files violating naming conventions
|
|
20
|
+
- Do not use isCreateable, isAccessible, isUpdateable, CRUD/FLS Checks are checked by tffa.AbstractRepository
|
|
21
|
+
- Do not call methods directly of an abstract class. Call methods from Repository classes extending tffa.AbstractRepository
|
|
22
|
+
- Do not call methods directly of an abstract class. Call methods from Controllers classes extending tffa.AbstractController',
|
|
23
|
+
- Do not call methods directly of an abstract class. Call methods from RESTService classes extending tffa.AbstractRESTService
|
|
24
|
+
- Any SOQL should be encapsulated into Repository classes extending tffa.AbstractRepository. Use doQuery method
|
|
25
|
+
- Do not supress PMD warnings using @SupressWarnings
|
|
26
|
+
|
|
27
|
+
The lint command is integrated into the jenkins build to report violations and fail builds
|
|
28
|
+
`,
|
|
29
|
+
flagApiversionDescription: 'minimum api version to use during quality checks',
|
|
30
|
+
sourceFolderDescription: 'directory containing sfdx project'
|
|
31
|
+
};
|
package/messages/ping.json
CHANGED