codecane 1.0.171 → 1.0.172

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.
@@ -0,0 +1,474 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Saxy = exports.parseAttrs = void 0;
4
+ /**
5
+ * This is a modified version of the Saxy library that emits text nodes immediately
6
+ */
7
+ const readable_stream_1 = require("readable-stream");
8
+ const string_decoder_1 = require("string_decoder");
9
+ const string_1 = require("./string");
10
+ /**
11
+ * Nodes that can be found inside an XML stream.
12
+ */
13
+ const Node = {
14
+ text: 'text',
15
+ cdata: 'cdata',
16
+ comment: 'comment',
17
+ processingInstruction: 'processinginstruction',
18
+ tagOpen: 'tagopen',
19
+ tagClose: 'tagclose',
20
+ // markupDeclaration: 'markupDeclaration',
21
+ };
22
+ /**
23
+ * Expand a piece of XML text by replacing all XML entities by
24
+ * their canonical value. Ignore invalid and unknown entities.
25
+ *
26
+ * @param input A string of XML text
27
+ * @return The input string, expanded
28
+ */
29
+ const parseEntities = (input) => {
30
+ let position = 0, next = 0;
31
+ const parts = [];
32
+ while ((next = input.indexOf('&', position)) !== -1) {
33
+ // remember anything there was before the entity
34
+ if (next > position) {
35
+ parts.push(input.slice(position, next));
36
+ }
37
+ const end = input.indexOf(';', next);
38
+ // ignore unterminated entities
39
+ if (end === -1) {
40
+ break;
41
+ }
42
+ const entity = input.slice(next, end);
43
+ if (entity === '&quot') {
44
+ parts.push('"');
45
+ }
46
+ else if (entity === '&amp') {
47
+ parts.push('&');
48
+ }
49
+ else if (entity === '&apos') {
50
+ parts.push("'");
51
+ }
52
+ else if (entity === '&lt') {
53
+ parts.push('<');
54
+ }
55
+ else if (entity === '&gt') {
56
+ parts.push('>');
57
+ }
58
+ else {
59
+ // ignore unrecognized character entities
60
+ if (entity[1] !== '#') {
61
+ parts.push(entity + ';');
62
+ }
63
+ else {
64
+ // hexadecimal numeric entities
65
+ if (entity[2] == 'x') {
66
+ const value = parseInt(entity.slice(3), 16);
67
+ // ignore non-numeric numeric entities
68
+ if (isNaN(value)) {
69
+ parts.push(entity + ';');
70
+ }
71
+ else {
72
+ parts.push(String.fromCharCode(value));
73
+ }
74
+ }
75
+ else {
76
+ // decimal numeric entities
77
+ const value = parseInt(entity.slice(2), 10);
78
+ // ignore non-numeric numeric entities
79
+ if (isNaN(value)) {
80
+ parts.push(entity + ';');
81
+ }
82
+ else {
83
+ parts.push(String.fromCharCode(value));
84
+ }
85
+ }
86
+ }
87
+ }
88
+ position = end + 1;
89
+ }
90
+ if (position < input.length) {
91
+ parts.push(input.slice(position));
92
+ }
93
+ return parts.join('');
94
+ };
95
+ /**
96
+ * Parse a string of XML attributes to a map of attribute names to their values.
97
+ *
98
+ * @param input A string of XML attributes
99
+ * @throws If the string is malformed
100
+ * @return A map of attribute names to their values
101
+ */
102
+ const parseAttrs = (input) => {
103
+ const attrs = {};
104
+ const end = input.length;
105
+ let position = 0;
106
+ while (position < end) {
107
+ // Skip all whitespace
108
+ if ((0, string_1.isWhitespace)(input[position])) {
109
+ position += 1;
110
+ continue;
111
+ }
112
+ // Check that the attribute name contains valid chars
113
+ const startName = position;
114
+ while (input[position] !== '=' && position < end) {
115
+ if ((0, string_1.isWhitespace)(input[position])) {
116
+ throw new Error('Attribute names may not contain whitespace');
117
+ }
118
+ position += 1;
119
+ }
120
+ // This is XML, so we need a value for the attribute
121
+ if (position === end) {
122
+ throw new Error('Expected a value for the attribute');
123
+ }
124
+ const attrName = input.slice(startName, position);
125
+ position += 1;
126
+ const startQuote = input[position];
127
+ position += 1;
128
+ if (startQuote !== '"' && startQuote !== "'") {
129
+ throw new Error('Attribute values should be quoted');
130
+ }
131
+ const endQuote = input.indexOf(startQuote, position);
132
+ if (endQuote === -1) {
133
+ throw new Error('Unclosed attribute value');
134
+ }
135
+ const attrValue = input.slice(position, endQuote);
136
+ attrs[attrName] = attrValue;
137
+ position = endQuote + 1;
138
+ }
139
+ return attrs;
140
+ };
141
+ exports.parseAttrs = parseAttrs;
142
+ /**
143
+ * Find the first character in a string that matches a predicate
144
+ * while being outside the given delimiters.
145
+ *
146
+ * @param haystack String to search in
147
+ * @param predicate Checks whether a character is permissible
148
+ * @param [delim=''] Delimiter inside which no match should be
149
+ * returned. If empty, all characters are considered.
150
+ * @param [fromIndex=0] Start the search from this index
151
+ * @return Index of the first match, or -1 if no match
152
+ */
153
+ const findIndexOutside = (haystack, predicate, delim = '', fromIndex = 0) => {
154
+ const length = haystack.length;
155
+ let index = fromIndex;
156
+ let inDelim = false;
157
+ while (index < length && (inDelim || !predicate(haystack[index]))) {
158
+ if (haystack[index] === delim) {
159
+ inDelim = !inDelim;
160
+ }
161
+ ++index;
162
+ }
163
+ return index === length ? -1 : index;
164
+ };
165
+ /**
166
+ * Parse an XML stream and emit events corresponding
167
+ * to the different tokens encountered.
168
+ */
169
+ class Saxy extends readable_stream_1.Transform {
170
+ _decoder;
171
+ _tagStack;
172
+ _waiting;
173
+ /**
174
+ * Parse a string of XML attributes to a map of attribute names
175
+ * to their values
176
+ *
177
+ * @param input A string of XML attributes
178
+ * @throws If the string is malformed
179
+ * @return A map of attribute names to their values
180
+ */
181
+ static parseAttrs = exports.parseAttrs;
182
+ /**
183
+ * Expand a piece of XML text by replacing all XML entities
184
+ * by their canonical value. Ignore invalid and unknown
185
+ * entities
186
+ *
187
+ * @param input A string of XML text
188
+ * @return The input string, expanded
189
+ */
190
+ static parseEntities = parseEntities;
191
+ /**
192
+ * Create a new parser instance.
193
+ */
194
+ constructor() {
195
+ super({ decodeStrings: false });
196
+ // String decoder instance
197
+ const state = this._writableState;
198
+ this._decoder = new string_decoder_1.StringDecoder(state.defaultEncoding);
199
+ // Stack of tags that were opened up until the current cursor position
200
+ this._tagStack = [];
201
+ // Not waiting initially
202
+ this._waiting = null;
203
+ }
204
+ /**
205
+ * Handle a chunk of data written into the stream.
206
+ *
207
+ * @param chunk Chunk of data.
208
+ * @param encoding Encoding of the string, or 'buffer'.
209
+ * @param callback Called when the chunk has been parsed, with
210
+ * an optional error argument.
211
+ */
212
+ _write(chunk, encoding, callback) {
213
+ const data = encoding === 'buffer'
214
+ ? this._decoder.write(chunk)
215
+ : chunk;
216
+ this._parseChunk(data, callback);
217
+ }
218
+ /**
219
+ * Handle the end of incoming data.
220
+ *
221
+ * @param callback
222
+ */
223
+ _final(callback) {
224
+ // Make sure all data has been extracted from the decoder
225
+ this._parseChunk(this._decoder.end(), (err) => {
226
+ if (err) {
227
+ callback(err);
228
+ return;
229
+ }
230
+ // Handle unclosed nodes
231
+ if (this._waiting !== null) {
232
+ switch (this._waiting.token) {
233
+ case Node.text:
234
+ // Text nodes are implicitly closed
235
+ this.emit('text', { contents: this._waiting.data });
236
+ break;
237
+ case Node.cdata:
238
+ callback(new Error('Unclosed CDATA section'));
239
+ return;
240
+ case Node.comment:
241
+ callback(new Error('Unclosed comment'));
242
+ return;
243
+ case Node.processingInstruction:
244
+ callback(new Error('Unclosed processing instruction'));
245
+ return;
246
+ case Node.tagOpen:
247
+ case Node.tagClose:
248
+ // We do not distinguish between unclosed opening
249
+ // or unclosed closing tags
250
+ callback(new Error('Unclosed tag'));
251
+ return;
252
+ default:
253
+ // Pass
254
+ }
255
+ }
256
+ if (this._tagStack.length !== 0) {
257
+ // callback(new Error(`Unclosed tags: ${this._tagStack.join(',')}`))
258
+ return;
259
+ }
260
+ callback();
261
+ });
262
+ }
263
+ /**
264
+ * Immediately parse a complete chunk of XML and close the stream.
265
+ *
266
+ * @param input Input chunk.
267
+ */
268
+ parse(input) {
269
+ this.end(input);
270
+ return this;
271
+ }
272
+ /**
273
+ * Put the stream into waiting mode, which means we need more data
274
+ * to finish parsing the current token.
275
+ *
276
+ * @param token Type of token that is being parsed.
277
+ * @param data Pending data.
278
+ */
279
+ _wait(token, data) {
280
+ this._waiting = { token, data };
281
+ }
282
+ /**
283
+ * Put the stream out of waiting mode.
284
+ *
285
+ * @return Any data that was pending.
286
+ */
287
+ _unwait() {
288
+ if (this._waiting === null) {
289
+ return '';
290
+ }
291
+ const data = this._waiting.data;
292
+ this._waiting = null;
293
+ return data;
294
+ }
295
+ /**
296
+ * Handle the opening of a tag in the text stream.
297
+ *
298
+ * Push the tag into the opened tag stack and emit the
299
+ * corresponding event on the event emitter.
300
+ *
301
+ * @param node Information about the opened tag.
302
+ */
303
+ _handleTagOpening(node) {
304
+ if (!node.isSelfClosing) {
305
+ this._tagStack.push(node.name);
306
+ }
307
+ this.emit(Node.tagOpen, node);
308
+ }
309
+ /**
310
+ * Parse a XML chunk.
311
+ *
312
+ * @private
313
+ * @param input A string with the chunk data.
314
+ * @param callback Called when the chunk has been parsed, with
315
+ * an optional error argument.
316
+ */
317
+ _parseChunk(input, callback) {
318
+ // Use pending data if applicable and get out of waiting mode
319
+ input = this._unwait() + input;
320
+ let chunkPos = 0;
321
+ const end = input.length;
322
+ while (chunkPos < end) {
323
+ if (input[chunkPos] !== '<') {
324
+ const nextTag = input.indexOf('<', chunkPos);
325
+ // We read a TEXT node but there might be some
326
+ // more text data left, so we wait
327
+ if (nextTag === -1) {
328
+ // this._wait(Node.text, input.slice(chunkPos))
329
+ let chunk = input.slice(chunkPos);
330
+ if (this._tagStack.length === 1) {
331
+ // Trim whitespace for text within top level tags
332
+ chunk = chunk.trim();
333
+ }
334
+ if (chunk.length > 0) {
335
+ // NOTE (James): We changed this to emit the partial text node immediately
336
+ this.emit(Node.text, { contents: chunk });
337
+ }
338
+ chunkPos = end;
339
+ break;
340
+ }
341
+ // A tag follows, so we can be confident that
342
+ // we have all the data needed for the TEXT node
343
+ let chunk = input.slice(chunkPos, nextTag);
344
+ if (this._tagStack.length === 1) {
345
+ // Trim whitespace for text within top level tags
346
+ chunk = chunk.trim();
347
+ }
348
+ // Only emit non-whitespace text or text within a single tag (not between tags)
349
+ if (chunk.length > 0) {
350
+ this.emit(Node.text, { contents: chunk });
351
+ }
352
+ chunkPos = nextTag;
353
+ }
354
+ // Invariant: the cursor now points on the name of a tag,
355
+ // after an opening angled bracket
356
+ chunkPos += 1;
357
+ const nextChar = input[chunkPos];
358
+ // Begin a DOCTYPE, CDATA or comment section
359
+ if (nextChar === '!') {
360
+ chunkPos += 1;
361
+ const nextNextChar = input[chunkPos];
362
+ // Unclosed markup declaration section of unknown type,
363
+ // we need to wait for upcoming data
364
+ if (nextNextChar === undefined) {
365
+ this._wait(Node.markupDeclaration, input.slice(chunkPos - 2));
366
+ break;
367
+ }
368
+ if (nextNextChar === '[' &&
369
+ 'CDATA['.indexOf(input.slice(chunkPos + 1, chunkPos + 7)) > -1) {
370
+ chunkPos += 7;
371
+ const cdataClose = input.indexOf(']]>', chunkPos);
372
+ // Incomplete CDATA section, we need to wait for upcoming data
373
+ if (cdataClose === -1) {
374
+ this._wait(Node.cdata, input.slice(chunkPos - 9));
375
+ break;
376
+ }
377
+ this.emit(Node.cdata, {
378
+ contents: input.slice(chunkPos, cdataClose),
379
+ });
380
+ chunkPos = cdataClose + 3;
381
+ continue;
382
+ }
383
+ if (nextNextChar === '-' &&
384
+ (input[chunkPos + 1] === undefined || input[chunkPos + 1] === '-')) {
385
+ chunkPos += 2;
386
+ const commentClose = input.indexOf('--', chunkPos);
387
+ // Incomplete comment node, we need to wait for upcoming data
388
+ if (commentClose === -1 || input[commentClose + 2] === undefined) {
389
+ this._wait(Node.comment, input.slice(chunkPos - 4));
390
+ break;
391
+ }
392
+ if (input[commentClose + 2] !== '>') {
393
+ callback(new Error(`Unexpected -- inside comment: \
394
+ '${input.slice(chunkPos - 4)}'`));
395
+ return;
396
+ }
397
+ this.emit(Node.comment, {
398
+ contents: input.slice(chunkPos, commentClose),
399
+ });
400
+ chunkPos = commentClose + 3;
401
+ continue;
402
+ }
403
+ // TODO: recognize DOCTYPEs here
404
+ callback(new Error('Unrecognized sequence: <!' + nextNextChar));
405
+ return;
406
+ }
407
+ if (nextChar === '?') {
408
+ chunkPos += 1;
409
+ const piClose = input.indexOf('?>', chunkPos);
410
+ // Unclosed processing instruction, we need to wait for upcoming data
411
+ if (piClose === -1) {
412
+ this._wait(Node.processingInstruction, input.slice(chunkPos - 2));
413
+ break;
414
+ }
415
+ this.emit(Node.processingInstruction, {
416
+ contents: input.slice(chunkPos, piClose),
417
+ });
418
+ chunkPos = piClose + 2;
419
+ continue;
420
+ }
421
+ // Recognize regular tags (< ... >)
422
+ const tagClose = findIndexOutside(input, (char) => char === '>', '"', chunkPos);
423
+ if (tagClose === -1) {
424
+ this._wait(Node.tagOpen, input.slice(chunkPos - 1));
425
+ break;
426
+ }
427
+ // Check if the tag is a closing tag
428
+ if (input[chunkPos] === '/') {
429
+ const tagName = input.slice(chunkPos + 1, tagClose);
430
+ let stackedTagName = this._tagStack.pop();
431
+ while (stackedTagName !== tagName) {
432
+ stackedTagName = this._tagStack.pop();
433
+ if (stackedTagName === undefined) {
434
+ stackedTagName = tagName;
435
+ break;
436
+ }
437
+ }
438
+ this.emit(Node.tagClose, { name: tagName });
439
+ chunkPos = tagClose + 1;
440
+ continue;
441
+ }
442
+ // Check if the tag is self-closing
443
+ const isSelfClosing = input[tagClose - 1] === '/';
444
+ let realTagClose = isSelfClosing ? tagClose - 1 : tagClose;
445
+ // Extract the tag name and attributes
446
+ const whitespace = input.slice(chunkPos).search(/\s/);
447
+ if (whitespace === -1 || whitespace >= tagClose - chunkPos) {
448
+ // Tag without any attribute
449
+ this._handleTagOpening({
450
+ name: input.slice(chunkPos, realTagClose),
451
+ attrs: '',
452
+ isSelfClosing,
453
+ });
454
+ }
455
+ else if (whitespace === 0) {
456
+ // console.log('Tag names may not start with whitespace:', input)
457
+ // callback(new Error('Tag names may not start with whitespace'))
458
+ // return
459
+ }
460
+ else {
461
+ // Tag with attributes
462
+ this._handleTagOpening({
463
+ name: input.slice(chunkPos, chunkPos + whitespace),
464
+ attrs: input.slice(chunkPos + whitespace, realTagClose),
465
+ isSelfClosing,
466
+ });
467
+ }
468
+ chunkPos = tagClose + 1;
469
+ }
470
+ callback();
471
+ }
472
+ }
473
+ exports.Saxy = Saxy;
474
+ //# sourceMappingURL=saxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saxy.js","sourceRoot":"","sources":["../../src/util/saxy.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,13 @@
1
1
  export declare const truncateString: (str: string, maxLength: number) => string;
2
2
  export declare const truncateStringWithMessage: (str: string, maxLength: number, message?: string) => string;
3
+ /**
4
+ * Check if a character is a whitespace character according
5
+ * to the XML spec (space, carriage return, line feed or tab)
6
+ *
7
+ * @param character Character to check
8
+ * @return Whether the character is whitespace or not
9
+ */
10
+ export declare const isWhitespace: (character: string) => boolean;
3
11
  export declare const replaceNonStandardPlaceholderComments: (content: string, replacement: string) => string;
4
12
  export declare const randBoolFromStr: (str: string) => boolean;
5
13
  export declare const pluralize: (count: number, word: string) => string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateCompactId = exports.transformJsonInString = exports.hasLazyEdit = exports.safeReplace = exports.ensureUrlProtocol = exports.snakeToTitleCase = exports.capitalize = exports.pluralize = exports.randBoolFromStr = exports.replaceNonStandardPlaceholderComments = exports.truncateStringWithMessage = exports.truncateString = void 0;
3
+ exports.generateCompactId = exports.transformJsonInString = exports.hasLazyEdit = exports.safeReplace = exports.ensureUrlProtocol = exports.snakeToTitleCase = exports.capitalize = exports.pluralize = exports.randBoolFromStr = exports.replaceNonStandardPlaceholderComments = exports.isWhitespace = exports.truncateStringWithMessage = exports.truncateString = void 0;
4
4
  const lodash_1 = require("lodash");
5
5
  const truncateString = (str, maxLength) => {
6
6
  if (str.length <= maxLength) {
@@ -15,6 +15,15 @@ const truncateStringWithMessage = (str, maxLength, message = 'TRUNCATED_DUE_TO_L
15
15
  : str;
16
16
  };
17
17
  exports.truncateStringWithMessage = truncateStringWithMessage;
18
+ /**
19
+ * Check if a character is a whitespace character according
20
+ * to the XML spec (space, carriage return, line feed or tab)
21
+ *
22
+ * @param character Character to check
23
+ * @return Whether the character is whitespace or not
24
+ */
25
+ const isWhitespace = (character) => /\s/.test(character);
26
+ exports.isWhitespace = isWhitespace;
18
27
  const replaceNonStandardPlaceholderComments = (content, replacement) => {
19
28
  const commentPatterns = [
20
29
  // JSX comments (match this first)
@@ -101,7 +110,7 @@ exports.capitalize = capitalize;
101
110
  const snakeToTitleCase = (str) => {
102
111
  return str
103
112
  .split('_')
104
- .map(word => (0, exports.capitalize)(word))
113
+ .map((word) => (0, exports.capitalize)(word))
105
114
  .join(' ');
106
115
  };
107
116
  exports.snakeToTitleCase = snakeToTitleCase;
@@ -1 +1 @@
1
- {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/util/string.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/util/string.ts"],"names":[],"mappings":"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"}