Skip to content

[Bug?]: export class crashes in 'use server' module #1689

@binajmen

Description

@binajmen

Duplicates

  • I have searched the existing issues

Latest version

  • I have tested the latest version

Current behavior 😯

[h3] [unhandled] H3Error: undefined does not match field "params": [Pattern] of type FunctionExpression
    at addParam (/Users/binajmen/Developer/fbnb/cockpit/node_modules/ast-types/lib/types.js:455:27)
    ... 7 lines matching cause stack trace ...
    at async loadAndTransform (file:///Users/binajmen/Developer/fbnb/cockpit/node_modules/vite/dist/node/chunks/dep-CB_7IfJ-.js:51929:27) {
  cause: Error: undefined does not match field "params": [Pattern] of type FunctionExpression
      at addParam (/Users/binajmen/Developer/fbnb/cockpit/node_modules/ast-types/lib/types.js:455:27)
      at /Users/binajmen/Developer/fbnb/cockpit/node_modules/ast-types/lib/types.js:505:25
      at Array.forEach (<anonymous>)
      at builder.from (/Users/binajmen/Developer/fbnb/cockpit/node_modules/ast-types/lib/types.js:503:46)
      at wrapExports (file:///Users/binajmen/Developer/fbnb/cockpit/node_modules/@vinxi/plugin-directives/plugins/wrap-exports.js:393:45)
      at Object.transform (file:///Users/binajmen/Developer/fbnb/cockpit/node_modules/@vinxi/plugin-directives/plugins/wrap-exports.js:44:24)
      at TransformPluginContext.transform (file:///Users/binajmen/Developer/fbnb/cockpit/node_modules/@vinxi/plugin-directives/plugin.js:52:31)
      at PluginContainer.transform (file:///Users/binajmen/Developer/fbnb/cockpit/node_modules/vite/dist/node/chunks/dep-CB_7IfJ-.js:49097:19)
      at async loadAndTransform (file:///Users/binajmen/Developer/fbnb/cockpit/node_modules/vite/dist/node/chunks/dep-CB_7IfJ-.js:51929:27) {
    plugin: 'vite-server-references',
    id: '/Users/binajmen/Developer/fbnb/cockpit/src/application/auth/auth.service.ts',
    pluginCode: '"use server";\n' +
      'import assert from "node:assert";\n' +
      'import { redirect } from "@solidjs/router";\n' +
      'import { type SessionConfig, useSession } from "vinxi/http";\n' +
      'import type { UserRepositoryInterface } from "~/domain/user/user.interface";\n' +
      'import { UserRepository } from "~/domain/user/user.repository";\n' +
      'import type { AuthServiceInterface } from "./auth.interface";\n' +
      '\n' +
      'assert(process.env.SESSION_SECRET, "SESSION_SECRET is required");\n' +
      '\n' +
      'const sessionConfig = {\n' +
      '  name: "cockpit",\n' +
      '  maxAge: 60 * 60 * 24 * 14,\n' +
      '  password: process.env.SESSION_SECRET,\n' +
      '  cookie: {\n' +
      '    secure: process.env.NODE_ENV === "production",\n' +
      '    httpOnly: true,\n' +
      '  },\n' +
      '} satisfies SessionConfig;\n' +
      '\n' +
      'type Session = {\n' +
      '  user_id?: string;\n' +
      '};\n' +
      '\n' +
      'function getSession() {\n' +
      '  return useSession<Session>(sessionConfig);\n' +
      '}\n' +
      '\n' +
      'export class AuthService implements AuthServiceInterface {\n' +
      '  userRepo: UserRepositoryInterface;\n' +
      '\n' +
      '  constructor(userRepo?: UserRepositoryInterface) {\n' +
      '    this.userRepo = userRepo || new UserRepository();\n' +
      '  }\n' +
      '\n' +

Expected behavior 🤔

No response

Steps to reproduce 🕹

If I refactor and split my class AuthService in functions, I don't get an error.

Context 🔦

Most probably linked to #1226

Your environment 🌎

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions