re = /(?<=^|[\n;](?:[\t ]*(?:\w+ )?)?)(?:(?:const\s*|let\s*|var\s*)?(?<imports>(?:[$_\p{ID_Start}][$\u200C\u200D\p{ID_Continue}]*)|(?<=const\s*|let\s*|var\s*)(?:[\w\t\n\r "$'*,.\/:{}-]+?))\s*=\s*)?(?:await\s+)?(?<expression>import\((?<specifier>[\S\t\n\r]+?)(?:,\s*(?<options>\{\s*assert:.+[\w\t\n\r "':]+\}\s*\}))?\))/
str = 'await import(foo)
await import(\'foo\')
const foo = await import(\'bar\')
const foo = await import(bar)
const promise = import(\'./foo\');
const { readPackage } = await import(\'read-pkg\')
const {
readPackageUp,
readPackageUpSync
} = await import(\'read-pkg\');
const {
addFive,
addFour,
addThree,
addTwo,
squareFive,
squareFour,
squareThree,
squareTwo
} = await import(\'./lib\')
await import(\'buzz\').then(() => console.log(res)).catch(() => ({}))
var g;const{foo}=await import(\'bar\');const{ foo }=await import(\'bar\')
import(\'buzz\').then(() => console.log(res)).catch(() => ({}))
import(\'buzz\').then(() => console.log(res)).catch(() => ({}))
import(\'buzz\').catch(() => ({}))
const foo = "./utils.mjs"; await import(foo)
const { default: barData } =
await import(\'./bar.json\');
const { default: barData } =
await import(\'./bar.json\', { assert: { type: \'json\' } });
(async () => {
if (somethingIsTrue) {
// import module for side effects
await import("/modules/my-module.js");
}
})();
await import(\'__tests__/report.json\', {
assert: { type: \'json\' }
})
await import(\'__tests__/report.json\', {
assert: { type: \'json\' }
})
(async () => {
if (somethingIsTrue) {
const {
default: myDefault,
foo,
bar,
} = await import("/modules/my-module.js");
}
})();
const main = document.querySelector("main");
for (const link of document.querySelectorAll("nav > a")) {
link.addEventListener("click", (e) => {
e.preventDefault();
import("/modules/my-module.js")
.then((module) => {
module.loadPageInto(main);
})
.then((module) => {
module.loadPageInto(main);
})
.then((module) => {
module.loadPageInto(main);
})
.catch((err) => {
main.textContent = err.message;
});
});
}
let myModule;
if (typeof window === "undefined") {
myModule = await import("module-used-on-server");
} else {
myModule = await import("module-used-in-browser");
}
Promise.all(
Array.from({ length: 10 }).map((_, index) =>
import(`/modules/module-${index}.js`)
)
).then((modules) => modules.forEach((module) => module.load()));
Array.from({ length: 10 }).map((_, index) => {
return import(`/modules/module-${index}.js`)
})
\'await import("foo")\'
"await import(\'foo\')"
// await import(\'foo\')
/**
* @example
* const { readPackageUp } = await import(\'read-pkg\')
*/
'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html