How to use polyfill-library - 10 common examples

To help you get started, weโ€™ve selected a few polyfill-library examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github Financial-Times / polyfill-service / packages / polyfill-service / service / routes / docs.js View on Github external
appversion: appVersion,
		pageName: ((Number.isInteger(Number.parseInt(req.params[0], 10)) ? req.params[1] : req.params[0]) || 'index').replace(/\/$/, ''),
		rumEnabled: !!process.env.RUM_MYSQL_DSN,
		host: process.env.HOSTNAME || req.protocol + '://' + req.get('host') || 'https://polyfill.io'
	}, docsData);

	if (locals.pageName === 'usage') {

		// Set the ttl to one hour for the usage page so the graphs are
		// updated more frequently, overriding the default cache-control
		// behaviour set in index.js
		const one_hour = 60 * 60;
		const one_week = one_hour * 24 * 7;
		res.set('Cache-Control', 'public, max-age=' + one_hour + ', stale-while-revalidate=' + one_week + ', stale-if-error=' + one_week);
	} else if (locals.pageName === 'contributing/authoring-polyfills') {
		locals.baselines = require('polyfill-library/lib/UA').getBaselines();
	}

	template(locals.pageName)
		.then(templFn => res.send(templFn(locals)))
		.catch(err => {
			console.log(err);
			next();
		})
	;
}
github Financial-Times / polyfill-service / src / data / polyfills.js View on Github external
polyfills: aliases[alias]
						});
					}
				}
			}
		}
		for (const polyfill of await polyfillLibrary.listAllPolyfills()) {
			// Polyfills which start with _ are internal functions used by other polyfills, they should not be displayed on the website.
			if (!polyfill.startsWith("_") && !polyfill.startsWith("Intl.~locale")) {
				const polyfillInfo = Object.assign(
					{
						name: polyfill,
						labelID: `${snakeCase(polyfill)}_label`,
						license: "MIT"
					},
					await polyfillLibrary.describePolyfill(polyfill)
				);
				polyfillInfo.licenseLowerCase = polyfillInfo.license.toLowerCase();
				polyfills.push(polyfillInfo);
			}
		}
	}
	return {
		polyfills,
		polyfillAliases
	};
};
github Financial-Times / polyfill-service / server / lib / get-polyfill-parameters.js View on Github external
"use strict";

const latestVersion = require("polyfill-library/package.json").version;
const featuresfromQueryParam = require("./features-from-query-parameter");

module.exports = function getPolyfillParameters(req = {}) {
	const query = req.query || {};
	const path = req.path || "";
	const { excludes = "", features = "default", rum, unknown = "polyfill", version, callback } = query;
	const uaString = query.ua || (req.headers && req.headers["user-agent"]) || (typeof req.get === "function" && req.get("User-Agent")) || "";
	const compression = query.compression !== "identity" ? query.compression : undefined;

	return {
		excludes: excludes ? excludes.split(",") : [],
		features: featuresfromQueryParam(features, query.flags),
		minify: path.endsWith(".min.js"),
		rum: Number.parseInt(rum, 10) === 1,
		stream: false,
		callback: /^[\w\.]+$/.test(callback || "") ? callback : false,
github Financial-Times / polyfill-service / packages / polyfill-service / server / lib / get-polyfill-parameters.js View on Github external
"use strict";

const latestVersion = require("polyfill-library/package.json").version;
const featuresfromQueryParam = require("./features-from-query-parameter");

module.exports = function getPolyfillParameters(req = {}) {
	const query = req.query || {};
	const path = req.path || "";
	const { excludes = "", features = "default", rum, unknown = "polyfill", version = latestVersion, callback } = query;
	const uaString = query.ua || (req.headers && req.headers["user-agent"]) || (typeof req.get === "function" && req.get("User-Agent")) || "";
	const compression = query.compression !== "identity" ? query.compression : undefined;

	return {
		excludes: excludes ? excludes.split(",") : [],
		features: featuresfromQueryParam(features, query.flags),
		minify: path.endsWith(".min.js"),
		rum: Number.parseInt(rum, 10) === 1,
		stream: false,
		callback: /^[\w\.]+$/.test(callback || "") ? callback : false,
github Financial-Times / polyfill-service-url-builder / src / index.js View on Github external
async function generatePolyfillURL(features = []) {
    const polyfillUrl = 'https://cdn.polyfill.io/v3/polyfill.min.js';
    const aliases = await polyfillLibrary.listAliases();
    const polyfills = await polyfillLibrary.listAllPolyfills();
    const featuresInPolyfillLibrary = new Set;

    for (const feature of features) {
        if (polyfills.includes(feature)) {
            featuresInPolyfillLibrary.add(feature);
        } else if (feature in aliases) {
            featuresInPolyfillLibrary.add(feature);
        } else if (feature.includes('.prototype')) {
            const featureConstructor = feature.split('.prototype')[0];
            if (polyfills.includes(featureConstructor)) {
                featuresInPolyfillLibrary.add(featureConstructor);
            } else if (featureConstructor in aliases) {
                featuresInPolyfillLibrary.add(featureConstructor);
            }
        }
github Financial-Times / polyfill-service-url-builder / src / index.js View on Github external
async function generatePolyfillURL(features = []) {
    const polyfillUrl = 'https://cdn.polyfill.io/v3/polyfill.min.js';
    const aliases = await polyfillLibrary.listAliases();
    const polyfills = await polyfillLibrary.listAllPolyfills();
    const featuresInPolyfillLibrary = new Set;

    for (const feature of features) {
        if (polyfills.includes(feature)) {
            featuresInPolyfillLibrary.add(feature);
        } else if (feature in aliases) {
            featuresInPolyfillLibrary.add(feature);
        } else if (feature.includes('.prototype')) {
            const featureConstructor = feature.split('.prototype')[0];
            if (polyfills.includes(featureConstructor)) {
                featuresInPolyfillLibrary.add(featureConstructor);
            } else if (featureConstructor in aliases) {
                featuresInPolyfillLibrary.add(featureConstructor);
            }
        }
    }
github Financial-Times / polyfill-service / packages / polyfill-service / server / routes / v3 / polyfill.js View on Github external
"use strict";

const compressBundle = require("../../lib/compress-bundle");
const getPolyfillParameters = require("../../lib/get-polyfill-parameters");
const latestVersion = require("polyfill-library/package.json").version;
const PolyfillLibrary = require("polyfill-library");
const polyfillio_3_25_3 = require("polyfill-library-3.25.3");

async function respondWithBundle(response, params, bundle) {
	const file = await compressBundle(params.compression, bundle);
	const headers = {
		"Cache-Control": "public, s-maxage=31536000, max-age=604800, stale-while-revalidate=604800, stale-if-error=604800",
		"Content-Encoding": params.compression,
		"Content-Type": "application/javascript; charset=utf-8",
		"surrogate-key": "polyfill-service"
	};
	response.status(200);
	response.set(headers);
	response.send(file);
}
github Financial-Times / polyfill-service / packages / polyfill-service / server / lib / create-polyfill-library.js View on Github external
"use strict";

const fs = require("fs");
const path = require("path");
const tmpDir = require("os").tmpdir();
const untar = require("decompress");
const denodeify = require("denodeify");
const readFile = denodeify(fs.readFile);
const brotliDecompress = denodeify(require("iltorb").decompress);
const PolyfillLibrary = require("polyfill-library");
const latestVersion = require("polyfill-library/package.json").version;

module.exports = async function createPolyfillLibrary(version) {
	if (version === latestVersion) {
		return new PolyfillLibrary();
	}

	const polyfillDistTar = await brotliDecompress(await readFile(path.join(__dirname, `../polyfill-library-packages/${version}.tar.br`)));
	const polyfillsPath = path.join(tmpDir, version);
	await untar(polyfillDistTar, tmpDir);

	return new PolyfillLibrary(polyfillsPath);
};
github Financial-Times / polyfill-service / server / routes / v3 / polyfill.js View on Github external
"use strict";

const compressBundle = require("../../lib/compress-bundle");
const getPolyfillParameters = require("../../lib/get-polyfill-parameters");
const latestVersion = require("polyfill-library/package.json").version;
const polyfillio = require("polyfill-library");
const polyfillio_3_27_4 = require("polyfill-library-3.27.4");
const polyfillio_3_25_3 = require("polyfill-library-3.25.3");
const polyfillio_3_25_1 = require("polyfill-library-3.25.1");
const polyfillio_3_28_1 = require("polyfill-library-3.28.1");
const polyfillio_3_34_0 = require("polyfill-library-3.34.0");
const polyfillio_3_35_0 = require("polyfill-library-3.35.0");
const polyfillio_3_36_0 = require("polyfill-library-3.36.0");
const polyfillio_3_37_0 = require("polyfill-library-3.37.0");
const polyfillio_3_38_0 = require("polyfill-library-3.38.0");
const polyfillio_3_39_0 = require("polyfill-library-3.39.0");
const polyfillio_3_40_0 = require("polyfill-library-3.40.0");
const polyfillio_3_41_0 = require("polyfill-library-3.41.0");

async function respondWithBundle(response, params, bundle) {
	const file = await compressBundle(params.compression, bundle);
github CultureHQ / polyfill-lambda / handler.js View on Github external
const makePolyfill = ({ uaString, cache }) => (
  getPolyfillString({ uaString, minify: cache, features, unknown: "polyfill" })
    .then(polyfill => {
      const polyfillHeaders = {
        ...headers,
        "Cache-Control": cache ? "max-age=31536000" : "no-cache",
        "Content-Type": "application/javascript;charset=utf-8"
      };

      return {
        status: 200,
        statusDescription: "OK",
        headers: Object.keys(polyfillHeaders).reduce(
          (accum, key) => ({ ...accum, [key]: [{ key, value: polyfillHeaders[key] }] }), {}
        ),
        body: polyfill
      };
    })