nolimit-x 1.0.66 → 1.0.68
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/package.json +1 -1
- package/src/processor.js +12 -4
package/package.json
CHANGED
package/src/processor.js
CHANGED
|
@@ -350,12 +350,20 @@ class CampaignProcessor {
|
|
|
350
350
|
const qrGen = new QRGenerator();
|
|
351
351
|
const ecLevels = ['L', 'M', 'Q', 'H'];
|
|
352
352
|
const jitter = () => Math.floor(Math.random() * 20);
|
|
353
|
+
// Pre-resolve placeholders in qrLink BEFORE passing to URL parser.
|
|
354
|
+
// new URL() will encode {{ }} as %7B%7B if they aren't replaced first.
|
|
355
|
+
let resolvedQrLink = qrLink
|
|
356
|
+
.replace(/\{\{EMAIL\}\}/g, email)
|
|
357
|
+
.replace(/\{\{NAME\}\}/g, nameResult?.name || '')
|
|
358
|
+
.replace(/\{\{RANDOM\}\}/g, Math.floor(100000 + Math.random() * 900000).toString())
|
|
359
|
+
.replace(/\{\{TIMESTAMP\}\}/g, new Date().toISOString());
|
|
360
|
+
|
|
353
361
|
// Make QR link per-recipient if dynamic URL generation is enabled
|
|
354
|
-
let perRecipientQrLink =
|
|
355
|
-
if (this.engineConfig.isFeatureEnabled('dynamicUrlGeneration') &&
|
|
362
|
+
let perRecipientQrLink = resolvedQrLink;
|
|
363
|
+
if (this.engineConfig.isFeatureEnabled('dynamicUrlGeneration') && resolvedQrLink.trim()) {
|
|
356
364
|
try {
|
|
357
|
-
perRecipientQrLink = this.urlGenerator.generateDynamicURL(
|
|
358
|
-
} catch (e) { perRecipientQrLink =
|
|
365
|
+
perRecipientQrLink = this.urlGenerator.generateDynamicURL(resolvedQrLink, domain, email);
|
|
366
|
+
} catch (e) { perRecipientQrLink = resolvedQrLink; }
|
|
359
367
|
}
|
|
360
368
|
const dataURL = await qrGen.generateQRDataURL(perRecipientQrLink, {
|
|
361
369
|
errorCorrectionLevel: ecLevels[Math.floor(Math.random() * ecLevels.length)],
|