From fcd30502721bf9336baca70a252737dc99929c4f Mon Sep 17 00:00:00 2001 From: Tom Brulin Date: Mon, 16 Feb 2026 09:05:59 +0100 Subject: [PATCH 1/2] feat(assembler): index entities custom import path inertia --- src/assembler_hooks/index_entities.ts | 8 +++- src/types.ts | 1 + src/utils.ts | 5 ++- tests/index_generator.spec.ts | 62 +++++++++++++++++++++++++++ 4 files changed, 73 insertions(+), 3 deletions(-) diff --git a/src/assembler_hooks/index_entities.ts b/src/assembler_hooks/index_entities.ts index 169ff559..e4aabe51 100644 --- a/src/assembler_hooks/index_entities.ts +++ b/src/assembler_hooks/index_entities.ts @@ -82,6 +82,7 @@ export function indexEntities(entities: IndexEntitiesConfig = {}) { source: 'app/transformers', importAlias: '#transformers', withSharedProps: false, + inertiaMiddlewareImportPath: '#middleware/inertia_middleware', skipSegments: ['transformers'], output: '.adonisjs/client/data.d.ts', }, @@ -166,7 +167,12 @@ export function indexEntities(entities: IndexEntitiesConfig = {}) { }, transformValue: helpers.toImportPath, }) - outputTransformerDataObjects(transformersList, buffer, transformers.withSharedProps) + outputTransformerDataObjects( + transformersList, + buffer, + transformers.withSharedProps, + transformers.inertiaMiddlewareImportPath + ) }, importAlias: transformers.importAlias, output: transformers.output, diff --git a/src/types.ts b/src/types.ts index 575cc212..e1e7ae21 100644 --- a/src/types.ts +++ b/src/types.ts @@ -353,6 +353,7 @@ export type IndexEntitiesConfig = { enabled?: boolean /** Whether to include shared props in transformers */ withSharedProps?: boolean + inertiaMiddlewareImportPath?: string /** Source directory for transformers */ source?: string /** Import alias for transformers */ diff --git a/src/utils.ts b/src/utils.ts index d95ab44e..65d5e482 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -84,7 +84,8 @@ export async function importTypeScript( export async function outputTransformerDataObjects( transformersList: RecursiveFileTree, buffer: Assembler.FileBuffer, - withSharedProps: boolean + withSharedProps: boolean, + inertiaMiddlewareImportPath: string = '#middleware/inertia_middleware' ) { const importsBuffer = buffer.create() importsBuffer.write(`/// `) @@ -128,7 +129,7 @@ export async function outputTransformerDataObjects( generateNamespaceTree(transformersList, []) if (withSharedProps) { - importsBuffer.write(`import type InertiaMiddleware from '#middleware/inertia_middleware'`) + importsBuffer.write(`import type InertiaMiddleware from '${inertiaMiddlewareImportPath}'`) buffer.write('export type SharedProps = InferSharedProps') } diff --git a/tests/index_generator.spec.ts b/tests/index_generator.spec.ts index bcd2a636..2d0c8e04 100644 --- a/tests/index_generator.spec.ts +++ b/tests/index_generator.spec.ts @@ -246,6 +246,68 @@ test.group('Index generator', () => { ) }) + test('generate transformers index with shared props and custom inertia middleware import path', async ({ + assert, + fs, + }) => { + const cliUi = Kernel.create().ui + cliUi.switchMode('raw') + + await fs.create('app/transformers/user_transformer.ts', '') + await fs.create('app/transformers/blog/post_transformer.ts', '') + + const generator = new IndexGenerator(stringHelpers.toUnixSlash(fs.basePath), cliUi.logger) + const indexer = indexEntities({ + controllers: { + enabled: false, + }, + events: { + enabled: false, + }, + listeners: { + enabled: false, + }, + transformers: { + enabled: true, + withSharedProps: true, + inertiaMiddlewareImportPath: '#core/middleware/inertia_middleware', + }, + }) + + indexer.run({} as any, {} as any, generator) + await generator.generate() + + await assert.fileExists('.adonisjs/client/data.d.ts') + assert.snapshot(await fs.contents('.adonisjs/client/data.d.ts')).matchInline(` + "/// + import type { InferData, InferVariants } from '@adonisjs/core/types/transformers' + import type { InferSharedProps } from '@adonisjs/inertia/types' + import type BlogPostTransformer from '#transformers/blog/post_transformer' + import type UserTransformer from '#transformers/user_transformer' + import type InertiaMiddleware from '#core/middleware/inertia_middleware' + + export namespace Data { + export namespace Blog { + export type Post = InferData + export namespace Post { + export type Variants = InferVariants + } + } + export type User = InferData + export namespace User { + export type Variants = InferVariants + } + export type SharedProps = InferSharedProps + } + " + `) + assert.isDefined( + cliUi.logger + .getLogs() + .find(({ message }) => message.includes('[ blue(info) ] codegen: created')) + ) + }) + test('generate transformers index with deeply nested directories', async ({ assert, fs }) => { const cliUi = Kernel.create().ui cliUi.switchMode('raw') From 23764297e28fe8fdbba9833eb5c0c427700e6f09 Mon Sep 17 00:00:00 2001 From: Tom Brulin Date: Mon, 16 Feb 2026 09:12:53 +0100 Subject: [PATCH 2/2] feat(index_entities): update assemblers doc --- src/assembler_hooks/index_entities.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/assembler_hooks/index_entities.ts b/src/assembler_hooks/index_entities.ts index e4aabe51..dde5c315 100644 --- a/src/assembler_hooks/index_entities.ts +++ b/src/assembler_hooks/index_entities.ts @@ -31,6 +31,11 @@ import { outputTransformerDataObjects } from '../utils.ts' * source: 'app/custom-events', * importAlias: '#custom-events' * }, + * assemblers: { + * enabled: true, + * withSharedProps: true, + * inertiaMiddlewareImportPath: '#middleware/inertia_middleware' + * }, * controllers: { * enabled: false * }