)]}'
{
  "commit": "ba7d0a637c5a8d8d095d4601ce46bb6ba88dc490",
  "tree": "3565466b9b05034e6a7aedffc592bb3379d6e588",
  "parents": [
    "d35b781c7f09505f8a6bf8991ecd904ee7e044dc"
  ],
  "author": {
    "name": "Leandro Lovisolo",
    "email": "lovisolo@google.com",
    "time": "Wed Dec 13 20:41:32 2023 +0000"
  },
  "committer": {
    "name": "SkCQ",
    "email": "skcq-be@skia-corp.google.com.iam.gserviceaccount.com",
    "time": "Wed Dec 13 21:00:24 2023 +0000"
  },
  "message": "[bazel] Prepare demo pages for rules_js migration.\n\nThe follow-up CL https://skia-review.googlesource.com/c/buildbot/+/787697 migrates our repository to rules_js, rules_ts and rules_esbuild. This includes upgrading the underlying \"esbuild\" binary to a newer version, which handles JavaScript/TypeScript imports differently.\n\nTo illustrate, take the following two files:\n\n    // test-sk-demo.ts\n    console.log(\"test-sk-demo: Hello, world!\");\n    import \u0027./test-sk\u0027;\n    console.log(\"test-sk-demo: Goodbye!\");\n\n    // test-sk.ts\n    console.log(\"test-sk: Greetings from test-sk!\")\n\nUnder the esbuild version currently in use, we get the following bundle (non-minified, etc.):\n\n    \"use strict\";\n    (() \u003d\u003e {\n      var __getOwnPropNames \u003d Object.getOwnPropertyNames;\n      var __commonJS \u003d (cb, mod) \u003d\u003e function __require() {\n        return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod \u003d { exports: {} }).exports, mod), mod.exports;\n      };\n\n      // bazel-out/k8-fastbuild/bin/golden/modules/test-sk/test-sk.js\n      var require_test_sk \u003d __commonJS({\n        \"bazel-out/k8-fastbuild/bin/golden/modules/test-sk/test-sk.js\"() {\n          \"use strict\";\n          console.log(\"test-sk: Greetings from test-sk!\");\n        }\n      });\n\n      // bazel-out/k8-fastbuild/bin/golden/modules/test-sk/test-sk-demo.js\n      var require_test_sk_demo \u003d __commonJS({\n        \"bazel-out/k8-fastbuild/bin/golden/modules/test-sk/test-sk-demo.js\"(exports) {\n          Object.defineProperty(exports, \"__esModule\", { value: true });\n          console.log(\"test-sk-demo: A\");\n          require_test_sk();\n          console.log(\"test-sk-demo: B\");\n        }\n      });\n      \"use strict\";\n      require_test_sk_demo();\n    })();\n\nAnd we observe the following in the browser\u0027s console:\n\n    test-sk-demo: Hello, world!\n    test-sk: Greetings from test-sk!\n    test-sk-demo: Goodbye!\n\nUnder the new esbuild version, however, we get the following bundle:\n\n    \"use strict\";\n    (() \u003d\u003e {\n      // golden/modules/test-sk/test-sk.js\n      console.log(\"test-sk: Greetings from test-sk!\");\n\n      // golden/modules/test-sk/test-sk-demo.ts\n      console.log(\"test-sk-demo: Hello, world!\");\n      console.log(\"test-sk-demo: Goodbye!\");\n    })();\n\nWhich produces the following logs:\n\n    test-sk: Greetings from test-sk!\n    test-sk-demo: Hello, world!\n    test-sk-demo: Goodbye!\n\nNotice the \"./test-sk\" import was moved atop, which changes the evaluation order such that test-sk.ts is evaluated before test-sk-demo.ts.\n\nUnfortunately this behavior breaks several demo pages that set up RPC mocks with fetchMock and then import the element under test. Example:\n\n - https://skia.googlesource.com/buildbot/+/af8f7d1d2f41c5067f66863940ec757c7ae3f414/perf/modules/commit-detail-picker-sk/commit-detail-picker-sk-demo.html#21\n - https://skia.googlesource.com/buildbot/+/af8f7d1d2f41c5067f66863940ec757c7ae3f414/perf/modules/commit-detail-picker-sk/commit-detail-picker-sk-demo.ts#39\n\nIn this example, the commit-detail-picker-sk custom element appears in the demo page\u0027s HTML. Due to the import order changes in the new esbuild, this leads to RPC errors because as soon as the custom element is connected to the DOM, it tries to fetch from an endpoint that hasn\u0027t yet been mocked.\n\nI tried forcing the old esbuild behavior in a couple of ways, but none of them worked.\n\nThe solution I found is to rewrite these demo pages so that the custom element is dynamically created and attached to the DOM after we have mocked the necessary endpoints. We already use this pattern in many other demo pages, for example:\n\n - https://skia.googlesource.com/buildbot/+/af8f7d1d2f41c5067f66863940ec757c7ae3f414/golden/modules/triagelog-page-sk/triagelog-page-sk-demo.html#10\n - https://skia.googlesource.com/buildbot/+/af8f7d1d2f41c5067f66863940ec757c7ae3f414/golden/modules/triagelog-page-sk/triagelog-page-sk-demo.ts#41\n\nIn summary, this CL prepares our repository so that the rules_js migration does not break any demo pages.\n\n\nBug: b/314813928\nChange-Id: I0efa886fa9cc7508c2e966e3cbbb5ca9abf37ccf\nReviewed-on: https://skia-review.googlesource.com/c/buildbot/+/789409\nReviewed-by: Kevin Lubick \u003ckjlubick@google.com\u003e\nCommit-Queue: Leandro Lovisolo \u003clovisolo@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "aed0e7fdb576024082cbd0bc75ef84bd789503b1",
      "old_mode": 33188,
      "old_path": "autoroll/modules/arb-config-sk/arb-config-sk-demo.html",
      "new_id": "0dd2391fc5fd74e5a2a5ae5a07210bcc46d03304",
      "new_mode": 33188,
      "new_path": "autoroll/modules/arb-config-sk/arb-config-sk-demo.html"
    },
    {
      "type": "modify",
      "old_id": "d95010f67d6935389e6efda91381b8fb53f7cdb0",
      "old_mode": 33188,
      "old_path": "autoroll/modules/arb-config-sk/arb-config-sk-demo.ts",
      "new_id": "c9aa337d9dbfcf2b916e095327eb39141b9f683b",
      "new_mode": 33188,
      "new_path": "autoroll/modules/arb-config-sk/arb-config-sk-demo.ts"
    },
    {
      "type": "modify",
      "old_id": "f24dd06643a5182b3421bbecf93dea415305ed6f",
      "old_mode": 33188,
      "old_path": "autoroll/modules/arb-scaffold-sk/arb-scaffold-sk-demo.html",
      "new_id": "ab01fcc9742d2f0bc57cbf42e403be72096b49f3",
      "new_mode": 33188,
      "new_path": "autoroll/modules/arb-scaffold-sk/arb-scaffold-sk-demo.html"
    },
    {
      "type": "modify",
      "old_id": "7ebf158518a9afa17fbbacbff9bb57c2e1aca139",
      "old_mode": 33188,
      "old_path": "autoroll/modules/arb-scaffold-sk/arb-scaffold-sk-demo.ts",
      "new_id": "7afed89cd0144929c996f9ef62fc2691dcc2e712",
      "new_mode": 33188,
      "new_path": "autoroll/modules/arb-scaffold-sk/arb-scaffold-sk-demo.ts"
    },
    {
      "type": "modify",
      "old_id": "d96b836a6401425081944e5b9587de90d3d5cc38",
      "old_mode": 33188,
      "old_path": "autoroll/modules/arb-status-sk/arb-status-sk-demo.html",
      "new_id": "a04a065454d3ed5ae332108986c99759178b74de",
      "new_mode": 33188,
      "new_path": "autoroll/modules/arb-status-sk/arb-status-sk-demo.html"
    },
    {
      "type": "modify",
      "old_id": "61479a7e6672f983d44bf80148147fe727a3fbc2",
      "old_mode": 33188,
      "old_path": "autoroll/modules/arb-status-sk/arb-status-sk-demo.ts",
      "new_id": "678a0b1b0e7c0c5c1fefbc9de41066038bef4936",
      "new_mode": 33188,
      "new_path": "autoroll/modules/arb-status-sk/arb-status-sk-demo.ts"
    },
    {
      "type": "modify",
      "old_id": "a8fbed4cfd2dbe32f5bafa64dd4180422818b4da",
      "old_mode": 33188,
      "old_path": "infra-sk/modules/alogin-sk/alogin-sk-demo.html",
      "new_id": "9617d6ca2791088a674543a649eec56b35363c12",
      "new_mode": 33188,
      "new_path": "infra-sk/modules/alogin-sk/alogin-sk-demo.html"
    },
    {
      "type": "modify",
      "old_id": "36ead3feaa9f848d67d6e8568875c57ca221b61b",
      "old_mode": 33188,
      "old_path": "infra-sk/modules/alogin-sk/alogin-sk-demo.ts",
      "new_id": "ff017b247ee6927fc07cdc564f109e71dbacc1eb",
      "new_mode": 33188,
      "new_path": "infra-sk/modules/alogin-sk/alogin-sk-demo.ts"
    },
    {
      "type": "modify",
      "old_id": "71c4a030e0e2860606f149d6485f3c0573923fa2",
      "old_mode": 33188,
      "old_path": "perf/modules/alerts-page-sk/alerts-page-sk-demo.ts",
      "new_id": "b6a29cc4b6af9a1ce3663180a6974bd771e03d00",
      "new_mode": 33188,
      "new_path": "perf/modules/alerts-page-sk/alerts-page-sk-demo.ts"
    },
    {
      "type": "modify",
      "old_id": "01b444dbf53b0ecfb873eff47aa9a725f23b71f2",
      "old_mode": 33188,
      "old_path": "perf/modules/cluster-lastn-page-sk/cluster-lastn-page-sk-demo.ts",
      "new_id": "981210417de36a51c47a740d1a349af68b9e34c0",
      "new_mode": 33188,
      "new_path": "perf/modules/cluster-lastn-page-sk/cluster-lastn-page-sk-demo.ts"
    },
    {
      "type": "modify",
      "old_id": "80abb338060870bb302784757fe708763713a3f5",
      "old_mode": 33188,
      "old_path": "perf/modules/commit-detail-picker-sk/commit-detail-picker-sk-demo.html",
      "new_id": "37f1803c81676d55adcf23ce1639b75a60b18daa",
      "new_mode": 33188,
      "new_path": "perf/modules/commit-detail-picker-sk/commit-detail-picker-sk-demo.html"
    },
    {
      "type": "modify",
      "old_id": "255bd9d17bf798bad21e92359dc695d4423b47b6",
      "old_mode": 33188,
      "old_path": "perf/modules/commit-detail-picker-sk/commit-detail-picker-sk-demo.ts",
      "new_id": "4b9ddf1ec9763e69b9a494c24f6e34380f1a9be4",
      "new_mode": 33188,
      "new_path": "perf/modules/commit-detail-picker-sk/commit-detail-picker-sk-demo.ts"
    },
    {
      "type": "modify",
      "old_id": "599770c1d58b14d90cf9aa7f07f30b4571bfa0d0",
      "old_mode": 33188,
      "old_path": "perf/modules/trybot-page-sk/trybot-page-sk-demo.html",
      "new_id": "4adb458f91786f9998ac3b053863182805703918",
      "new_mode": 33188,
      "new_path": "perf/modules/trybot-page-sk/trybot-page-sk-demo.html"
    },
    {
      "type": "modify",
      "old_id": "4d94d2f5b4755daf87c6020098011969ac273253",
      "old_mode": 33188,
      "old_path": "perf/modules/trybot-page-sk/trybot-page-sk-demo.ts",
      "new_id": "74c8ba20a8b894e0f6fbf2e7bad02430dc65566c",
      "new_mode": 33188,
      "new_path": "perf/modules/trybot-page-sk/trybot-page-sk-demo.ts"
    },
    {
      "type": "modify",
      "old_id": "bb84d40de747ac37cf1a2bff7822b4cae0e18841",
      "old_mode": 33188,
      "old_path": "status/modules/capacity-sk/capacity-sk-demo.ts",
      "new_id": "4b1776769bd6a3c2f6235e3cb373b65455e80bf0",
      "new_mode": 33188,
      "new_path": "status/modules/capacity-sk/capacity-sk-demo.ts"
    },
    {
      "type": "modify",
      "old_id": "a713684a26af25945ff765b60adc401389cc04b3",
      "old_mode": 33188,
      "old_path": "status/modules/status-sk/status-sk-demo.ts",
      "new_id": "f8e53c1a0a747e387807544fc243e99d3ec35f98",
      "new_mode": 33188,
      "new_path": "status/modules/status-sk/status-sk-demo.ts"
    },
    {
      "type": "modify",
      "old_id": "fa916af8ff76f17e630dffdf19d4e89a15acb6b6",
      "old_mode": 33188,
      "old_path": "task_scheduler/modules/task-scheduler-scaffold-sk/task-scheduler-scaffold-sk-demo.html",
      "new_id": "4e5c1a34733253f32f293d477379ecda4f515d5e",
      "new_mode": 33188,
      "new_path": "task_scheduler/modules/task-scheduler-scaffold-sk/task-scheduler-scaffold-sk-demo.html"
    },
    {
      "type": "modify",
      "old_id": "32f7c357999c28947c79f45a379559e2aa852d1f",
      "old_mode": 33188,
      "old_path": "task_scheduler/modules/task-scheduler-scaffold-sk/task-scheduler-scaffold-sk-demo.ts",
      "new_id": "c480fb15cf8f8260a4c8bc43ecebe776b7d721fd",
      "new_mode": 33188,
      "new_path": "task_scheduler/modules/task-scheduler-scaffold-sk/task-scheduler-scaffold-sk-demo.ts"
    }
  ]
}
