Best JavaScript code snippet using playwright-internal
json_test.js
Source:json_test.js  
...36  assertSerialize('"\\u001f"', '\x1f');37  assertSerialize('"\\u20ac"', '\u20AC');38  assertSerialize('"\\ud83d\\ud83d"', '\ud83d\ud83d');39  var str = allChars(0, 10000);40  assertEquals(str, eval(goog.json.serialize(str)));41}42function testNullSerialize() {43  assertSerialize('null', null);44  assertSerialize('null', undefined);45  assertSerialize('null', NaN);46  assertSerialize('0', 0);47  assertSerialize('""', '');48  assertSerialize('false', false);49}50function testNullPropertySerialize() {51  assertSerialize('{"a":null}', {'a': null});52  assertSerialize('{"a":null}', {'a': undefined});53}54function testNumberSerialize() {55  assertSerialize('0', 0);56  assertSerialize('12345', 12345);57  assertSerialize('-12345', -12345);58  assertSerialize('0.1', 0.1);59  // the leading zero may not be omitted60  assertSerialize('0.1', .1);61  // no leading +62  assertSerialize('1', +1);63  // either format is OK64  var s = goog.json.serialize(1e50);65  assertTrue(66      '1e50', s == '1e50' || s == '1E50' || s == '1e+50' || s == '1E+50');67  // either format is OK68  s = goog.json.serialize(1e-50);69  assertTrue('1e50', s == '1e-50' || s == '1E-50');70  // These numbers cannot be represented in JSON71  assertSerialize('null', NaN);72  assertSerialize('null', Infinity);73  assertSerialize('null', -Infinity);74}75function testBooleanSerialize() {76  assertSerialize('true', true);77  assertSerialize('"true"', 'true');78  assertSerialize('false', false);79  assertSerialize('"false"', 'false');80}81function testArraySerialize() {82  assertSerialize('[]', []);83  assertSerialize('[1]', [1]);84  assertSerialize('[1,2]', [1, 2]);85  assertSerialize('[1,2,3]', [1, 2, 3]);86  assertSerialize('[[]]', [[]]);87  assertSerialize('[null,null]', [function() {}, function() {}]);88  assertNotEquals('{length:0}', goog.json.serialize({length: 0}), '[]');89}90function testFunctionSerialize() {91  assertSerialize('null', function() {});92}93function testObjectSerialize_emptyObject() {94  assertSerialize('{}', {});95}96function testObjectSerialize_oneItem() {97  assertSerialize('{"a":"b"}', {a: 'b'});98}99function testObjectSerialize_twoItems() {100  assertEquals(101      '{"a":"b","c":"d"}', goog.json.serialize({a: 'b', c: 'd'}),102      '{"a":"b","c":"d"}');103}104function testObjectSerialize_whitespace() {105  assertSerialize('{" ":" "}', {' ': ' '});106}107function testSerializeSkipFunction() {108  var object =109      {s: 'string value', b: true, i: 100, f: function() { var x = 'x'; }};110  assertSerialize('null', object.f);111  assertSerialize('{"s":"string value","b":true,"i":100}', object);112}113function testObjectSerialize_array() {114  assertNotEquals('[0,1]', goog.json.serialize([0, 1]), '{"0":"0","1":"1"}');115}116function testObjectSerialize_recursion() {117  if (goog.userAgent.WEBKIT) {118    return;  // this makes safari 4 crash.119  }120  var anObject = {};121  anObject.thisObject = anObject;122  assertThrows('expected recursion exception', function() {123    goog.json.serialize(anObject);124  });125}126function testObjectSerializeWithHasOwnProperty() {127  var object = {'hasOwnProperty': null};128  if (goog.userAgent.IE && !goog.userAgent.isVersionOrHigher('9')) {129    assertEquals('{}', goog.json.serialize(object));130  } else {131    assertEquals('{"hasOwnProperty":null}', goog.json.serialize(object));132  }133}134function testWrappedObjects() {135  assertSerialize('"foo"', new String('foo'));136  assertSerialize('42', new Number(42));137  assertSerialize('null', new Number('a NaN'));138  assertSerialize('true', new Boolean(true));139}140// parsing141function testStringParse() {142  assertEquals('Empty string', goog.json.parse('""'), '');143  assertEquals('whitespace string', goog.json.parse('" "'), ' ');144  // unicode without the control characters 0x00 - 0x1f, 0x7f - 0x9f145  var str = allChars(32, 1000);146  var jsonString = goog.json.serialize(str);147  var a = eval(jsonString);148  assertEquals('unicode string', goog.json.parse(jsonString), a);149  assertEquals('true as a string', goog.json.parse('"true"'), 'true');150  assertEquals('false as a string', goog.json.parse('"false"'), 'false');151  assertEquals('null as a string', goog.json.parse('"null"'), 'null');152  assertEquals('number as a string', goog.json.parse('"0"'), '0');153}154function testNullParse() {155  assertEquals('null', goog.json.parse(null), null);156  assertEquals('null', goog.json.parse('null'), null);157  assertNotEquals('0', goog.json.parse('0'), null);158  assertNotEquals('""', goog.json.parse('""'), null);159  assertNotEquals('false', goog.json.parse('false'), null);160}161function testNumberParse() {162  assertEquals('0', goog.json.parse('0'), 0);163  assertEquals('12345', goog.json.parse('12345'), 12345);164  assertEquals('-12345', goog.json.parse('-12345'), -12345);165  assertEquals('0.1', goog.json.parse('0.1'), 0.1);166  // either format is OK167  assertEquals(1e50, goog.json.parse('1e50'));168  assertEquals(1e50, goog.json.parse('1E50'));169  assertEquals(1e50, goog.json.parse('1e+50'));170  assertEquals(1e50, goog.json.parse('1E+50'));171  // either format is OK172  assertEquals(1e-50, goog.json.parse('1e-50'));173  assertEquals(1e-50, goog.json.parse('1E-50'));174}175function testBooleanParse() {176  assertEquals('true', goog.json.parse('true'), true);177  assertEquals('false', goog.json.parse('false'), false);178  assertNotEquals('0', goog.json.parse('0'), false);179  assertNotEquals('"false"', goog.json.parse('"false"'), false);180  assertNotEquals('null', goog.json.parse('null'), false);181  assertNotEquals('1', goog.json.parse('1'), true);182  assertNotEquals('"true"', goog.json.parse('"true"'), true);183  assertNotEquals('{}', goog.json.parse('{}'), true);184  assertNotEquals('[]', goog.json.parse('[]'), true);185}186function testArrayParse() {187  assertArrayEquals([], goog.json.parse('[]'));188  assertArrayEquals([1], goog.json.parse('[1]'));189  assertArrayEquals([1, 2], goog.json.parse('[1,2]'));190  assertArrayEquals([1, 2, 3], goog.json.parse('[1,2,3]'));191  assertArrayEquals([[]], goog.json.parse('[[]]'));192  // Note that array-holes are not valid json. However, goog.json.parse193  // supports them so that clients can reap the security benefits of194  // goog.json.parse even if they are using this non-standard format.195  assertArrayEquals([1, /* hole */, 3], goog.json.parse('[1,,3]'));196  // make sure we do not get an array for something that looks like an array197  assertFalse('{length:0}', 'push' in goog.json.parse('{"length":0}'));198}199function testObjectParse() {200  function objectEquals(a1, a2) {201    for (var key in a1) {202      if (a1[key] != a2[key]) {203        return false;204      }205    }206    return true;207  }208  assertTrue('{}', objectEquals(goog.json.parse('{}'), {}));209  assertTrue('{"a":"b"}', objectEquals(goog.json.parse('{"a":"b"}'), {a: 'b'}));210  assertTrue(211      '{"a":"b","c":"d"}',212      objectEquals(goog.json.parse('{"a":"b","c":"d"}'), {a: 'b', c: 'd'}));213  assertTrue(214      '{" ":" "}', objectEquals(goog.json.parse('{" ":" "}'), {' ': ' '}));215  // make sure we do not get an Object when it is really an array216  assertTrue('[0,1]', 'length' in goog.json.parse('[0,1]'));217}218function testForValidJson() {219  function error_(msg, s) {220    assertThrows(221        msg + ', Should have raised an exception: ' + s,222        goog.partial(goog.json.parse, s));223  }224  error_('Non closed string', '"dasdas');225  error_('undefined is not valid json', 'undefined');226  // These numbers cannot be represented in JSON227  error_('NaN cannot be presented in JSON', 'NaN');228  error_('Infinity cannot be presented in JSON', 'Infinity');229  error_('-Infinity cannot be presented in JSON', '-Infinity');230}231function testIsNotValid() {232  assertFalse(goog.json.isValid('t'));233  assertFalse(goog.json.isValid('r'));234  assertFalse(goog.json.isValid('u'));235  assertFalse(goog.json.isValid('e'));236  assertFalse(goog.json.isValid('f'));237  assertFalse(goog.json.isValid('a'));238  assertFalse(goog.json.isValid('l'));239  assertFalse(goog.json.isValid('s'));240  assertFalse(goog.json.isValid('n'));241  assertFalse(goog.json.isValid('E'));242  assertFalse(goog.json.isValid('+'));243  assertFalse(goog.json.isValid('-'));244  assertFalse(goog.json.isValid('t++'));245  assertFalse(goog.json.isValid('++t'));246  assertFalse(goog.json.isValid('t--'));247  assertFalse(goog.json.isValid('--t'));248  assertFalse(goog.json.isValid('-t'));249  assertFalse(goog.json.isValid('+t'));250  assertFalse(goog.json.isValid('"\\"'));  // "\"251  assertFalse(goog.json.isValid('"\\'));   // "\252  // multiline string using \ at the end is not valid253  assertFalse(goog.json.isValid('"a\\\nb"'));254  assertFalse(goog.json.isValid('"\n"'));255  assertFalse(goog.json.isValid('"\r"'));256  assertFalse(goog.json.isValid('"\r\n"'));257  // Disallow the unicode newlines258  assertFalse(goog.json.isValid('"\u2028"'));259  assertFalse(goog.json.isValid('"\u2029"'));260  assertFalse(goog.json.isValid(' '));261  assertFalse(goog.json.isValid('\n'));262  assertFalse(goog.json.isValid('\r'));263  assertFalse(goog.json.isValid('\r\n'));264  assertFalse(goog.json.isValid('t.r'));265  assertFalse(goog.json.isValid('1e'));266  assertFalse(goog.json.isValid('1e-'));267  assertFalse(goog.json.isValid('1e+'));268  assertFalse(goog.json.isValid('1e-'));269  assertFalse(goog.json.isValid('"\\\u200D\\"'));270  assertFalse(goog.json.isValid('"\\\0\\"'));271  assertFalse(goog.json.isValid('"\\\0"'));272  assertFalse(goog.json.isValid('"\\0"'));273  assertFalse(goog.json.isValid('"\x0c"'));274  assertFalse(goog.json.isValid('"\\\u200D\\", alert(\'foo\') //"\n'));275  // Disallow referencing variables with names built up from primitives276  assertFalse(goog.json.isValid('truefalse'));277  assertFalse(goog.json.isValid('null0'));278  assertFalse(goog.json.isValid('null0.null0'));279  assertFalse(goog.json.isValid('[truefalse]'));280  assertFalse(goog.json.isValid('{"a": null0}'));281  assertFalse(goog.json.isValid('{"a": null0, "b": 1}'));282}283function testIsValid() {284  assertTrue(goog.json.isValid('\n""\n'));285  assertTrue(goog.json.isValid('[1\n,2\r,3\u2028\n,4\u2029]'));286  assertTrue(goog.json.isValid('"\x7f"'));287  assertTrue(goog.json.isValid('"\x09"'));288  // Test tab characters in json.289  assertTrue(goog.json.isValid('{"\t":"\t"}'));290}291function testDoNotSerializeProto() {292  function F() {}293  F.prototype = {c: 3};294  var obj = new F;295  obj.a = 1;296  obj.b = 2;297  assertEquals(298      'Should not follow the prototype chain', '{"a":1,"b":2}',299      goog.json.serialize(obj));300}301function testEscape() {302  var unescaped = '1a*/]';303  assertEquals(304      'Should not escape', '"' + unescaped + '"',305      goog.json.serialize(unescaped));306  var escaped = '\n\x7f\u1049';307  assertEquals(308      'Should escape', '',309      findCommonChar(escaped, goog.json.serialize(escaped)));310  assertEquals(311      'Should eval to the same string after escaping', escaped,312      goog.json.parse(goog.json.serialize(escaped)));313}314function testReplacer() {315  assertSerialize('[null,null,0]', [, , 0]);316  assertSerialize('[0,0,{"x":0}]', [, , {x: 0}], function(k, v) {317    if (v === undefined && goog.isArray(this)) {318      return 0;319    }320    return v;321  });322  assertSerialize('[0,1,2,3]', [0, 0, 0, 0], function(k, v) {323    var kNum = Number(k);324    if (k && !isNaN(kNum)) {325      return kNum;326    }327    return v;328  });329  var f = function(k, v) { return typeof v == 'number' ? v + 1 : v; };330  assertSerialize('{"a":1,"b":{"c":2}}', {'a': 0, 'b': {'c': 1}}, f);331}332function testDateSerialize() {333  assertSerialize('{}', new Date(0));334}335function testToJSONSerialize() {336  assertSerialize('{}', {toJSON: goog.functions.constant('serialized')});337  assertSerialize('{"toJSON":"normal"}', {toJSON: 'normal'});338}339function testTryNativeJson() {340  goog.json.TRY_NATIVE_JSON = true;341  var error;342  goog.json.setErrorLogger(function(message, ex) {343    error = message;344  });345  error = undefined;346  goog.json.parse('{"a":[,1]}');347  assertEquals('Invalid JSON: {"a":[,1]}', error);348  goog.json.TRY_NATIVE_JSON = false;349  goog.json.setErrorLogger(goog.nullFunction);350}351/**352 * Asserts that the given object serializes to the given value.353 * If the current browser has an implementation of JSON.serialize,354 * we make sure our version matches that one.355 */356function assertSerialize(expected, obj, opt_replacer) {357  assertEquals(expected, goog.json.serialize(obj, opt_replacer));358  // goog.json.serialize escapes non-ASCI characters while JSON.stringify359  // doesnât.  This is expected so do not compare the results.360  if (typeof obj == 'string' && obj.charCodeAt(0) > 0x7f) return;361  // I'm pretty sure that the goog.json.serialize behavior is correct by the ES5362  // spec, but JSON.stringify(undefined) is undefined on all browsers.363  if (obj === undefined) return;364  // Browsers don't serialize undefined properties, but goog.json.serialize does365  if (goog.isObject(obj) && ('a' in obj) && obj['a'] === undefined) return;366  // Replacers are broken on IE and older versions of firefox.367  if (opt_replacer && !goog.userAgent.WEBKIT) return;368  // goog.json.serialize does not stringify dates the same way.369  if (obj instanceof Date) return;370  // goog.json.serialize does not stringify functions the same way.371  if (obj instanceof Function) return;...test.js
Source:test.js  
...11      node = null;12    }13  });14  it('should return an empty string on invalid input', function () {15    assert.strictEqual('', serialize(null));16  });17  it('should serialize a SPAN element', function () {18    node = document.createElement('span');19    assert.equal('<span></span>', serialize(node));20  });21  it('should serialize a BR element', function () {22    node = document.createElement('br');23    assert.equal('<br>', serialize(node));24  });25  it('should serialize a text node', function () {26    node = document.createTextNode('test');27    assert.equal('test', serialize(node));28  });29  it('should serialize a text node with special HTML characters', function () {30    node = document.createTextNode('<>\'"&');31    assert.equal('<>\'"&', serialize(node));32  });33  it('should serialize a DIV element with child nodes', function () {34    node = document.createElement('div');35    node.appendChild(document.createTextNode('hello '));36    var b = document.createElement('b');37    b.appendChild(document.createTextNode('world'));38    node.appendChild(b);39    node.appendChild(document.createTextNode('!'));40    node.appendChild(document.createElement('br'));41    assert.equal('<div>hello <b>world</b>!<br></div>', serialize(node));42  });43  it('should serialize a DIV element with attributes', function () {44    node = document.createElement('div');45    node.setAttribute('foo', 'bar');46    node.setAttribute('escape', '<>&"\'');47    assert.equal('<div foo="bar" escape="<>&"'"></div>', serialize(node));48  });49  it('should serialize an Attribute node', function () {50    var div = document.createElement('div');51    div.setAttribute('foo', 'bar');52    node = div.attributes[0];53    assert.equal('foo="bar"', serialize(node));54  });55  it('should serialize a Comment node', function () {56    node = document.createComment('test');57    assert.equal('<!--test-->', serialize(node));58  });59  it('should serialize a Document node', function () {60    node = document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'html', null);61    assert.equal('<html></html>', serialize(node));62  });63  it('should serialize a Doctype node', function () {64    node = document.implementation.createDocumentType(65      'html',66      '-//W3C//DTD XHTML 1.0 Strict//EN',67      'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'68    );69    // Some older browsers require the DOCTYPE to be within a Document,70    // otherwise the "serialize" custom event is considered "cancelled".71    // See: https://travis-ci.org/webmodules/dom-serialize/builds/4730774972    var doc = document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'html', node);73    assert.equal('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">', serialize(node));74    assert.equal('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html></html>', serialize(doc));75  });76  it('should serialize a Doctype node with systemId', function () {77    node = document.implementation.createDocumentType(78      'root-element',79      '',80      'http://www.w3.org/1999/xhtml'81    );82    document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'root-element', node);83    assert.equal('<!DOCTYPE root-element SYSTEM "http://www.w3.org/1999/xhtml">', serialize(node));84  });85  it('should serialize an HTML5 Doctype node', function () {86    node = document.implementation.createDocumentType(87      'html',88      '',89      ''90    );91    document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'node', node);92    assert.equal('<!DOCTYPE html>', serialize(node));93  });94  it('should serialize a DocumentFragment node', function () {95    node = document.createDocumentFragment();96    node.appendChild(document.createElement('b'));97    node.appendChild(document.createElement('i'));98    node.lastChild.appendChild(document.createTextNode('foo'));99    assert.equal('<b></b><i>foo</i>', serialize(node));100  });101  it('should serialize an Array of nodes', function () {102    var array = [];103    array.push(document.createTextNode('foo'));104    array.push(document.createElement('div'));105    array[1].appendChild(document.createTextNode('bar'));106    assert.equal('foo<div>bar</div>', serialize(array));107  });108  describe('serializeText()', function () {109    it('should serialize an Attribute node', function () {110      var d = document.createElement('div');111      d.setAttribute('foo', '<>"&');112      assert.equal('foo="<>"&"', serialize.serializeAttribute(d.attributes[0]));113    });114    it('should allow an "options" object to be passed in', function () {115      var d = document.createElement('div');116      d.setAttribute('foo', '<>"&');117      assert.equal('foo="<>"&"', serialize.serializeAttribute(d.attributes[0], { named: false }));118    });119  });120  describe('serializeText()', function () {121    it('should serialize a TextNode instance', function () {122      node = document.createTextNode('<b>&');123      assert.equal('<b>&', serialize.serializeText(node));124    });125    it('should allow an "options" object to be passed in', function () {126      node = document.createTextNode('<b>&');127      assert.equal('<b>&', serialize.serializeText(node, { named: false }));128    });129  });130  describe('"serialize" event', function () {131    it('should emit a "serialize" event on a DIV node', function () {132      node = document.createElement('div');133      var count = 0;134      node.addEventListener('serialize', function (e) {135        count++;136        e.detail.serialize = 'MEOW';137      });138      assert.equal(0, count);139      assert.equal('MEOW', serialize(node));140      assert.equal(1, count);141    });142    it('should emit a "serialize" event on a Text node', function () {143      node = document.createTextNode('whaaaaa!!!!!!');144      var count = 0;145      node.addEventListener('serialize', function (e) {146        count++;147        e.detail.serialize = 'MEOW';148      });149      assert.equal(0, count);150      assert.equal('MEOW', serialize(node));151      assert.equal(1, count);152    });153    it('should output an empty string when event is cancelled', function () {154      node = document.createElement('div');155      node.appendChild(document.createTextNode('!'));156      var count = 0;157      node.firstChild.addEventListener('serialize', function (e) {158        count++;159        e.preventDefault();160      });161      assert.equal(0, count);162      assert.equal('<div></div>', serialize(node));163      assert.equal(1, count);164    });165    it('should render a Number when set as `e.detail.serialize`', function () {166      node = document.createTextNode('whaaaaa!!!!!!');167      var count = 0;168      node.addEventListener('serialize', function (e) {169        count++;170        e.detail.serialize = 123;171      });172      assert.equal(0, count);173      assert.equal('123', serialize(node));174      assert.equal(1, count);175    });176    it('should render a Node when set as `e.detail.serialize`', function () {177      node = document.createTextNode('whaaaaa!!!!!!');178      var count = 0;179      node.addEventListener('serialize', function (e) {180        count++;181        if (count === 1) {182          e.detail.serialize = document.createTextNode('foo');183        }184      });185      assert.equal(0, count);186      assert.equal('foo', serialize(node));187      assert.equal(2, count);188    });189    it('should render a Node when set as `e.detail.serialize` and event is cancelled', function () {190      node = document.createTextNode('whaaaaa!!!!!!');191      var count = 0;192      node.addEventListener('serialize', function (e) {193        count++;194        if (count === 1) {195          e.preventDefault();196          e.detail.serialize = document.createTextNode('foo');197        }198      });199      assert.equal(0, count);200      assert.equal('foo', serialize(node));201      assert.equal(2, count);202    });203    it('should have `context` set on the event', function () {204      node = document.createTextNode('');205      var count = 0;206      node.addEventListener('serialize', function (e) {207        count++;208        e.detail.serialize = e.detail.context;209      });210      assert.equal(0, count);211      assert.equal('foo', serialize(node, 'foo'));212      assert.equal(1, count);213      assert.equal('bar', serialize(node, 'bar'));214      assert.equal(2, count);215      assert.equal('baz', serialize(node, 'baz'));216      assert.equal(3, count);217    });218    it('should bubble', function () {219      node = document.createElement('div');220      node.appendChild(document.createTextNode('foo'));221      node.appendChild(document.createTextNode(' '));222      node.appendChild(document.createTextNode('bar'));223      // `node` must be inside the DOM for the "serialize" event to bubble224      document.body.appendChild(node);225      var count = 0;226      node.addEventListener('serialize', function (e) {227        count++;228        assert.equal('foo', e.detail.context);229        if (e.serializeTarget === node)230          return;231        else if (e.serializeTarget.nodeValue === 'foo')232          e.detail.serialize = 'â¦';233        else234          e.preventDefault();235      }, false);236      assert.equal(0, count);237      assert.equal('<div>â¦</div>', serialize(node, 'foo'));238      assert.equal(4, count);239    });240    it('should support one-time callback function on Elements', function () {241      node = document.createElement('div');242      var count = 0;243      function callback (e) {244        count++;245        e.detail.serialize = count;246      }247      assert.equal(0, count);248      assert.equal('1', serialize(node, callback));249      assert.equal(1, count);250      assert.equal('<div></div>', serialize(node));251      assert.equal(1, count);252    });253    it('should support one-time callback function on NodeLists', function () {254      node = document.createElement('div');255      node.appendChild(document.createElement('strong'));256      node.appendChild(document.createTextNode('foo'));257      node.appendChild(document.createElement('em'));258      node.appendChild(document.createTextNode('bar'));259      var count = 0;260      function callback (e) {261        count++;262        e.detail.serialize = count;263      }264      assert.equal(0, count);265      assert.equal('1234', serialize(node.childNodes, callback));266      assert.equal(4, count);267      assert.equal('<strong></strong>foo<em></em>bar', serialize(node.childNodes));268      assert.equal(4, count);269    });270    it('should support one-time callback function on Nodes set in `e.detail.serialize`', function () {271      node = document.createElement('div');272      node.appendChild(document.createTextNode('foo'));273      // `node` must be inside the DOM for the "serialize" event to bubble274      document.body.appendChild(node);275      var count = 0;276      function callback (e) {277        count++;278        if (2 === count) {279          assert.equal('foo', e.serializeTarget.nodeValue);280          var text = document.createTextNode('bar');281          e.detail.serialize = text;282        } else if (3 === count) {283          assert.equal('bar', e.serializeTarget.nodeValue);284          var text = document.createTextNode('baz');285          e.detail.serialize = text;286        }287      }288      assert.equal(0, count);289      assert.equal('<div>baz</div>', serialize(node, callback));290      assert.equal(4, count);291    });292    it('should support one-time callback function on complex Nodes set in `e.detail.serialize`', function () {293      node = document.createElement('div');294      node.appendChild(document.createTextNode('foo'));295      // `node` must be inside the DOM for the "serialize" event to bubble296      document.body.appendChild(node);297      var count = 0;298      function callback (e) {299        count++;300        if (e.serializeTarget.nodeValue === 'foo') {301          var el = document.createElement('p');302          el.appendChild(document.createTextNode('x '));303          el.appendChild(document.createElement('i'));304          el.lastChild.appendChild(document.createTextNode('bar'));305          e.detail.serialize = el;306        }307      }308      assert.equal(0, count);309      assert.equal('<div><p>x <i>bar</i></p></div>', serialize(node, callback));310      assert.equal(6, count);311    });312  });...StylesTest.js
Source:StylesTest.js  
...11    var failure = arguments[arguments.length - 1];12    var suite = LegacyUnit.createSuite();13    suite.test('Basic parsing/serializing', function () {14      var styles = new Styles();15      LegacyUnit.equal(styles.serialize(styles.parse('FONT-SIZE:10px')), "font-size: 10px;");16      LegacyUnit.equal(styles.serialize(styles.parse('FONT-SIZE:10px;COLOR:red')), "font-size: 10px; color: red;");17      LegacyUnit.equal(styles.serialize(styles.parse('   FONT-SIZE  :  10px  ;   COLOR  :  red   ')), "font-size: 10px; color: red;");18      LegacyUnit.equal(styles.serialize(styles.parse('key:"value"')), "key: 'value';");19      LegacyUnit.equal(styles.serialize(styles.parse('key:"value1" \'value2\'')), "key: 'value1' 'value2';");20      LegacyUnit.equal(styles.serialize(styles.parse('key:"val\\"ue1" \'val\\\'ue2\'')), "key: 'val\"ue1' 'val\\'ue2';");21      LegacyUnit.equal(styles.serialize(styles.parse('width:100%')), 'width: 100%;');22      LegacyUnit.equal(styles.serialize(styles.parse('value:_; value2:"_"')), 'value: _; value2: \'_\';');23      LegacyUnit.equal(styles.serialize(styles.parse('value: "&"')), "value: '&';");24      LegacyUnit.equal(styles.serialize(styles.parse('value: "&"')), "value: '&';");25      LegacyUnit.equal(styles.serialize(styles.parse('value: ')), "");26      LegacyUnit.equal(27        styles.serialize(styles.parse("background: url('http://www.site.com/(foo)');")),28        "background: url('http://www.site.com/(foo)');"29      );30    });31    suite.test('Colors force hex and lowercase', function () {32      var styles = new Styles();33      LegacyUnit.equal(styles.serialize(styles.parse('color: rgb(1,2,3)')), "color: #010203;");34      LegacyUnit.equal(styles.serialize(styles.parse('color: RGB(1,2,3)')), "color: #010203;");35      LegacyUnit.equal(styles.serialize(styles.parse('color: #FF0000')), "color: #ff0000;");36      LegacyUnit.equal(styles.serialize(styles.parse('  color:   RGB  (  1  ,  2  ,  3  )  ')), "color: #010203;");37      LegacyUnit.equal(38        styles.serialize(styles.parse('   FONT-SIZE  :  10px  ;   COLOR  :  RGB  (  1  ,  2  ,  3  )   ')),39        "font-size: 10px; color: #010203;"40      );41      LegacyUnit.equal(styles.serialize(styles.parse('   FONT-SIZE  :  10px  ;   COLOR  :  RED   ')), "font-size: 10px; color: red;");42    });43    suite.test('Urls convert urls and force format', function () {44      var styles = new Styles({45        url_converter: function (url) {46          return '|' + url + '|';47        }48      });49      LegacyUnit.equal(styles.serialize(styles.parse('background: url(a)')), "background: url('|a|');");50      LegacyUnit.equal(styles.serialize(styles.parse('background: url("a")')), "background: url('|a|');");51      LegacyUnit.equal(styles.serialize(styles.parse("background: url('a')")), "background: url('|a|');");52      LegacyUnit.equal(styles.serialize(styles.parse('background: url(   a   )')), "background: url('|a|');");53      LegacyUnit.equal(styles.serialize(styles.parse('background: url(   "a"   )')), "background: url('|a|');");54      LegacyUnit.equal(styles.serialize(styles.parse("background: url(    'a'    )")), "background: url('|a|');");55      LegacyUnit.equal(56        styles.serialize(styles.parse('background1: url(a); background2: url("a"); background3: url(\'a\')')),57        "background1: url('|a|'); background2: url('|a|'); background3: url('|a|');"58      );59      LegacyUnit.equal(60        styles.serialize(styles.parse("background: url('http://www.site.com/a?a=b&c=d')")),61        "background: url('|http://www.site.com/a?a=b&c=d|');"62      );63      LegacyUnit.equal(64        styles.serialize(styles.parse("background: url('http://www.site.com/a_190x144.jpg');")),65        "background: url('|http://www.site.com/a_190x144.jpg|');"66      );67    });68    suite.test('Compress styles', function () {69      var styles = new Styles();70      LegacyUnit.equal(71        styles.serialize(72          styles.parse('border-top: 1px solid red; border-left: 1px solid red; border-bottom: 1px solid red; border-right: 1px solid red;')73        ),74        'border: 1px solid red;'75      );76      LegacyUnit.equal(77        styles.serialize(78          styles.parse('border-width: 1pt 1pt 1pt 1pt; border-style: none none none none; border-color: black black black black;')79        ),80        'border: 1pt none black;'81      );82      LegacyUnit.equal(83        styles.serialize(84          styles.parse('border-width: 1pt 4pt 2pt 3pt; border-style: solid dashed dotted none; border-color: black red green blue;')85        ),86        'border-width: 1pt 4pt 2pt 3pt; border-style: solid dashed dotted none; border-color: black red green blue;'87      );88      LegacyUnit.equal(89        styles.serialize(90          styles.parse('border-top: 1px solid red; border-left: 1px solid red; border-right: 1px solid red; border-bottom: 1px solid red')91        ),92        'border: 1px solid red;'93      );94      LegacyUnit.equal(95        styles.serialize(96          styles.parse('border-top: 1px solid red; border-right: 2px solid red; border-bottom: 3px solid red; border-left: 4px solid red')97        ),98        'border-top: 1px solid red; border-right: 2px solid red; border-bottom: 3px solid red; border-left: 4px solid red;'99      );100      LegacyUnit.equal(101        styles.serialize(102          styles.parse('padding-top: 1px; padding-right: 2px; padding-bottom: 3px; padding-left: 4px')103        ),104        'padding: 1px 2px 3px 4px;'105      );106      LegacyUnit.equal(107        styles.serialize(styles.parse('margin-top: 1px; margin-right: 2px; margin-bottom: 3px; margin-left: 4px')),108        'margin: 1px 2px 3px 4px;'109      );110      LegacyUnit.equal(111        styles.serialize(styles.parse('margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 2px')),112        'margin: 1px 1px 1px 2px;'113      );114      LegacyUnit.equal(115        styles.serialize(styles.parse('margin-top: 2px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px')),116        'margin: 2px 1px 1px 1px;'117      );118      LegacyUnit.equal(119        styles.serialize(120          styles.parse('border-top-color: red; border-right-color: green; border-bottom-color: blue; border-left-color: yellow')121        ),122        'border-color: red green blue yellow;'123      );124      LegacyUnit.equal(125        styles.serialize(styles.parse('border-width: 1px; border-style: solid; border-color: red')),126        'border: 1px solid red;'127      );128      LegacyUnit.equal(129        styles.serialize(styles.parse('border-width: 1px; border-color: red')),130        'border-width: 1px; border-color: red;'131      );132    });133    suite.test('Font weight', function () {134      var styles = new Styles();135      LegacyUnit.equal(styles.serialize(styles.parse('font-weight: 700')), "font-weight: bold;");136    });137    suite.test('Valid styles', function () {138      var styles = new Styles({}, new Schema({ valid_styles: { '*': 'color,font-size', 'a': 'margin-left' } }));139      LegacyUnit.equal(140        styles.serialize(styles.parse('color: #ff0000; font-size: 10px; margin-left: 10px; invalid: 1;'), 'b'),141        "color: #ff0000; font-size: 10px;"142      );143      LegacyUnit.equal(144        styles.serialize(styles.parse('color: #ff0000; font-size: 10px; margin-left: 10px; invalid: 2;'), 'a'),145        "color: #ff0000; font-size: 10px; margin-left: 10px;"146      );147    });148    suite.test('Invalid styles', function () {149      var styles = new Styles({}, new Schema({ invalid_styles: { '*': 'color,font-size', 'a': 'margin-left' } }));150      LegacyUnit.equal(styles.serialize(styles.parse('color: #ff0000; font-size: 10px; margin-left: 10px'), 'b'), "margin-left: 10px;");151      LegacyUnit.equal(152        styles.serialize(styles.parse('color: #ff0000; font-size: 10px; margin-left: 10px; margin-right: 10px;'), 'a'),153        "margin-right: 10px;"154      );155    });156    suite.test('Suspicious (XSS) property names', function () {157      var styles = new Styles();158      LegacyUnit.equal(styles.serialize(styles.parse('font-fa"on-load\\3dxss\\28\\29\\20mily:\'arial\'')), "");159      LegacyUnit.equal(styles.serialize(styles.parse('font-fa\\"on-load\\3dxss\\28\\29\\20mily:\'arial\'')), "");160      LegacyUnit.equal(styles.serialize(styles.parse('font-fa\\22on-load\\3dxss\\28\\29\\20mily:\'arial\'')), "");161    });162    suite.test('Script urls denied', function () {163      var styles = new Styles();164      LegacyUnit.equal(styles.serialize(styles.parse('behavior:url(test.htc)')), "");165      LegacyUnit.equal(styles.serialize(styles.parse('b\\65havior:url(test.htc)')), "");166      LegacyUnit.equal(styles.serialize(styles.parse('color:expression(alert(1))')), "");167      LegacyUnit.equal(styles.serialize(styles.parse('color:\\65xpression(alert(1))')), "");168      LegacyUnit.equal(styles.serialize(styles.parse('color:exp/**/ression(alert(1))')), "");169      LegacyUnit.equal(styles.serialize(styles.parse('color:/**/')), "");170      LegacyUnit.equal(styles.serialize(styles.parse('color:  expression  (  alert(1))')), "");171      LegacyUnit.equal(styles.serialize(styles.parse('background:url(jAvaScript:alert(1)')), "");172      LegacyUnit.equal(styles.serialize(styles.parse('background:url(javascript:alert(1)')), "");173      LegacyUnit.equal(styles.serialize(styles.parse('background:url(j\\61vascript:alert(1)')), "");174      LegacyUnit.equal(styles.serialize(styles.parse('background:url(\\6a\\61vascript:alert(1)')), "");175      LegacyUnit.equal(styles.serialize(styles.parse('background:url(\\6A\\61vascript:alert(1)')), "");176      LegacyUnit.equal(styles.serialize(styles.parse('background:url\\28\\6A\\61vascript:alert(1)')), "");177      LegacyUnit.equal(styles.serialize(styles.parse('background:\\75rl(j\\61vascript:alert(1)')), "");178      LegacyUnit.equal(styles.serialize(styles.parse('b\\61ckground:\\75rl(j\\61vascript:alert(1)')), "");179      LegacyUnit.equal(styles.serialize(styles.parse('background:url(vbscript:alert(1)')), "");180      LegacyUnit.equal(styles.serialize(styles.parse('background:url(j\navas\u0000cr\tipt:alert(1)')), "");181      LegacyUnit.equal(styles.serialize(styles.parse('background:url(data:image/svg+xml,%3Csvg/%3E)')), "");182      LegacyUnit.equal(styles.serialize(styles.parse('background:url( data:image/svg+xml,%3Csvg/%3E)')), "");183      LegacyUnit.equal(styles.serialize(styles.parse('background:url\\28 data:image/svg+xml,%3Csvg/%3E)')), "");184      LegacyUnit.equal(styles.serialize(styles.parse('background:url("data: image/svg+xml,%3Csvg/%3E")')), "");185      LegacyUnit.equal(styles.serialize(styles.parse('background:url("data: ima ge/svg+xml,%3Csvg/%3E")')), "");186      LegacyUnit.equal(styles.serialize(styles.parse('background:url("data: image /svg+xml,%3Csvg/%3E")')), "");187    });188    suite.test('Script urls allowed', function () {189      var styles = new Styles({ allow_script_urls: true });190      LegacyUnit.equal(styles.serialize(styles.parse('behavior:url(test.htc)')), "behavior: url('test.htc');");191      LegacyUnit.equal(styles.serialize(styles.parse('color:expression(alert(1))')), "color: expression(alert(1));");192      LegacyUnit.equal(styles.serialize(styles.parse('background:url(javascript:alert(1)')), "background: url('javascript:alert(1');");193      LegacyUnit.equal(styles.serialize(styles.parse('background:url(vbscript:alert(1)')), "background: url('vbscript:alert(1');");194    });195    Pipeline.async({}, suite.toSteps({}), function () {196      success();197    }, failure);198  }...Styles.js
Source:Styles.js  
1module("tinymce.html.Styles");2test('Basic parsing/serializing', function() {3	var styles = new tinymce.html.Styles();4	expect(12);5	equal(styles.serialize(styles.parse('FONT-SIZE:10px')), "font-size: 10px;");6	equal(styles.serialize(styles.parse('FONT-SIZE:10px;COLOR:red')), "font-size: 10px; color: red;");7	equal(styles.serialize(styles.parse('   FONT-SIZE  :  10px  ;   COLOR  :  red   ')), "font-size: 10px; color: red;");8	equal(styles.serialize(styles.parse('key:"value"')), "key: 'value';");9	equal(styles.serialize(styles.parse('key:"value1" \'value2\'')), "key: 'value1' 'value2';");10	equal(styles.serialize(styles.parse('key:"val\\"ue1" \'val\\\'ue2\'')), "key: 'val\"ue1' 'val\\'ue2';");11	equal(styles.serialize(styles.parse('width:100%')), 'width: 100%;');12	equal(styles.serialize(styles.parse('value:_; value2:"_"')), 'value: _; value2: \'_\';');13	equal(styles.serialize(styles.parse('value: "&"')), "value: '&';");14	equal(styles.serialize(styles.parse('value: "&"')), "value: '&';");15	equal(styles.serialize(styles.parse('value: ')), "");16	equal(styles.serialize(styles.parse("background: url('http://www.site.com/(foo)');")), "background: url('http://www.site.com/(foo)');");17});18test('Colors force hex and lowercase', function() {19	var styles = new tinymce.html.Styles();20	expect(6);21	equal(styles.serialize(styles.parse('color: rgb(1,2,3)')), "color: #010203;");22	equal(styles.serialize(styles.parse('color: RGB(1,2,3)')), "color: #010203;");23	equal(styles.serialize(styles.parse('color: #FF0000')), "color: #ff0000;");24	equal(styles.serialize(styles.parse('  color:   RGB  (  1  ,  2  ,  3  )  ')), "color: #010203;");25	equal(styles.serialize(styles.parse('   FONT-SIZE  :  10px  ;   COLOR  :  RGB  (  1  ,  2  ,  3  )   ')), "font-size: 10px; color: #010203;");26	equal(styles.serialize(styles.parse('   FONT-SIZE  :  10px  ;   COLOR  :  RED   ')), "font-size: 10px; color: red;");27});28test('Urls convert urls and force format', function() {29	var styles = new tinymce.html.Styles({url_converter : function(url) {30		return '|' + url + '|';31	}});32	expect(9);33	equal(styles.serialize(styles.parse('background: url(a)')), "background: url('|a|');");34	equal(styles.serialize(styles.parse('background: url("a")')), "background: url('|a|');");35	equal(styles.serialize(styles.parse("background: url('a')")), "background: url('|a|');");36	equal(styles.serialize(styles.parse('background: url(   a   )')), "background: url('|a|');");37	equal(styles.serialize(styles.parse('background: url(   "a"   )')), "background: url('|a|');");38	equal(styles.serialize(styles.parse("background: url(    'a'    )")), "background: url('|a|');");39	equal(styles.serialize(styles.parse('background1: url(a); background2: url("a"); background3: url(\'a\')')), "background1: url('|a|'); background2: url('|a|'); background3: url('|a|');");40	equal(styles.serialize(styles.parse("background: url('http://www.site.com/a?a=b&c=d')")), "background: url('|http://www.site.com/a?a=b&c=d|');");41	equal(styles.serialize(styles.parse("background: url('http://www.site.com/a_190x144.jpg');")), "background: url('|http://www.site.com/a_190x144.jpg|');");42});43test('Compress styles', function() {44	var styles = new tinymce.html.Styles();45	equal(46		styles.serialize(styles.parse('border-top: 1px solid red; border-left: 1px solid red; border-bottom: 1px solid red; border-right: 1px solid red;')),47		'border: 1px solid red;'48	);49	equal(50		styles.serialize(styles.parse('border-width: 1pt 1pt 1pt 1pt; border-style: none none none none; border-color: black black black black;')),51		'border: 1pt none black;'52	);53	equal(54		styles.serialize(styles.parse('border-width: 1pt 4pt 2pt 3pt; border-style: solid dashed dotted none; border-color: black red green blue;')),55		'border-width: 1pt 4pt 2pt 3pt; border-style: solid dashed dotted none; border-color: black red green blue;'56	);57	equal(58		styles.serialize(styles.parse('border-top: 1px solid red; border-left: 1px solid red; border-right: 1px solid red; border-bottom: 1px solid red')),59		'border: 1px solid red;'60	);61	equal(62		styles.serialize(styles.parse('border-top: 1px solid red; border-right: 2px solid red; border-bottom: 3px solid red; border-left: 4px solid red')),63		'border-top: 1px solid red; border-right: 2px solid red; border-bottom: 3px solid red; border-left: 4px solid red;'64	);65	equal(66		styles.serialize(styles.parse('padding-top: 1px; padding-right: 2px; padding-bottom: 3px; padding-left: 4px')),67		'padding: 1px 2px 3px 4px;'68	);69	equal(70		styles.serialize(styles.parse('margin-top: 1px; margin-right: 2px; margin-bottom: 3px; margin-left: 4px')),71		'margin: 1px 2px 3px 4px;'72	);73	equal(74		styles.serialize(styles.parse('margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 2px')),75		'margin: 1px 1px 1px 2px;'76	);77	equal(78		styles.serialize(styles.parse('margin-top: 2px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px')),79		'margin: 2px 1px 1px 1px;'80	);81	equal(82		styles.serialize(styles.parse('border-top-color: red; border-right-color: green; border-bottom-color: blue; border-left-color: yellow')),83		'border-color: red green blue yellow;'84	);85	equal(86		styles.serialize(styles.parse('border-width: 1px; border-style: solid; border-color: red')),87		'border: 1px solid red;'88	);89	equal(90		styles.serialize(styles.parse('border-width: 1px; border-color: red')),91		'border-width: 1px; border-color: red;'92	);93});94test('Font weight', function() {95	var styles = new tinymce.html.Styles();96	expect(1);97	equal(styles.serialize(styles.parse('font-weight: 700')), "font-weight: bold;");98});99test('Valid styles', function() {100	var styles = new tinymce.html.Styles({}, new tinymce.html.Schema({valid_styles : {'*': 'color,font-size', 'a': 'margin-left'}}));101	expect(2);102	equal(styles.serialize(styles.parse('color: #ff0000; font-size: 10px; margin-left: 10px; invalid: 1;'), 'b'), "color: #ff0000; font-size: 10px;");103	equal(styles.serialize(styles.parse('color: #ff0000; font-size: 10px; margin-left: 10px; invalid: 2;'), 'a'), "color: #ff0000; font-size: 10px; margin-left: 10px;");104});105test('Invalid styles', function() {106	var styles = new tinymce.html.Styles({}, new tinymce.html.Schema({invalid_styles : {'*': 'color,font-size', 'a': 'margin-left'}}));107	equal(styles.serialize(styles.parse('color: #ff0000; font-size: 10px; margin-left: 10px'), 'b'), "margin-left: 10px;");108	equal(styles.serialize(styles.parse('color: #ff0000; font-size: 10px; margin-left: 10px; margin-right: 10px;'), 'a'), "margin-right: 10px;");109});110test('Suspicious (XSS) property names', function() {111	var styles = new tinymce.html.Styles();112	equal(styles.serialize(styles.parse('font-fa"on-load\\3dxss\\28\\29\\20mily:\'arial\'')), "");113	equal(styles.serialize(styles.parse('font-fa\\"on-load\\3dxss\\28\\29\\20mily:\'arial\'')), "");114	equal(styles.serialize(styles.parse('font-fa\\22on-load\\3dxss\\28\\29\\20mily:\'arial\'')), "");115});116test('Script urls denied', function() {117	var styles = new tinymce.html.Styles();118	equal(styles.serialize(styles.parse('behavior:url(test.htc)')), "");119	equal(styles.serialize(styles.parse('b\\65havior:url(test.htc)')), "");120	equal(styles.serialize(styles.parse('color:expression(alert(1))')), "");121	equal(styles.serialize(styles.parse('color:\\65xpression(alert(1))')), "");122	equal(styles.serialize(styles.parse('color:exp/**/ression(alert(1))')), "");123	equal(styles.serialize(styles.parse('color:/**/')), "");124	equal(styles.serialize(styles.parse('color:  expression  (  alert(1))')), "");125	equal(styles.serialize(styles.parse('background:url(jAvaScript:alert(1)')), "");126	equal(styles.serialize(styles.parse('background:url(javascript:alert(1)')), "");127	equal(styles.serialize(styles.parse('background:url(j\\61vascript:alert(1)')), "");128	equal(styles.serialize(styles.parse('background:url(\\6a\\61vascript:alert(1)')), "");129	equal(styles.serialize(styles.parse('background:url(\\6A\\61vascript:alert(1)')), "");130	equal(styles.serialize(styles.parse('background:url\\28\\6A\\61vascript:alert(1)')), "");131	equal(styles.serialize(styles.parse('background:\\75rl(j\\61vascript:alert(1)')), "");132	equal(styles.serialize(styles.parse('b\\61ckground:\\75rl(j\\61vascript:alert(1)')), "");133	equal(styles.serialize(styles.parse('background:url(vbscript:alert(1)')), "");134	equal(styles.serialize(styles.parse('background:url(j\navas\u0000cr\tipt:alert(1)')), "");135	equal(styles.serialize(styles.parse('background:url(data:image/svg+xml,%3Csvg/%3E)')), "");136	equal(styles.serialize(styles.parse('background:url( data:image/svg+xml,%3Csvg/%3E)')), "");137	equal(styles.serialize(styles.parse('background:url\\28 data:image/svg+xml,%3Csvg/%3E)')), "");138	equal(styles.serialize(styles.parse('background:url("data: image/svg+xml,%3Csvg/%3E")')), "");139	equal(styles.serialize(styles.parse('background:url("data: ima ge/svg+xml,%3Csvg/%3E")')), "");140	equal(styles.serialize(styles.parse('background:url("data: image /svg+xml,%3Csvg/%3E")')), "");141});142test('Script urls allowed', function() {143	var styles = new tinymce.html.Styles({allow_script_urls: true});144	equal(styles.serialize(styles.parse('behavior:url(test.htc)')), "behavior: url('test.htc');");145	equal(styles.serialize(styles.parse('color:expression(alert(1))')), "color: expression(alert(1));");146	equal(styles.serialize(styles.parse('background:url(javascript:alert(1)')), "background: url('javascript:alert(1');");147	equal(styles.serialize(styles.parse('background:url(vbscript:alert(1)')), "background: url('vbscript:alert(1');");...service_grpc_pb.js
Source:service_grpc_pb.js  
1// GENERATED CODE -- DO NOT EDIT!2'use strict';3var grpc = require('@grpc/grpc-js');4var category_pb = require('./category_pb.js');5var inventory_pb = require('./inventory_pb.js');6var product_pb = require('./product_pb.js');7function serialize_category_Category(arg) {8  if (!(arg instanceof category_pb.Category)) {9    throw new Error('Expected argument of type category.Category');10  }11  return Buffer.from(arg.serializeBinary());12}13function deserialize_category_Category(buffer_arg) {14  return category_pb.Category.deserializeBinary(new Uint8Array(buffer_arg));15}16function serialize_category_CategoryList(arg) {17  if (!(arg instanceof category_pb.CategoryList)) {18    throw new Error('Expected argument of type category.CategoryList');19  }20  return Buffer.from(arg.serializeBinary());21}22function deserialize_category_CategoryList(buffer_arg) {23  return category_pb.CategoryList.deserializeBinary(new Uint8Array(buffer_arg));24}25function serialize_inventory_Inventory(arg) {26  if (!(arg instanceof inventory_pb.Inventory)) {27    throw new Error('Expected argument of type inventory.Inventory');28  }29  return Buffer.from(arg.serializeBinary());30}31function deserialize_inventory_Inventory(buffer_arg) {32  return inventory_pb.Inventory.deserializeBinary(new Uint8Array(buffer_arg));33}34function serialize_inventory_InventoryList(arg) {35  if (!(arg instanceof inventory_pb.InventoryList)) {36    throw new Error('Expected argument of type inventory.InventoryList');37  }38  return Buffer.from(arg.serializeBinary());39}40function deserialize_inventory_InventoryList(buffer_arg) {41  return inventory_pb.InventoryList.deserializeBinary(new Uint8Array(buffer_arg));42}43function serialize_product_Product(arg) {44  if (!(arg instanceof product_pb.Product)) {45    throw new Error('Expected argument of type product.Product');46  }47  return Buffer.from(arg.serializeBinary());48}49function deserialize_product_Product(buffer_arg) {50  return product_pb.Product.deserializeBinary(new Uint8Array(buffer_arg));51}52function serialize_product_ProductList(arg) {53  if (!(arg instanceof product_pb.ProductList)) {54    throw new Error('Expected argument of type product.ProductList');55  }56  return Buffer.from(arg.serializeBinary());57}58function deserialize_product_ProductList(buffer_arg) {59  return product_pb.ProductList.deserializeBinary(new Uint8Array(buffer_arg));60}61var InventoryService = exports.InventoryService = {62  createCategory: {63    path: '/auth.Inventory/CreateCategory',64    requestStream: false,65    responseStream: false,66    requestType: category_pb.Category,67    responseType: category_pb.Category,68    requestSerialize: serialize_category_Category,69    requestDeserialize: deserialize_category_Category,70    responseSerialize: serialize_category_Category,71    responseDeserialize: deserialize_category_Category,72  },73  getCategory: {74    path: '/auth.Inventory/GetCategory',75    requestStream: false,76    responseStream: false,77    requestType: category_pb.Category,78    responseType: category_pb.Category,79    requestSerialize: serialize_category_Category,80    requestDeserialize: deserialize_category_Category,81    responseSerialize: serialize_category_Category,82    responseDeserialize: deserialize_category_Category,83  },84  listCategories: {85    path: '/auth.Inventory/ListCategories',86    requestStream: false,87    responseStream: false,88    requestType: category_pb.Category,89    responseType: category_pb.CategoryList,90    requestSerialize: serialize_category_Category,91    requestDeserialize: deserialize_category_Category,92    responseSerialize: serialize_category_CategoryList,93    responseDeserialize: deserialize_category_CategoryList,94  },95  updateCategory: {96    path: '/auth.Inventory/UpdateCategory',97    requestStream: false,98    responseStream: false,99    requestType: category_pb.Category,100    responseType: category_pb.Category,101    requestSerialize: serialize_category_Category,102    requestDeserialize: deserialize_category_Category,103    responseSerialize: serialize_category_Category,104    responseDeserialize: deserialize_category_Category,105  },106  deleteCategory: {107    path: '/auth.Inventory/DeleteCategory',108    requestStream: false,109    responseStream: false,110    requestType: category_pb.Category,111    responseType: category_pb.Category,112    requestSerialize: serialize_category_Category,113    requestDeserialize: deserialize_category_Category,114    responseSerialize: serialize_category_Category,115    responseDeserialize: deserialize_category_Category,116  },117  createInventory: {118    path: '/auth.Inventory/CreateInventory',119    requestStream: false,120    responseStream: false,121    requestType: inventory_pb.Inventory,122    responseType: inventory_pb.Inventory,123    requestSerialize: serialize_inventory_Inventory,124    requestDeserialize: deserialize_inventory_Inventory,125    responseSerialize: serialize_inventory_Inventory,126    responseDeserialize: deserialize_inventory_Inventory,127  },128  getInventory: {129    path: '/auth.Inventory/GetInventory',130    requestStream: false,131    responseStream: false,132    requestType: inventory_pb.Inventory,133    responseType: inventory_pb.Inventory,134    requestSerialize: serialize_inventory_Inventory,135    requestDeserialize: deserialize_inventory_Inventory,136    responseSerialize: serialize_inventory_Inventory,137    responseDeserialize: deserialize_inventory_Inventory,138  },139  listInventories: {140    path: '/auth.Inventory/ListInventories',141    requestStream: false,142    responseStream: false,143    requestType: inventory_pb.Inventory,144    responseType: inventory_pb.InventoryList,145    requestSerialize: serialize_inventory_Inventory,146    requestDeserialize: deserialize_inventory_Inventory,147    responseSerialize: serialize_inventory_InventoryList,148    responseDeserialize: deserialize_inventory_InventoryList,149  },150  updateInventory: {151    path: '/auth.Inventory/UpdateInventory',152    requestStream: false,153    responseStream: false,154    requestType: inventory_pb.Inventory,155    responseType: inventory_pb.Inventory,156    requestSerialize: serialize_inventory_Inventory,157    requestDeserialize: deserialize_inventory_Inventory,158    responseSerialize: serialize_inventory_Inventory,159    responseDeserialize: deserialize_inventory_Inventory,160  },161  deleteInventory: {162    path: '/auth.Inventory/DeleteInventory',163    requestStream: false,164    responseStream: false,165    requestType: inventory_pb.Inventory,166    responseType: inventory_pb.Inventory,167    requestSerialize: serialize_inventory_Inventory,168    requestDeserialize: deserialize_inventory_Inventory,169    responseSerialize: serialize_inventory_Inventory,170    responseDeserialize: deserialize_inventory_Inventory,171  },172  createProduct: {173    path: '/auth.Inventory/CreateProduct',174    requestStream: false,175    responseStream: false,176    requestType: product_pb.Product,177    responseType: product_pb.Product,178    requestSerialize: serialize_product_Product,179    requestDeserialize: deserialize_product_Product,180    responseSerialize: serialize_product_Product,181    responseDeserialize: deserialize_product_Product,182  },183  getProduct: {184    path: '/auth.Inventory/GetProduct',185    requestStream: false,186    responseStream: false,187    requestType: product_pb.Product,188    responseType: product_pb.Product,189    requestSerialize: serialize_product_Product,190    requestDeserialize: deserialize_product_Product,191    responseSerialize: serialize_product_Product,192    responseDeserialize: deserialize_product_Product,193  },194  listProducts: {195    path: '/auth.Inventory/ListProducts',196    requestStream: false,197    responseStream: false,198    requestType: product_pb.Product,199    responseType: product_pb.ProductList,200    requestSerialize: serialize_product_Product,201    requestDeserialize: deserialize_product_Product,202    responseSerialize: serialize_product_ProductList,203    responseDeserialize: deserialize_product_ProductList,204  },205  updateProduct: {206    path: '/auth.Inventory/UpdateProduct',207    requestStream: false,208    responseStream: false,209    requestType: product_pb.Product,210    responseType: product_pb.Product,211    requestSerialize: serialize_product_Product,212    requestDeserialize: deserialize_product_Product,213    responseSerialize: serialize_product_Product,214    responseDeserialize: deserialize_product_Product,215  },216  deleteProduct: {217    path: '/auth.Inventory/DeleteProduct',218    requestStream: false,219    responseStream: false,220    requestType: product_pb.Product,221    responseType: product_pb.Product,222    requestSerialize: serialize_product_Product,223    requestDeserialize: deserialize_product_Product,224    responseSerialize: serialize_product_Product,225    responseDeserialize: deserialize_product_Product,226  },227};...index.js
Source:index.js  
...66      if ('string' === typeof s) {67        rtn = s;68      } else if ('number' === typeof s.nodeType) {69        // make it go through the serialization logic70        rtn = serialize(s, context, null, target);71      } else {72        rtn = String(s);73      }74    } else if (!cancelled) {75      // default serialization logic76      switch (nodeType) {77        case 1 /* element */:78          rtn = exports.serializeElement(node, context, eventTarget);79          break;80        case 2 /* attribute */:81          rtn = exports.serializeAttribute(node);82          break;83        case 3 /* text */:84          rtn = exports.serializeText(node);85          break;86        case 8 /* comment */:87          rtn = exports.serializeComment(node);88          break;89        case 9 /* document */:90          rtn = exports.serializeDocument(node, context, eventTarget);91          break;92        case 10 /* doctype */:93          rtn = exports.serializeDoctype(node);94          break;95        case 11 /* document fragment */:96          rtn = exports.serializeDocumentFragment(node, context, eventTarget);97          break;98      }99    }100    if ('function' === typeof fn) {101      node.removeEventListener('serialize', fn, false);102    }103  }104  return rtn || '';105}106/**107 * Serialize an Attribute node.108 */109function serializeAttribute (node, opts) {110  return node.name + '="' + encode(node.value, extend({111    named: true112  }, opts)) + '"';113}114/**115 * Serialize a DOM element.116 */117function serializeElement (node, context, eventTarget) {118  var c, i, l;119  var name = node.nodeName.toLowerCase();120  // opening tag121  var r = '<' + name;122  // attributes123  for (i = 0, c = node.attributes, l = c.length; i < l; i++) {124    r += ' ' + exports.serializeAttribute(c[i]);125  }126  r += '>';127  // child nodes128  r += exports.serializeNodeList(node.childNodes, context, null, eventTarget);129  // closing tag, only for non-void elements130  if (!voidElements[name]) {131    r += '</' + name + '>';132  }133  return r;134}135/**136 * Serialize a text node.137 */138function serializeText (node, opts) {139  return encode(node.nodeValue, extend({140    named: true,141    special: { '<': true, '>': true, '&': true }142  }, opts));143}144/**145 * Serialize a comment node.146 */147function serializeComment (node) {148  return '<!--' + node.nodeValue + '-->';149}150/**151 * Serialize a Document node.152 */153function serializeDocument (node, context, eventTarget) {154  return exports.serializeNodeList(node.childNodes, context, null, eventTarget);155}156/**157 * Serialize a DOCTYPE node.158 * See: http://stackoverflow.com/a/10162353159 */160function serializeDoctype (node) {161  var r = '<!DOCTYPE ' + node.name;162  if (node.publicId) {163    r += ' PUBLIC "' + node.publicId + '"';164  }165  if (!node.publicId && node.systemId) {166    r += ' SYSTEM';167  }168  if (node.systemId) {169    r += ' "' + node.systemId + '"';170  }171  r += '>';172  return r;173}174/**175 * Serialize a DocumentFragment instance.176 */177function serializeDocumentFragment (node, context, eventTarget) {178  return exports.serializeNodeList(node.childNodes, context, null, eventTarget);179}180/**181 * Serialize a NodeList/Array of nodes.182 */183function serializeNodeList (list, context, fn, eventTarget) {184  var r = '';185  for (var i = 0, l = list.length; i < l; i++) {186    r += serialize(list[i], context, fn, eventTarget);187  }188  return r;...SZUtilsSerialize.js
Source:SZUtilsSerialize.js  
1/**2 * @file æä¾form Serializeå¸¸ç¨æ¹æ³ï¼å¼ç¨è·¯å¾ï¼<script type="text/javascript" src="${path}/static/js/utils/SZUtilsSerialize.js"></script>3 * @version v1.0.04 * @since 2017-05-025 * @author hyc6 */7/**8 * @desc SZUtilsSerialize æä¾form Serializeå¸¸ç¨æ¹æ³9 * @version v1.0.010 * @namespace SZUtilsSerialize11 * @author hyc12 * @since 2017-05-0213 * @example SZUtilsSerialize.serializeObject(form)14 * @example SZUtilsSerialize.serializeObjectWithComma(form)15 * @example SZUtilsSerialize.form_serializeObject(form)16 */17var SZUtilsSerialize = SZUtilsSerialize || {};18/**19 * @desc å°form表åå
ç´ çå¼åºååæå¯¹è±¡ï¼å¤å¼åå第ä¸ä¸ª20 * @param {jQueryObject}21 *            form 表å22 * @returns {object} 对象23 * @past FxzUtils_serializeObject(form)24 * @example SZUtilsSerialize.serializeObject(form)25 * @requires jQuery26 */27SZUtilsSerialize.serializeObject = function(form) {28	var _obj = {}; // å®ä¹å¯¹è±¡29	// æè¡¨ååºååææ°ç»30	$.each(form.serializeArray(), function(index) {31		var _name = this['name'];32		var _value = this['value'];33		if (!_obj[_name]) {34			_obj[_name] = _value;35		}36	});37	return _obj;38};39/**40 * @desc å°form表åå
ç´ çå¼åºååæå¯¹è±¡ï¼å¤å¼ç¨éå·éå¼41 * @param {jQueryObject}42 *            form 表å43 * @returns {object} 对象44 * @past Fsy.serializeObject(form)45 * @example SZUtilsSerialize.serializeObjectWithComma(form)46 * @requires jQuery47 */48SZUtilsSerialize.serializeObjectWithComma = function(form) {49	var o = {};50	$.each(form.serializeArray(), function(index) {51		if (o[this['name']]) {52			o[this['name']] = o[this['name']] + "," + this['value'];53		} else {54			o[this['name']] = this['value'];55		}56	});57	return o;58};59/**60 * @desc å°form表åå
ç´ çå¼åºååæå¯¹è±¡ï¼è¡¨å使ç¨61 * @param {jQueryObject}62 *            form 表å63 * @returns {object} 对象64 * @example SZUtilsSerialize.form_serializeObject(form)65 * @requires jQuery66 */67SZUtilsSerialize.form_serializeObject = function(form) {68	var _obj = {}; // å®ä¹å¯¹è±¡69	var repeat = "";70	// æè¡¨ååºååææ°ç»71	$.each(form.serializeArray(), function(index) {72		var _name = this['name'];73		var _value = this['value'];74		if (!_obj[_name]) {75			if (/^AFCOL\d+CFCOL\d+$/.test(_name)) {76				repeat += repeat == "" ? _name : "," + _name;77				var param = [];78				$.each(form.find("[name='" + _name + "']").serializeArray(),79						function(i) {80							param.push(this['value']);81						});82				_obj[_name] = param;83			} else {84				_obj[_name] = _value;85			}86		} else {87			if (/^AFCOL\d+$/.test(_name)) {88				_obj[_name] = _obj[_name] + "," + _value;89			}90		}91	});92	_obj["SZFORMREPEAT"] = repeat;93	return _obj;...function-toString-object-literals.js
Source:function-toString-object-literals.js  
1description(2"This test checks that object literals are serialized properly. " +3"It's needed in part because JavaScriptCore converts numeric property names to string and back."4);5function compileAndSerialize(expression)6{7    var f = eval("(function () { return " + expression + "; })");8    var serializedString = f.toString();9    serializedString = serializedString.replace(/[ \t\r\n]+/g, " ");10    serializedString = serializedString.replace("function () { return ", "");11    serializedString = serializedString.replace("; }", "");12    return serializedString;13}14shouldBe("compileAndSerialize('a = { 1: null }')", "'a = { 1: null }'");15shouldBe("compileAndSerialize('a = { 0: null }')", "'a = { 0: null }'");16shouldBe("compileAndSerialize('a = { 1.0: null }')", "'a = { 1.0: null }'");17shouldBe("compileAndSerialize('a = { \"1.0\": null }')", "'a = { \"1.0\": null }'");18shouldBe("compileAndSerialize('a = { 1e-500: null }')", "'a = { 1e-500: null }'");19shouldBe("compileAndSerialize('a = { 1e-300: null }')", "'a = { 1e-300: null }'");20shouldBe("compileAndSerialize('a = { 1e300: null }')", "'a = { 1e300: null }'");21shouldBe("compileAndSerialize('a = { 1e500: null }')", "'a = { 1e500: null }'");22shouldBe("compileAndSerialize('a = { NaN: null }')", "'a = { NaN: null }'");23shouldBe("compileAndSerialize('a = { Infinity: null }')", "'a = { Infinity: null }'");24shouldBe("compileAndSerialize('a = { \"1\": null }')", "'a = { \"1\": null }'");25shouldBe("compileAndSerialize('a = { \"1hi\": null }')", "'a = { \"1hi\": null }'");26shouldBe("compileAndSerialize('a = { \"\\\'\": null }')", "'a = { \"\\\'\": null }'");27shouldBe("compileAndSerialize('a = { \"\\\\\"\": null }')", "'a = { \"\\\\\"\": null }'");28shouldBe("compileAndSerialize('a = { get x() { } }')", "'a = { get x() { } }'");29shouldBe("compileAndSerialize('a = { set x(y) { } }')", "'a = { set x(y) { } }'");30shouldThrow("compileAndSerialize('a = { --1: null }')");31shouldThrow("compileAndSerialize('a = { -NaN: null }')");32shouldThrow("compileAndSerialize('a = { -0: null }')");33shouldThrow("compileAndSerialize('a = { -0.0: null }')");34shouldThrow("compileAndSerialize('a = { -Infinity: null }')");...Using AI Code Generation
1const { serialize } = require('playwright/lib/utils/serializable');2const { chromium } = require('playwright');3(async () => {4  const browser = await chromium.launch({ headless: false });5  const page = await browser.newPage();6  const element = await page.$('input[name="q"]');7  const serializedElement = serialize(element);8  console.log(serializedElement);9  await browser.close();10})();11{12  page: {13    browser: {14      context: {15      }16    }17  }18}19const { serialize, deserialize } = require('playwright/lib/utils/serializable');20const { chromium } = require('playwright');21(async () => {22  const browser = await chromium.launch({ headless: false });23  const page = await browser.newPage();24  const element = await page.$('input[name="q"]');25  const serializedElement = serialize(element);26  const deserializedElement = deserialize(page, serializedElement);27  console.log(deserializedElement);28  await browser.close();29})();30ElementHandle {31  _context: BrowserContext {32    _options: {33      _timeoutSettings: TimeoutSettings { _defaultTimeout: 30000 },34      _logger: Logger {Using AI Code Generation
1const { serialize } = require('playwright/lib/utils/serializable');2const { serialize } = require('puppeteer/lib/cjs/puppeteer/common/JSHandle.js');3const { serialize } = require('playwright/lib/utils/serializable');4const { chromium } = require('playwright');5(async () => {6  const browser = await chromium.launch();7  const page = await browser.newPage();8  const title = await page.title();9  console.log('Title:', serialize(title));10  await browser.close();11})();12[MIT](LICENSE)Using AI Code Generation
1const { serialize } = require('playwright/lib/server/frames');2const { Frame } = require('playwright/lib/server/frames');3const { Page } = require('playwright/lib/server/page');4const { ElementHandle } = require('playwright/lib/server/dom');5const { JSHandle } = require('playwright/lib/server/jsHandle');6const { CDPSession } = require('playwright/lib/server/cdpsession');7const { Connection } = require('playwright/lib/server/connection');8const { Protocol } = require('playwright/lib/server/protocol');9const { WebSocketTransport } = require('playwright/lib/server/webSocketTransport');10const { Browser } = require('playwright/lib/server/browser');11const { BrowserServer } = require('playwright/lib/server/browserServer');12const { BrowserContext } = require('playwright/lib/server/browserContext');13const { ChromiumBrowser } = require('playwright/lib/server/chromium/chromiumBrowser');14const { ChromiumBrowserContext } = require('playwright/lib/server/chromium/chromiumBrowserContext');15const { ChromiumPage } = require('playwright/lib/server/chromium/chromiumPage');16const { ChromiumCDPSession } = require('playwright/lib/server/chromium/chromiumConnection');17const { ChromiumConnection } = require('playwright/lib/server/chromium/chromiumConnection');18const { FFPage } = require('playwright/lib/server/firefox/ffPage');19const { FFSession } = require('playwright/lib/server/firefox/ffConnection');20const { FFConnection } = require('playwright/lib/server/firefox/ffConnection');21const { WebKitPage } = require('playwright/lib/server/webkit/webkitPage');22const { WebKitSession } = require('playwright/lib/server/webkit/webkitConnection');23const { WebKitConnection } = require('playwright/lib/server/webkit/webkitConnection');24const { BrowserContextBase } = require('playwright/lib/server/browserContextBase');25const { BrowserType } = require('playwright/lib/server/browserType');26const { TimeoutError } = require('playwright/lib/errors');27const { helper } = require('playwright/lib/helper');28const { serialize } = require('playwright/lib/server/frames');29const { Frame } = require('playwright/lib/server/frames');30const { Page } = require('playwright/lib/server/page');31const { ElementHandle } = require('playwrightUsing AI Code Generation
1const { serialize } = require('playwright/lib/protocol/serializers');2const { parse } = require('playwright/lib/protocol/parser');3const obj = {4  c: {5  },6};7const serialized = serialize(obj);8console.log(serialized);9const deserialized = parse(serialized);10console.log(deserialized);11const { serialize } = require('playwright/lib/protocol/serializers');12const { parse } = require('playwright/lib/protocol/parser');13const obj = {14  c: {15  },16};17const serialized = serialize(obj);18console.log(serialized);19const deserialized = parse(serialized);20console.log(deserialized);21const { serialize } = require('playwright/lib/protocol/serializers');22const { parse } = require('playwright/lib/protocol/parser');23const obj = {24  c: {25  },26};27const serialized = serialize(obj);28console.log(serialized);29const deserialized = parse(serialized);30console.log(deserialized);Using AI Code Generation
1const { serialize } = require('playwright/lib/server/serializers');2const obj = {a: 1, b: 2, c: [3, 4, 5]};3console.log(serialize(obj));4const { serialize } = require('playwright/lib/server/serializers');5const obj = {a: 1, b: 2, c: [3, 4, 5]};6console.log(serialize(obj));7const { serialize } = require('playwright/lib/server/serializers');8const obj = {a: 1, b: 2, c: [3, 4, 5]};9console.log(serialize(obj));10const { serialize } = require('playwright/lib/server/serializers');11const obj = {a: 1, b: 2, c: [3, 4, 5]};12console.log(serialize(obj));13const { serialize } = require('playwright/lib/server/serializers');14const obj = {a: 1, b: 2, c: [3, 4, 5]};15console.log(serialize(obj));16const { serialize } = require('playwright/lib/server/serializers');17const obj = {a: 1, b: 2, c: [3, 4, 5]};18console.log(serialize(obj));Using AI Code Generation
1const { serialize } = require('playwright/lib/server/serializers/serializers');2const value = await page.$eval('h1', (el) => el.innerText);3const serializedValue = serialize(value);4console.log(serializedValue);5{6}7const { serialize } = require('playwright/lib/server/serializers/serializers');8const value = await page.$eval('h1', (el) => el.innerText);9const serializedValue = JSON.stringify(serialize(value));10console.log(serializedValue);11{"type":"string","value":"Hello World!"}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!!
