@jaggr2/cdk-cf-dns 0.1.1 → 0.2.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.
- package/lib/handler/cloudflare.d.ts +10 -0
- package/lib/handler/cloudflare.js +26 -2
- package/lib/handler/cloudflare.js.map +1 -1
- package/lib/handler/index.js +2 -2
- package/lib/handler/index.js.map +1 -1
- package/lib/provider.d.ts +8 -0
- package/lib/provider.js +10 -8
- package/lib/provider.js.map +1 -1
- package/lib/record.js +14 -4
- package/lib/record.js.map +1 -1
- package/package.json +1 -1
- package/src/handler/cloudflare.ts +26 -2
- package/src/handler/index.ts +3 -2
- package/src/provider.ts +10 -8
- package/src/record.ts +15 -4
|
@@ -65,6 +65,12 @@ export declare function log(...args: unknown[]): void;
|
|
|
65
65
|
* @param secretArn The ARN of the secret holding the token.
|
|
66
66
|
*/
|
|
67
67
|
export declare function getApiToken(secretArn: string): Promise<string>;
|
|
68
|
+
/**
|
|
69
|
+
* Returns true when a boolean custom resource property is true. CloudFormation
|
|
70
|
+
* delivers nested property values stringified, so `false` arrives as the string
|
|
71
|
+
* `"false"` (which is truthy in JavaScript); this treats it correctly.
|
|
72
|
+
*/
|
|
73
|
+
export declare function isTrue(value: unknown): boolean;
|
|
68
74
|
/**
|
|
69
75
|
* A Cloudflare API error, carrying the HTTP status and the error payload so the
|
|
70
76
|
* lifecycle logic can inspect specific error codes.
|
|
@@ -121,6 +127,10 @@ export declare function isRecordDoesNotExist(response: {
|
|
|
121
127
|
/**
|
|
122
128
|
* Builds the DNS record payload sent to the Cloudflare API from the custom
|
|
123
129
|
* resource properties.
|
|
130
|
+
*
|
|
131
|
+
* CloudFormation can deliver nested custom resource properties with stringified
|
|
132
|
+
* values (e.g. `ttl: "300"`), so numeric and boolean fields are coerced back to
|
|
133
|
+
* their real types before the payload is sent.
|
|
124
134
|
*/
|
|
125
135
|
export declare function buildRecordPayload(properties: Record<string, unknown>): Record<string, unknown>;
|
|
126
136
|
/**
|
|
@@ -4,6 +4,7 @@ exports.CloudflareApiError = exports.RECORD_ID_PATTERN = exports.BACKOFF_CAP_MS
|
|
|
4
4
|
exports.redact = redact;
|
|
5
5
|
exports.log = log;
|
|
6
6
|
exports.getApiToken = getApiToken;
|
|
7
|
+
exports.isTrue = isTrue;
|
|
7
8
|
exports.request = request;
|
|
8
9
|
exports.assertSuccess = assertSuccess;
|
|
9
10
|
exports.isAlreadyExists = isAlreadyExists;
|
|
@@ -109,6 +110,14 @@ async function getApiToken(secretArn) {
|
|
|
109
110
|
secretCache.set(secretArn, token);
|
|
110
111
|
return token;
|
|
111
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* Returns true when a boolean custom resource property is true. CloudFormation
|
|
115
|
+
* delivers nested property values stringified, so `false` arrives as the string
|
|
116
|
+
* `"false"` (which is truthy in JavaScript); this treats it correctly.
|
|
117
|
+
*/
|
|
118
|
+
function isTrue(value) {
|
|
119
|
+
return value === true || value === 'true';
|
|
120
|
+
}
|
|
112
121
|
/**
|
|
113
122
|
* A Cloudflare API error, carrying the HTTP status and the error payload so the
|
|
114
123
|
* lifecycle logic can inspect specific error codes.
|
|
@@ -233,13 +242,28 @@ function isRecordDoesNotExist(response) {
|
|
|
233
242
|
/**
|
|
234
243
|
* Builds the DNS record payload sent to the Cloudflare API from the custom
|
|
235
244
|
* resource properties.
|
|
245
|
+
*
|
|
246
|
+
* CloudFormation can deliver nested custom resource properties with stringified
|
|
247
|
+
* values (e.g. `ttl: "300"`), so numeric and boolean fields are coerced back to
|
|
248
|
+
* their real types before the payload is sent.
|
|
236
249
|
*/
|
|
237
250
|
function buildRecordPayload(properties) {
|
|
238
251
|
const record = (properties.record ?? {});
|
|
239
252
|
const payload = {};
|
|
240
253
|
for (const key of ['name', 'type', 'content', 'data', 'ttl', 'proxied', 'priority', 'comment', 'tags']) {
|
|
241
|
-
if (record[key]
|
|
242
|
-
|
|
254
|
+
if (record[key] === undefined) {
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
switch (key) {
|
|
258
|
+
case 'ttl':
|
|
259
|
+
case 'priority':
|
|
260
|
+
payload[key] = Number(record[key]);
|
|
261
|
+
break;
|
|
262
|
+
case 'proxied':
|
|
263
|
+
payload[key] = record[key] === true || record[key] === 'true';
|
|
264
|
+
break;
|
|
265
|
+
default:
|
|
266
|
+
payload[key] = record[key];
|
|
243
267
|
}
|
|
244
268
|
}
|
|
245
269
|
return payload;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../src/handler/cloudflare.ts"],"names":[],"mappings":";;;AAoEA,wBAeC;AAKD,kBAEC;AASD,kCAgCC;AA2BD,0BAsDC;AA+BD,sCAIC;AAKD,0CASC;AAKD,oDAEC;
|
|
1
|
+
{"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../src/handler/cloudflare.ts"],"names":[],"mappings":"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"}
|
package/lib/handler/index.js
CHANGED
|
@@ -13,7 +13,7 @@ async function onCreate(event) {
|
|
|
13
13
|
(0, cloudflare_1.log)('create', { zoneId, name: payload.name, type: payload.type });
|
|
14
14
|
const response = await (0, cloudflare_1.request)(`/zones/${zoneId}/dns_records`, { method: 'POST', token, body: payload });
|
|
15
15
|
if ((0, cloudflare_1.isAlreadyExists)(response)) {
|
|
16
|
-
if (!properties.adoptExisting) {
|
|
16
|
+
if (!(0, cloudflare_1.isTrue)(properties.adoptExisting)) {
|
|
17
17
|
throw new Error(`DNS record ${String(payload.name)} (${String(payload.type)}) already exists in zone ${zoneId}. ` +
|
|
18
18
|
'Either delete it in the Cloudflare dashboard, or set adoptExisting: true to adopt and manage it.');
|
|
19
19
|
}
|
|
@@ -66,7 +66,7 @@ async function onDelete(event) {
|
|
|
66
66
|
const properties = event.ResourceProperties;
|
|
67
67
|
const zoneId = String(properties.zoneId);
|
|
68
68
|
const physicalId = event.PhysicalResourceId;
|
|
69
|
-
if (properties.retainOnDelete) {
|
|
69
|
+
if ((0, cloudflare_1.isTrue)(properties.retainOnDelete)) {
|
|
70
70
|
(0, cloudflare_1.log)('delete', { message: 'retainOnDelete set; leaving record in Cloudflare', zoneId });
|
|
71
71
|
return { PhysicalResourceId: physicalId, Data: {} };
|
|
72
72
|
}
|
package/lib/handler/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handler/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handler/index.ts"],"names":[],"mappings":"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"}
|
package/lib/provider.d.ts
CHANGED
|
@@ -33,6 +33,10 @@ export declare class CloudflareDnsProvider extends Construct {
|
|
|
33
33
|
* Grants the provider's handler `secretsmanager:GetSecretValue` on the given
|
|
34
34
|
* secret. Repeated grants of the same secret are deduplicated.
|
|
35
35
|
*
|
|
36
|
+
* Delegates to `ISecret.grantRead`, which correctly handles partial ARNs for
|
|
37
|
+
* secrets imported by name (Secrets Manager appends a random suffix, so the
|
|
38
|
+
* grant targets `arn:...:secret:<name>-??????`).
|
|
39
|
+
*
|
|
36
40
|
* @param secret The secret holding a Cloudflare API token.
|
|
37
41
|
*/
|
|
38
42
|
grantSecretRead(secret: secretsmanager.ISecret): void;
|
|
@@ -69,6 +73,10 @@ export declare class CloudflareCertificateProvider extends Construct {
|
|
|
69
73
|
* Grants the provider's handler `secretsmanager:GetSecretValue` on the given
|
|
70
74
|
* secret. Repeated grants of the same secret are deduplicated.
|
|
71
75
|
*
|
|
76
|
+
* Delegates to `ISecret.grantRead`, which correctly handles partial ARNs for
|
|
77
|
+
* secrets imported by name (Secrets Manager appends a random suffix, so the
|
|
78
|
+
* grant targets `arn:...:secret:<name>-??????`).
|
|
79
|
+
*
|
|
72
80
|
* @param secret The secret holding a Cloudflare API token.
|
|
73
81
|
*/
|
|
74
82
|
grantSecretRead(secret: secretsmanager.ISecret): void;
|
package/lib/provider.js
CHANGED
|
@@ -148,6 +148,10 @@ class CloudflareDnsProvider extends constructs_1.Construct {
|
|
|
148
148
|
* Grants the provider's handler `secretsmanager:GetSecretValue` on the given
|
|
149
149
|
* secret. Repeated grants of the same secret are deduplicated.
|
|
150
150
|
*
|
|
151
|
+
* Delegates to `ISecret.grantRead`, which correctly handles partial ARNs for
|
|
152
|
+
* secrets imported by name (Secrets Manager appends a random suffix, so the
|
|
153
|
+
* grant targets `arn:...:secret:<name>-??????`).
|
|
154
|
+
*
|
|
151
155
|
* @param secret The secret holding a Cloudflare API token.
|
|
152
156
|
*/
|
|
153
157
|
grantSecretRead(secret) {
|
|
@@ -156,10 +160,7 @@ class CloudflareDnsProvider extends constructs_1.Construct {
|
|
|
156
160
|
return;
|
|
157
161
|
}
|
|
158
162
|
this.grantedSecrets.add(arn);
|
|
159
|
-
this.handlerRole
|
|
160
|
-
actions: ['secretsmanager:GetSecretValue'],
|
|
161
|
-
resources: [arn],
|
|
162
|
-
}));
|
|
163
|
+
secret.grantRead(this.handlerRole);
|
|
163
164
|
}
|
|
164
165
|
}
|
|
165
166
|
exports.CloudflareDnsProvider = CloudflareDnsProvider;
|
|
@@ -216,6 +217,10 @@ class CloudflareCertificateProvider extends constructs_1.Construct {
|
|
|
216
217
|
* Grants the provider's handler `secretsmanager:GetSecretValue` on the given
|
|
217
218
|
* secret. Repeated grants of the same secret are deduplicated.
|
|
218
219
|
*
|
|
220
|
+
* Delegates to `ISecret.grantRead`, which correctly handles partial ARNs for
|
|
221
|
+
* secrets imported by name (Secrets Manager appends a random suffix, so the
|
|
222
|
+
* grant targets `arn:...:secret:<name>-??????`).
|
|
223
|
+
*
|
|
219
224
|
* @param secret The secret holding a Cloudflare API token.
|
|
220
225
|
*/
|
|
221
226
|
grantSecretRead(secret) {
|
|
@@ -224,10 +229,7 @@ class CloudflareCertificateProvider extends constructs_1.Construct {
|
|
|
224
229
|
return;
|
|
225
230
|
}
|
|
226
231
|
this.grantedSecrets.add(arn);
|
|
227
|
-
this.handlerRole
|
|
228
|
-
actions: ['secretsmanager:GetSecretValue'],
|
|
229
|
-
resources: [arn],
|
|
230
|
-
}));
|
|
232
|
+
secret.grantRead(this.handlerRole);
|
|
231
233
|
}
|
|
232
234
|
}
|
|
233
235
|
exports.CloudflareCertificateProvider = CloudflareCertificateProvider;
|
package/lib/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|
package/lib/record.js
CHANGED
|
@@ -227,18 +227,28 @@ function resolveRecordName(recordName, zoneName) {
|
|
|
227
227
|
return recordName;
|
|
228
228
|
}
|
|
229
229
|
/**
|
|
230
|
-
*
|
|
231
|
-
*
|
|
230
|
+
* Encodes a TXT record value for Cloudflare. TXT content must consist of RFC
|
|
231
|
+
* 1035 "character strings" delimited by double quotes; Cloudflare's dashboard
|
|
232
|
+
* warns when content is not quoted and treats unquoted content as a single
|
|
233
|
+
* string. Values longer than 255 characters are split into a series of quoted
|
|
234
|
+
* segments.
|
|
232
235
|
*/
|
|
233
236
|
function chunkTxt(type, content) {
|
|
234
|
-
if (type !== CloudflareRecordType.TXT
|
|
237
|
+
if (type !== CloudflareRecordType.TXT) {
|
|
235
238
|
return content;
|
|
236
239
|
}
|
|
237
240
|
const chunks = [];
|
|
238
241
|
for (let i = 0; i < content.length; i += 255) {
|
|
239
242
|
chunks.push(content.slice(i, i + 255));
|
|
240
243
|
}
|
|
241
|
-
return chunks.map((chunk) => `"${chunk}"`).join(' ');
|
|
244
|
+
return chunks.map((chunk) => `"${escapeTxt(chunk)}"`).join(' ');
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Escapes double quotes and backslashes so the value can be wrapped as a single
|
|
248
|
+
* RFC 1035 quoted string (internal `"` and `\` are escaped with a backslash).
|
|
249
|
+
*/
|
|
250
|
+
function escapeTxt(value) {
|
|
251
|
+
return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
242
252
|
}
|
|
243
253
|
/**
|
|
244
254
|
* An A record.
|
package/lib/record.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.js","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jaggr2/cdk-cf-dns",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Manage Cloudflare DNS records as CloudFormation resources from AWS CDK, so Route 53 hosted zones are no longer needed.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -131,6 +131,15 @@ export async function getApiToken(secretArn: string): Promise<string> {
|
|
|
131
131
|
return token;
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
+
/**
|
|
135
|
+
* Returns true when a boolean custom resource property is true. CloudFormation
|
|
136
|
+
* delivers nested property values stringified, so `false` arrives as the string
|
|
137
|
+
* `"false"` (which is truthy in JavaScript); this treats it correctly.
|
|
138
|
+
*/
|
|
139
|
+
export function isTrue(value: unknown): boolean {
|
|
140
|
+
return value === true || value === 'true';
|
|
141
|
+
}
|
|
142
|
+
|
|
134
143
|
/**
|
|
135
144
|
* A Cloudflare API error, carrying the HTTP status and the error payload so the
|
|
136
145
|
* lifecycle logic can inspect specific error codes.
|
|
@@ -271,14 +280,29 @@ export function isRecordDoesNotExist(response: { status: number; body: Cloudflar
|
|
|
271
280
|
/**
|
|
272
281
|
* Builds the DNS record payload sent to the Cloudflare API from the custom
|
|
273
282
|
* resource properties.
|
|
283
|
+
*
|
|
284
|
+
* CloudFormation can deliver nested custom resource properties with stringified
|
|
285
|
+
* values (e.g. `ttl: "300"`), so numeric and boolean fields are coerced back to
|
|
286
|
+
* their real types before the payload is sent.
|
|
274
287
|
*/
|
|
275
288
|
export function buildRecordPayload(properties: Record<string, unknown>): Record<string, unknown> {
|
|
276
289
|
const record = (properties.record ?? {}) as Record<string, unknown>;
|
|
277
290
|
const payload: Record<string, unknown> = {};
|
|
278
291
|
|
|
279
292
|
for (const key of ['name', 'type', 'content', 'data', 'ttl', 'proxied', 'priority', 'comment', 'tags']) {
|
|
280
|
-
if (record[key]
|
|
281
|
-
|
|
293
|
+
if (record[key] === undefined) {
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
switch (key) {
|
|
297
|
+
case 'ttl':
|
|
298
|
+
case 'priority':
|
|
299
|
+
payload[key] = Number(record[key]);
|
|
300
|
+
break;
|
|
301
|
+
case 'proxied':
|
|
302
|
+
payload[key] = record[key] === true || record[key] === 'true';
|
|
303
|
+
break;
|
|
304
|
+
default:
|
|
305
|
+
payload[key] = record[key];
|
|
282
306
|
}
|
|
283
307
|
}
|
|
284
308
|
|
package/src/handler/index.ts
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
getApiToken,
|
|
8
8
|
isAlreadyExists,
|
|
9
9
|
isRecordDoesNotExist,
|
|
10
|
+
isTrue,
|
|
10
11
|
log,
|
|
11
12
|
RECORD_ID_PATTERN,
|
|
12
13
|
request,
|
|
@@ -26,7 +27,7 @@ async function onCreate(event: CloudFormationCustomResourceCreateEvent): Promise
|
|
|
26
27
|
const response = await request(`/zones/${zoneId}/dns_records`, { method: 'POST', token, body: payload });
|
|
27
28
|
|
|
28
29
|
if (isAlreadyExists(response)) {
|
|
29
|
-
if (!properties.adoptExisting) {
|
|
30
|
+
if (!isTrue(properties.adoptExisting)) {
|
|
30
31
|
throw new Error(
|
|
31
32
|
`DNS record ${String(payload.name)} (${String(payload.type)}) already exists in zone ${zoneId}. ` +
|
|
32
33
|
'Either delete it in the Cloudflare dashboard, or set adoptExisting: true to adopt and manage it.',
|
|
@@ -92,7 +93,7 @@ async function onDelete(event: CloudFormationCustomResourceDeleteEvent): Promise
|
|
|
92
93
|
const zoneId = String(properties.zoneId);
|
|
93
94
|
const physicalId = event.PhysicalResourceId;
|
|
94
95
|
|
|
95
|
-
if (properties.retainOnDelete) {
|
|
96
|
+
if (isTrue(properties.retainOnDelete)) {
|
|
96
97
|
log('delete', { message: 'retainOnDelete set; leaving record in Cloudflare', zoneId });
|
|
97
98
|
return { PhysicalResourceId: physicalId, Data: {} };
|
|
98
99
|
}
|
package/src/provider.ts
CHANGED
|
@@ -130,6 +130,10 @@ export class CloudflareDnsProvider extends Construct {
|
|
|
130
130
|
* Grants the provider's handler `secretsmanager:GetSecretValue` on the given
|
|
131
131
|
* secret. Repeated grants of the same secret are deduplicated.
|
|
132
132
|
*
|
|
133
|
+
* Delegates to `ISecret.grantRead`, which correctly handles partial ARNs for
|
|
134
|
+
* secrets imported by name (Secrets Manager appends a random suffix, so the
|
|
135
|
+
* grant targets `arn:...:secret:<name>-??????`).
|
|
136
|
+
*
|
|
133
137
|
* @param secret The secret holding a Cloudflare API token.
|
|
134
138
|
*/
|
|
135
139
|
public grantSecretRead(secret: secretsmanager.ISecret): void {
|
|
@@ -138,10 +142,7 @@ export class CloudflareDnsProvider extends Construct {
|
|
|
138
142
|
return;
|
|
139
143
|
}
|
|
140
144
|
this.grantedSecrets.add(arn);
|
|
141
|
-
this.handlerRole
|
|
142
|
-
actions: ['secretsmanager:GetSecretValue'],
|
|
143
|
-
resources: [arn],
|
|
144
|
-
}));
|
|
145
|
+
secret.grantRead(this.handlerRole);
|
|
145
146
|
}
|
|
146
147
|
}
|
|
147
148
|
|
|
@@ -207,6 +208,10 @@ export class CloudflareCertificateProvider extends Construct {
|
|
|
207
208
|
* Grants the provider's handler `secretsmanager:GetSecretValue` on the given
|
|
208
209
|
* secret. Repeated grants of the same secret are deduplicated.
|
|
209
210
|
*
|
|
211
|
+
* Delegates to `ISecret.grantRead`, which correctly handles partial ARNs for
|
|
212
|
+
* secrets imported by name (Secrets Manager appends a random suffix, so the
|
|
213
|
+
* grant targets `arn:...:secret:<name>-??????`).
|
|
214
|
+
*
|
|
210
215
|
* @param secret The secret holding a Cloudflare API token.
|
|
211
216
|
*/
|
|
212
217
|
public grantSecretRead(secret: secretsmanager.ISecret): void {
|
|
@@ -215,9 +220,6 @@ export class CloudflareCertificateProvider extends Construct {
|
|
|
215
220
|
return;
|
|
216
221
|
}
|
|
217
222
|
this.grantedSecrets.add(arn);
|
|
218
|
-
this.handlerRole
|
|
219
|
-
actions: ['secretsmanager:GetSecretValue'],
|
|
220
|
-
resources: [arn],
|
|
221
|
-
}));
|
|
223
|
+
secret.grantRead(this.handlerRole);
|
|
222
224
|
}
|
|
223
225
|
}
|
package/src/record.ts
CHANGED
|
@@ -308,18 +308,29 @@ export function resolveRecordName(recordName: string | undefined, zoneName: stri
|
|
|
308
308
|
}
|
|
309
309
|
|
|
310
310
|
/**
|
|
311
|
-
*
|
|
312
|
-
*
|
|
311
|
+
* Encodes a TXT record value for Cloudflare. TXT content must consist of RFC
|
|
312
|
+
* 1035 "character strings" delimited by double quotes; Cloudflare's dashboard
|
|
313
|
+
* warns when content is not quoted and treats unquoted content as a single
|
|
314
|
+
* string. Values longer than 255 characters are split into a series of quoted
|
|
315
|
+
* segments.
|
|
313
316
|
*/
|
|
314
317
|
function chunkTxt(type: CloudflareRecordType, content: string): string {
|
|
315
|
-
if (type !== CloudflareRecordType.TXT
|
|
318
|
+
if (type !== CloudflareRecordType.TXT) {
|
|
316
319
|
return content;
|
|
317
320
|
}
|
|
318
321
|
const chunks: string[] = [];
|
|
319
322
|
for (let i = 0; i < content.length; i += 255) {
|
|
320
323
|
chunks.push(content.slice(i, i + 255));
|
|
321
324
|
}
|
|
322
|
-
return chunks.map((chunk) => `"${chunk}"`).join(' ');
|
|
325
|
+
return chunks.map((chunk) => `"${escapeTxt(chunk)}"`).join(' ');
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Escapes double quotes and backslashes so the value can be wrapped as a single
|
|
330
|
+
* RFC 1035 quoted string (internal `"` and `\` are escaped with a backslash).
|
|
331
|
+
*/
|
|
332
|
+
function escapeTxt(value: string): string {
|
|
333
|
+
return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
323
334
|
}
|
|
324
335
|
|
|
325
336
|
/**
|