function defineWebWorker(...params) {
  /**
   * @type {(dependencies: string[]) void}
   */
  let factory
  /**
   * @type string[]
   */
  let dependencies
  // Adjust various AMD callding patterhns
  if (params.length < 2) {
    factory = params[0]
    dependencies = []
  } else {
    if (params.length >= 3) {
      params = params.slice(1)
    }
    dependencies = params[0]
    factory = params[1]
  }
  // Instance dependencies
  const exports = {}
  const module = { exports }
  const rutimeDepencies = dependencies.map((dep) =>
    dep === 'exports'
      ? exports
      : dep === 'module'
      ? module
      : requireDependencyWebWorker(dep)
  )
  // Run factory ... This will (maybe) write into exports
  const outFactory = factory(...rutimeDepencies)
  if (
    !dependencies.includes('exports') &&
    !dependencies.includes('module') &&
    outFactory
  ) {
    // NOTE: In this case the factory return module
    queue.push(outFactory)
  } else {
    queue.push(exports)
  }
}
AMD Define for the WebWorker Context