View URL.js
"use strict";
const conversions = require("webidl-conversions");
const utils = require("./utils.js");
const Impl = require(".//URL-impl.js");
const impl = utils.implSymbol;
function URL(url) {
if (!this || this[impl] || !(this instanceof URL)) {
View 1-service-worker.js
"use strict";
const worker = new Worker("worker.js");
self.onfetch = e => {
e.respondWith(new Promise(resolve => {
const guid = generateGUID();
worker.addEventListener("message", function messageListener({ data: { readableStream, messageId } }) {
if (messageId !== guid) {
View 1-service-worker.js
"use strict";
const worker = new Worker("worker.js");
self.onfetch = e => {
const transform = TransformStream.identity();
e.respondWith(new Response(transform.readable));
// Give the worker the writable end. An identity transform stream will just shuffle
// bytes written there into transform.readable.
View redirecting-github-pages.md

Redirecting GitHub Pages after a repository move

The problem

You have a repository, call it alice/repo. You would like to transfer it to the user bob, so it will become bob/repo.

However, you make heavy use of the GitHub Pages feature, so that people are often accessing https://alice.github.io/repo/. GitHub will helpfully redirect all of your repository stuff hosted on github.com after the move, but will not redirect the GitHub Pages hosted on github.io.

The solution

View web-components-reflection.md

Web components reflection

What is a subset of HTML's reflection rules which we should make easy for web components?

Summary of HTML

HTML's reflection algorithms include:

  • URL strings
  • Enumeration strings ("limited to only known values")
View mixins.md

Discussion of the potential keyword mixin

Web IDL (which is used for writing web specs) would like to introduce a concept of "mixins", which work by adding properties and methods to the mixin target. Currently this is accomplished by

interface MixinTarget { };

[NoInterfaceObject]
interface Mixin { };
MixinTarget implements Mixin;
View adoptedCallback.js
adoptedCallback(oldDocument, newDocument) {
const newWindow = newDocument.defaultView;
if (newWindow) {
// newDocument belongs to a window
const otherConstructor = newWindow.customElements.get(this.localName);
if (otherConstructor && otherConstructor._isFromPolymer) {
Object.setPrototypeOf(this, otherConstructor.prototype);
// Now any customizations that newWindow code has applied to the
View last-with-cancel.js
"use strict";
var pending = { then: function () {} };
// operation must accept as its first argument a cancel token
// if your operation does not support cancelation, use a shim:
// last((_, ...args) => realOp(...args));
module.exports = operation => {
let latestPromise = null;
let previousCancel = null;
View dot-promise-is-for-adapting-old-apis.js
function xhrAdapted(url, { cancelToken } = {}) {
const xhr = new XMLHttpRequest();
return new Promise((resolve, reject, cancel) => {
xhr.addEventListener("load", () => resolve(xhr.responseText));
xhr.addEventListener("error", () => reject(new Error("could not XHR")));
if (!cancelToken) return;
cancelToken.promise.then(reason => {
cancel(reason);
xhr.abort();
View catch-cancel.sjs
// This does not work at all, for unknown reasons:
let catch = macro {
case {
try {
$tryBody ...
} $name ($exception:ident) {
$catchBody ...
}
} => {
return #{