@salesforce/templates 66.13.4 → 66.13.5

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.
@@ -25,6 +25,7 @@ declare abstract class NotYeoman {
25
25
  render(source: string, destination: string, data?: Record<string, unknown>): Promise<void>;
26
26
  private register;
27
27
  }
28
+ export declare function validateCustomTemplate(templateContent: string, templatePath: string): void;
28
29
  export declare abstract class BaseGenerator<TOptions extends TemplateOptions> extends NotYeoman {
29
30
  options: TOptions;
30
31
  /**
@@ -48,6 +49,7 @@ export declare abstract class BaseGenerator<TOptions extends TemplateOptions> ex
48
49
  */
49
50
  sourceRootWithPartialPath(partialPath: string): void;
50
51
  templatePath(...paths: string[]): string;
52
+ render(source: string, destination: string, data?: Record<string, unknown>): Promise<void>;
51
53
  run(opts?: {
52
54
  cwd?: string;
53
55
  customTemplatesRootPathOrGitRepo?: string;
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.BaseGenerator = void 0;
10
10
  exports.setCustomTemplatesRootPathOrGitRepo = setCustomTemplatesRootPathOrGitRepo;
11
11
  exports.getDefaultApiVersion = getDefaultApiVersion;
12
+ exports.validateCustomTemplate = validateCustomTemplate;
12
13
  const tslib_1 = require("tslib");
13
14
  const nodeFs = require("fs");
14
15
  const path = require("path");
@@ -125,6 +126,321 @@ class NotYeoman {
125
126
  this.changes[verb].push(file);
126
127
  }
127
128
  }
129
+ // Allowlist-based validator for custom EJS templates.
130
+ // Instead of trying to block dangerous patterns (infinite bypass surface),
131
+ // we only permit the narrow subset of JS that templates legitimately need.
132
+ const ALLOWED_EXPRESSION_CALL_TARGETS = new Set([
133
+ 'replace',
134
+ 'uuid',
135
+ 'join',
136
+ 'toString',
137
+ 'trim',
138
+ 'toLowerCase',
139
+ 'toUpperCase',
140
+ 'slice',
141
+ 'substring',
142
+ 'indexOf',
143
+ 'includes',
144
+ 'split',
145
+ 'concat',
146
+ 'startsWith',
147
+ 'endsWith',
148
+ 'padStart',
149
+ 'padEnd',
150
+ ]);
151
+ const ALLOWED_SCRIPTLET_METHODS = new Set([
152
+ 'forEach',
153
+ 'map',
154
+ 'filter',
155
+ 'includes',
156
+ 'indexOf',
157
+ 'length',
158
+ 'push',
159
+ 'join',
160
+ 'some',
161
+ 'every',
162
+ 'find',
163
+ 'findIndex',
164
+ 'slice',
165
+ 'concat',
166
+ 'keys',
167
+ 'values',
168
+ 'entries',
169
+ ]);
170
+ function extractEjsTags(template) {
171
+ const tags = [];
172
+ let i = 0;
173
+ while (i < template.length) {
174
+ const start = template.indexOf('<%', i);
175
+ if (start === -1) {
176
+ break;
177
+ }
178
+ const afterOpen = start + 2;
179
+ if (afterOpen >= template.length) {
180
+ break;
181
+ }
182
+ const firstChar = template[afterOpen];
183
+ if (firstChar === '#') {
184
+ const end = template.indexOf('%>', afterOpen);
185
+ i = end === -1 ? template.length : end + 2;
186
+ continue;
187
+ }
188
+ let type;
189
+ let codeStart;
190
+ if (firstChar === '=' || firstChar === '-') {
191
+ type = firstChar;
192
+ codeStart = afterOpen + 1;
193
+ }
194
+ else {
195
+ type = '%';
196
+ codeStart = afterOpen;
197
+ }
198
+ let pos = codeStart;
199
+ let code = '';
200
+ let found = false;
201
+ while (pos < template.length) {
202
+ const ch = template[pos];
203
+ if (ch === "'" || ch === '"' || ch === '`') {
204
+ const quote = ch;
205
+ pos++;
206
+ while (pos < template.length && template[pos] !== quote) {
207
+ if (template[pos] === '\\') {
208
+ pos++;
209
+ }
210
+ pos++;
211
+ }
212
+ pos++;
213
+ }
214
+ else if (template[pos] === '%' && template[pos + 1] === '>') {
215
+ code = template.slice(codeStart, pos);
216
+ found = true;
217
+ pos += 2;
218
+ break;
219
+ }
220
+ else {
221
+ pos++;
222
+ }
223
+ }
224
+ if (!found) {
225
+ code = template.slice(codeStart);
226
+ pos = template.length;
227
+ }
228
+ tags.push({ type, code: code.trim() });
229
+ i = pos;
230
+ }
231
+ return tags;
232
+ }
233
+ function isSafeBracketContent(inner) {
234
+ if (/^\d+$/.test(inner)) {
235
+ return true;
236
+ }
237
+ if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(inner)) {
238
+ return true;
239
+ }
240
+ const strLitMatch = inner.match(/^(['"])([a-zA-Z_$][\w.]*)\1$/);
241
+ if (strLitMatch) {
242
+ return true;
243
+ }
244
+ return false;
245
+ }
246
+ function containsDangerousBrackets(code) {
247
+ const bracketContent = /\[([^\]]*)\]/g;
248
+ let m;
249
+ while ((m = bracketContent.exec(code)) !== null) {
250
+ if (!isSafeBracketContent(m[1].trim())) {
251
+ return true;
252
+ }
253
+ }
254
+ return false;
255
+ }
256
+ function isSimpleExpression(code) {
257
+ const blocked = /\b(function|class|new|delete|typeof|void|this|process|global|globalThis|require|import|module|eval|Function|constructor|__proto__|prototype|Reflect|Proxy|Object\s*\.\s*(?:create|assign|definePropert|getOwnPropertyNames|getPrototypeOf|setPrototypeOf)|Array\s*\.\s*from|String\s*\.\s*fromCharCode|Symbol|Buffer|setTimeout|setInterval|setImmediate|clearTimeout|clearInterval|queueMicrotask|Promise|async|await|yield|return|throw|try|catch|finally|while|for|do|switch|with)\b/;
258
+ if (blocked.test(code)) {
259
+ return false;
260
+ }
261
+ if (containsDangerousBrackets(code)) {
262
+ return false;
263
+ }
264
+ if (/`[^`]*\$\{/.test(code)) {
265
+ return false;
266
+ }
267
+ if (/(?<![=!<>])=(?!=)/.test(code)) {
268
+ return false;
269
+ }
270
+ const callPattern = /\.([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/g;
271
+ let m;
272
+ while ((m = callPattern.exec(code)) !== null) {
273
+ if (!ALLOWED_EXPRESSION_CALL_TARGETS.has(m[1])) {
274
+ return false;
275
+ }
276
+ }
277
+ const bareCalls = /(?<![.\w])([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/g;
278
+ while ((m = bareCalls.exec(code)) !== null) {
279
+ if (!ALLOWED_EXPRESSION_CALL_TARGETS.has(m[1])) {
280
+ return false;
281
+ }
282
+ }
283
+ return true;
284
+ }
285
+ function isAllowedScriptlet(code) {
286
+ const statements = code.split(/[;\n]/).map((s) => s.trim()).filter(Boolean);
287
+ for (const stmt of statements) {
288
+ if (!isAllowedStatement(stmt)) {
289
+ return false;
290
+ }
291
+ }
292
+ return true;
293
+ }
294
+ function isAllowedStatement(stmt) {
295
+ const hardBlocked = /\b(process|global|globalThis|require|import|module|eval|Function|Reflect|Proxy|Buffer|setTimeout|setInterval|setImmediate|clearTimeout|clearInterval|queueMicrotask|__dirname|__filename|constructor|__proto__|prototype|with|yield|async|await)\b/;
296
+ if (hardBlocked.test(stmt)) {
297
+ return false;
298
+ }
299
+ if (/`[^`]*\$\{/.test(stmt)) {
300
+ return false;
301
+ }
302
+ if (containsDangerousBrackets(stmt)) {
303
+ return false;
304
+ }
305
+ if (/^\}?\s*\)?\s*;?\s*\}?\s*;?$/.test(stmt)) {
306
+ return true;
307
+ }
308
+ if (stmt === '{') {
309
+ return true;
310
+ }
311
+ if (/^(?:else\s+)?if\s*\(/.test(stmt)) {
312
+ return isSimpleCondition(stmt);
313
+ }
314
+ if (/^}\s*else\s*\{?$/.test(stmt) || stmt === 'else {' || stmt === 'else') {
315
+ return true;
316
+ }
317
+ if (/^for\s*\(/.test(stmt)) {
318
+ return isSimpleForLoop(stmt);
319
+ }
320
+ if (/^\w[\w.]*\s*\.\s*(forEach|map|filter|some|every|find|findIndex)\s*\(/.test(stmt)) {
321
+ return isSimpleIterator(stmt);
322
+ }
323
+ if (/^(?:const|let|var)\s+/.test(stmt)) {
324
+ return isSimpleDeclaration(stmt);
325
+ }
326
+ if (/^[a-zA-Z_$][\w.]*\s*\.\s*(push|pop|shift|unshift)\s*\(/.test(stmt)) {
327
+ return isSimpleMethodCall(stmt);
328
+ }
329
+ return false;
330
+ }
331
+ function isSimpleCondition(stmt) {
332
+ const condMatch = stmt.match(/^(?:else\s+)?if\s*\(([\s\S]*)\)\s*\{?\s*$/);
333
+ if (!condMatch) {
334
+ return false;
335
+ }
336
+ const cond = condMatch[1];
337
+ const hardBlocked = /\b(process|global|globalThis|require|import|module|eval|Function|Reflect|Proxy|constructor|__proto__)\b/;
338
+ if (hardBlocked.test(cond)) {
339
+ return false;
340
+ }
341
+ if (/`[^`]*\$\{/.test(cond)) {
342
+ return false;
343
+ }
344
+ const callPattern = /\.([a-zA-Z_$]\w*)\s*\(/g;
345
+ let m;
346
+ while ((m = callPattern.exec(cond)) !== null) {
347
+ if (!ALLOWED_SCRIPTLET_METHODS.has(m[1])) {
348
+ return false;
349
+ }
350
+ }
351
+ if (containsDangerousBrackets(cond)) {
352
+ return false;
353
+ }
354
+ return true;
355
+ }
356
+ function isSimpleForLoop(stmt) {
357
+ if (/^for\s*\(\s*(?:const|let|var)\s+\[?\s*\w+(?:\s*,\s*\w+)*\s*\]?\s+(?:of|in)\s+/.test(stmt)) {
358
+ const hardBlocked = /\b(process|global|globalThis|require|import|module|eval|Function|Reflect|Proxy|constructor|__proto__)\b/;
359
+ return !hardBlocked.test(stmt);
360
+ }
361
+ return false;
362
+ }
363
+ function isSimpleIterator(stmt) {
364
+ const hardBlocked = /\b(process|global|globalThis|require|import|module|eval|Function|Reflect|Proxy|constructor|__proto__)\b/;
365
+ if (hardBlocked.test(stmt)) {
366
+ return false;
367
+ }
368
+ if (/`[^`]*\$\{/.test(stmt)) {
369
+ return false;
370
+ }
371
+ if (containsDangerousBrackets(stmt)) {
372
+ return false;
373
+ }
374
+ return true;
375
+ }
376
+ function isSimpleDeclaration(stmt) {
377
+ const hardBlocked = /\b(process|global|globalThis|require|import|module|eval|Function|Reflect|Proxy|constructor|__proto__|prototype)\b/;
378
+ if (hardBlocked.test(stmt)) {
379
+ return false;
380
+ }
381
+ if (/`[^`]*\$\{/.test(stmt)) {
382
+ return false;
383
+ }
384
+ if (/\bfunction\b/.test(stmt)) {
385
+ return false;
386
+ }
387
+ if (/=>\s*\{/.test(stmt)) {
388
+ return false;
389
+ }
390
+ if (containsDangerousBrackets(stmt)) {
391
+ return false;
392
+ }
393
+ return true;
394
+ }
395
+ function isSimpleMethodCall(stmt) {
396
+ const hardBlocked = /\b(process|global|globalThis|require|import|module|eval|Function|Reflect|Proxy|constructor|__proto__)\b/;
397
+ if (hardBlocked.test(stmt)) {
398
+ return false;
399
+ }
400
+ if (/`[^`]*\$\{/.test(stmt)) {
401
+ return false;
402
+ }
403
+ if (containsDangerousBrackets(stmt)) {
404
+ return false;
405
+ }
406
+ return true;
407
+ }
408
+ function normalizeCode(code) {
409
+ let result = code;
410
+ // Strip JS comments that could hide content from analysis
411
+ result = result.replace(/\/\*[\s\S]*?\*\//g, ' ');
412
+ result = result.replace(/\/\/[^\n]*/g, ' ');
413
+ // Resolve string concatenations: 'a' + 'b' -> 'ab'
414
+ let prev = '';
415
+ while (result !== prev) {
416
+ prev = result;
417
+ result = result.replace(/'([^'\\]*)'\s*\+\s*'([^'\\]*)'/g, "'$1$2'");
418
+ result = result.replace(/"([^"\\]*)"\s*\+\s*"([^"\\]*)"/g, '"$1$2"');
419
+ result = result.replace(/'([^'\\]*)'\s*\+\s*"([^"\\]*)"/g, "'$1$2'");
420
+ result = result.replace(/"([^"\\]*)"\s*\+\s*'([^'\\]*)'/g, '"$1$2"');
421
+ }
422
+ // Normalize hex escapes in strings: '\x63' -> 'c'
423
+ result = result.replace(/\\x([0-9a-fA-F]{2})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)));
424
+ // Normalize unicode escapes: '\u0063' -> 'c'
425
+ result = result.replace(/\\u([0-9a-fA-F]{4})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)));
426
+ return result;
427
+ }
428
+ function validateCustomTemplate(templateContent, templatePath) {
429
+ const tags = extractEjsTags(templateContent);
430
+ for (const tag of tags) {
431
+ const code = normalizeCode(tag.code);
432
+ if (tag.type === '=' || tag.type === '-') {
433
+ if (!isSimpleExpression(code)) {
434
+ throw new Error(`Custom template "${templatePath}" contains disallowed code in expression tag: ${tag.code.slice(0, 80)}`);
435
+ }
436
+ }
437
+ else {
438
+ if (!isAllowedScriptlet(code)) {
439
+ throw new Error(`Custom template "${templatePath}" contains disallowed code in scriptlet tag: ${tag.code.slice(0, 80)}`);
440
+ }
441
+ }
442
+ }
443
+ }
128
444
  class BaseGenerator extends NotYeoman {
129
445
  /**
130
446
  * The constructor for the SfGenerator.
@@ -171,6 +487,43 @@ class BaseGenerator extends NotYeoman {
171
487
  return super.templatePath(path.join(this.builtInTemplatesRootPath, ...paths));
172
488
  }
173
489
  }
490
+ render(source, destination, data) {
491
+ const _super = Object.create(null, {
492
+ render: { get: () => super.render }
493
+ });
494
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
495
+ const isBuiltIn = this.builtInTemplatesRootPath && source.startsWith(this.builtInTemplatesRootPath);
496
+ if (!isBuiltIn) {
497
+ const template = yield this._fs.promises.readFile(source, 'utf8');
498
+ validateCustomTemplate(template, source);
499
+ const rendered = (0, ejs_1.render)(template, data !== null && data !== void 0 ? data : {});
500
+ if (rendered) {
501
+ const relativePath = path.relative(this._cwd, destination);
502
+ const existing = yield this._fs.promises
503
+ .readFile(destination, 'utf8')
504
+ .catch(() => null);
505
+ if (existing) {
506
+ if (rendered.trim() === existing.trim()) {
507
+ this.changes.identical.push(relativePath);
508
+ return;
509
+ }
510
+ else {
511
+ this.changes.conflicted.push(relativePath);
512
+ this.changes.forced.push(relativePath);
513
+ }
514
+ }
515
+ else {
516
+ this.changes.created.push(relativePath);
517
+ }
518
+ const dir = path.dirname(destination);
519
+ yield this._fs.promises.mkdir(dir, { recursive: true });
520
+ yield this._fs.promises.writeFile(destination, rendered);
521
+ }
522
+ return;
523
+ }
524
+ return _super.render.call(this, source, destination, data);
525
+ });
526
+ }
174
527
  run(opts) {
175
528
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
176
529
  var _a, _b, _c, _d, _e;
@@ -1 +1 @@
1
- {"version":3,"file":"baseGenerator.js","sourceRoot":"","sources":["../../src/generators/baseGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseGenerator.js","sourceRoot":"","sources":["../../src/generators/baseGenerator.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { TemplateService } from './service/templateService';
2
2
  export { TemplateService };
3
+ export { validateCustomTemplate } from './generators/baseGenerator';
3
4
  export * from './utils/types';
4
5
  export * from './utils/createUtil';
5
6
  export * from './utils/uiEmbedding';
package/lib/index.js CHANGED
@@ -6,10 +6,12 @@
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.TemplateService = void 0;
9
+ exports.validateCustomTemplate = exports.TemplateService = void 0;
10
10
  const tslib_1 = require("tslib");
11
11
  const templateService_1 = require("./service/templateService");
12
12
  Object.defineProperty(exports, "TemplateService", { enumerable: true, get: function () { return templateService_1.TemplateService; } });
13
+ var baseGenerator_1 = require("./generators/baseGenerator");
14
+ Object.defineProperty(exports, "validateCustomTemplate", { enumerable: true, get: function () { return baseGenerator_1.validateCustomTemplate; } });
13
15
  tslib_1.__exportStar(require("./utils/types"), exports);
14
16
  tslib_1.__exportStar(require("./utils/createUtil"), exports);
15
17
  tslib_1.__exportStar(require("./utils/uiEmbedding"), exports);
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAEH,+DAA4D;AACnD,gGADA,iCAAe,OACA;AACxB,wDAA8B;AAC9B,6DAAmC;AACnC,8DAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAEH,+DAA4D;AACnD,gGADA,iCAAe,OACA;AACxB,4DAAoE;AAA3D,uHAAA,sBAAsB,OAAA;AAC/B,wDAA8B;AAC9B,6DAAmC;AACnC,8DAAoC"}