class

Analyzer::Dart::Serverpod

Inherits Analyzer < FileHelper < Reference < Object

Serverpod is an RPC-style backend framework. Server endpoints are Dart classes that extend Endpoint (or StreamingEndpoint); each public method takes a Session as its first parameter and is exposed to clients as a callable RPC. The class name's Endpoint suffix is dropped and the first character is lowercased to derive the endpoint name (OrderEndpoint → order).

Serverpod dispatches every call as a POST to /<endpointName> with the method name and arguments encoded in the body. We surface each method as POST /<endpointName>/<methodName> so individual RPCs are visible in the output, with the non-Session arguments reported as JSON body params.

Constants

HTTP_METHOD = "POST"
RESERVED_DART_NAMES = ["if", "else", "for", "while", "switch", "case", "return", "try", "catch", "finally", "throw", "new", "const", "final", "var", "late", "void", "await", "async", "assert"] of ::String
SPLIT_COMMAS_RULES = Noir::TopLevelSplit::Rules.new(nest: Noir::TopLevelSplit::Nest::Paren | Noir::TopLevelSplit::Nest::Angle, quotes: "", escape: Noir::TopLevelSplit::Escape::None, strip: false, empties: Noir::TopLevelSplit::Empties::Keep, per_kind: false, clamp: true)

Serverpod's argument lists carry Dart generics (Future<List<Foo>>) and call expressions, and nothing else nests: this splitter sees method signatures, never string literals, so quote handling stays off.

Nest::Paren | Nest::Angle with per_kind: false is the whole of the old body's depth model — one counter incremented by < and ( alike and decremented by > and ), with [] and {} inert. Those are two orthogonal choices in Rules (nest picks which characters count, per_kind picks how many counters exist), which is why this reads as a plain preset despite earlier surveys in this series calling the combination inexpressible.

WEB_METHOD_MAP = {"get" => "GET", "post" => "POST", "put" => "PUT", "patch" => "PATCH", "delete" => "DELETE", "head" => "HEAD", "options" => "OPTIONS"}

Method.<verb> constants accepted by Route's methods: set.

Class methods

tech_name
Source

Instance methods

analyze
Source
tech

Instance-side view of the same declaration. The per-file rescues live on this base class, which has no way to name the analyzer that is running inside them, so a skipped file could not be attributed to a tech. Deriving it from analyzer_for keeps the name written exactly once.

Source

Nested types