@kellanjs/actioncraft 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +411 -302
- package/dist/actioncraft-error.d.ts +23 -0
- package/dist/actioncraft-error.js +60 -0
- package/dist/actioncraft-error.js.map +1 -0
- package/dist/actioncraft-prev.d.ts +93 -0
- package/dist/actioncraft-prev.js +387 -0
- package/dist/actioncraft-prev.js.map +1 -0
- package/dist/actioncraft.d.ts +94 -44
- package/dist/actioncraft.js +281 -55
- package/dist/actioncraft.js.map +1 -1
- package/dist/api.d.ts +49 -0
- package/dist/api.js +84 -0
- package/dist/api.js.map +1 -0
- package/dist/classes/action-builder.d.ts +59 -0
- package/dist/classes/action-builder.js +95 -0
- package/dist/classes/action-builder.js.map +1 -0
- package/dist/classes/craft-builder.d.ts +66 -0
- package/dist/classes/craft-builder.js +129 -0
- package/dist/classes/craft-builder.js.map +1 -0
- package/dist/classes/crafter.d.ts +66 -0
- package/dist/classes/crafter.js +129 -0
- package/dist/classes/crafter.js.map +1 -0
- package/dist/classes/error.d.ts +23 -0
- package/dist/classes/error.js +60 -0
- package/dist/classes/error.js.map +1 -0
- package/dist/classes/executor/callbacks.d.ts +6 -0
- package/dist/classes/executor/callbacks.js +20 -0
- package/dist/classes/executor/callbacks.js.map +1 -0
- package/dist/classes/executor/errors.d.ts +29 -0
- package/dist/classes/executor/errors.js +114 -0
- package/dist/classes/executor/errors.js.map +1 -0
- package/dist/classes/executor/executor.d.ts +68 -0
- package/dist/classes/executor/executor.js +391 -0
- package/dist/classes/executor/executor.js.map +1 -0
- package/dist/classes/executor/logging.d.ts +2 -0
- package/dist/classes/executor/logging.js +8 -0
- package/dist/classes/executor/logging.js.map +1 -0
- package/dist/classes/executor/transformation.d.ts +17 -0
- package/dist/classes/executor/transformation.js +43 -0
- package/dist/classes/executor/transformation.js.map +1 -0
- package/dist/classes/executor/validation.d.ts +16 -0
- package/dist/classes/executor/validation.js +70 -0
- package/dist/classes/executor/validation.js.map +1 -0
- package/dist/classes/executor.d.ts +64 -0
- package/dist/classes/executor.js +354 -0
- package/dist/classes/executor.js.map +1 -0
- package/dist/classes/internal.d.ts +10 -0
- package/dist/classes/internal.js +5 -0
- package/dist/classes/internal.js.map +1 -0
- package/dist/core/errors.d.ts +2 -2
- package/dist/core/errors.js +5 -5
- package/dist/core/errors.js.map +1 -1
- package/dist/core/logging.d.ts +1 -1
- package/dist/core/transformation.d.ts +2 -2
- package/dist/core/validation.d.ts +4 -4
- package/dist/core/validation.js +14 -14
- package/dist/core/validation.js.map +1 -1
- package/dist/craft.d.ts +29 -0
- package/dist/craft.js +62 -0
- package/dist/craft.js.map +1 -0
- package/dist/error.d.ts +21 -6
- package/dist/error.js +59 -10
- package/dist/error.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/initial.d.ts +14 -0
- package/dist/initial.js +47 -0
- package/dist/initial.js.map +1 -0
- package/dist/types/actions.d.ts +67 -25
- package/dist/types/builder.d.ts +92 -0
- package/dist/types/builder.js +2 -0
- package/dist/types/builder.js.map +1 -0
- package/dist/types/crafter.d.ts +87 -0
- package/dist/types/crafter.js +2 -0
- package/dist/types/crafter.js.map +1 -0
- package/dist/types/errors.d.ts +25 -17
- package/dist/types/inference.d.ts +41 -8
- package/dist/types/result.d.ts +8 -14
- package/dist/types/result.js +36 -4
- package/dist/types/result.js.map +1 -1
- package/dist/types/schemas.d.ts +7 -7
- package/dist/types/shared.d.ts +14 -6
- package/dist/utils.d.ts +30 -6
- package/dist/utils.js +68 -8
- package/dist/utils.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
import { safeExecuteCallback } from "../core/callbacks.js";
|
|
2
|
+
import { createUnhandledErrorResult, createImplicitReturnErrorResult, } from "../core/errors.js";
|
|
3
|
+
import { log } from "../core/logging.js";
|
|
4
|
+
import { serializeRawInput, convertToClientError, } from "../core/transformation.js";
|
|
5
|
+
import { validateInput, validateBindArgs, validateOutput, } from "../core/validation.js";
|
|
6
|
+
import {} from "../types/errors.js";
|
|
7
|
+
import { err, isOk, isResultOk, isResultErr, isErr } from "../types/result.js";
|
|
8
|
+
import { INTERNAL } from "./internal.js";
|
|
9
|
+
import { unstable_rethrow } from "next/navigation.js";
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// EXECUTOR CLASS - Build and execute your action
|
|
12
|
+
// ============================================================================
|
|
13
|
+
export class Executor {
|
|
14
|
+
_config;
|
|
15
|
+
_schemas;
|
|
16
|
+
_errors;
|
|
17
|
+
_callbacks;
|
|
18
|
+
_handler;
|
|
19
|
+
_actionId;
|
|
20
|
+
constructor(crafter) {
|
|
21
|
+
this._config = crafter[INTERNAL]().config;
|
|
22
|
+
this._schemas = crafter[INTERNAL]().schemas;
|
|
23
|
+
this._errors = crafter[INTERNAL]().errors;
|
|
24
|
+
this._callbacks = crafter[INTERNAL]().callbacks;
|
|
25
|
+
this._handler = crafter[INTERNAL]().handler;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Builds and returns the final executable server action.
|
|
29
|
+
*/
|
|
30
|
+
craft() {
|
|
31
|
+
if (!this._handler) {
|
|
32
|
+
throw new Error("A handler implementation is required");
|
|
33
|
+
}
|
|
34
|
+
// Generate a unique ID for this action instance
|
|
35
|
+
this._actionId = this._generateActionId();
|
|
36
|
+
const craftedAction = (...args) => {
|
|
37
|
+
return this._runAction(args);
|
|
38
|
+
};
|
|
39
|
+
// Attach the action's config and ID for runtime inspection
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
41
|
+
craftedAction.__ac_config = this._config;
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
|
+
craftedAction.__ac_id = this._actionId;
|
|
44
|
+
return craftedAction;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Generates a unique identifier for this action instance.
|
|
48
|
+
*/
|
|
49
|
+
_generateActionId() {
|
|
50
|
+
return crypto.randomUUID();
|
|
51
|
+
}
|
|
52
|
+
// --------------------------------------------------------------------------
|
|
53
|
+
// ACTION EXECUTION
|
|
54
|
+
// --------------------------------------------------------------------------
|
|
55
|
+
/**
|
|
56
|
+
* Orchestrates action execution (validation, business logic, callbacks, and result formatting.)
|
|
57
|
+
*/
|
|
58
|
+
async _runAction(args) {
|
|
59
|
+
// We know these exist because craft() creates/verifies them
|
|
60
|
+
const handler = this._handler;
|
|
61
|
+
const actionId = this._actionId;
|
|
62
|
+
// Extract bindArgs, prevState, and input from the raw args
|
|
63
|
+
const { bindArgs: rawBindArgs, prevState, input: rawInput, } = this._extractActionArgs(args);
|
|
64
|
+
// Check for custom error handler
|
|
65
|
+
const handleThrownErrorFn = this._config.handleThrownError
|
|
66
|
+
? (error) => err(this._config.handleThrownError(error), actionId)
|
|
67
|
+
: null;
|
|
68
|
+
// Track validation state for error handling
|
|
69
|
+
let validatedInput = undefined;
|
|
70
|
+
let validatedBindArgs = undefined;
|
|
71
|
+
try {
|
|
72
|
+
// Execute onStart callback before any processing
|
|
73
|
+
await this._executeOnStartCallback({
|
|
74
|
+
rawInput,
|
|
75
|
+
rawBindArgs,
|
|
76
|
+
prevState,
|
|
77
|
+
validatedInput: undefined,
|
|
78
|
+
validatedBindArgs: undefined,
|
|
79
|
+
actionId,
|
|
80
|
+
});
|
|
81
|
+
// Validate input and return on failure
|
|
82
|
+
const inputValidation = await this._validateInput(rawInput);
|
|
83
|
+
if (!isOk(inputValidation)) {
|
|
84
|
+
await this._executeResultCallbacks(inputValidation, {
|
|
85
|
+
rawInput,
|
|
86
|
+
rawBindArgs,
|
|
87
|
+
prevState,
|
|
88
|
+
validatedInput,
|
|
89
|
+
validatedBindArgs,
|
|
90
|
+
actionId,
|
|
91
|
+
});
|
|
92
|
+
return this._toActionResult(inputValidation, rawInput);
|
|
93
|
+
}
|
|
94
|
+
// Update validation state
|
|
95
|
+
validatedInput = inputValidation.value;
|
|
96
|
+
// Validate bound arguments and return on failure
|
|
97
|
+
const bindArgsValidation = await this._validateBindArgs(rawBindArgs);
|
|
98
|
+
if (!isOk(bindArgsValidation)) {
|
|
99
|
+
await this._executeResultCallbacks(bindArgsValidation, {
|
|
100
|
+
rawInput,
|
|
101
|
+
rawBindArgs,
|
|
102
|
+
prevState,
|
|
103
|
+
validatedInput,
|
|
104
|
+
validatedBindArgs,
|
|
105
|
+
actionId,
|
|
106
|
+
});
|
|
107
|
+
return this._toActionResult(bindArgsValidation, rawInput);
|
|
108
|
+
}
|
|
109
|
+
// Update validation state
|
|
110
|
+
validatedBindArgs = bindArgsValidation.value;
|
|
111
|
+
// Execute the user's action handler
|
|
112
|
+
const handlerResult = await handler({
|
|
113
|
+
input: inputValidation.value,
|
|
114
|
+
bindArgs: bindArgsValidation.value,
|
|
115
|
+
errors: this._buildErrorFunctions(),
|
|
116
|
+
metadata: {
|
|
117
|
+
rawInput,
|
|
118
|
+
rawBindArgs,
|
|
119
|
+
prevState,
|
|
120
|
+
actionId,
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
// Return on `undefined` (implicit return error)
|
|
124
|
+
if (handlerResult === undefined) {
|
|
125
|
+
const implicitReturnError = createImplicitReturnErrorResult(actionId);
|
|
126
|
+
await this._executeResultCallbacks(implicitReturnError, {
|
|
127
|
+
rawInput,
|
|
128
|
+
rawBindArgs,
|
|
129
|
+
prevState,
|
|
130
|
+
validatedInput,
|
|
131
|
+
validatedBindArgs,
|
|
132
|
+
actionId,
|
|
133
|
+
});
|
|
134
|
+
return this._toActionResult(implicitReturnError, rawInput);
|
|
135
|
+
}
|
|
136
|
+
let finalResult;
|
|
137
|
+
// Process different return types from the action
|
|
138
|
+
if (isResultErr(handlerResult)) {
|
|
139
|
+
// Ensure error result has correct action ID
|
|
140
|
+
finalResult = this._ensureResultActionId(handlerResult);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
const outputData = isResultOk(handlerResult)
|
|
144
|
+
? handlerResult.value
|
|
145
|
+
: handlerResult;
|
|
146
|
+
finalResult = await this._validateOutput(outputData);
|
|
147
|
+
}
|
|
148
|
+
// Execute callbacks and return final result
|
|
149
|
+
await this._executeResultCallbacks(finalResult, {
|
|
150
|
+
rawInput,
|
|
151
|
+
rawBindArgs,
|
|
152
|
+
prevState,
|
|
153
|
+
validatedInput,
|
|
154
|
+
validatedBindArgs,
|
|
155
|
+
actionId,
|
|
156
|
+
});
|
|
157
|
+
// Use validated input for the values field on a successful run
|
|
158
|
+
const inputForValues = isOk(finalResult)
|
|
159
|
+
? this._schemas.inputSchema
|
|
160
|
+
? inputValidation.value
|
|
161
|
+
: rawInput
|
|
162
|
+
: rawInput;
|
|
163
|
+
return this._toActionResult(finalResult, inputForValues);
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
// Re-throw Next.js framework errors
|
|
167
|
+
unstable_rethrow(error);
|
|
168
|
+
// Handle unexpected thrown errors
|
|
169
|
+
try {
|
|
170
|
+
const errorResult = this._handleThrownError(error, handleThrownErrorFn);
|
|
171
|
+
await this._executeResultCallbacks(errorResult, {
|
|
172
|
+
rawInput,
|
|
173
|
+
rawBindArgs,
|
|
174
|
+
prevState,
|
|
175
|
+
validatedInput,
|
|
176
|
+
validatedBindArgs,
|
|
177
|
+
actionId,
|
|
178
|
+
});
|
|
179
|
+
return this._toActionResult(errorResult, rawInput);
|
|
180
|
+
}
|
|
181
|
+
catch (handlerError) {
|
|
182
|
+
// If we catch another error here, then we're done
|
|
183
|
+
log(this._config.logger, "warn", "Error handling failure - both primary error and error handler threw", { primaryError: error, handlerError });
|
|
184
|
+
return this._toActionResult(createUnhandledErrorResult(actionId), rawInput);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Extracts bind arguments, previous state, and input from raw action arguments.
|
|
190
|
+
*/
|
|
191
|
+
_extractActionArgs(args) {
|
|
192
|
+
const numBindSchemas = this._schemas.bindSchemas?.length ?? 0;
|
|
193
|
+
if (this._config.useActionState) {
|
|
194
|
+
return {
|
|
195
|
+
bindArgs: args.slice(0, numBindSchemas),
|
|
196
|
+
prevState: args[numBindSchemas],
|
|
197
|
+
input: args[numBindSchemas + 1],
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
// For regular actions (non-useActionState), the input is the first argument after bind args
|
|
201
|
+
// If there are no bind schemas, the input is the first argument (args[0])
|
|
202
|
+
return {
|
|
203
|
+
bindArgs: args.slice(0, numBindSchemas),
|
|
204
|
+
// When useActionState is disabled the prevState parameter is never
|
|
205
|
+
// present, so we cast to never (or undefined) to satisfy the type.
|
|
206
|
+
prevState: undefined,
|
|
207
|
+
input: args[numBindSchemas],
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
// --------------------------------------------------------------------------
|
|
211
|
+
// RESULT TRANSFORMATION
|
|
212
|
+
// --------------------------------------------------------------------------
|
|
213
|
+
/**
|
|
214
|
+
* Transforms internal Result objects to client-facing action result format.
|
|
215
|
+
*/
|
|
216
|
+
_toActionResult(result, inputForValues) {
|
|
217
|
+
// Convert internal errors to client-facing errors
|
|
218
|
+
const clientResult = isOk(result)
|
|
219
|
+
? result
|
|
220
|
+
: err(convertToClientError(result.error), this._actionId);
|
|
221
|
+
// Handle useActionState format (always returns StatefulApiResult)
|
|
222
|
+
if (this._config.useActionState) {
|
|
223
|
+
if (isOk(clientResult)) {
|
|
224
|
+
const successValues = this._schemas.inputSchema
|
|
225
|
+
? inputForValues
|
|
226
|
+
: serializeRawInput(inputForValues);
|
|
227
|
+
return {
|
|
228
|
+
success: true,
|
|
229
|
+
data: clientResult.value,
|
|
230
|
+
values: successValues,
|
|
231
|
+
__ac_id: this._actionId,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
return {
|
|
235
|
+
success: false,
|
|
236
|
+
error: clientResult.error,
|
|
237
|
+
values: serializeRawInput(inputForValues),
|
|
238
|
+
__ac_id: this._actionId,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
const format = this._config.resultFormat ?? "api";
|
|
242
|
+
// Return functional format if configured
|
|
243
|
+
if (format === "functional") {
|
|
244
|
+
return clientResult;
|
|
245
|
+
}
|
|
246
|
+
// Default API format
|
|
247
|
+
if (isOk(clientResult)) {
|
|
248
|
+
return {
|
|
249
|
+
success: true,
|
|
250
|
+
data: clientResult.value,
|
|
251
|
+
__ac_id: this._actionId,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
return {
|
|
255
|
+
success: false,
|
|
256
|
+
error: clientResult.error,
|
|
257
|
+
__ac_id: this._actionId,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
// --------------------------------------------------------------------------
|
|
261
|
+
// ERROR HANDLING
|
|
262
|
+
// --------------------------------------------------------------------------
|
|
263
|
+
/**
|
|
264
|
+
* Handles uncaught exceptions during action execution.
|
|
265
|
+
*/
|
|
266
|
+
_handleThrownError(error, customHandler) {
|
|
267
|
+
const caughtErrorResult = customHandler
|
|
268
|
+
? customHandler(error)
|
|
269
|
+
: createUnhandledErrorResult(this._actionId);
|
|
270
|
+
return caughtErrorResult;
|
|
271
|
+
}
|
|
272
|
+
// --------------------------------------------------------------------------
|
|
273
|
+
// VALIDATION
|
|
274
|
+
// --------------------------------------------------------------------------
|
|
275
|
+
/**
|
|
276
|
+
* Validates input using the shared helper.
|
|
277
|
+
*/
|
|
278
|
+
_validateInput(rawInput) {
|
|
279
|
+
return validateInput(this._schemas, this._config, rawInput, this._actionId);
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Validates bound arguments using the configured bind schemas.
|
|
283
|
+
*/
|
|
284
|
+
_validateBindArgs(bindArgs) {
|
|
285
|
+
return validateBindArgs(this._schemas, this._config, bindArgs, this._actionId);
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Validates output data using the configured output schema.
|
|
289
|
+
*/
|
|
290
|
+
_validateOutput(data) {
|
|
291
|
+
return validateOutput(this._schemas, this._config, data, this._actionId);
|
|
292
|
+
}
|
|
293
|
+
// --------------------------------------------------------------------------
|
|
294
|
+
// CALLBACKS
|
|
295
|
+
// --------------------------------------------------------------------------
|
|
296
|
+
/**
|
|
297
|
+
* Executes the onStart callback if defined.
|
|
298
|
+
*/
|
|
299
|
+
async _executeOnStartCallback(metadata) {
|
|
300
|
+
const callbacks = this._callbacks;
|
|
301
|
+
if (callbacks.onStart) {
|
|
302
|
+
await safeExecuteCallback(() => callbacks.onStart({ metadata }), "onStart", (level, msg, details) => log(this._config.logger, level, msg, details));
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Executes result-based lifecycle callbacks (onSuccess, onError, onSettled).
|
|
307
|
+
*/
|
|
308
|
+
async _executeResultCallbacks(result, metadata) {
|
|
309
|
+
const callbacks = this._callbacks;
|
|
310
|
+
// Success path
|
|
311
|
+
if (isOk(result)) {
|
|
312
|
+
await safeExecuteCallback(callbacks.onSuccess
|
|
313
|
+
? () => callbacks.onSuccess({ data: result.value, metadata })
|
|
314
|
+
: undefined, "onSuccess", (level, msg, details) => log(this._config.logger, level, msg, details));
|
|
315
|
+
}
|
|
316
|
+
// Error path
|
|
317
|
+
if (isErr(result)) {
|
|
318
|
+
await safeExecuteCallback(callbacks.onError
|
|
319
|
+
? () => callbacks.onError({ error: result.error, metadata })
|
|
320
|
+
: undefined, "onError", (level, msg, details) => log(this._config.logger, level, msg, details));
|
|
321
|
+
}
|
|
322
|
+
// onSettled always runs, regardless of result
|
|
323
|
+
const finalResult = this._toActionResult(result);
|
|
324
|
+
await safeExecuteCallback(callbacks.onSettled
|
|
325
|
+
? () => callbacks.onSettled({ result: finalResult, metadata })
|
|
326
|
+
: undefined, "onSettled", (level, msg, details) => log(this._config.logger, level, msg, details));
|
|
327
|
+
}
|
|
328
|
+
// --------------------------------------------------------------------------
|
|
329
|
+
// UTILITY METHODS
|
|
330
|
+
// --------------------------------------------------------------------------
|
|
331
|
+
/**
|
|
332
|
+
* Ensures a Result object has the correct action ID.
|
|
333
|
+
*/
|
|
334
|
+
_ensureResultActionId(result) {
|
|
335
|
+
if (!result.__ac_id || result.__ac_id === "unknown") {
|
|
336
|
+
return {
|
|
337
|
+
...result,
|
|
338
|
+
__ac_id: this._actionId,
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
return result;
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Creates error functions that return a Result object when called by the action handler.
|
|
345
|
+
*/
|
|
346
|
+
_buildErrorFunctions() {
|
|
347
|
+
const errorFns = {};
|
|
348
|
+
for (const [key, errorDefFn] of Object.entries(this._errors)) {
|
|
349
|
+
errorFns[key] = ((...args) => err(errorDefFn(...args), this._actionId));
|
|
350
|
+
}
|
|
351
|
+
return errorFns;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/classes/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,GAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAe/B,OAAO,EAIN,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAS/E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,+EAA+E;AAC/E,iDAAiD;AACjD,+EAA+E;AAE/E,MAAM,OAAO,QAAQ;IAOF,OAAO,CAAU;IACjB,QAAQ,CAAW;IACnB,OAAO,CAAU;IACjB,UAAU,CAAa;IACvB,QAAQ,CAA8C;IAC/D,SAAS,CAAU;IAE3B,YAAY,OAA+D;QACzE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,gDAAgD;QAChD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE1C,MAAM,aAAa,GAAG,CACpB,GAAG,IAAyD,EACU,EAAE;YACxE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,2DAA2D;QAC3D,8DAA8D;QAC7D,aAAqB,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;QAClD,8DAA8D;QAC7D,aAAqB,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAEhD,OAAO,aAAiE,CAAC;IAC3E,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;IAED,6EAA6E;IAC7E,mBAAmB;IACnB,6EAA6E;IAE7E;;OAEG;IACK,KAAK,CAAC,UAAU,CACtB,IAAyD;QAEzD,4DAA4D;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAS,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAU,CAAC;QAEjC,2DAA2D;QAC3D,MAAM,EACJ,QAAQ,EAAE,WAAW,EACrB,SAAS,EACT,KAAK,EAAE,QAAQ,GAChB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAElC,iCAAiC;QACjC,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB;YACxD,CAAC,CAAC,CAAC,KAAc,EAAE,EAAE,CACjB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAkB,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;YACzD,CAAC,CAAC,IAAI,CAAC;QAET,4CAA4C;QAC5C,IAAI,cAAc,GAA8C,SAAS,CAAC;QAC1E,IAAI,iBAAiB,GACnB,SAAS,CAAC;QAEZ,IAAI,CAAC;YACH,iDAAiD;YACjD,MAAM,IAAI,CAAC,uBAAuB,CAAC;gBACjC,QAAQ;gBACR,WAAW;gBACX,SAAS;gBACT,cAAc,EAAE,SAAS;gBACzB,iBAAiB,EAAE,SAAS;gBAC5B,QAAQ;aACT,CAAC,CAAC;YAEH,uCAAuC;YACvC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC5D,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,uBAAuB,CAAC,eAAe,EAAE;oBAClD,QAAQ;oBACR,WAAW;oBACX,SAAS;oBACT,cAAc;oBACd,iBAAiB;oBACjB,QAAQ;iBACT,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YACzD,CAAC;YAED,0BAA0B;YAC1B,cAAc,GAAG,eAAe,CAAC,KAAK,CAAC;YAEvC,iDAAiD;YACjD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,EAAE;oBACrD,QAAQ;oBACR,WAAW;oBACX,SAAS;oBACT,cAAc;oBACd,iBAAiB;oBACjB,QAAQ;iBACT,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;YAC5D,CAAC;YAED,0BAA0B;YAC1B,iBAAiB,GAAG,kBAAkB,CAAC,KAAK,CAAC;YAE7C,oCAAoC;YACpC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC;gBAClC,KAAK,EAAE,eAAe,CAAC,KAAK;gBAC5B,QAAQ,EAAE,kBAAkB,CAAC,KAAK;gBAClC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE;gBACnC,QAAQ,EAAE;oBACR,QAAQ;oBACR,WAAW;oBACX,SAAS;oBACT,QAAQ;iBACT;aACF,CAAC,CAAC;YAEH,gDAAgD;YAChD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,mBAAmB,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;gBACtE,MAAM,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;oBACtD,QAAQ;oBACR,WAAW;oBACX,SAAS;oBACT,cAAc;oBACd,iBAAiB;oBACjB,QAAQ;iBACT,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;YAC7D,CAAC;YAED,IAAI,WAGH,CAAC;YAEF,iDAAiD;YACjD,IAAI,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC/B,4CAA4C;gBAC5C,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;oBAC1C,CAAC,CAAC,aAAa,CAAC,KAAK;oBACrB,CAAC,CAAC,aAAa,CAAC;gBAClB,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACvD,CAAC;YAED,4CAA4C;YAC5C,MAAM,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE;gBAC9C,QAAQ;gBACR,WAAW;gBACX,SAAS;gBACT,cAAc;gBACd,iBAAiB;gBACjB,QAAQ;aACT,CAAC,CAAC;YAEH,+DAA+D;YAC/D,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;gBACtC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW;oBACzB,CAAC,CAAE,eAAe,CAAC,KAAuC;oBAC1D,CAAC,CAAC,QAAQ;gBACZ,CAAC,CAAC,QAAQ,CAAC;YAEb,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oCAAoC;YACpC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAExB,kCAAkC;YAClC,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;gBACxE,MAAM,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE;oBAC9C,QAAQ;oBACR,WAAW;oBACX,SAAS;oBACT,cAAc;oBACd,iBAAiB;oBACjB,QAAQ;iBACT,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACtB,kDAAkD;gBAClD,GAAG,CACD,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,MAAM,EACN,qEAAqE,EACrE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,CACtC,CAAC;gBACF,OAAO,IAAI,CAAC,eAAe,CACzB,0BAA0B,CAAC,QAAQ,CAAC,EACpC,QAAQ,CACT,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB,CACxB,IAAyD;QAMzD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC;QAE9D,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAChC,OAAO;gBACL,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAA+B;gBACrE,SAAS,EAAE,IAAI,CAAC,cAAc,CAK7B;gBACD,KAAK,EAAE,IAAI,CAAC,cAAc,GAAG,CAAC,CAA4B;aAC3D,CAAC;QACJ,CAAC;QAED,4FAA4F;QAC5F,0EAA0E;QAC1E,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAA+B;YACrE,mEAAmE;YACnE,mEAAmE;YACnE,SAAS,EAAE,SAKV;YACD,KAAK,EAAE,IAAI,CAAC,cAAc,CAA4B;SACvD,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,wBAAwB;IACxB,6EAA6E;IAE7E;;OAEG;IACK,eAAe,CACrB,MAAoE,EACpE,cAAwE;QAExE,kDAAkD;QAClD,MAAM,YAAY,GAGd,IAAI,CAAC,MAAM,CAAC;YACd,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,SAAU,CAAC,CAAC;QAE7D,kEAAkE;QAClE,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;oBAC7C,CAAC,CAAE,cAAyD;oBAC5D,CAAC,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;gBAEtC,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,YAAY,CAAC,KAAK;oBACxB,MAAM,EAAE,aAAa;oBACrB,OAAO,EAAE,IAAI,CAAC,SAAU;iBACsC,CAAC;YACnE,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY,CAAC,KAAK;gBACzB,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC;gBACzC,OAAO,EAAE,IAAI,CAAC,SAAU;aACsC,CAAC;QACnE,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC;QAElD,yCAAyC;QACzC,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;YAC5B,OAAO,YAKN,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,YAAY,CAAC,KAAK;gBACxB,OAAO,EAAE,IAAI,CAAC,SAAU;aACsC,CAAC;QACnE,CAAC;QACD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,OAAO,EAAE,IAAI,CAAC,SAAU;SACsC,CAAC;IACnE,CAAC;IAED,6EAA6E;IAC7E,iBAAiB;IACjB,6EAA6E;IAE7E;;OAEG;IACK,kBAAkB,CACxB,KAAc,EACd,aAA+D;QAE/D,MAAM,iBAAiB,GAAG,aAAa;YACrC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC;YACtB,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,SAAU,CAAC,CAAC;QAEhD,OAAO,iBAGN,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,aAAa;IACb,6EAA6E;IAE7E;;OAEG;IACK,cAAc,CAAC,QAA6C;QAClE,OAAO,aAAa,CAClB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,EACZ,QAAQ,EACR,IAAI,CAAC,SAAU,CAChB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,QAAoC;QAC5D,OAAO,gBAAgB,CACrB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,EACZ,QAAQ,EACR,IAAI,CAAC,SAAU,CAChB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,IAAW;QACjC,OAAO,cAAc,CACnB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,EACZ,IAAI,EACJ,IAAI,CAAC,SAAU,CAChB,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,YAAY;IACZ,6EAA6E;IAE7E;;OAEG;IACK,KAAK,CAAC,uBAAuB,CACnC,QAA6D;QAE7D,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,mBAAmB,CACvB,GAAG,EAAE,CAAC,SAAS,CAAC,OAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,EACtC,SAAS,EACT,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CACvE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,uBAAuB,CACnC,MAAoE,EACpE,QAA6D;QAE7D,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAElC,eAAe;QACf,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,MAAM,mBAAmB,CACvB,SAAS,CAAC,SAAS;gBACjB,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAU,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;gBAC9D,CAAC,CAAC,SAAS,EACb,WAAW,EACX,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CACvE,CAAC;QACJ,CAAC;QAED,aAAa;QACb,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAClB,MAAM,mBAAmB,CACvB,SAAS,CAAC,OAAO;gBACf,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;gBAC7D,CAAC,CAAC,SAAS,EACb,SAAS,EACT,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CACvE,CAAC;QACJ,CAAC;QAED,8CAA8C;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,mBAAmB,CACvB,SAAS,CAAC,SAAS;YACjB,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAU,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;YAC/D,CAAC,CAAC,SAAS,EACb,WAAW,EACX,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CACvE,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,kBAAkB;IAClB,6EAA6E;IAE7E;;OAEG;IACK,qBAAqB,CAAO,MAAoB;QACtD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACpD,OAAO;gBACL,GAAG,MAAM;gBACT,OAAO,EAAE,IAAI,CAAC,SAAU;aACzB,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,MAAM,QAAQ,GAAG,EAA6B,CAAC;QAE/C,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7D,QAAQ,CAAC,GAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAC5C,GAAG,CACD,UAAU,CAAC,GAAG,IAAI,CAAC,EACnB,IAAI,CAAC,SAAU,CAChB,CAA2C,CAAC;QACjD,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Handler } from "../types/actions.js";
|
|
2
|
+
import type { Config, Schemas, Errors, Callbacks } from "../types/builder.js";
|
|
3
|
+
export declare const INTERNAL: unique symbol;
|
|
4
|
+
export interface CrafterInternals<TConfig extends Config, TSchemas extends Schemas, TErrors extends Errors, TCallbacks extends Callbacks<TConfig, TSchemas, TErrors, TData>, TData> {
|
|
5
|
+
config: TConfig;
|
|
6
|
+
schemas: TSchemas;
|
|
7
|
+
errors: TErrors;
|
|
8
|
+
callbacks: TCallbacks;
|
|
9
|
+
handler?: Handler<TConfig, TSchemas, TErrors, TData>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// INTERNAL INTERFACE FOR CRAFTER-EXECUTOR COMMUNICATION
|
|
3
|
+
// ============================================================================
|
|
4
|
+
export const INTERNAL = Symbol("INTERNAL");
|
|
5
|
+
//# sourceMappingURL=internal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/classes/internal.ts"],"names":[],"mappings":"AAGA,+EAA+E;AAC/E,wDAAwD;AACxD,+EAA+E;AAE/E,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC"}
|
package/dist/core/errors.d.ts
CHANGED
|
@@ -11,11 +11,11 @@ export declare const createInternalLogicError: (message: string) => InternalLogi
|
|
|
11
11
|
/**
|
|
12
12
|
* Creates Result objects for unhandled errors.
|
|
13
13
|
*/
|
|
14
|
-
export declare function createUnhandledErrorResult<TData = never, TError = UnhandledError>(): Result<TData, TError>;
|
|
14
|
+
export declare function createUnhandledErrorResult<TData = never, TError = UnhandledError>(actionId: string): Result<TData, TError>;
|
|
15
15
|
/**
|
|
16
16
|
* Creates Result objects for implicit return errors.
|
|
17
17
|
*/
|
|
18
|
-
export declare function createImplicitReturnErrorResult<TData = never, TError = ImplicitReturnError>(): Result<TData, TError>;
|
|
18
|
+
export declare function createImplicitReturnErrorResult<TData = never, TError = ImplicitReturnError>(actionId: string): Result<TData, TError>;
|
|
19
19
|
/**
|
|
20
20
|
* Formats validation issues into structured error objects based on the configured format.
|
|
21
21
|
*/
|
package/dist/core/errors.js
CHANGED
|
@@ -9,7 +9,7 @@ export const UNHANDLED_ERROR = {
|
|
|
9
9
|
};
|
|
10
10
|
export const IMPLICIT_RETURN_ERROR = {
|
|
11
11
|
type: INTERNAL_ERROR_TYPES.IMPLICIT_RETURN,
|
|
12
|
-
message: "Action
|
|
12
|
+
message: "Action handler must return a value",
|
|
13
13
|
};
|
|
14
14
|
// ===========================================================================
|
|
15
15
|
// FACTORY HELPERS
|
|
@@ -24,14 +24,14 @@ export const createInternalLogicError = (message) => ({
|
|
|
24
24
|
/**
|
|
25
25
|
* Creates Result objects for unhandled errors.
|
|
26
26
|
*/
|
|
27
|
-
export function createUnhandledErrorResult() {
|
|
28
|
-
return err({ ...UNHANDLED_ERROR });
|
|
27
|
+
export function createUnhandledErrorResult(actionId) {
|
|
28
|
+
return err({ ...UNHANDLED_ERROR }, actionId);
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
31
|
* Creates Result objects for implicit return errors.
|
|
32
32
|
*/
|
|
33
|
-
export function createImplicitReturnErrorResult() {
|
|
34
|
-
return err({ ...IMPLICIT_RETURN_ERROR });
|
|
33
|
+
export function createImplicitReturnErrorResult(actionId) {
|
|
34
|
+
return err({ ...IMPLICIT_RETURN_ERROR }, actionId);
|
|
35
35
|
}
|
|
36
36
|
// ===========================================================================
|
|
37
37
|
// VALIDATION-ERROR STRUCTURING HELPERS
|
package/dist/core/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAQhF,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAmB;IAC7C,IAAI,EAAE,oBAAoB,CAAC,SAAS;IACpC,OAAO,EAAE,6BAA6B;CAC9B,CAAC;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAwB;IACxD,IAAI,EAAE,oBAAoB,CAAC,eAAe;IAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/core/logging.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { InferSerializedErrorValues } from "../types/actions.js";
|
|
2
|
-
import type { CrafterSchemas } from "../types/
|
|
3
|
-
import type { CrafterConfig, CrafterErrors } from "../types/
|
|
2
|
+
import type { CrafterSchemas } from "../types/crafter.js";
|
|
3
|
+
import type { CrafterConfig, CrafterErrors } from "../types/crafter.js";
|
|
4
4
|
import type { PossibleErrors, AllPossibleErrors } from "../types/errors.js";
|
|
5
5
|
import type { InferRawInput, InferValidatedInput } from "../types/schemas.js";
|
|
6
6
|
/**
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import type { CrafterConfig, CrafterSchemas, CrafterErrors } from "../types/
|
|
1
|
+
import type { CrafterConfig, CrafterSchemas, CrafterErrors } from "../types/crafter.js";
|
|
2
2
|
import type { AllPossibleErrors } from "../types/errors.js";
|
|
3
3
|
import type { Result } from "../types/result.js";
|
|
4
4
|
import type { InferValidatedInput, InferRawInput, InferValidatedBindArgs, InferRawBindArgs } from "../types/schemas.js";
|
|
5
5
|
/**
|
|
6
6
|
* Validate input using the configured input schema.
|
|
7
7
|
*/
|
|
8
|
-
export declare function validateInput<TConfig extends CrafterConfig, TSchemas extends CrafterSchemas, TErrors extends CrafterErrors>(schemas: TSchemas, config: TConfig, rawInput: InferRawInput<TSchemas> | undefined): Promise<Result<InferValidatedInput<TSchemas>, AllPossibleErrors<TErrors, TConfig, TSchemas>>>;
|
|
8
|
+
export declare function validateInput<TConfig extends CrafterConfig, TSchemas extends CrafterSchemas, TErrors extends CrafterErrors>(schemas: TSchemas, config: TConfig, rawInput: InferRawInput<TSchemas> | undefined, actionId: string): Promise<Result<InferValidatedInput<TSchemas>, AllPossibleErrors<TErrors, TConfig, TSchemas>>>;
|
|
9
9
|
/**
|
|
10
10
|
* Validate bound arguments using configured bind schemas.
|
|
11
11
|
*/
|
|
12
|
-
export declare function validateBindArgs<TConfig extends CrafterConfig, TSchemas extends CrafterSchemas, TErrors extends CrafterErrors>(schemas: TSchemas, config: TConfig, bindArgs: InferRawBindArgs<TSchemas
|
|
12
|
+
export declare function validateBindArgs<TConfig extends CrafterConfig, TSchemas extends CrafterSchemas, TErrors extends CrafterErrors>(schemas: TSchemas, config: TConfig, bindArgs: InferRawBindArgs<TSchemas>, actionId: string): Promise<Result<InferValidatedBindArgs<TSchemas>, AllPossibleErrors<TErrors, TConfig, TSchemas>>>;
|
|
13
13
|
/**
|
|
14
14
|
* Validate action output using configured output schema.
|
|
15
15
|
*/
|
|
16
|
-
export declare function validateOutput<TConfig extends CrafterConfig, TSchemas extends CrafterSchemas, TErrors extends CrafterErrors, TData>(schemas: TSchemas, config: TConfig, data: TData): Promise<Result<TData, AllPossibleErrors<TErrors, TConfig, TSchemas>>>;
|
|
16
|
+
export declare function validateOutput<TConfig extends CrafterConfig, TSchemas extends CrafterSchemas, TErrors extends CrafterErrors, TData>(schemas: TSchemas, config: TConfig, data: TData, actionId: string): Promise<Result<TData, AllPossibleErrors<TErrors, TConfig, TSchemas>>>;
|
package/dist/core/validation.js
CHANGED
|
@@ -5,30 +5,30 @@ import { createValidationError, createInternalLogicError, formatValidationIssues
|
|
|
5
5
|
/**
|
|
6
6
|
* Validate input using the configured input schema.
|
|
7
7
|
*/
|
|
8
|
-
export async function validateInput(schemas, config, rawInput) {
|
|
8
|
+
export async function validateInput(schemas, config, rawInput, actionId) {
|
|
9
9
|
if (!schemas.inputSchema) {
|
|
10
|
-
return ok(undefined);
|
|
10
|
+
return ok(undefined, actionId);
|
|
11
11
|
}
|
|
12
12
|
const result = await standardParse(schemas.inputSchema, rawInput);
|
|
13
13
|
if (Array.isArray(result.issues) && result.issues.length > 0) {
|
|
14
14
|
const format = config.validationErrorFormat ?? "flattened";
|
|
15
15
|
const baseError = formatValidationIssues(result.issues, format);
|
|
16
16
|
const inputValidationError = createValidationError(EXTERNAL_ERROR_TYPES.INPUT_VALIDATION, "Input validation failed", baseError);
|
|
17
|
-
return err(inputValidationError);
|
|
17
|
+
return err(inputValidationError, actionId);
|
|
18
18
|
}
|
|
19
19
|
if (!result.issues && "value" in result) {
|
|
20
|
-
return ok(result.value);
|
|
20
|
+
return ok(result.value, actionId);
|
|
21
21
|
}
|
|
22
22
|
// Should never happen
|
|
23
23
|
const logicErr = createInternalLogicError("Unexpected validation state in input validation: neither success nor failure");
|
|
24
|
-
return err(logicErr);
|
|
24
|
+
return err(logicErr, actionId);
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
27
|
* Validate bound arguments using configured bind schemas.
|
|
28
28
|
*/
|
|
29
|
-
export async function validateBindArgs(schemas, config, bindArgs) {
|
|
29
|
+
export async function validateBindArgs(schemas, config, bindArgs, actionId) {
|
|
30
30
|
if (!schemas.bindSchemas) {
|
|
31
|
-
return ok([]);
|
|
31
|
+
return ok([], actionId);
|
|
32
32
|
}
|
|
33
33
|
const validated = [];
|
|
34
34
|
for (let i = 0; i < schemas.bindSchemas.length; i++) {
|
|
@@ -39,32 +39,32 @@ export async function validateBindArgs(schemas, config, bindArgs) {
|
|
|
39
39
|
const format = config.validationErrorFormat ?? "flattened";
|
|
40
40
|
const baseError = formatValidationIssues(result.issues, format);
|
|
41
41
|
const bindError = createValidationError(EXTERNAL_ERROR_TYPES.BIND_ARGS_VALIDATION, "Bind arguments validation failed", baseError);
|
|
42
|
-
return err(bindError);
|
|
42
|
+
return err(bindError, actionId);
|
|
43
43
|
}
|
|
44
44
|
if ("value" in result) {
|
|
45
45
|
validated.push(result.value);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
return ok(validated);
|
|
48
|
+
return ok(validated, actionId);
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
51
|
* Validate action output using configured output schema.
|
|
52
52
|
*/
|
|
53
|
-
export async function validateOutput(schemas, config, data) {
|
|
53
|
+
export async function validateOutput(schemas, config, data, actionId) {
|
|
54
54
|
if (!schemas.outputSchema) {
|
|
55
|
-
return ok(data);
|
|
55
|
+
return ok(data, actionId);
|
|
56
56
|
}
|
|
57
57
|
const result = await standardParse(schemas.outputSchema, data);
|
|
58
58
|
if (Array.isArray(result.issues) && result.issues.length > 0) {
|
|
59
59
|
const format = config.validationErrorFormat ?? "flattened";
|
|
60
60
|
const baseError = formatValidationIssues(result.issues, format);
|
|
61
61
|
const outputError = createValidationError(INTERNAL_ERROR_TYPES.OUTPUT_VALIDATION, "Output validation failed", baseError);
|
|
62
|
-
return err(outputError);
|
|
62
|
+
return err(outputError, actionId);
|
|
63
63
|
}
|
|
64
64
|
if (!result.issues && "value" in result) {
|
|
65
|
-
return ok(result.value);
|
|
65
|
+
return ok(result.value, actionId);
|
|
66
66
|
}
|
|
67
67
|
const logicErr = createInternalLogicError("Unexpected validation state in output validation: neither success nor failure");
|
|
68
|
-
return err(logicErr);
|
|
68
|
+
return err(logicErr, actionId);
|
|
69
69
|
}
|
|
70
70
|
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAMtD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAQhF,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAO7C,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAKjC,OAAiB,EACjB,MAAe,EACf,QAA6C;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAMtD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAQhF,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAO7C,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAKjC,OAAiB,EACjB,MAAe,EACf,QAA6C,EAC7C,QAAgB;IAOhB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC,SAA0C,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAElE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,IAAI,WAAW,CAAC;QAC3D,MAAM,SAAS,GAAG,sBAAsB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhE,MAAM,oBAAoB,GAAG,qBAAqB,CAGhD,oBAAoB,CAAC,gBAAgB,EACrC,yBAAyB,EACzB,SAAS,CACV,CAAC;QAEF,OAAO,GAAG,CAAC,oBAAoB,EAAE,QAAQ,CAGxC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC,MAAM,CAAC,KAAsC,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED,sBAAsB;IACtB,MAAM,QAAQ,GAAG,wBAAwB,CACvC,8EAA8E,CAC/E,CAAC;IACF,OAAO,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAG5B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAKpC,OAAiB,EACjB,MAAe,EACf,QAAoC,EACpC,QAAgB;IAOhB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC,EAAsC,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,SAAS,GAAc,EAAE,CAAC;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;QACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEhD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,IAAI,WAAW,CAAC;YAC3D,MAAM,SAAS,GAAG,sBAAsB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAEhE,MAAM,SAAS,GAAG,qBAAqB,CAGrC,oBAAoB,CAAC,oBAAoB,EACzC,kCAAkC,EAClC,SAAS,CACV,CAAC;YAEF,OAAO,GAAG,CAAC,SAAS,EAAE,QAAQ,CAG7B,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;YACtB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC,SAA6C,EAAE,QAAQ,CAAC,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAMlC,OAAiB,EACjB,MAAe,EACf,IAAW,EACX,QAAgB;IAEhB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAE/D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,IAAI,WAAW,CAAC;QAC3D,MAAM,SAAS,GAAG,sBAAsB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhE,MAAM,WAAW,GAAG,qBAAqB,CAGvC,oBAAoB,CAAC,iBAAiB,EACtC,0BAA0B,EAC1B,SAAS,CACV,CAAC;QAEF,OAAO,GAAG,CAAC,WAAW,EAAE,QAAQ,CAG/B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC,MAAM,CAAC,KAAc,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,QAAQ,GAAG,wBAAwB,CACvC,+EAA+E,CAChF,CAAC;IACF,OAAO,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAG5B,CAAC;AACJ,CAAC"}
|
package/dist/craft.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Crafter } from "./classes/crafter.js";
|
|
2
|
+
import type { CraftedAction } from "./types/actions.js";
|
|
3
|
+
import type { CrafterConfig, CrafterSchemas, CrafterErrors, CrafterCallbacks } from "./types/crafter.js";
|
|
4
|
+
/**
|
|
5
|
+
* Represents the function that the user passes to `craft()` in order to build an action.
|
|
6
|
+
*/
|
|
7
|
+
type CraftFn<TConfig extends CrafterConfig, TSchemas extends CrafterSchemas, TErrors extends CrafterErrors, TCallbacks extends CrafterCallbacks<TConfig, TSchemas, TErrors, TData>, TData> = (crafter: Crafter<CrafterConfig, Record<string, never>, Record<string, never>, Record<string, never>, unknown>) => Crafter<TConfig, TSchemas, TErrors, TCallbacks, TData> | Promise<Crafter<TConfig, TSchemas, TErrors, TCallbacks, TData>>;
|
|
8
|
+
/**
|
|
9
|
+
* One of two entry points to the Actioncraft system.
|
|
10
|
+
* It provides you with an empty Crafter instance on which you can call any of the fluent
|
|
11
|
+
* Crafter methods to configure and define your action.
|
|
12
|
+
*
|
|
13
|
+
* Example Usage:
|
|
14
|
+
* ```ts
|
|
15
|
+
* const myAction = craft(async (action) => {
|
|
16
|
+
* return action
|
|
17
|
+
* .config(...)
|
|
18
|
+
* .schemas(...)
|
|
19
|
+
* .errors(...)
|
|
20
|
+
* .handler(...)
|
|
21
|
+
* .callbacks(...)
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @param craftFn - The function that the user passes to `craft()` in order to build an action.
|
|
26
|
+
* @returns The fully-typed server action function that can be used in your app.
|
|
27
|
+
*/
|
|
28
|
+
export declare function craft<TConfig extends CrafterConfig, TSchemas extends CrafterSchemas, TErrors extends CrafterErrors, TCallbacks extends CrafterCallbacks<TConfig, TSchemas, TErrors, TData>, TData>(craftFn: CraftFn<TConfig, TSchemas, TErrors, TCallbacks, TData>): CraftedAction<TConfig, TSchemas, TErrors, TData>;
|
|
29
|
+
export {};
|