@beignet/cli 0.0.31 → 0.0.33

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.
Files changed (107) hide show
  1. package/CHANGELOG.md +107 -0
  2. package/README.md +70 -17
  3. package/dist/check.d.ts +2 -0
  4. package/dist/check.d.ts.map +1 -1
  5. package/dist/check.js +16 -0
  6. package/dist/check.js.map +1 -1
  7. package/dist/choices.d.ts +22 -2
  8. package/dist/choices.d.ts.map +1 -1
  9. package/dist/choices.js +62 -0
  10. package/dist/choices.js.map +1 -1
  11. package/dist/config.d.ts +2 -0
  12. package/dist/config.d.ts.map +1 -1
  13. package/dist/config.js +2 -0
  14. package/dist/config.js.map +1 -1
  15. package/dist/create-prompts.d.ts +6 -2
  16. package/dist/create-prompts.d.ts.map +1 -1
  17. package/dist/create-prompts.js +1 -1
  18. package/dist/create-prompts.js.map +1 -1
  19. package/dist/db.d.ts +5 -5
  20. package/dist/db.d.ts.map +1 -1
  21. package/dist/db.js +5 -5
  22. package/dist/db.js.map +1 -1
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +386 -27
  25. package/dist/index.js.map +1 -1
  26. package/dist/inspect.d.ts +5 -0
  27. package/dist/inspect.d.ts.map +1 -1
  28. package/dist/inspect.js +805 -62
  29. package/dist/inspect.js.map +1 -1
  30. package/dist/make/inbox.d.ts.map +1 -1
  31. package/dist/make/inbox.js +5 -3
  32. package/dist/make/inbox.js.map +1 -1
  33. package/dist/make/payments.d.ts.map +1 -1
  34. package/dist/make/payments.js +58 -29
  35. package/dist/make/payments.js.map +1 -1
  36. package/dist/make/shared.d.ts +12 -3
  37. package/dist/make/shared.d.ts.map +1 -1
  38. package/dist/make/shared.js +52 -11
  39. package/dist/make/shared.js.map +1 -1
  40. package/dist/make/tenancy.d.ts.map +1 -1
  41. package/dist/make/tenancy.js +6 -4
  42. package/dist/make/tenancy.js.map +1 -1
  43. package/dist/make.d.ts.map +1 -1
  44. package/dist/make.js +136 -65
  45. package/dist/make.js.map +1 -1
  46. package/dist/outbox.d.ts +114 -1
  47. package/dist/outbox.d.ts.map +1 -1
  48. package/dist/outbox.js +190 -0
  49. package/dist/outbox.js.map +1 -1
  50. package/dist/preflight.d.ts +90 -0
  51. package/dist/preflight.d.ts.map +1 -0
  52. package/dist/preflight.js +423 -0
  53. package/dist/preflight.js.map +1 -0
  54. package/dist/provider-add.d.ts +10 -1
  55. package/dist/provider-add.d.ts.map +1 -1
  56. package/dist/provider-add.js +255 -16
  57. package/dist/provider-add.js.map +1 -1
  58. package/dist/task.d.ts.map +1 -1
  59. package/dist/task.js +2 -3
  60. package/dist/task.js.map +1 -1
  61. package/dist/templates/agents.d.ts.map +1 -1
  62. package/dist/templates/agents.js +6 -3
  63. package/dist/templates/agents.js.map +1 -1
  64. package/dist/templates/base.d.ts.map +1 -1
  65. package/dist/templates/base.js +5 -11
  66. package/dist/templates/base.js.map +1 -1
  67. package/dist/templates/index.d.ts.map +1 -1
  68. package/dist/templates/index.js +2 -0
  69. package/dist/templates/index.js.map +1 -1
  70. package/dist/templates/server.d.ts.map +1 -1
  71. package/dist/templates/server.js +10 -5
  72. package/dist/templates/server.js.map +1 -1
  73. package/dist/templates/shared.d.ts +5 -1
  74. package/dist/templates/shared.d.ts.map +1 -1
  75. package/dist/templates/shared.js +13 -1
  76. package/dist/templates/shared.js.map +1 -1
  77. package/dist/templates/testing.d.ts +5 -0
  78. package/dist/templates/testing.d.ts.map +1 -0
  79. package/dist/templates/testing.js +542 -0
  80. package/dist/templates/testing.js.map +1 -0
  81. package/dist/templates/todos.js +2 -2
  82. package/package.json +3 -2
  83. package/skills/app-structure/SKILL.md +12 -4
  84. package/src/check.ts +23 -0
  85. package/src/choices.ts +84 -0
  86. package/src/config.ts +4 -0
  87. package/src/create-prompts.ts +8 -2
  88. package/src/db.ts +12 -12
  89. package/src/index.ts +592 -37
  90. package/src/inspect.ts +1253 -156
  91. package/src/make/inbox.ts +5 -3
  92. package/src/make/payments.ts +58 -29
  93. package/src/make/shared.ts +87 -13
  94. package/src/make/tenancy.ts +6 -4
  95. package/src/make.ts +179 -65
  96. package/src/outbox.ts +363 -0
  97. package/src/preflight.ts +596 -0
  98. package/src/provider-add.ts +270 -16
  99. package/src/task.ts +2 -3
  100. package/src/templates/agents.ts +6 -3
  101. package/src/templates/base.ts +5 -13
  102. package/src/templates/index.ts +2 -0
  103. package/src/templates/server.ts +10 -5
  104. package/src/templates/shared.ts +15 -1
  105. package/src/templates/testing.ts +545 -0
  106. package/src/templates/todos.ts +2 -2
  107. package/src/test-helpers/generated-app.ts +10 -6
package/dist/outbox.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { DrainOutboxResult } from "@beignet/core/outbox";
1
+ import type { DrainOutboxResult, OutboxMessage, OutboxMessageKind, OutboxMessageStatus } from "@beignet/core/outbox";
2
2
  /**
3
3
  * Options for running one bounded outbox drain pass.
4
4
  */
@@ -7,6 +7,56 @@ export type RunOutboxDrainOptions = {
7
7
  modulePath?: string;
8
8
  batchSize?: number;
9
9
  };
10
+ /**
11
+ * Options for listing outbox messages.
12
+ */
13
+ export type RunOutboxListOptions = {
14
+ cwd?: string;
15
+ modulePath?: string;
16
+ status?: OutboxMessageStatus;
17
+ kind?: OutboxMessageKind;
18
+ name?: string;
19
+ limit?: number;
20
+ };
21
+ /**
22
+ * Options for showing one outbox message.
23
+ */
24
+ export type RunOutboxShowOptions = {
25
+ cwd?: string;
26
+ modulePath?: string;
27
+ id: string;
28
+ };
29
+ /**
30
+ * Options for requeueing one dead-lettered outbox message.
31
+ */
32
+ export type RunOutboxRequeueOptions = {
33
+ cwd?: string;
34
+ modulePath?: string;
35
+ id: string;
36
+ availableAt?: Date;
37
+ resetAttempts?: boolean;
38
+ };
39
+ /**
40
+ * Options for purging dead-lettered outbox messages.
41
+ */
42
+ export type RunOutboxPurgeOptions = {
43
+ cwd?: string;
44
+ modulePath?: string;
45
+ before?: Date;
46
+ all?: boolean;
47
+ limit?: number;
48
+ dryRun?: boolean;
49
+ };
50
+ /**
51
+ * Options for pruning delivered outbox messages.
52
+ */
53
+ export type RunOutboxPruneOptions = {
54
+ cwd?: string;
55
+ modulePath?: string;
56
+ before: Date;
57
+ limit?: number;
58
+ dryRun?: boolean;
59
+ };
10
60
  /**
11
61
  * Result returned by `beignet outbox drain`.
12
62
  */
@@ -17,8 +67,71 @@ export type RunOutboxDrainResult = {
17
67
  result: DrainOutboxResult;
18
68
  durationMs: number;
19
69
  };
70
+ /**
71
+ * Result returned by `beignet outbox list`.
72
+ */
73
+ export type RunOutboxListResult = {
74
+ schemaVersion: 1;
75
+ cwd: string;
76
+ modulePath: string;
77
+ messages: readonly OutboxMessage[];
78
+ count: number;
79
+ durationMs: number;
80
+ };
81
+ /**
82
+ * Result returned by `beignet outbox show`.
83
+ */
84
+ export type RunOutboxShowResult = {
85
+ schemaVersion: 1;
86
+ cwd: string;
87
+ modulePath: string;
88
+ message: OutboxMessage;
89
+ durationMs: number;
90
+ };
91
+ /**
92
+ * Result returned by `beignet outbox requeue`.
93
+ */
94
+ export type RunOutboxRequeueResult = {
95
+ schemaVersion: 1;
96
+ cwd: string;
97
+ modulePath: string;
98
+ message: OutboxMessage;
99
+ durationMs: number;
100
+ };
101
+ /**
102
+ * Result returned by destructive outbox admin commands.
103
+ */
104
+ export type RunOutboxDeleteResult = {
105
+ schemaVersion: 1;
106
+ cwd: string;
107
+ modulePath: string;
108
+ dryRun: boolean;
109
+ matched: number;
110
+ deleted: number;
111
+ durationMs: number;
112
+ };
20
113
  /**
21
114
  * Run one app-owned outbox drain pass from the app's outbox registry.
22
115
  */
23
116
  export declare function runOutboxDrain(options?: RunOutboxDrainOptions): Promise<RunOutboxDrainResult>;
117
+ /**
118
+ * List outbox messages through the app's outbox admin port.
119
+ */
120
+ export declare function runOutboxList(options?: RunOutboxListOptions): Promise<RunOutboxListResult>;
121
+ /**
122
+ * Show one outbox message through the app's outbox admin port.
123
+ */
124
+ export declare function runOutboxShow(options: RunOutboxShowOptions): Promise<RunOutboxShowResult>;
125
+ /**
126
+ * Requeue one dead-lettered outbox message.
127
+ */
128
+ export declare function runOutboxRequeue(options: RunOutboxRequeueOptions): Promise<RunOutboxRequeueResult>;
129
+ /**
130
+ * Purge dead-lettered outbox messages.
131
+ */
132
+ export declare function runOutboxPurge(options?: RunOutboxPurgeOptions): Promise<RunOutboxDeleteResult>;
133
+ /**
134
+ * Prune delivered outbox messages.
135
+ */
136
+ export declare function runOutboxPrune(options: RunOutboxPruneOptions): Promise<RunOutboxDeleteResult>;
24
137
  //# sourceMappingURL=outbox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../src/outbox.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAI9B;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,CAAC,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAgDF;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAyD/B"}
1
+ {"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../src/outbox.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,iBAAiB,EAEjB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EAEpB,MAAM,sBAAsB,CAAC;AAI9B;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,CAAC,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,CAAC,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,CAAC,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,EAAE,CAAC,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,EAAE,CAAC,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AA4DF;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAyD/B;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAmB9B;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAY9B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAajC;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,qBAAqB,CAAC,CA2BhC;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAqBhC"}
package/dist/outbox.js CHANGED
@@ -58,6 +58,154 @@ export async function runOutboxDrain(options = {}) {
58
58
  await outboxModule.stopOutboxDrainContext?.(ctx, contextArgs);
59
59
  }
60
60
  }
61
+ /**
62
+ * List outbox messages through the app's outbox admin port.
63
+ */
64
+ export async function runOutboxList(options = {}) {
65
+ return withOutboxAdminContext(options, "list", async ({ admin, base }) => {
66
+ const query = {
67
+ status: options.status,
68
+ kind: options.kind,
69
+ name: options.name,
70
+ };
71
+ const messages = await admin.listMessages({
72
+ ...query,
73
+ limit: options.limit,
74
+ });
75
+ const count = await admin.countMessages(query);
76
+ return {
77
+ ...base,
78
+ messages,
79
+ count,
80
+ };
81
+ });
82
+ }
83
+ /**
84
+ * Show one outbox message through the app's outbox admin port.
85
+ */
86
+ export async function runOutboxShow(options) {
87
+ return withOutboxAdminContext(options, "show", async ({ admin, base }) => {
88
+ const message = await admin.getMessage(options.id);
89
+ if (!message) {
90
+ throw new Error(`Outbox message "${options.id}" does not exist.`);
91
+ }
92
+ return {
93
+ ...base,
94
+ message,
95
+ };
96
+ });
97
+ }
98
+ /**
99
+ * Requeue one dead-lettered outbox message.
100
+ */
101
+ export async function runOutboxRequeue(options) {
102
+ return withOutboxAdminContext(options, "requeue", async ({ admin, base }) => {
103
+ const message = await admin.requeueMessage({
104
+ id: options.id,
105
+ availableAt: options.availableAt,
106
+ resetAttempts: options.resetAttempts,
107
+ });
108
+ return {
109
+ ...base,
110
+ message,
111
+ };
112
+ });
113
+ }
114
+ /**
115
+ * Purge dead-lettered outbox messages.
116
+ */
117
+ export async function runOutboxPurge(options = {}) {
118
+ if (!options.before && !options.all) {
119
+ throw new Error("Pass --before <date> to purge old dead-lettered messages, or pass --all to purge every dead-lettered message.");
120
+ }
121
+ return withOutboxAdminContext(options, "purge", async ({ admin, base }) => {
122
+ const query = {
123
+ status: "deadLettered",
124
+ updatedBefore: options.before,
125
+ };
126
+ const matched = await admin.countMessages(query);
127
+ const result = options.dryRun
128
+ ? { deleted: dryRunDeleteCount(matched, options.limit) }
129
+ : await admin.purgeDeadLettered({
130
+ before: options.before,
131
+ limit: options.limit,
132
+ });
133
+ return {
134
+ ...base,
135
+ dryRun: Boolean(options.dryRun),
136
+ matched,
137
+ deleted: result.deleted,
138
+ };
139
+ });
140
+ }
141
+ /**
142
+ * Prune delivered outbox messages.
143
+ */
144
+ export async function runOutboxPrune(options) {
145
+ return withOutboxAdminContext(options, "prune", async ({ admin, base }) => {
146
+ const query = {
147
+ status: "delivered",
148
+ deliveredBefore: options.before,
149
+ };
150
+ const matched = await admin.countMessages(query);
151
+ const result = options.dryRun
152
+ ? { deleted: dryRunDeleteCount(matched, options.limit) }
153
+ : await admin.pruneDelivered({
154
+ before: options.before,
155
+ limit: options.limit,
156
+ });
157
+ return {
158
+ ...base,
159
+ dryRun: Boolean(options.dryRun),
160
+ matched,
161
+ deleted: result.deleted,
162
+ };
163
+ });
164
+ }
165
+ async function withOutboxAdminContext(options, operation, run) {
166
+ const cwd = path.resolve(options.cwd ?? process.cwd());
167
+ const config = await loadBeignetConfig(cwd);
168
+ const modulePath = normalizePath(options.modulePath ?? config.paths.outbox);
169
+ const startedAt = performance.now();
170
+ const outboxModule = await loadOutboxModule(cwd, modulePath);
171
+ const contextArgs = { operation };
172
+ const rawContext = outboxModule.createOutboxAdminContext
173
+ ? await outboxModule.createOutboxAdminContext(contextArgs)
174
+ : await createFallbackOutboxAdminContext(outboxModule);
175
+ const ctx = assertOutboxAdminContext(rawContext, modulePath);
176
+ const admin = resolveOutboxAdminPort(ctx, modulePath);
177
+ try {
178
+ const result = await run({
179
+ admin,
180
+ base: {
181
+ schemaVersion: 1,
182
+ cwd,
183
+ modulePath,
184
+ },
185
+ });
186
+ return {
187
+ ...result,
188
+ durationMs: Math.round(performance.now() - startedAt),
189
+ };
190
+ }
191
+ finally {
192
+ if (outboxModule.stopOutboxAdminContext) {
193
+ await outboxModule.stopOutboxAdminContext(ctx, contextArgs);
194
+ }
195
+ else {
196
+ await outboxModule.stopOutboxDrainContext?.(ctx, {
197
+ registry: maybeOutboxRegistry(outboxModule.outboxRegistry),
198
+ });
199
+ }
200
+ }
201
+ }
202
+ async function createFallbackOutboxAdminContext(outboxModule) {
203
+ if (!outboxModule.createOutboxDrainContext)
204
+ return undefined;
205
+ return outboxModule.createOutboxDrainContext({
206
+ registry: maybeOutboxRegistry(outboxModule.outboxRegistry),
207
+ });
208
+ }
61
209
  async function loadOutboxModule(cwd, modulePath) {
62
210
  const absolutePath = path.join(cwd, modulePath);
63
211
  try {
@@ -92,6 +240,12 @@ function assertOutboxDrainContext(ctx, modulePath) {
92
240
  }
93
241
  return ctx;
94
242
  }
243
+ function assertOutboxAdminContext(ctx, modulePath) {
244
+ if (!isRecord(ctx) || !isRecord(ctx.ports)) {
245
+ throw new Error(`${modulePath} must export createOutboxAdminContext or createOutboxDrainContext that returns an app context with ports.outboxAdmin.`);
246
+ }
247
+ return ctx;
248
+ }
95
249
  function isOutboxPort(value) {
96
250
  return (isRecord(value) &&
97
251
  typeof value.enqueue === "function" &&
@@ -99,6 +253,36 @@ function isOutboxPort(value) {
99
253
  typeof value.markDelivered === "function" &&
100
254
  typeof value.markFailed === "function");
101
255
  }
256
+ function isOutboxAdminPort(value) {
257
+ return (isRecord(value) &&
258
+ typeof value.listMessages === "function" &&
259
+ typeof value.countMessages === "function" &&
260
+ typeof value.getMessage === "function" &&
261
+ typeof value.requeueMessage === "function" &&
262
+ typeof value.purgeDeadLettered === "function" &&
263
+ typeof value.pruneDelivered === "function");
264
+ }
265
+ function resolveOutboxAdminPort(ctx, modulePath) {
266
+ if (isOutboxAdminPort(ctx.ports.outboxAdmin))
267
+ return ctx.ports.outboxAdmin;
268
+ if (isOutboxAdminPort(ctx.ports.outbox))
269
+ return ctx.ports.outbox;
270
+ throw new Error(`${modulePath} createOutboxAdminContext must return ports.outboxAdmin, or ports.outbox must implement OutboxAdminPort.`);
271
+ }
272
+ function maybeOutboxRegistry(registry) {
273
+ if (isRecord(registry) &&
274
+ registry.events instanceof Map &&
275
+ registry.jobs instanceof Map) {
276
+ return {
277
+ events: registry.events,
278
+ jobs: registry.jobs,
279
+ };
280
+ }
281
+ return {
282
+ events: new Map(),
283
+ jobs: new Map(),
284
+ };
285
+ }
102
286
  async function recordOutboxDrain(ctx, result) {
103
287
  try {
104
288
  await (ctx.ports.instrumentation ?? ctx.ports.devtools)?.record({
@@ -123,6 +307,12 @@ function assertPositiveInteger(name, value) {
123
307
  throw new Error(`${name} must be a positive integer.`);
124
308
  }
125
309
  }
310
+ function dryRunDeleteCount(matched, limit) {
311
+ if (limit === undefined)
312
+ return matched;
313
+ assertPositiveInteger("limit", limit);
314
+ return Math.min(matched, limit);
315
+ }
126
316
  function isRecord(value) {
127
317
  return typeof value === "object" && value !== null;
128
318
  }
@@ -1 +1 @@
1
- {"version":3,"file":"outbox.js","sourceRoot":"","sources":["../src/outbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outbox.js","sourceRoot":"","sources":["../src/outbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import { type InspectDiagnostic } from "./inspect.js";
2
+ /**
3
+ * One preflight finding. Errors fail the gate; warnings and notes do not.
4
+ */
5
+ export interface PreflightFinding {
6
+ severity: "error" | "warning" | "note";
7
+ code: string;
8
+ message: string;
9
+ }
10
+ export interface PreflightOptions {
11
+ cwd: string;
12
+ /**
13
+ * Environment to validate. Defaults to `process.env` so the command checks
14
+ * the environment the deploy pipeline actually runs with.
15
+ */
16
+ env?: Record<string, string | undefined>;
17
+ /**
18
+ * Optional dotenv-style file merged under the environment (existing env
19
+ * keys win) for local rehearsal of a deploy environment.
20
+ */
21
+ envFile?: string;
22
+ /**
23
+ * App env module validated by importing it (default `lib/env.ts`). The
24
+ * module's `createEnv(...)` call performs the validation.
25
+ */
26
+ envModule?: string;
27
+ /**
28
+ * Fold doctor's production hardening diagnostics into the gate. Defaults
29
+ * to `true`.
30
+ */
31
+ doctor?: boolean;
32
+ /**
33
+ * Boot the app server and run every port's `checkHealth()`. Needs network
34
+ * access and real credentials, so it is opt-in.
35
+ */
36
+ connect?: boolean;
37
+ /**
38
+ * Module exporting `getServer` (or `server`), used by `connect`. Defaults
39
+ * to `server/index.ts`.
40
+ */
41
+ serverModule?: string;
42
+ /**
43
+ * Per-dependency health check timeout in milliseconds. Defaults to 5000.
44
+ */
45
+ connectTimeoutMs?: number;
46
+ }
47
+ export interface PreflightResult {
48
+ findings: PreflightFinding[];
49
+ /**
50
+ * Provider packages whose manifests were checked.
51
+ */
52
+ checkedProviders: string[];
53
+ /**
54
+ * Whether the app env module was found and imported.
55
+ */
56
+ envModuleChecked: boolean;
57
+ /**
58
+ * Whether doctor's production hardening diagnostics were folded in.
59
+ */
60
+ doctorChecked: boolean;
61
+ /**
62
+ * Ports whose `checkHealth()` ran during a `connect` pass.
63
+ */
64
+ checkedDependencies: string[];
65
+ }
66
+ /**
67
+ * Map doctor diagnostics to preflight findings: only production hardening
68
+ * codes are kept, and their severities are promoted for the deploy gate —
69
+ * doctor errors and warnings both fail preflight; hints become warnings.
70
+ */
71
+ export declare function productionFindingsFromDiagnostics(diagnostics: readonly InspectDiagnostic[]): PreflightFinding[];
72
+ /**
73
+ * Parse a dotenv-style file: KEY=VALUE lines, `#` comments, optional single
74
+ * or double quotes around the value.
75
+ */
76
+ export declare function parseEnvFile(source: string): Record<string, string>;
77
+ /**
78
+ * Validate the deploy environment against installed provider manifests, the
79
+ * app's `.env.example` placeholders, and the app env schema module.
80
+ *
81
+ * This is a runtime gate, unlike `beignet doctor`: it reads the actual
82
+ * environment the process runs with, so run it in the deploy pipeline where
83
+ * production configuration is present.
84
+ */
85
+ export declare function runPreflight(options: PreflightOptions): Promise<PreflightResult>;
86
+ /**
87
+ * Format a preflight result for terminal output.
88
+ */
89
+ export declare function formatPreflight(result: PreflightResult, cwd: string): string;
90
+ //# sourceMappingURL=preflight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,iBAAiB,EAGvB,MAAM,cAAc,CAAC;AAQtB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B;;OAEG;IACH,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B;;OAEG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,WAAW,EAAE,SAAS,iBAAiB,EAAE,GACxC,gBAAgB,EAAE,CAUpB;AAOD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBnE;AAgDD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CA8J1B;AAgJD;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CA0C5E"}