Best JavaScript code snippet using playwright-internal
compiler-core.cjs.js
Source:compiler-core.cjs.js
...433 node = parseComment(context);434 }435 else if (startsWith(s, '<!DOCTYPE')) {436 // Ignore DOCTYPE by a limitation.437 node = parseBogusComment(context);438 }439 else if (startsWith(s, '<![CDATA[')) {440 if (ns !== 0 /* HTML */) {441 node = parseCDATA(context, ancestors);442 }443 else {444 emitError(context, 2 /* CDATA_IN_HTML_CONTENT */);445 node = parseBogusComment(context);446 }447 }448 else {449 emitError(context, 14 /* INCORRECTLY_OPENED_COMMENT */);450 node = parseBogusComment(context);451 }452 }453 else if (s[1] === '/') {454 // https://html.spec.whatwg.org/multipage/parsing.html#end-tag-open-state455 if (s.length === 2) {456 emitError(context, 8 /* EOF_BEFORE_TAG_NAME */, 2);457 }458 else if (s[2] === '>') {459 emitError(context, 17 /* MISSING_END_TAG_NAME */, 2);460 advanceBy(context, 3);461 continue;462 }463 else if (/[a-z]/i.test(s[2])) {464 emitError(context, 31 /* X_INVALID_END_TAG */);465 parseTag(context, 1 /* End */, parent);466 continue;467 }468 else {469 emitError(context, 15 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 2);470 node = parseBogusComment(context);471 }472 }473 else if (/[a-z]/i.test(s[1])) {474 node = parseElement(context, ancestors);475 }476 else if (s[1] === '?') {477 emitError(context, 28 /* UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME */, 1);478 node = parseBogusComment(context);479 }480 else {481 emitError(context, 15 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 1);482 }483 }484 if (!node) {485 node = parseText(context, mode);486 }487 if (Array.isArray(node)) {488 for (let i = 0; i < node.length; i++) {489 pushNode(context, nodes, node[i]);490 }491 }492 else {493 pushNode(context, nodes, node);494 }495 }496 return nodes;497}498function pushNode(context, nodes, node) {499 if (context.options.ignoreSpaces &&500 node.type === 2 /* TEXT */ &&501 node.isEmpty) {502 return;503 }504 // Merge if both this and the previous node are text and those are consecutive.505 // This happens on "a < b" or something like.506 const prev = last(nodes);507 if (prev &&508 prev.type === 2 /* TEXT */ &&509 node.type === 2 /* TEXT */ &&510 prev.loc.end.offset === node.loc.start.offset) {511 prev.content += node.content;512 prev.isEmpty = prev.content.trim().length === 0;513 prev.loc.end = node.loc.end;514 prev.loc.source += node.loc.source;515 }516 else {517 nodes.push(node);518 }519}520function parseCDATA(context, ancestors) {521 522 assert(last(ancestors) == null || last(ancestors).ns !== 0 /* HTML */);523 assert(startsWith(context.source, '<![CDATA['));524 advanceBy(context, 9);525 const nodes = parseChildren(context, 3 /* CDATA */, ancestors);526 if (context.source.length === 0) {527 emitError(context, 9 /* EOF_IN_CDATA */);528 }529 else {530 assert(startsWith(context.source, ']]>'));531 advanceBy(context, 3);532 }533 return nodes;534}535function parseComment(context) {536 assert(startsWith(context.source, '<!--'));537 const start = getCursor(context);538 let content;539 // Regular comment.540 const match = /--(\!)?>/.exec(context.source);541 if (!match) {542 content = context.source.slice(4);543 advanceBy(context, context.source.length);544 emitError(context, 10 /* EOF_IN_COMMENT */);545 }546 else {547 if (match.index <= 3) {548 emitError(context, 0 /* ABRUPT_CLOSING_OF_EMPTY_COMMENT */);549 }550 if (match[1]) {551 emitError(context, 13 /* INCORRECTLY_CLOSED_COMMENT */);552 }553 content = context.source.slice(4, match.index);554 // Advancing with reporting nested comments.555 const s = context.source.slice(0, match.index);556 let prevIndex = 1, nestedIndex = 0;557 while ((nestedIndex = s.indexOf('<!--', prevIndex)) !== -1) {558 advanceBy(context, nestedIndex - prevIndex + 1);559 if (nestedIndex + 4 < s.length) {560 emitError(context, 20 /* NESTED_COMMENT */);561 }562 prevIndex = nestedIndex + 1;563 }564 advanceBy(context, match.index + match[0].length - prevIndex + 1);565 }566 return {567 type: 3 /* COMMENT */,568 content,569 loc: getSelection(context, start)570 };571}572function parseBogusComment(context) {573 assert(/^<(?:[\!\?]|\/[^a-z>])/i.test(context.source));574 const start = getCursor(context);575 const contentStart = context.source[1] === '?' ? 1 : 2;576 let content;577 const closeIndex = context.source.indexOf('>');578 if (closeIndex === -1) {579 content = context.source.slice(contentStart);580 advanceBy(context, context.source.length);581 }582 else {583 content = context.source.slice(contentStart, closeIndex);584 advanceBy(context, closeIndex + 1);585 }586 return {
...
compiler-dom.global.js
Source:compiler-dom.global.js
...407 node = parseComment(context);408 }409 else if (startsWith(s, '<!DOCTYPE')) {410 // Ignore DOCTYPE by a limitation.411 node = parseBogusComment(context);412 }413 else if (startsWith(s, '<![CDATA[')) {414 if (ns !== 0 /* HTML */) {415 node = parseCDATA(context, ancestors);416 }417 else {418 emitError(context, 2 /* CDATA_IN_HTML_CONTENT */);419 node = parseBogusComment(context);420 }421 }422 else {423 emitError(context, 14 /* INCORRECTLY_OPENED_COMMENT */);424 node = parseBogusComment(context);425 }426 }427 else if (s[1] === '/') {428 // https://html.spec.whatwg.org/multipage/parsing.html#end-tag-open-state429 if (s.length === 2) {430 emitError(context, 8 /* EOF_BEFORE_TAG_NAME */, 2);431 }432 else if (s[2] === '>') {433 emitError(context, 17 /* MISSING_END_TAG_NAME */, 2);434 advanceBy(context, 3);435 continue;436 }437 else if (/[a-z]/i.test(s[2])) {438 emitError(context, 31 /* X_INVALID_END_TAG */);439 parseTag(context, 1 /* End */, parent);440 continue;441 }442 else {443 emitError(context, 15 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 2);444 node = parseBogusComment(context);445 }446 }447 else if (/[a-z]/i.test(s[1])) {448 node = parseElement(context, ancestors);449 }450 else if (s[1] === '?') {451 emitError(context, 28 /* UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME */, 1);452 node = parseBogusComment(context);453 }454 else {455 emitError(context, 15 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 1);456 }457 }458 if (!node) {459 node = parseText(context, mode);460 }461 if (Array.isArray(node)) {462 for (let i = 0; i < node.length; i++) {463 pushNode(context, nodes, node[i]);464 }465 }466 else {467 pushNode(context, nodes, node);468 }469 }470 return nodes;471 }472 function pushNode(context, nodes, node) {473 if (context.options.ignoreSpaces &&474 node.type === 2 /* TEXT */ &&475 node.isEmpty) {476 return;477 }478 // Merge if both this and the previous node are text and those are consecutive.479 // This happens on "a < b" or something like.480 const prev = last(nodes);481 if (prev &&482 prev.type === 2 /* TEXT */ &&483 node.type === 2 /* TEXT */ &&484 prev.loc.end.offset === node.loc.start.offset) {485 prev.content += node.content;486 prev.isEmpty = prev.content.trim().length === 0;487 prev.loc.end = node.loc.end;488 prev.loc.source += node.loc.source;489 }490 else {491 nodes.push(node);492 }493 }494 function parseCDATA(context, ancestors) {495 496 assert(last(ancestors) == null || last(ancestors).ns !== 0 /* HTML */);497 assert(startsWith(context.source, '<![CDATA['));498 advanceBy(context, 9);499 const nodes = parseChildren(context, 3 /* CDATA */, ancestors);500 if (context.source.length === 0) {501 emitError(context, 9 /* EOF_IN_CDATA */);502 }503 else {504 assert(startsWith(context.source, ']]>'));505 advanceBy(context, 3);506 }507 return nodes;508 }509 function parseComment(context) {510 assert(startsWith(context.source, '<!--'));511 const start = getCursor(context);512 let content;513 // Regular comment.514 const match = /--(\!)?>/.exec(context.source);515 if (!match) {516 content = context.source.slice(4);517 advanceBy(context, context.source.length);518 emitError(context, 10 /* EOF_IN_COMMENT */);519 }520 else {521 if (match.index <= 3) {522 emitError(context, 0 /* ABRUPT_CLOSING_OF_EMPTY_COMMENT */);523 }524 if (match[1]) {525 emitError(context, 13 /* INCORRECTLY_CLOSED_COMMENT */);526 }527 content = context.source.slice(4, match.index);528 // Advancing with reporting nested comments.529 const s = context.source.slice(0, match.index);530 let prevIndex = 1, nestedIndex = 0;531 while ((nestedIndex = s.indexOf('<!--', prevIndex)) !== -1) {532 advanceBy(context, nestedIndex - prevIndex + 1);533 if (nestedIndex + 4 < s.length) {534 emitError(context, 20 /* NESTED_COMMENT */);535 }536 prevIndex = nestedIndex + 1;537 }538 advanceBy(context, match.index + match[0].length - prevIndex + 1);539 }540 return {541 type: 3 /* COMMENT */,542 content,543 loc: getSelection(context, start)544 };545 }546 function parseBogusComment(context) {547 assert(/^<(?:[\!\?]|\/[^a-z>])/i.test(context.source));548 const start = getCursor(context);549 const contentStart = context.source[1] === '?' ? 1 : 2;550 let content;551 const closeIndex = context.source.indexOf('>');552 if (closeIndex === -1) {553 content = context.source.slice(contentStart);554 advanceBy(context, context.source.length);555 }556 else {557 content = context.source.slice(contentStart, closeIndex);558 advanceBy(context, closeIndex + 1);559 }560 return {
...
compiler-dom.esm-browser.js
Source:compiler-dom.esm-browser.js
...405 node = parseComment(context);406 }407 else if (startsWith(s, '<!DOCTYPE')) {408 // Ignore DOCTYPE by a limitation.409 node = parseBogusComment(context);410 }411 else if (startsWith(s, '<![CDATA[')) {412 if (ns !== 0 /* HTML */) {413 node = parseCDATA(context, ancestors);414 }415 else {416 emitError(context, 2 /* CDATA_IN_HTML_CONTENT */);417 node = parseBogusComment(context);418 }419 }420 else {421 emitError(context, 14 /* INCORRECTLY_OPENED_COMMENT */);422 node = parseBogusComment(context);423 }424 }425 else if (s[1] === '/') {426 // https://html.spec.whatwg.org/multipage/parsing.html#end-tag-open-state427 if (s.length === 2) {428 emitError(context, 8 /* EOF_BEFORE_TAG_NAME */, 2);429 }430 else if (s[2] === '>') {431 emitError(context, 17 /* MISSING_END_TAG_NAME */, 2);432 advanceBy(context, 3);433 continue;434 }435 else if (/[a-z]/i.test(s[2])) {436 emitError(context, 31 /* X_INVALID_END_TAG */);437 parseTag(context, 1 /* End */, parent);438 continue;439 }440 else {441 emitError(context, 15 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 2);442 node = parseBogusComment(context);443 }444 }445 else if (/[a-z]/i.test(s[1])) {446 node = parseElement(context, ancestors);447 }448 else if (s[1] === '?') {449 emitError(context, 28 /* UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME */, 1);450 node = parseBogusComment(context);451 }452 else {453 emitError(context, 15 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 1);454 }455 }456 if (!node) {457 node = parseText(context, mode);458 }459 if (Array.isArray(node)) {460 for (let i = 0; i < node.length; i++) {461 pushNode(context, nodes, node[i]);462 }463 }464 else {465 pushNode(context, nodes, node);466 }467 }468 return nodes;469}470function pushNode(context, nodes, node) {471 if (context.options.ignoreSpaces &&472 node.type === 2 /* TEXT */ &&473 node.isEmpty) {474 return;475 }476 // Merge if both this and the previous node are text and those are consecutive.477 // This happens on "a < b" or something like.478 const prev = last(nodes);479 if (prev &&480 prev.type === 2 /* TEXT */ &&481 node.type === 2 /* TEXT */ &&482 prev.loc.end.offset === node.loc.start.offset) {483 prev.content += node.content;484 prev.isEmpty = prev.content.trim().length === 0;485 prev.loc.end = node.loc.end;486 prev.loc.source += node.loc.source;487 }488 else {489 nodes.push(node);490 }491}492function parseCDATA(context, ancestors) {493 494 assert(last(ancestors) == null || last(ancestors).ns !== 0 /* HTML */);495 assert(startsWith(context.source, '<![CDATA['));496 advanceBy(context, 9);497 const nodes = parseChildren(context, 3 /* CDATA */, ancestors);498 if (context.source.length === 0) {499 emitError(context, 9 /* EOF_IN_CDATA */);500 }501 else {502 assert(startsWith(context.source, ']]>'));503 advanceBy(context, 3);504 }505 return nodes;506}507function parseComment(context) {508 assert(startsWith(context.source, '<!--'));509 const start = getCursor(context);510 let content;511 // Regular comment.512 const match = /--(\!)?>/.exec(context.source);513 if (!match) {514 content = context.source.slice(4);515 advanceBy(context, context.source.length);516 emitError(context, 10 /* EOF_IN_COMMENT */);517 }518 else {519 if (match.index <= 3) {520 emitError(context, 0 /* ABRUPT_CLOSING_OF_EMPTY_COMMENT */);521 }522 if (match[1]) {523 emitError(context, 13 /* INCORRECTLY_CLOSED_COMMENT */);524 }525 content = context.source.slice(4, match.index);526 // Advancing with reporting nested comments.527 const s = context.source.slice(0, match.index);528 let prevIndex = 1, nestedIndex = 0;529 while ((nestedIndex = s.indexOf('<!--', prevIndex)) !== -1) {530 advanceBy(context, nestedIndex - prevIndex + 1);531 if (nestedIndex + 4 < s.length) {532 emitError(context, 20 /* NESTED_COMMENT */);533 }534 prevIndex = nestedIndex + 1;535 }536 advanceBy(context, match.index + match[0].length - prevIndex + 1);537 }538 return {539 type: 3 /* COMMENT */,540 content,541 loc: getSelection(context, start)542 };543}544function parseBogusComment(context) {545 assert(/^<(?:[\!\?]|\/[^a-z>])/i.test(context.source));546 const start = getCursor(context);547 const contentStart = context.source[1] === '?' ? 1 : 2;548 let content;549 const closeIndex = context.source.indexOf('>');550 if (closeIndex === -1) {551 content = context.source.slice(contentStart);552 advanceBy(context, context.source.length);553 }554 else {555 content = context.source.slice(contentStart, closeIndex);556 advanceBy(context, closeIndex + 1);557 }558 return {
...
note-compile.js
Source:note-compile.js
...336 node = parseComment(context);337 }338 else if (startsWith(s, '<!DOCTYPE')) {339 // Ignore DOCTYPE by a limitation.340 node = parseBogusComment(context);341 }342 else if (startsWith(s, '<![CDATA[')) {343 if (ns !== 0 /* HTML */) {344 node = parseCDATA(context, ancestors);345 }346 else {347 emitError(context, 1 /* CDATA_IN_HTML_CONTENT */);348 node = parseBogusComment(context);349 }350 }351 else {352 emitError(context, 11 /* INCORRECTLY_OPENED_COMMENT */);353 node = parseBogusComment(context);354 }355 }356 else if (s[1] === '/') {357 // https://html.spec.whatwg.org/multipage/parsing.html#end-tag-open-state358 if (s.length === 2) {359 emitError(context, 5 /* EOF_BEFORE_TAG_NAME */, 2);360 }361 else if (s[2] === '>') {362 emitError(context, 14 /* MISSING_END_TAG_NAME */, 2);363 advanceBy(context, 3);364 continue;365 }366 else if (/[a-z]/i.test(s[2])) {367 emitError(context, 23 /* X_INVALID_END_TAG */);368 parseTag(context, 1 /* End */, parent);369 continue;370 }371 else {372 emitError(context, 12 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 2);373 node = parseBogusComment(context);374 }375 }376 else if (/[a-z]/i.test(s[1])) {377 node = parseElement(context, ancestors);378 }379 else if (s[1] === '?') {380 emitError(context, 21 /* UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME */, 1);381 node = parseBogusComment(context);382 }383 else {384 emitError(context, 12 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 1);385 }386 }387 }388 if (!node) {389 node = parseText(context, mode);390 }391 if (isArray(node)) {392 for (let i = 0; i < node.length; i++) {393 pushNode(nodes, node[i]);394 }395 }396 else {397 pushNode(nodes, node);398 }399 }400 // Whitespace management for more efficient output401 // (same as v2 whitespace: 'condense')402 let removedWhitespace = false;403 if (mode !== 2 /* RAWTEXT */) {404 if (!context.inPre) {405 for (let i = 0; i < nodes.length; i++) {406 const node = nodes[i];407 if (node.type === 2 /* TEXT */) {408 if (!/[^\t\r\n\f ]/.test(node.content)) {409 const prev = nodes[i - 1];410 const next = nodes[i + 1];411 // If:412 // - the whitespace is the first or last node, or:413 // - the whitespace is adjacent to a comment, or:414 // - the whitespace is between two elements AND contains newline415 // Then the whitespace is ignored.416 if (!prev ||417 !next ||418 prev.type === 3 /* COMMENT */ ||419 next.type === 3 /* COMMENT */ ||420 (prev.type === 1 /* ELEMENT */ &&421 next.type === 1 /* ELEMENT */ &&422 /[\r\n]/.test(node.content))) {423 removedWhitespace = true;424 nodes[i] = null;425 }426 else {427 // Otherwise, condensed consecutive whitespace inside the text428 // down to a single space429 node.content = ' ';430 }431 }432 else {433 node.content = node.content.replace(/[\t\r\n\f ]+/g, ' ');434 }435 }436 }437 }438 else if (parent && context.options.isPreTag(parent.tag)) {439 // remove leading newline per html spec440 // https://html.spec.whatwg.org/multipage/grouping-content.html#the-pre-element441 const first = nodes[0];442 if (first && first.type === 2 /* TEXT */) {443 first.content = first.content.replace(/^\r?\n/, '');444 }445 }446 }447 return removedWhitespace ? nodes.filter(Boolean) : nodes;448}449function getCursor(context) {450 const { column, line, offset } = context;451 return { column, line, offset };452}453function getSelection(context, start, end) {454 end = end || getCursor(context);455 return {456 start,457 end,458 source: context.originalSource.slice(start.offset, end.offset)459 };460}461function advanceBy(context, numberOfCharacters) {462 const { source } = context;463 advancePositionWithMutation(context, source, numberOfCharacters);464 context.source = source.slice(numberOfCharacters);465}466// advance by mutation without cloning (for performance reasons), since this467// gets called a lot in the parser468function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) {469 let linesCount = 0;470 let lastNewLinePos = -1;471 for (let i = 0; i < numberOfCharacters; i++) {472 if (source.charCodeAt(i) === 10 /* newline char code */) {473 linesCount++;474 lastNewLinePos = i;475 }476 }477 pos.offset += numberOfCharacters;478 pos.line += linesCount;479 pos.column =480 lastNewLinePos === -1481 ? pos.column + numberOfCharacters482 : numberOfCharacters - lastNewLinePos;483 return pos;484}485/**486 * ROOT 487 * type: 0488 * {489 type: 0,490 children,491 helpers: [],492 components: [],493 directives: [],494 hoists: [],495 imports: [],496 cached: 0,497 temps: 0,498 codegenNode: undefined,499 loc500 };501 */502/**503 * TEXT 504 * type: 2505 */506function parseText(context, mode) {507 const endTokens = ['<', context.options.delimiters[0]];508 if (mode === 3 /* CDATA */) {509 endTokens.push(']]>');510 }511 let endIndex = context.source.length;512 for (let i = 0; i < endTokens.length; i++) {513 const index = context.source.indexOf(endTokens[i], 1);514 if (index !== -1 && endIndex > index) {515 endIndex = index;516 }517 }518 const start = getCursor(context);519 const content = parseTextData(context, endIndex, mode);520 return {521 type: 2 /* TEXT */,522 content,523 loc: getSelection(context, start)524 };525}526function parseTextData(context, length, mode) {527 const rawText = context.source.slice(0, length);528 advanceBy(context, length);529 if (mode === 2 /* RAWTEXT */ ||530 mode === 3 /* CDATA */ ||531 rawText.indexOf('&') === -1) {532 return rawText;533 }534 else {535 // DATA or RCDATA containing "&"". Entity decoding required.536 return context.options.decodeEntities(rawText, mode === 4 /* ATTRIBUTE_VALUE */);537 }538}539/**540 * INTERPOLATION {{...}}541 * type: 5542 */543function parseInterpolation(context, mode) {544 const [open, close] = context.options.delimiters;545 const closeIndex = context.source.indexOf(close, open.length);546 if (closeIndex === -1) {547 emitError(context, 25 /* X_MISSING_INTERPOLATION_END */);548 return undefined;549 }550 const start = getCursor(context);551 advanceBy(context, open.length);552 const innerStart = getCursor(context);553 const innerEnd = getCursor(context);554 const rawContentLength = closeIndex - open.length;555 const rawContent = context.source.slice(0, rawContentLength);556 const preTrimContent = parseTextData(context, rawContentLength, mode);557 const content = preTrimContent.trim();558 const startOffset = preTrimContent.indexOf(content);559 if (startOffset > 0) {560 advancePositionWithMutation(innerStart, rawContent, startOffset);561 }562 const endOffset = rawContentLength - (preTrimContent.length - content.length - startOffset);563 advancePositionWithMutation(innerEnd, rawContent, endOffset);564 advanceBy(context, close.length);565 return {566 type: 5 /* INTERPOLATION */,567 content: {568 type: 4 /* SIMPLE_EXPRESSION */,569 isStatic: false,570 // Set `isConstant` to false by default and will decide in transformExpression571 isConstant: false,572 content,573 loc: getSelection(context, innerStart, innerEnd)574 },575 loc: getSelection(context, start)576 };577}578/**579 * SIMPLE_EXPRESSION {{...}}580 * type: 4581 * {582 type: 4,583 content: value.content,584 isStatic: false,585 isConstant: false,586 loc: value.loc587 }588 */589/**590 * COMMENT <!DOCTYPE>, <!---->591 * type: 3592 */593function parseComment(context) {594 const start = getCursor(context);595 let content;596 // Regular comment.597 const match = /--(\!)?>/.exec(context.source);598 if (!match) {599 content = context.source.slice(4);600 advanceBy(context, context.source.length);601 emitError(context, 7 /* EOF_IN_COMMENT */);602 }603 else {604 if (match.index <= 3) {605 emitError(context, 0 /* ABRUPT_CLOSING_OF_EMPTY_COMMENT */);606 }607 if (match[1]) {608 emitError(context, 10 /* INCORRECTLY_CLOSED_COMMENT */);609 }610 content = context.source.slice(4, match.index);611 // Advancing with reporting nested comments.612 const s = context.source.slice(0, match.index);613 let prevIndex = 1, nestedIndex = 0;614 while ((nestedIndex = s.indexOf('<!--', prevIndex)) !== -1) {615 advanceBy(context, nestedIndex - prevIndex + 1);616 if (nestedIndex + 4 < s.length) {617 emitError(context, 16 /* NESTED_COMMENT */);618 }619 prevIndex = nestedIndex + 1;620 }621 advanceBy(context, match.index + match[0].length - prevIndex + 1);622 }623 return {624 type: 3 /* COMMENT */,625 content,626 loc: getSelection(context, start)627 };628}629function parseBogusComment(context) {630 const start = getCursor(context);631 const contentStart = context.source[1] === '?' ? 1 : 2;632 let content;633 const closeIndex = context.source.indexOf('>');634 if (closeIndex === -1) {635 content = context.source.slice(contentStart);636 advanceBy(context, context.source.length);637 }638 else {639 content = context.source.slice(contentStart, closeIndex);640 advanceBy(context, closeIndex + 1);641 }642 return {643 type: 3 /* COMMENT */,...
parse.simple.js
Source:parse.simple.js
...132 if (startsWith(s, '<!--')) {133 node = parseComment(context)134 } else if (startsWith(s, '<!DOCTYPE')) {135 // Ignore DOCTYPE by a limitation.136 node = parseBogusComment(context)137 } else if (startsWith(s, '<![CDATA[')) {138 if (ns !== Namespaces.HTML) {139 node = parseCDATA(context, ancestors)140 } else {141 emitError(context, ErrorCodes.CDATA_IN_HTML_CONTENT)142 node = parseBogusComment(context)143 }144 } else {145 emitError(context, ErrorCodes.INCORRECTLY_OPENED_COMMENT)146 node = parseBogusComment(context)147 }148 } else if (s[1] === '/') {149 // console.log(99999, s)150 // https://html.spec.whatwg.org/multipage/parsing.html#end-tag-open-state151 if (s.length === 2) {152 // console.log(' > 1')153 emitError(context, ErrorCodes.EOF_BEFORE_TAG_NAME, 2)154 } else if (s[2] === '>') {155 // console.log(' > 2')156 emitError(context, ErrorCodes.MISSING_END_TAG_NAME, 2)157 advanceBy(context, 3)158 continue159 } else if (/[a-z]/i.test(s[2])) {160 // console.log(' > 3')161 emitError(context, ErrorCodes.X_INVALID_END_TAG)162 parseTag(context, TagType.End, parent)163 continue164 } else {165 // console.log(' > 4')166 emitError(context, ErrorCodes.INVALID_FIRST_CHARACTER_OF_TAG_NAME, 2)167 node = parseBogusComment(context)168 }169 } else if (/[a-z]/i.test(s[1])) {170 node = parseElement(context, ancestors)171 } else if (s[1] === '?') {172 emitError(173 context,174 ErrorCodes.UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME,175 1176 )177 node = parseBogusComment(context)178 } else {179 emitError(context, ErrorCodes.INVALID_FIRST_CHARACTER_OF_TAG_NAME, 1)180 }181 }182 if (!node) {183 node = parseText(context, mode)184 }185 if (Array.isArray(node)) {186 for (let i = 0; i < node.length; i++) {187 pushNode(nodes, node[i])188 }189 } else {190 pushNode(nodes, node)191 }...
——————parse.js
Source:——————parse.js
...127 if (startsWith(s, '<!--')) {128 node = parseComment(context)129 } else if (startsWith(s, '<!DOCTYPE')) {130 // Ignore DOCTYPE by a limitation.131 node = parseBogusComment(context)132 } else if (startsWith(s, '<![CDATA[')) {133 if (ns !== Namespaces.HTML) {134 node = parseCDATA(context, ancestors)135 } else {136 emitError(context, ErrorCodes.CDATA_IN_HTML_CONTENT)137 node = parseBogusComment(context)138 }139 } else {140 emitError(context, ErrorCodes.INCORRECTLY_OPENED_COMMENT)141 node = parseBogusComment(context)142 }143 } else if (s[1] === '/') {144 // https://html.spec.whatwg.org/multipage/parsing.html#end-tag-open-state145 if (s.length === 2) {146 emitError(context, ErrorCodes.EOF_BEFORE_TAG_NAME, 2)147 } else if (s[2] === '>') {148 emitError(context, ErrorCodes.MISSING_END_TAG_NAME, 2)149 advanceBy(context, 3)150 continue151 } else if (/[a-z]/i.test(s[2])) {152 emitError(context, ErrorCodes.X_INVALID_END_TAG)153 parseTag(context, TagType.End, parent)154 continue155 } else {156 emitError(context, ErrorCodes.INVALID_FIRST_CHARACTER_OF_TAG_NAME, 2)157 node = parseBogusComment(context)158 }159 } else if (/[a-z]/i.test(s[1])) {160 node = parseElement(context, ancestors)161 } else if (s[1] === '?') {162 emitError(163 context,164 ErrorCodes.UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME,165 1166 )167 node = parseBogusComment(context)168 } else {169 emitError(context, ErrorCodes.INVALID_FIRST_CHARACTER_OF_TAG_NAME, 1)170 }171 }172 if (!node) {173 node = parseText(context, mode)174 }175 if (Array.isArray(node)) {176 for (let i = 0; i < node.length; i++) {177 pushNode(nodes, node[i])178 }179 } else {180 pushNode(nodes, node)181 }...
parse.js
Source:parse.js
...25 node = parseComment(context) 26 } 27 else if (startsWith(s, '<!DOCTYPE')) { 28 // å¤ç <!DOCTYPE èç¹ 29 node = parseBogusComment(context) 30 } 31 else if (startsWith(s, '<![CDATA[')) { 32 // å¤ç <![CDATA[ èç¹ 33 if (ns !== 0 /* HTML */) { 34 node = parseCDATA(context, ancestors) 35 } 36 else { 37 emitError(context, 1 /* CDATA_IN_HTML_CONTENT */) 38 node = parseBogusComment(context) 39 } 40 } 41 else { 42 emitError(context, 11 /* INCORRECTLY_OPENED_COMMENT */) 43 node = parseBogusComment(context) 44 } 45 } 46 else if (s[1] === '/') { 47 // å¤ç </ ç»ææ ç¾ 48 if (s.length === 2) { 49 // s é¿åº¦ä¸º 2ï¼è¯´æ代ç ç»å°¾æ¯ </ï¼æ¥é 50 emitError(context, 5 /* EOF_BEFORE_TAG_NAME */, 2) 51 } 52 else if (s[2] === '>') { 53 // </> 缺å°ç»ææ ç¾ï¼æ¥é 54 emitError(context, 14 /* MISSING_END_TAG_NAME */, 2) 55 advanceBy(context, 3) 56 continue 57 } 58 else if (/[a-z]/i.test(s[2])) { 59 // å¤ä½çç»ææ ç¾ 60 emitError(context, 23 /* X_INVALID_END_TAG */) 61 parseTag(context, 1 /* End */, parent) 62 continue 63 } 64 else { 65 emitError(context, 12 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 2) 66 node = parseBogusComment(context) 67 } 68 } 69 else if (/[a-z]/i.test(s[1])) { 70 // 解ææ ç¾å
ç´ èç¹ 71 node = parseElement(context, ancestors) 72 } 73 else if (s[1] === '?') { 74 emitError(context, 21 /* UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME */, 1) 75 node = parseBogusComment(context) 76 } 77 else { 78 emitError(context, 12 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 1) 79 } 80 } 81 } 82 if (!node) { 83 // 解ææ®éææ¬èç¹ 84 node = parseText(context, mode) 85 } 86 if (isArray(node)) { 87 // å¦æ node æ¯æ°ç»ï¼åéåæ·»å 88 for (let i = 0; i < node.length; i++) { 89 pushNode(nodes, node[i]) ...
03-baseParse.js
Source:03-baseParse.js
...38 node = parseComment(context)39 } else if (startsWith(s, '<!DOCTYPE')) {40 41 // DOCTYPE42 node = parseBogusComment(context)43 }44 } else if (s[1] === '/') {45 //</ å¼å¤´çæ ç¾ï¼ç»ææ ç¾46 // https://html.spec.whatwg.org/multipage/parsing.html#end-tag-open-state47 if (/[a-z]/i.test(s[2])) {48 emitError(context, ErrorCodes.X_INVALID_END_TAG)49 parseTag(context, TagType.End, parent)50 continue51 } 52 } else if (/[a-z]/i.test(s[1])) {53 // 解æèç¹54 node = parseElement(context, ancestors)55 // 2.x <template> with no directive compat56 node = node.children...
Using AI Code Generation
1const { parseBogusComment } = require('playwright/lib/server/frames');2const { Frame } = require('playwright/lib/server/frames');3const { FrameManager } = require('playwright/lib/server/frames');4const { Page } = require('playwright/lib/server/page');5const { PageDispatcher } = require('playwright/lib/server/pageDispatcher');6const { PageChannel } = require('playwright/lib/server/channels');7const { BrowserContext } = require('playwright/lib/server/browserContext');8const { BrowserContextDispatcher } = require('playwright/lib/server/browserContextDispatcher');9const { BrowserContextChannel } = require('playwright/lib/server/channels');10const { Browser } = require('playwright/lib/server/browser');11const { BrowserDispatcher } = require('playwright/lib/server/browserDispatcher');12const { BrowserChannel } = require('playwright/lib/server/channels');13const { Playwright } = require('playwright/lib/server/playwright');14const { PlaywrightDispatcher } = require('playwright/lib/server/playwrightDispatcher');15const { PlaywrightChannel } = require('playwright/lib/server/channels');16const { Connection } = require('playwright/lib/server/connection');17const { ConnectionDispatcher } = require('playwright/lib/server/connectionDispatcher');18const { ConnectionChannel } = require('playwright/lib/server/channels');19const { BrowserServer } = require('playwright/lib/server/browserServer');20const { BrowserServerDispatcher } = require('playwright/lib/server/browserServerDispatcher');21const { BrowserServerChannel } = require('playwright/lib/server/channels');22const { DispatcherConnection } = require('playwright/lib/server/dispatchers');23const { Dispatcher } = require('playwright/lib/server/dispatchers/dispatcher');24const { DispatcherScope } = require('playwright/lib/server/dispatchers/dispatcher');25const { DispatcherConnectionScope } = require('playwright/lib/server/dispatchers/dispatcher');26const { DispatcherWithScope } = require('playwright/lib/server/dispatchers/dispatcher');27const { DispatcherWithConnection } = require('playwright/lib/server/dispatchers/dispatcher');28const { helper } = require('playwright/lib/server/helper');29const { assert } = require('playwright/lib/server/helper');30const { debugLogger } = require('playwright/lib/server/logger');31const { monotonicTime } = require('playwright/lib/server/helper');32const { getFromENV } = require('
Using AI Code Generation
1const { parseBogusComment } = require('playwright/lib/utils/stackTrace');2 at Object.<anonymous> (test.js:2:9)3 at Module._compile (internal/modules/cjs/loader.js:1137:30)4 at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)5 at Module.load (internal/modules/cjs/loader.js:985:32)6 at Function.Module._load (internal/modules/cjs/loader.js:878:14)7 at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)8 at internal/main/run_main_module.js:17:47`;9const { file, line, column } = parseBogusComment(stack);10console.log(file, line, column);
Using AI Code Generation
1const { parseBogusComment } = require('playwright/lib/server/frames');2 * @param {number} foo3 * @param {string} bar4 * @param {boolean} baz5 */`;6const result = parseBogusComment(text);7console.log(result);8{9 { name: 'foo', type: 'number' },10 { name: 'bar', type: 'string' },11 { name: 'baz', type: 'boolean' }12}13const { parseBogusComment } = require('playwright/lib/server/frames');14 * @param {number} foo15 * @param {string} bar16 * @param {boolean} baz17 * @param {boolean} baz18 */`;19const result = parseBogusComment(text);20console.log(result);21{22 { name: 'foo', type: 'number' },23 { name: 'bar', type: 'string' },24 { name: 'baz', type: 'boolean' },25 { name: 'baz', type: 'boolean' }26}27const { parseBogusComment } = require('playwright/lib/server/frames');28 * @param {number} foo29 * @param {string} bar30 * @param {boolean} baz31 * @param {boolean} baz32 * @param {boolean} baz33 */`;34const result = parseBogusComment(text);35console.log(result);36{37 { name: 'foo', type: 'number' },38 { name: 'bar', type: 'string' },39 { name: 'baz', type: 'boolean' },40 { name: 'baz', type: 'boolean' },41 { name: 'baz', type: 'boolean' }42}43const { parseBogusComment } = require('playwright/lib/server/frames');44 * @param {number} foo
Using AI Code Generation
1const { parseBogusComment } = require('@playwright/test/lib/utils/parseBogusComment');2const result = parseBogusComment('bogus:comment');3const { test } = require('@playwright/test');4const result = test.parseBogusComment('bogus:comment');5const { test } = require('@playwright/test');6test('test1', async ({ page }) => {7 const result = test.parseBogusComment('bogus:comment');8});9const { test } = require('@playwright/test');10test.use({11 async test1({ page }) {12 const result = test.parseBogusComment('bogus:comment');13 }14});15import { PlaywrightTestConfig } from '@playwright/test';16const config: PlaywrightTestConfig = {17 use: {18 async test1({ page }) {19 const result = test.parseBogusComment('bogus:comment');20 }21 }22};23export default config;24import { Reporter } from '@playwright/test';25const reporter: Reporter = {26 async onTestBegin(test) {27 const result = test.parseBogusComment('bogus:comment');28 }29};30export default reporter;31import { PlaywrightTestConfig } from '@play
Using AI Code Generation
1const { parseBogusComment } = require('playwright/lib/server/inspector/inspector');2const comment = parseBogusComment('/* {"foo": "bar"} */');3console.log(comment);4const { parseBogusComment } = require('puppeteer/lib/cjs/puppeteer/common/DevTools.js');5const comment = parseBogusComment('/* {"foo": "bar"} */');6console.log(comment);7{ foo: 'bar' }
Using AI Code Generation
1const { parseBogusComment } = require('playwright/lib/utils/stackTrace.js');2 at Object.<anonymous> (foo.js:3:9)3 at Module._compile (internal/modules/cjs/loader.js:1063:30)4 at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)5 at Module.load (internal/modules/cjs/loader.js:928:32)6 at Function.Module._load (internal/modules/cjs/loader.js:769:14)7 at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)8`;9console.log(parseBogusComment(stack));10const error = await page.evaluate(() => {11 throw new Error('test');12});13const error = await page.evaluate(() => {14 return new Error('test');15});16const error = await page.evaluate(() => {17 return { error: new Error('test') };18});19const error = await page.evaluate(() => {20 return { error: new Error('test').stack };21});22const error = await page.evaluate(() => {23 return { error: new Error('test').stack.split('24')[0] };25});26const error = await page.evaluate(() => {27 return { error: new Error('test').stack.split('28')[0].trim() };29});30const error = await page.evaluate(() => {31 return { error: new Error('test
Using AI Code Generation
1const { parseBogusComment } = require('playwright/lib/utils/stackTrace');2const stack = parseBogusComment('bogus comment');3console.log(stack);4 at Object.<anonymous> (/home/ashishkumar/Projects/playwright/test.js:4:33)5 at Module._compile (node:internal/modules/cjs/loader:1108:14)6 at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10)7 at Module.load (node:internal/modules/cjs/loader:973:32)8 at Function.Module._load (node:internal/modules/cjs/loader:813:14)9 at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)
Using AI Code Generation
1const { parseBogusComment } = require('playwright-core/lib/utils/stackTrace');2 at Object.<anonymous> (/Users/akshay/Desktop/Playwright/playwright/test.js:1:1)3 at Module._compile (internal/modules/cjs/loader.js:1137:30)4 at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)5 at Module.load (internal/modules/cjs/loader.js:985:32)6 at Function.Module._load (internal/modules/cjs/loader.js:878:14)7 at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)8 at internal/main/run_main_module.js:17:47`;9const result = parseBogusComment(stack);10console.log(result);11const { test, expect } = require('@playwright/test');12const { parseBogusComment } = require('playwright-core/lib/utils/stackTrace');13test('should fail', async ({ page }) => {14 try {15 } catch (e) {16 const result = parseBogusComment(e.stack);17 console.log(result);18 }19});
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!