(expr, isGlobalWorker = false)
| 263 | * @returns {boolean | void} true when handled |
| 264 | */ |
| 265 | const handleNewWorker = (expr, isGlobalWorker = false) => { |
| 266 | if (expr.arguments.length === 0 || expr.arguments.length > 2) { |
| 267 | return; |
| 268 | } |
| 269 | const [arg1, arg2] = expr.arguments; |
| 270 | if (arg1.type === "SpreadElement") return; |
| 271 | if (arg2 && arg2.type === "SpreadElement") return; |
| 272 | |
| 273 | /** @type {string} */ |
| 274 | let url; |
| 275 | /** @type {Range} */ |
| 276 | let range; |
| 277 | /** @type {boolean} */ |
| 278 | let needNewUrl = false; |
| 279 | |
| 280 | if (arg1.type === "MemberExpression" && isMetaUrl(parser, arg1)) { |
| 281 | url = getUrl(parser.state.module); |
| 282 | range = [ |
| 283 | /** @type {Range} */ (arg1.range)[0], |
| 284 | /** @type {Range} */ (arg1.range)[1] |
| 285 | ]; |
| 286 | needNewUrl = true; |
| 287 | } else { |
| 288 | const parsedUrl = parseModuleUrl(parser, arg1); |
| 289 | if (!parsedUrl) return; |
| 290 | [url, range] = parsedUrl; |
| 291 | } |
| 292 | |
| 293 | const { |
| 294 | expressions, |
| 295 | otherElements, |
| 296 | values: options, |
| 297 | spread: hasSpreadInOptions, |
| 298 | insertType, |
| 299 | insertLocation |
| 300 | } = arg2 && arg2.type === "ObjectExpression" |
| 301 | ? parseObjectExpression(parser, arg2) |
| 302 | : { |
| 303 | expressions: |
| 304 | /** @type {Record<string, Expression | Pattern>} */ ({}), |
| 305 | otherElements: [], |
| 306 | /** @type {Values} */ |
| 307 | values: {}, |
| 308 | spread: false, |
| 309 | insertType: arg2 ? "spread" : "argument", |
| 310 | insertLocation: arg2 |
| 311 | ? /** @type {Range} */ (arg2.range) |
| 312 | : /** @type {Range} */ (arg1.range)[1] |
| 313 | }; |
| 314 | const { options: importOptions, errors: commentErrors } = |
| 315 | parser.parseCommentOptions(/** @type {Range} */ (expr.range)); |
| 316 | |
| 317 | if (commentErrors) { |
| 318 | for (const e of commentErrors) { |
| 319 | const { comment } = e; |
| 320 | parser.state.module.addWarning( |
| 321 | new CommentCompilationWarning( |
| 322 | `Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`, |
nothing calls this directly
no test coverage detected