%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const common = require('../common'); const fixtures = require('../common/fixtures'); const assert = require('assert'); function createURL(mime, body) { return `data:${mime},${body}`; } function createBase64URL(mime, body) { return `data:${mime};base64,${Buffer.from(body).toString('base64')}`; } (async () => { { const body = 'export default {a:"aaa"};'; const plainESMURL = createURL('text/javascript', body); const ns = await import(plainESMURL); assert.deepStrictEqual(Object.keys(ns), ['default']); assert.strictEqual(ns.default.a, 'aaa'); const importerOfURL = createURL( 'text/javascript', `export {default as default} from ${JSON.stringify(plainESMURL)}` ); assert.strictEqual( (await import(importerOfURL)).default, ns.default ); const base64ESMURL = createBase64URL('text/javascript', body); assert.notStrictEqual( await import(base64ESMURL), ns ); } { const body = 'export default import.meta.url;'; const plainESMURL = createURL('text/javascript', body); const ns = await import(plainESMURL); assert.deepStrictEqual(Object.keys(ns), ['default']); assert.strictEqual(ns.default, plainESMURL); } { const body = 'export default import.meta.url;'; const plainESMURL = createURL('text/javascript;charset=UTF-8', body); const ns = await import(plainESMURL); assert.deepStrictEqual(Object.keys(ns), ['default']); assert.strictEqual(ns.default, plainESMURL); } { const body = 'export default import.meta.url;'; const plainESMURL = createURL('text/javascript;charset="UTF-8"', body); const ns = await import(plainESMURL); assert.deepStrictEqual(Object.keys(ns), ['default']); assert.strictEqual(ns.default, plainESMURL); } { const body = 'export default import.meta.url;'; const plainESMURL = createURL('text/javascript;;a=a;b=b;;', body); const ns = await import(plainESMURL); assert.deepStrictEqual(Object.keys(ns), ['default']); assert.strictEqual(ns.default, plainESMURL); } { const ns = await import('data:application/json;foo="test,"this"', { assert: { type: 'json' } }); assert.deepStrictEqual(Object.keys(ns), ['default']); assert.strictEqual(ns.default, 'this'); } { const ns = await import(`data:application/json;foo=${ encodeURIComponent('test,') },0`, { assert: { type: 'json' } }); assert.deepStrictEqual(Object.keys(ns), ['default']); assert.strictEqual(ns.default, 0); } { await assert.rejects(async () => import('data:application/json;foo="test,",0', { assert: { type: 'json' } }), { name: 'SyntaxError', message: /Unexpected end of JSON input/ }); } { const body = '{"x": 1}'; const plainESMURL = createURL('application/json', body); const ns = await import(plainESMURL, { assert: { type: 'json' } }); assert.deepStrictEqual(Object.keys(ns), ['default']); assert.strictEqual(ns.default.x, 1); } { const body = '{"default": 2}'; const plainESMURL = createURL('application/json', body); const ns = await import(plainESMURL, { assert: { type: 'json' } }); assert.deepStrictEqual(Object.keys(ns), ['default']); assert.strictEqual(ns.default.default, 2); } { const body = 'null'; const plainESMURL = createURL('invalid', body); try { await import(plainESMURL); common.mustNotCall()(); } catch (e) { assert.strictEqual(e.code, 'ERR_INVALID_URL'); } } { const plainESMURL = 'data:text/javascript,export%20default%202'; const module = await import(plainESMURL); assert.strictEqual(module.default, 2); } { const plainESMURL = `data:text/javascript,${encodeURIComponent(`import ${JSON.stringify(fixtures.fileURL('es-module-url', 'empty.js'))}`)}`; await import(plainESMURL); } })().then(common.mustCall());