@pikku/cli 0.12.50 → 0.12.52
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/console-app/assets/{index-DybYeIfd.js → index-92DoVRHq.js} +142 -139
- package/console-app/index.html +1 -1
- package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-channel.js +1 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
- package/dist/.pikku/console/pikku-node-types.gen.d.ts +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.js +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.json +164 -164
- package/dist/.pikku/function/pikku-functions.gen.js +1 -1
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +1 -1
- package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
- package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +1 -1
- package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +1 -1
- package/dist/.pikku/http/pikku-http-wirings.gen.js +1 -1
- package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
- package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -1
- package/dist/.pikku/pikku-bootstrap.gen.js +1 -1
- package/dist/.pikku/pikku-meta-service.gen.d.ts +1 -1
- package/dist/.pikku/pikku-meta-service.gen.js +1 -1
- package/dist/.pikku/pikku-services.gen.d.ts +1 -1
- package/dist/.pikku/pikku-types.gen.d.ts +1 -1
- package/dist/.pikku/pikku-types.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +2 -2
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
- package/dist/.pikku/schemas/register.gen.js +11 -11
- package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
- package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
- package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
- package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
- package/dist/bin/pikku-bin.mjs +2 -2
- package/dist/src/deploy/build-pipeline.js +2 -1
- package/dist/src/deploy/provider-adapter.d.ts +13 -0
- package/dist/src/functions/wirings/auth/pikku-command-auth.js +1 -1
- package/dist/src/functions/wirings/auth/serialize-auth-gen.d.ts +1 -1
- package/dist/src/functions/wirings/auth/serialize-auth-gen.js +15 -8
- package/dist/src/scaffold/rpc-remote.gen.js +1 -1
- package/package.json +5 -5
- package/skills/pikku-better-auth/SKILL.md +7 -2
|
@@ -109,15 +109,15 @@
|
|
|
109
109
|
"pikkuCommandChannels": "pikkuCommandChannels",
|
|
110
110
|
"pikkuCLIEntry": "pikkuCLIEntry",
|
|
111
111
|
"pikkuCLI": "pikkuCLI",
|
|
112
|
-
"pikkuCredentials": "pikkuCredentials",
|
|
113
112
|
"pikkuConsoleFunctions": "pikkuConsoleFunctions",
|
|
114
113
|
"pikkuNodeTypes": "pikkuNodeTypes",
|
|
115
114
|
"pikkuNodesMeta": "pikkuNodesMeta",
|
|
116
|
-
"
|
|
115
|
+
"pikkuCredentials": "pikkuCredentials",
|
|
117
116
|
"pikkuFunctionTypesSplit": "pikkuFunctionTypesSplit",
|
|
118
117
|
"pikkuFunctionTypes": "pikkuFunctionTypes",
|
|
119
118
|
"pikkuFunctions": "pikkuFunctions",
|
|
120
119
|
"pikkuServices": "pikkuServices",
|
|
120
|
+
"pikkuGateway": "pikkuGateway",
|
|
121
121
|
"pikkuHTTPMap": "pikkuHTTPMap",
|
|
122
122
|
"pikkuCommandHTTP": "pikkuCommandHTTP",
|
|
123
123
|
"pikkuHTTPTypes": "pikkuHTTPTypes",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* This file was generated by @pikku/cli@0.12.
|
|
2
|
+
* This file was generated by @pikku/cli@0.12.52
|
|
3
3
|
*/
|
|
4
4
|
import { addSchema } from '@pikku/core/schema';
|
|
5
5
|
import * as PikkuSchemasOutput from './schemas/PikkuSchemasOutput.schema.json' with { type: 'json' };
|
|
@@ -202,14 +202,14 @@ import * as PikkuPublicAgentOutput from './schemas/PikkuPublicAgentOutput.schema
|
|
|
202
202
|
addSchema('PikkuPublicAgentOutput', PikkuPublicAgentOutput);
|
|
203
203
|
import * as PikkuCommandChannelsOutput from './schemas/PikkuCommandChannelsOutput.schema.json' with { type: 'json' };
|
|
204
204
|
addSchema('PikkuCommandChannelsOutput', PikkuCommandChannelsOutput);
|
|
205
|
-
import * as PikkuConsoleFunctionsOutput from './schemas/PikkuConsoleFunctionsOutput.schema.json' with { type: 'json' };
|
|
206
|
-
addSchema('PikkuConsoleFunctionsOutput', PikkuConsoleFunctionsOutput);
|
|
207
|
-
import * as PikkuNodesMetaOutput from './schemas/PikkuNodesMetaOutput.schema.json' with { type: 'json' };
|
|
208
|
-
addSchema('PikkuNodesMetaOutput', PikkuNodesMetaOutput);
|
|
209
205
|
import * as PikkuCLIEntryOutput from './schemas/PikkuCLIEntryOutput.schema.json' with { type: 'json' };
|
|
210
206
|
addSchema('PikkuCLIEntryOutput', PikkuCLIEntryOutput);
|
|
211
207
|
import * as PikkuCLIOutput from './schemas/PikkuCLIOutput.schema.json' with { type: 'json' };
|
|
212
208
|
addSchema('PikkuCLIOutput', PikkuCLIOutput);
|
|
209
|
+
import * as PikkuConsoleFunctionsOutput from './schemas/PikkuConsoleFunctionsOutput.schema.json' with { type: 'json' };
|
|
210
|
+
addSchema('PikkuConsoleFunctionsOutput', PikkuConsoleFunctionsOutput);
|
|
211
|
+
import * as PikkuNodesMetaOutput from './schemas/PikkuNodesMetaOutput.schema.json' with { type: 'json' };
|
|
212
|
+
addSchema('PikkuNodesMetaOutput', PikkuNodesMetaOutput);
|
|
213
213
|
import * as PikkuFunctionTypesSplitInput from './schemas/PikkuFunctionTypesSplitInput.schema.json' with { type: 'json' };
|
|
214
214
|
addSchema('PikkuFunctionTypesSplitInput', PikkuFunctionTypesSplitInput);
|
|
215
215
|
import * as PikkuFunctionTypesInput from './schemas/PikkuFunctionTypesInput.schema.json' with { type: 'json' };
|
|
@@ -236,6 +236,12 @@ import * as PikkuQueueOutput from './schemas/PikkuQueueOutput.schema.json' with
|
|
|
236
236
|
addSchema('PikkuQueueOutput', PikkuQueueOutput);
|
|
237
237
|
import * as PikkuEventsScaffoldOutput from './schemas/PikkuEventsScaffoldOutput.schema.json' with { type: 'json' };
|
|
238
238
|
addSchema('PikkuEventsScaffoldOutput', PikkuEventsScaffoldOutput);
|
|
239
|
+
import * as PikkuPublicRPCOutput from './schemas/PikkuPublicRPCOutput.schema.json' with { type: 'json' };
|
|
240
|
+
addSchema('PikkuPublicRPCOutput', PikkuPublicRPCOutput);
|
|
241
|
+
import * as PikkuRemoteRPCOutput from './schemas/PikkuRemoteRPCOutput.schema.json' with { type: 'json' };
|
|
242
|
+
addSchema('PikkuRemoteRPCOutput', PikkuRemoteRPCOutput);
|
|
243
|
+
import * as PikkuRPCOutput from './schemas/PikkuRPCOutput.schema.json' with { type: 'json' };
|
|
244
|
+
addSchema('PikkuRPCOutput', PikkuRPCOutput);
|
|
239
245
|
import * as PikkuSchedulerOutput from './schemas/PikkuSchedulerOutput.schema.json' with { type: 'json' };
|
|
240
246
|
addSchema('PikkuSchedulerOutput', PikkuSchedulerOutput);
|
|
241
247
|
import * as PikkuTriggerTypesInput from './schemas/PikkuTriggerTypesInput.schema.json' with { type: 'json' };
|
|
@@ -244,11 +250,5 @@ import * as PikkuTriggerOutput from './schemas/PikkuTriggerOutput.schema.json' w
|
|
|
244
250
|
addSchema('PikkuTriggerOutput', PikkuTriggerOutput);
|
|
245
251
|
import * as PikkuWorkflowRoutesOutput from './schemas/PikkuWorkflowRoutesOutput.schema.json' with { type: 'json' };
|
|
246
252
|
addSchema('PikkuWorkflowRoutesOutput', PikkuWorkflowRoutesOutput);
|
|
247
|
-
import * as PikkuPublicRPCOutput from './schemas/PikkuPublicRPCOutput.schema.json' with { type: 'json' };
|
|
248
|
-
addSchema('PikkuPublicRPCOutput', PikkuPublicRPCOutput);
|
|
249
|
-
import * as PikkuRemoteRPCOutput from './schemas/PikkuRemoteRPCOutput.schema.json' with { type: 'json' };
|
|
250
|
-
addSchema('PikkuRemoteRPCOutput', PikkuRemoteRPCOutput);
|
|
251
|
-
import * as PikkuRPCOutput from './schemas/PikkuRPCOutput.schema.json' with { type: 'json' };
|
|
252
|
-
addSchema('PikkuRPCOutput', PikkuRPCOutput);
|
|
253
253
|
import * as PikkuCLIConfig from './schemas/PikkuCLIConfig.schema.json' with { type: 'json' };
|
|
254
254
|
addSchema('PikkuCLIConfig', PikkuCLIConfig);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* This file was generated by @pikku/cli@0.12.
|
|
2
|
+
* This file was generated by @pikku/cli@0.12.52
|
|
3
3
|
*/
|
|
4
4
|
export { wireVariable } from '@pikku/core/variable';
|
|
5
5
|
export type { CoreVariable, VariableDefinitionMeta, VariableDefinitionsMeta } from '@pikku/core/variable';
|
package/dist/bin/pikku-bin.mjs
CHANGED
|
@@ -11,8 +11,8 @@ async function checkForUpdate() {
|
|
|
11
11
|
})
|
|
12
12
|
if (!res.ok) return
|
|
13
13
|
const { version: latest } = await res.json()
|
|
14
|
-
if (latest !== '0.12.
|
|
15
|
-
process.stderr.write(`\n Update available 0.12.
|
|
14
|
+
if (latest !== '0.12.52') {
|
|
15
|
+
process.stderr.write(`\n Update available 0.12.52 → ${latest}\n brew upgrade pikku or npm install -g @pikku/cli\n\n`)
|
|
16
16
|
}
|
|
17
17
|
} catch {}
|
|
18
18
|
}
|
|
@@ -188,7 +188,8 @@ export async function runBuildPipeline(options) {
|
|
|
188
188
|
await mkdir(unitDir, { recursive: true });
|
|
189
189
|
const ctx = getEntryContext(unitDir, pikkuDir, unit, inspectorState);
|
|
190
190
|
const source = unit.target === 'server'
|
|
191
|
-
? generateServerEntrySource(ctx)
|
|
191
|
+
? (provider.generateServerEntrySource?.(ctx) ??
|
|
192
|
+
generateServerEntrySource(ctx))
|
|
192
193
|
: provider.generateEntrySource(ctx);
|
|
193
194
|
await writeFile(entryPath, source, 'utf-8');
|
|
194
195
|
if (unit.target === 'server') {
|
|
@@ -59,6 +59,19 @@ export interface ProviderAdapter {
|
|
|
59
59
|
* Called once per unit.
|
|
60
60
|
*/
|
|
61
61
|
generateEntrySource(ctx: EntryGenerationContext): string;
|
|
62
|
+
/**
|
|
63
|
+
* Generate the entry file source for a `target: 'server'` (container) unit.
|
|
64
|
+
*
|
|
65
|
+
* Optional. When a provider implements it, the deploy pipeline uses it
|
|
66
|
+
* instead of the provider-agnostic `generateServerEntrySource`, so the
|
|
67
|
+
* provider can inject the SAME platform services (kysely, secrets, …) into
|
|
68
|
+
* the container that it injects into its serverless workers — sourcing the
|
|
69
|
+
* bindings from `process.env` instead of a runtime `env` object. When
|
|
70
|
+
* omitted, the pipeline falls back to the generic generator (no platform
|
|
71
|
+
* injection), which is correct for providers whose containers carry no
|
|
72
|
+
* platform services.
|
|
73
|
+
*/
|
|
74
|
+
generateServerEntrySource?(ctx: EntryGenerationContext): string;
|
|
62
75
|
/**
|
|
63
76
|
* Generate provider-specific config files per unit (e.g. wrangler.toml).
|
|
64
77
|
* Returns a map of filename → content to write into the unit directory.
|
|
@@ -18,7 +18,7 @@ export const pikkuAuth = pikkuSessionlessFunc({
|
|
|
18
18
|
// has no OAuth providers — still generates its /auth/* wiring.
|
|
19
19
|
if (!state.auth.definition)
|
|
20
20
|
return;
|
|
21
|
-
const { wiring, secrets, middleware } = serializeAuthGen(state.auth.definition, state.auth.providers, authFile, typesDeclarationFile, packageMappings ?? {});
|
|
21
|
+
const { wiring, secrets, middleware } = serializeAuthGen(state.auth.definition, state.auth.providers, authFile, typesDeclarationFile, packageMappings ?? {}, state.auth.hasUserSessionMiddleware ?? false);
|
|
22
22
|
// The secrets file sits alongside authFile so re-inspection rediscovers it.
|
|
23
23
|
// It is kept separate from the wiring file because the CLI forbids Zod
|
|
24
24
|
// schemas and HTTP wiring (wireHTTPRoutes) in the same file (PKU490).
|
|
@@ -33,4 +33,4 @@ export interface AuthGenOutput {
|
|
|
33
33
|
* wiring, the routes flow through inspection into the deploy manifest (one
|
|
34
34
|
* worker for all auth routes).
|
|
35
35
|
*/
|
|
36
|
-
export declare const serializeAuthGen: (definition: AuthDefinition, providers: string[], authFile: string, typesDeclarationFile: string, packageMappings: Record<string, string
|
|
36
|
+
export declare const serializeAuthGen: (definition: AuthDefinition, providers: string[], authFile: string, typesDeclarationFile: string, packageMappings: Record<string, string>, hasUserSessionMiddleware?: boolean) => AuthGenOutput;
|
|
@@ -33,7 +33,7 @@ function variableSchemaName(name, field) {
|
|
|
33
33
|
* wiring, the routes flow through inspection into the deploy manifest (one
|
|
34
34
|
* worker for all auth routes).
|
|
35
35
|
*/
|
|
36
|
-
export const serializeAuthGen = (definition, providers, authFile, typesDeclarationFile, packageMappings) => {
|
|
36
|
+
export const serializeAuthGen = (definition, providers, authFile, typesDeclarationFile, packageMappings, hasUserSessionMiddleware = false) => {
|
|
37
37
|
const known = providers.filter((p) => p in PROVIDER_REGISTRY);
|
|
38
38
|
const basePath = definition.basePath;
|
|
39
39
|
// Side-effect import of the user's auth file so `pikkuBetterAuth` runs and
|
|
@@ -116,15 +116,22 @@ export const serializeAuthGen = (definition, providers, authFile, typesDeclarati
|
|
|
116
116
|
// file's auth.wiring import (the full better-auth server) isn't dragged into
|
|
117
117
|
// every unit — only the auth unit bundles it.
|
|
118
118
|
const stateless = definition.cookieCache;
|
|
119
|
+
// Emit the generated global betterAuthSession() only when it's the stateful
|
|
120
|
+
// path AND the user hasn't registered their own global betterAuthSession(...).
|
|
121
|
+
// A user registration means they want to customize it (mapSession/impersonation/
|
|
122
|
+
// apiKey); the generated default-map one would run first and pre-empt theirs via
|
|
123
|
+
// the `if (session) next()` short-circuit, so we step aside. Mirrors the
|
|
124
|
+
// stateless skip (state.auth.userStatelessSession, pikkujs/pikku#754).
|
|
125
|
+
const emitStatefulSession = !stateless && !hasUserSessionMiddleware;
|
|
119
126
|
const wiring = [
|
|
120
127
|
'// AUTO-GENERATED by pikku CLI — do not edit',
|
|
121
128
|
'',
|
|
122
|
-
|
|
123
|
-
? `import { pikkuSessionlessFunc, wireHTTPRoutes } from '${pikkuTypesImportPath}'`
|
|
124
|
-
: `import { pikkuSessionlessFunc, wireHTTPRoutes
|
|
125
|
-
|
|
126
|
-
? `import { createAuthHandler } from '@pikku/better-auth'`
|
|
127
|
-
: `import { createAuthHandler
|
|
129
|
+
emitStatefulSession
|
|
130
|
+
? `import { pikkuSessionlessFunc, wireHTTPRoutes, addHTTPMiddleware } from '${pikkuTypesImportPath}'`
|
|
131
|
+
: `import { pikkuSessionlessFunc, wireHTTPRoutes } from '${pikkuTypesImportPath}'`,
|
|
132
|
+
emitStatefulSession
|
|
133
|
+
? `import { createAuthHandler, betterAuthSession } from '@pikku/better-auth'`
|
|
134
|
+
: `import { createAuthHandler } from '@pikku/better-auth'`,
|
|
128
135
|
`import '${configImportPath}'`,
|
|
129
136
|
'',
|
|
130
137
|
// createAuthHandler is called once at module load; the exported handler is a
|
|
@@ -138,7 +145,7 @@ export const serializeAuthGen = (definition, providers, authFile, typesDeclarati
|
|
|
138
145
|
`})`,
|
|
139
146
|
'',
|
|
140
147
|
];
|
|
141
|
-
if (
|
|
148
|
+
if (emitStatefulSession) {
|
|
142
149
|
// Stateful: betterAuthSession calls services.auth(), so it stays here with
|
|
143
150
|
// the auth.wiring import.
|
|
144
151
|
wiring.push(`addHTTPMiddleware('*', [betterAuthSession()])`, '');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pikku/cli",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.52",
|
|
4
4
|
"author": "yasser.fadl@gmail.com",
|
|
5
5
|
"license": "BUSL-1.1",
|
|
6
6
|
"imports": {
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@electric-sql/pglite": "^0.5.1",
|
|
29
29
|
"@openapi-contrib/json-schema-to-openapi-schema": "^4.3.1",
|
|
30
|
-
"@pikku/better-auth": "^0.12.
|
|
30
|
+
"@pikku/better-auth": "^0.12.12",
|
|
31
31
|
"@pikku/core": "^0.12.37",
|
|
32
|
-
"@pikku/deploy-cloudflare": "^0.12.
|
|
33
|
-
"@pikku/fetch": "^0.12.
|
|
34
|
-
"@pikku/inspector": "^0.12.
|
|
32
|
+
"@pikku/deploy-cloudflare": "^0.12.5",
|
|
33
|
+
"@pikku/fetch": "^0.12.5",
|
|
34
|
+
"@pikku/inspector": "^0.12.26",
|
|
35
35
|
"@pikku/kysely": "^0.12.16",
|
|
36
36
|
"@pikku/kysely-node-sqlite": "^0.12.2",
|
|
37
37
|
"@pikku/node-http-server": "^0.12.2",
|
|
@@ -101,9 +101,14 @@ Enabling `session: { cookieCache: { enabled: true } }` makes the CLI split out a
|
|
|
101
101
|
|
|
102
102
|
**Tradeoff:** server-side session revocation isn't seen until the cookie cache expires (sign-out is still immediate — it deletes the cookie).
|
|
103
103
|
|
|
104
|
-
**
|
|
104
|
+
**Don't add a redundant default `addHTTPMiddleware('*', [betterAuthSession()])`** — with cookieCache on, that re-drags the stateful server into every unit and defeats the split (validate flags it as `better-auth-stateful-session-global`). If you don't need to customize the session, the generated middleware is enough.
|
|
105
105
|
|
|
106
|
-
**
|
|
106
|
+
**Customizing the session bridge (`mapSession`, `impersonation`, `apiKey`, …):** you do NOT chain a second middleware on top of the generated one — register your OWN global session middleware and the CLI steps aside (it stops generating its default). This works on both paths and is detected the same way:
|
|
107
|
+
|
|
108
|
+
- **Stateless (cookieCache on):** register `betterAuthStatelessSession({ mapSession })` **globally** — `addHTTPMiddleware('*', [...])` or `addGlobalMiddleware([...])`. The CLI sees the global registration and skips emitting `auth-middleware.gen.ts` (pikkujs/pikku#754), so you keep cookieCache's lean bundles *and* your custom fields.
|
|
109
|
+
- **Stateful (cookieCache off):** register `betterAuthSession({ mapSession, impersonation })` **globally**. The CLI detects it (`hasUserSessionMiddleware`) and omits its own `addHTTPMiddleware('*', [betterAuthSession()])` from `auth.gen.ts` — so there's exactly one session bridge in the chain, yours.
|
|
110
|
+
|
|
111
|
+
In both cases a **route-scoped** registration (`addHTTPMiddleware('/some/path', [...])`) does NOT count — only a global one suppresses the generated default. The generated middleware in a `.gen.ts` file is also ignored by the detector, so regeneration never self-suppresses.
|
|
107
112
|
|
|
108
113
|
### 2. Production database adapter
|
|
109
114
|
|