Skip to content

Commit 8e6029b

Browse files
committed
docs: address minor review feedback in Cloud Code Adapter spec
- Rename getValidator param to key (covers both functions and triggers) - Note runTrigger subsumes maybeRunAfterFindTrigger - Make runLiveQueryEventHandlers synchronous to match existing behavior - Add defineTrigger validation rules (enforced for all adapters) - Add getRequestFileObject to utility function list
1 parent 550ccad commit 8e6029b

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

docs/superpowers/specs/2026-03-16-cloud-code-adapter-design.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,18 +61,26 @@ class CloudCodeManager {
6161
getJob(name: string): CloudJobHandler | undefined;
6262
getJobs(): Map<string, CloudJobHandler>;
6363
getFunctionNames(): string[];
64-
getValidator(functionName: string): ValidatorHandler | undefined;
64+
getValidator(key: string): ValidatorHandler | undefined;
65+
// key is a function name or `${triggerType}.${className}` for trigger validators
6566

6667
// Execution (replaces maybeRunTrigger, maybeRunValidator, and specialized variants)
68+
// runTrigger also subsumes maybeRunAfterFindTrigger (className + triggerType lookup)
6769
async runTrigger(triggerType: string, auth: Auth, parseObject: ParseObject, ...): Promise<any>;
6870
async runQueryTrigger(triggerType: string, className: string, query: any, ...): Promise<any>;
6971
async runFileTrigger(triggerType: string, file: any, ...): Promise<any>;
7072
async runGlobalConfigTrigger(triggerType: string, config: any, ...): Promise<any>;
7173
async runValidator(request: any, functionName: string, auth: Auth): Promise<void>;
72-
async runLiveQueryEventHandlers(data: any): void;
74+
runLiveQueryEventHandlers(data: any): void; // synchronous, matches existing behavior
7375
}
7476
```
7577

78+
**Registration validation:** `defineTrigger()` enforces className/triggerType rules for all adapters (not just Legacy):
79+
- No `beforeSave` on `_PushStatus`
80+
- `beforeLogin`/`afterLogin`/`beforePasswordResetRequest` only on `_User`
81+
- `afterLogout` only on `_Session`
82+
```
83+
7684
Since the manager is scoped per-app, lookup methods no longer need an `applicationId` parameter.
7785
7886
### 3.2 HookStore
@@ -335,6 +343,7 @@ Pure data transformation helpers from `triggers.js` move to `src/cloud-code/requ
335343

336344
- `getRequestObject()`, `getResponseObject()` — build request/response objects for trigger handlers
337345
- `getRequestQueryObject()` — build request for query triggers
346+
- `getRequestFileObject()` — build request for file triggers
338347
- `resolveError()` — normalize error responses
339348
- `toJSONwithObjects()` — serialize with Parse object preservation
340349
- `inflate()` — inflate REST data into Parse Objects (used by `RestWrite.js`)

0 commit comments

Comments
 (0)