Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F101346759
index.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sat, Feb 8, 05:53
Size
2 KB
Mime Type
text/x-java
Expires
Mon, Feb 10, 05:53 (2 d)
Engine
blob
Format
Raw Data
Handle
24140580
Attached To
rOACCT Open Access Compliance Check Tool (OACCT)
index.js
View Options
import { Parser } from 'acorn';
import acornJsx from 'acorn-jsx';
import acornDynamicImport from 'acorn-dynamic-import';
import Program from './program/Program.js';
import { features, matrix } from './support.js';
import getSnippet from './utils/getSnippet.js';
const parser = Parser.extend(acornDynamicImport, acornJsx());
const dangerousTransforms = ['dangerousTaggedTemplateString', 'dangerousForOf'];
export function target(target) {
const targets = Object.keys(target);
let bitmask = targets.length
? 0b11111111111111111111111
: 0b00010000000000000000001;
Object.keys(target).forEach(environment => {
const versions = matrix[environment];
if (!versions)
throw new Error(
`Unknown environment '${environment}'. Please raise an issue at https://github.com/bublejs/buble/issues`
);
const targetVersion = target[environment];
if (!(targetVersion in versions))
throw new Error(
`Support data exists for the following versions of ${environment}: ${Object.keys(
versions
).join(
', '
)}. Please raise an issue at https://github.com/bublejs/buble/issues`
);
const support = versions[targetVersion];
bitmask &= support;
});
const transforms = Object.create(null);
features.forEach((name, i) => {
transforms[name] = !(bitmask & (1 << i));
});
dangerousTransforms.forEach(name => {
transforms[name] = false;
});
return transforms;
}
export function transform(source, options = {}) {
let ast;
let jsx = null;
try {
ast = parser.parse(source, {
ecmaVersion: 10,
preserveParens: true,
sourceType: 'module',
allowAwaitOutsideFunction: true,
allowReturnOutsideFunction: true,
allowHashBang: true,
onComment: (block, text) => {
if (!jsx) {
const match = /@jsx\s+([^\s]+)/.exec(text);
if (match) jsx = match[1];
}
}
});
options.jsx = jsx || options.jsx;
} catch (err) {
err.snippet = getSnippet(source, err.loc);
err.toString = () => `${err.name}: ${err.message}\n${err.snippet}`;
throw err;
}
const transforms = target(options.target || {});
Object.keys(options.transforms || {}).forEach(name => {
if (name === 'modules') {
if (!('moduleImport' in options.transforms))
transforms.moduleImport = options.transforms.modules;
if (!('moduleExport' in options.transforms))
transforms.moduleExport = options.transforms.modules;
return;
}
if (!(name in transforms)) throw new Error(`Unknown transform '${name}'`);
transforms[name] = options.transforms[name];
});
if (options.objectAssign === true) options.objectAssign = 'Object.assign';
return new Program(source, ast, transforms, options).export(options);
}
export { version as VERSION } from '../package.json';
Event Timeline
Log In to Comment