@ontahi/runtime-nextjs 0.1.0-alpha.7 → 1.0.0-alpha.9
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.
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import 'server-only';
|
|
2
|
+
import type { PortableOperationConditions } from '@ontahi/core/data-graph';
|
|
2
3
|
import { createFeatureAllQueryTarget, type ActionInvalidationTarget, type ActionQueryKey, type ActionQuerySpec } from '@ontahi/core/runtime/actions';
|
|
3
4
|
import { type EffectSuccessPayload, type LayerConcern, type OperationFailure, type OperationInput, type OperationRequirement, type OperationRuntimeError } from '@ontahi/core/runtime/server';
|
|
4
5
|
import type { Effect } from 'effect';
|
|
@@ -41,7 +42,7 @@ type CanonicalDomainOperationForClient<TClient> = {
|
|
|
41
42
|
telemetrySpanName?: string;
|
|
42
43
|
requires?: ReadonlyArray<OperationRequirement<InferClientParsedInput<TClient> & OperationInput>>;
|
|
43
44
|
concerns?: ReadonlyArray<LayerConcern<InferClientParsedInput<TClient>, unknown>>;
|
|
44
|
-
|
|
45
|
+
conditions?: PortableOperationConditions;
|
|
45
46
|
};
|
|
46
47
|
type AnyDomainOperationForClient<TClient, Data> = DomainOperationForClient<TClient, Data> | CanonicalDomainOperationForClient<TClient>;
|
|
47
48
|
type InvalidationResolver<TInput, TData> = (args: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/actions/builder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/actions/builder.ts"],"names":[],"mappings":"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"}
|
package/dist/actions/builder.js
CHANGED
|
@@ -96,7 +96,7 @@ const createActionBuilder = (client, metadata, config) => {
|
|
|
96
96
|
telemetrySpanName: operation.telemetrySpanName,
|
|
97
97
|
requires: operation.requires,
|
|
98
98
|
concerns: operation.concerns,
|
|
99
|
-
|
|
99
|
+
conditions: operation.conditions,
|
|
100
100
|
});
|
|
101
101
|
return runOperation(operationRunner, options);
|
|
102
102
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/actions/builder.ts"],"names":[],"mappings":"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","sourcesContent":["import 'server-only';\n\nimport {\n attachActionRuntime,\n createFeatureAllQueryTarget,\n getActionQueryKeyPrefixFromSpec,\n resolveInvalidationTarget,\n type ActionInvalidationTarget,\n type ActionQueryKey,\n type ActionQuerySpec,\n} from '@ontahi/core/runtime/actions';\nimport {\n layer,\n runServerEffect,\n type EffectSuccessPayload,\n type LayerConcern,\n type OperationFailure,\n type OperationInput,\n type OperationRequirement,\n type OperationRuntimeError,\n} from '@ontahi/core/runtime/server';\nimport { isRecord } from '@ontahi/core/value/object';\nimport type { Effect } from 'effect';\nimport type {\n InputSchemaFactoryFn,\n MaybeBrandThrows,\n SafeActionClient,\n SafeActionFn,\n ServerCodeFn,\n} from 'next-safe-action';\n\nimport { type ActionMetadata, withActionMetadata } from './transport.js';\n\nconst toScopeSegment = (value: string) =>\n value.replace(/-([a-z])/g, (_match, letter: string) => letter.toUpperCase());\n\ntype InferClientMetadata<TClient> =\n TClient extends SafeActionClient<\n any,\n any,\n any,\n infer Metadata,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >\n ? Metadata\n : never;\n\ntype InferClientCtx<TClient> =\n TClient extends SafeActionClient<any, any, any, any, any, infer Ctx, any, any, any, any, any, any>\n ? Ctx\n : object;\n\ntype InferClientInputSchema<TClient> =\n TClient extends SafeActionClient<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n infer InputSchema,\n any,\n any,\n any,\n any\n >\n ? InputSchema\n : undefined;\n\ntype InferClientBindArgsSchemas<TClient> =\n TClient extends SafeActionClient<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n infer BindArgsSchemas,\n any,\n any\n >\n ? BindArgsSchemas\n : readonly [];\n\ntype InferStandardSchemaOutput<Schema> = Schema extends {\n readonly '~standard': {\n readonly types?: {\n readonly output: infer Output;\n };\n };\n}\n ? Output\n : undefined;\n\ntype InferClientParsedInput<TClient> = InferStandardSchemaOutput<InferClientInputSchema<TClient>>;\n\ntype ActionFnForClient<TClient, Data> =\n TClient extends SafeActionClient<\n infer ServerError,\n any,\n any,\n any,\n any,\n any,\n any,\n infer InputSchema,\n any,\n infer BindArgsSchemas,\n infer ShapedErrors,\n infer ThrowsValidationErrors\n >\n ? MaybeBrandThrows<\n SafeActionFn<ServerError, InputSchema, BindArgsSchemas, ShapedErrors, Data>,\n ThrowsValidationErrors\n >\n : never;\n\ntype ActionArgsForClient<TClient> = Parameters<\n ServerCodeFn<\n InferClientMetadata<TClient>,\n InferClientCtx<TClient>,\n InferClientInputSchema<TClient>,\n InferClientBindArgsSchemas<TClient>,\n unknown\n >\n>[0];\n\ntype ActionInputFnForClient<TClient, Data> = (\n parsedInput: InferClientParsedInput<TClient>,\n) => Data | Promise<Data>;\n\ntype MaybePromise<T> = T | Promise<T>;\n\ntype ActionOperationOptions<TClient, Data> = {\n mapInput?: (\n parsedInput: InferClientParsedInput<TClient>,\n actionArgs: ActionArgsForClient<TClient>,\n ) => unknown;\n onSuccess?: (args: {\n parsedInput: InferClientParsedInput<TClient>;\n input: unknown;\n result: Awaited<Data>;\n actionArgs: ActionArgsForClient<TClient>;\n }) => MaybePromise<unknown>;\n};\n\ntype DomainOperationForClient<TClient, Data> = {\n operation: ActionInputFnForClient<TClient, Data>;\n};\n\ntype CanonicalDomainOperationForClient<TClient> = {\n name: string;\n layer: string;\n run: (\n input: InferClientParsedInput<TClient>,\n ) => Effect.Effect<\n Record<string, unknown> | void | EffectSuccessPayload<Record<string, unknown> | void>,\n OperationFailure | OperationRuntimeError\n >;\n defectLogMessage?: string;\n defectPublicMessage?: string;\n extra?: (input: InferClientParsedInput<TClient>) => Record<string, unknown>;\n telemetrySpanName?: string;\n requires?: ReadonlyArray<OperationRequirement<InferClientParsedInput<TClient> & OperationInput>>;\n concerns?: ReadonlyArray<LayerConcern<InferClientParsedInput<TClient>, unknown>>;\n contracts?: unknown;\n};\n\ntype AnyDomainOperationForClient<TClient, Data> =\n | DomainOperationForClient<TClient, Data>\n | CanonicalDomainOperationForClient<TClient>;\n\ntype InvalidationResolver<TInput, TData> = (args: {\n input: TInput;\n data: TData;\n}) => ActionInvalidationTarget[];\n\ntype AnySafeActionClient = SafeActionClient<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n>;\n\ntype ResolvedInputSchema<Schema> =\n Schema extends InputSchemaFactoryFn<any, infer NextSchema> ? NextSchema : Schema;\n\ntype NextClientForSchema<\n Client extends AnySafeActionClient,\n Schema extends Parameters<Client['inputSchema']>[0],\n> =\n Client extends SafeActionClient<\n infer ServerError,\n infer ErrorsFormat,\n infer MetadataSchema,\n infer Metadata,\n infer HasMetadata,\n infer Ctx,\n infer InputSchemaFn,\n infer CurrentInputSchema,\n infer OutputSchema,\n infer BindArgsSchemas,\n any,\n infer ThrowsValidationErrors\n >\n ? SafeActionClient<\n ServerError,\n ErrorsFormat,\n MetadataSchema,\n Metadata,\n HasMetadata,\n Ctx,\n InputSchemaFn,\n ResolvedInputSchema<Schema>,\n OutputSchema,\n BindArgsSchemas,\n any,\n ThrowsValidationErrors\n >\n : AnySafeActionClient;\n\ntype MetadataClient<Client extends AnySafeActionClient> = ReturnType<Client['metadata']>;\n\ntype ActionBuilder<Client extends AnySafeActionClient> = {\n input: <Schema extends Parameters<Client['inputSchema']>[0]>(\n schema: Schema,\n ) => ActionBuilder<NextClientForSchema<Client, Schema>>;\n inputType: <Schema extends Parameters<Client['inputSchema']>[0]>(\n schema: Schema,\n ) => ActionBuilder<NextClientForSchema<Client, Schema>>;\n key: {\n (querySpec: ActionQuerySpec<InferClientParsedInput<Client>>): ActionBuilder<Client>;\n (getQueryKey: (input: InferClientParsedInput<Client>) => ActionQueryKey): ActionBuilder<Client>;\n };\n affects: (\n targets:\n | ActionInvalidationTarget[]\n | InvalidationResolver<InferClientParsedInput<Client>, unknown>,\n ) => ActionBuilder<Client>;\n run: <Data>(\n serverCodeFn: ServerCodeFn<\n InferClientMetadata<Client>,\n InferClientCtx<Client>,\n InferClientInputSchema<Client>,\n InferClientBindArgsSchemas<Client>,\n Data\n >,\n ) => ActionFnForClient<Client, Data>;\n runEffect: <Data>(\n effectFn: (\n parsedInput: InferClientParsedInput<Client>,\n ) => Effect.Effect<Data | EffectSuccessPayload<Data>, unknown>,\n options?: {\n scope?: string;\n telemetrySpanName?: string;\n input?: (\n parsedInput: InferClientParsedInput<Client>,\n actionArgs: ActionArgsForClient<Client>,\n ) => Record<string, unknown> | undefined;\n extra?: (\n parsedInput: InferClientParsedInput<Client>,\n actionArgs: ActionArgsForClient<Client>,\n ) => Record<string, unknown> | undefined;\n },\n ) => ActionFnForClient<Client, Data>;\n runOperation: <Data>(\n operationFn: ActionInputFnForClient<Client, Data>,\n options?: ActionOperationOptions<Client, Data>,\n ) => ActionFnForClient<Client, Data>;\n runDomainOperation: <Data>(\n operation: AnyDomainOperationForClient<Client, Data>,\n options?: ActionOperationOptions<Client, Data>,\n ) => ActionFnForClient<Client, Data>;\n};\n\ntype ActionBuilderConfig<Client> = {\n querySpec?: ActionQuerySpec<InferClientParsedInput<Client>>;\n invalidationQueryKeyPrefix?: ActionQueryKey;\n getQueryKey?: (input: InferClientParsedInput<Client>) => ActionQueryKey;\n getAffects?: InvalidationResolver<InferClientParsedInput<Client>, unknown>;\n};\n\nconst createActionBuilder = <Client extends AnySafeActionClient>(\n client: Client,\n metadata: ActionMetadata,\n config?: ActionBuilderConfig<Client>,\n): ActionBuilder<Client> => {\n const resolveKeyConfig = (\n specOrGetQueryKey:\n | ActionQuerySpec<InferClientParsedInput<Client>>\n | ((input: InferClientParsedInput<Client>) => ActionQueryKey),\n ): Pick<\n ActionBuilderConfig<Client>,\n 'querySpec' | 'invalidationQueryKeyPrefix' | 'getQueryKey'\n > => {\n if (typeof specOrGetQueryKey === 'function') {\n const getQueryKey = specOrGetQueryKey as (\n input: InferClientParsedInput<Client>,\n ) => ActionQueryKey;\n\n return {\n getQueryKey,\n querySpec: undefined,\n invalidationQueryKeyPrefix: undefined,\n };\n }\n\n return {\n getQueryKey: undefined,\n querySpec: specOrGetQueryKey,\n invalidationQueryKeyPrefix: getActionQueryKeyPrefixFromSpec(specOrGetQueryKey),\n };\n };\n\n const input = <Schema extends Parameters<Client['inputSchema']>[0]>(schema: Schema) => {\n const nextClient = client.inputSchema(schema);\n return createActionBuilder<typeof nextClient>(nextClient, metadata, config as any);\n };\n\n const inputType = <Schema extends Parameters<Client['inputSchema']>[0]>(schema: Schema) => {\n const nextClient = client.inputSchema(schema);\n return createActionBuilder<typeof nextClient>(nextClient, metadata, config as any);\n };\n\n function key(\n querySpec: ActionQuerySpec<InferClientParsedInput<Client>>,\n ): ReturnType<typeof createActionBuilder<Client>>;\n function key(\n getQueryKey: (input: InferClientParsedInput<Client>) => ActionQueryKey,\n ): ReturnType<typeof createActionBuilder<Client>>;\n function key(\n specOrGetQueryKey:\n | ActionQuerySpec<InferClientParsedInput<Client>>\n | ((input: InferClientParsedInput<Client>) => ActionQueryKey),\n ) {\n const nextKeyConfig = resolveKeyConfig(specOrGetQueryKey);\n\n return createActionBuilder(client, metadata, {\n ...config,\n ...nextKeyConfig,\n });\n }\n\n const affects = (\n targets:\n | ActionInvalidationTarget[]\n | InvalidationResolver<InferClientParsedInput<Client>, unknown>,\n ) =>\n createActionBuilder(client, metadata, {\n ...config,\n getAffects:\n typeof targets === 'function'\n ? (targets as InvalidationResolver<InferClientParsedInput<Client>, unknown>)\n : () => targets,\n });\n\n const run = <Data>(\n serverCodeFn: ServerCodeFn<\n InferClientMetadata<Client>,\n InferClientCtx<Client>,\n InferClientInputSchema<Client>,\n InferClientBindArgsSchemas<Client>,\n Data\n >,\n ): ActionFnForClient<Client, Data> =>\n attachActionRuntime(\n client.action<Data>(async actionArgs =>\n serverCodeFn(actionArgs as unknown as Parameters<typeof serverCodeFn>[0]),\n ) as ActionFnForClient<Client, Data>,\n {\n feature: metadata.feature,\n actionName: metadata.actionName,\n requiresAuth: metadata.requiresAuth ?? false,\n queryKeyPrefix: [metadata.feature, metadata.actionName] as const,\n querySpec: config?.querySpec,\n invalidationQueryKeyPrefix: config?.invalidationQueryKeyPrefix,\n getQueryKey: config?.getQueryKey as\n | ((input: InferClientParsedInput<Client>) => ActionQueryKey)\n | undefined,\n getAffectedQueryKeys: config?.getAffects\n ? args =>\n config\n .getAffects?.(args as { input: InferClientParsedInput<Client>; data: unknown })\n .flatMap(resolveInvalidationTarget) ?? []\n : undefined,\n },\n ) as unknown as ActionFnForClient<Client, Data>;\n\n const runEffect = <Data>(\n effectFn: (\n parsedInput: InferClientParsedInput<Client>,\n ) => Effect.Effect<Data | EffectSuccessPayload<Data>, unknown>,\n options?: {\n scope?: string;\n telemetrySpanName?: string;\n input?: (\n parsedInput: InferClientParsedInput<Client>,\n actionArgs: ActionArgsForClient<Client>,\n ) => Record<string, unknown> | undefined;\n extra?: (\n parsedInput: InferClientParsedInput<Client>,\n actionArgs: ActionArgsForClient<Client>,\n ) => Record<string, unknown> | undefined;\n },\n ) =>\n run<Data>(actionArgs => {\n const typedArgs = actionArgs as ActionArgsForClient<Client>;\n const parsedInput = typedArgs.parsedInput as InferClientParsedInput<Client>;\n const input =\n options?.input?.(parsedInput, typedArgs) ??\n (isRecord(parsedInput) ? parsedInput : undefined);\n const extra = options?.extra?.(parsedInput, typedArgs);\n\n return runServerEffect(effectFn(parsedInput), {\n scope:\n options?.scope ??\n `app.actions.${toScopeSegment(metadata.feature)}.${metadata.actionName}`,\n telemetrySpanName: options?.telemetrySpanName,\n input,\n extra,\n });\n });\n\n const runOperation = <Data>(\n operationFn: ActionInputFnForClient<Client, Data>,\n options?: ActionOperationOptions<Client, Data>,\n ): ActionFnForClient<Client, Data> =>\n run<Data>(async actionArgs => {\n const typedArgs = actionArgs as ActionArgsForClient<Client>;\n const parsedInput = typedArgs.parsedInput as InferClientParsedInput<Client>;\n const input = (options?.mapInput?.(parsedInput, typedArgs) ??\n parsedInput) as InferClientParsedInput<Client>;\n const result = await Promise.resolve(operationFn(input));\n\n if (options?.onSuccess) {\n await options.onSuccess({\n parsedInput,\n input,\n result: result as Awaited<Data>,\n actionArgs: typedArgs,\n });\n }\n\n return result;\n });\n\n const runDomainOperation = <Data>(\n operation: AnyDomainOperationForClient<Client, Data>,\n options?: ActionOperationOptions<Client, Data>,\n ): ActionFnForClient<Client, Data> => {\n if ('operation' in operation) {\n return runOperation(operation.operation, options);\n }\n\n const operationRunner = layer(operation.layer).operation(\n operation.name,\n operation.run as never,\n {\n defectLogMessage: operation.defectLogMessage,\n defectPublicMessage: operation.defectPublicMessage,\n extra: operation.extra,\n telemetrySpanName: operation.telemetrySpanName,\n requires: operation.requires,\n concerns: operation.concerns,\n contracts: operation.contracts,\n } as never,\n ) as ActionInputFnForClient<Client, Data>;\n\n return runOperation(operationRunner, options);\n };\n\n return { input, inputType, key, affects, run, runEffect, runOperation, runDomainOperation };\n};\n\ntype FeatureActionsFactory = <\n PublicClient extends AnySafeActionClient,\n AuthClient extends AnySafeActionClient,\n>(clients: {\n actionClient: PublicClient;\n authActionClient: AuthClient;\n}) => (feature: string) => {\n ALL: ReturnType<typeof createFeatureAllQueryTarget>;\n auth: (actionName: string) => ActionBuilder<MetadataClient<AuthClient>>;\n public: (actionName: string) => ActionBuilder<MetadataClient<PublicClient>>;\n};\n\nexport const createFeatureActionsFactory: FeatureActionsFactory =\n ({ actionClient, authActionClient }) =>\n (feature: string) => ({\n ALL: createFeatureAllQueryTarget(feature),\n auth: (actionName: string) =>\n createActionBuilder(\n withActionMetadata(authActionClient, {\n actionName,\n feature,\n requiresAuth: true,\n }),\n {\n actionName,\n feature,\n requiresAuth: true,\n },\n ),\n public: (actionName: string) =>\n createActionBuilder(\n withActionMetadata(actionClient, {\n actionName,\n feature,\n requiresAuth: false,\n }),\n {\n actionName,\n feature,\n requiresAuth: false,\n },\n ),\n });\n"]}
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/actions/builder.ts"],"names":[],"mappings":"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","sourcesContent":["import 'server-only';\n\nimport type { PortableOperationConditions } from '@ontahi/core/data-graph';\nimport {\n attachActionRuntime,\n createFeatureAllQueryTarget,\n getActionQueryKeyPrefixFromSpec,\n resolveInvalidationTarget,\n type ActionInvalidationTarget,\n type ActionQueryKey,\n type ActionQuerySpec,\n} from '@ontahi/core/runtime/actions';\nimport {\n layer,\n runServerEffect,\n type EffectSuccessPayload,\n type LayerConcern,\n type OperationFailure,\n type OperationInput,\n type OperationRequirement,\n type OperationRuntimeError,\n} from '@ontahi/core/runtime/server';\nimport { isRecord } from '@ontahi/core/value/object';\nimport type { Effect } from 'effect';\nimport type {\n InputSchemaFactoryFn,\n MaybeBrandThrows,\n SafeActionClient,\n SafeActionFn,\n ServerCodeFn,\n} from 'next-safe-action';\n\nimport { type ActionMetadata, withActionMetadata } from './transport.js';\n\nconst toScopeSegment = (value: string) =>\n value.replace(/-([a-z])/g, (_match, letter: string) => letter.toUpperCase());\n\ntype InferClientMetadata<TClient> =\n TClient extends SafeActionClient<\n any,\n any,\n any,\n infer Metadata,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >\n ? Metadata\n : never;\n\ntype InferClientCtx<TClient> =\n TClient extends SafeActionClient<any, any, any, any, any, infer Ctx, any, any, any, any, any, any>\n ? Ctx\n : object;\n\ntype InferClientInputSchema<TClient> =\n TClient extends SafeActionClient<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n infer InputSchema,\n any,\n any,\n any,\n any\n >\n ? InputSchema\n : undefined;\n\ntype InferClientBindArgsSchemas<TClient> =\n TClient extends SafeActionClient<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n infer BindArgsSchemas,\n any,\n any\n >\n ? BindArgsSchemas\n : readonly [];\n\ntype InferStandardSchemaOutput<Schema> = Schema extends {\n readonly '~standard': {\n readonly types?: {\n readonly output: infer Output;\n };\n };\n}\n ? Output\n : undefined;\n\ntype InferClientParsedInput<TClient> = InferStandardSchemaOutput<InferClientInputSchema<TClient>>;\n\ntype ActionFnForClient<TClient, Data> =\n TClient extends SafeActionClient<\n infer ServerError,\n any,\n any,\n any,\n any,\n any,\n any,\n infer InputSchema,\n any,\n infer BindArgsSchemas,\n infer ShapedErrors,\n infer ThrowsValidationErrors\n >\n ? MaybeBrandThrows<\n SafeActionFn<ServerError, InputSchema, BindArgsSchemas, ShapedErrors, Data>,\n ThrowsValidationErrors\n >\n : never;\n\ntype ActionArgsForClient<TClient> = Parameters<\n ServerCodeFn<\n InferClientMetadata<TClient>,\n InferClientCtx<TClient>,\n InferClientInputSchema<TClient>,\n InferClientBindArgsSchemas<TClient>,\n unknown\n >\n>[0];\n\ntype ActionInputFnForClient<TClient, Data> = (\n parsedInput: InferClientParsedInput<TClient>,\n) => Data | Promise<Data>;\n\ntype MaybePromise<T> = T | Promise<T>;\n\ntype ActionOperationOptions<TClient, Data> = {\n mapInput?: (\n parsedInput: InferClientParsedInput<TClient>,\n actionArgs: ActionArgsForClient<TClient>,\n ) => unknown;\n onSuccess?: (args: {\n parsedInput: InferClientParsedInput<TClient>;\n input: unknown;\n result: Awaited<Data>;\n actionArgs: ActionArgsForClient<TClient>;\n }) => MaybePromise<unknown>;\n};\n\ntype DomainOperationForClient<TClient, Data> = {\n operation: ActionInputFnForClient<TClient, Data>;\n};\n\ntype CanonicalDomainOperationForClient<TClient> = {\n name: string;\n layer: string;\n run: (\n input: InferClientParsedInput<TClient>,\n ) => Effect.Effect<\n Record<string, unknown> | void | EffectSuccessPayload<Record<string, unknown> | void>,\n OperationFailure | OperationRuntimeError\n >;\n defectLogMessage?: string;\n defectPublicMessage?: string;\n extra?: (input: InferClientParsedInput<TClient>) => Record<string, unknown>;\n telemetrySpanName?: string;\n requires?: ReadonlyArray<OperationRequirement<InferClientParsedInput<TClient> & OperationInput>>;\n concerns?: ReadonlyArray<LayerConcern<InferClientParsedInput<TClient>, unknown>>;\n conditions?: PortableOperationConditions;\n};\n\ntype AnyDomainOperationForClient<TClient, Data> =\n | DomainOperationForClient<TClient, Data>\n | CanonicalDomainOperationForClient<TClient>;\n\ntype InvalidationResolver<TInput, TData> = (args: {\n input: TInput;\n data: TData;\n}) => ActionInvalidationTarget[];\n\ntype AnySafeActionClient = SafeActionClient<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n>;\n\ntype ResolvedInputSchema<Schema> =\n Schema extends InputSchemaFactoryFn<any, infer NextSchema> ? NextSchema : Schema;\n\ntype NextClientForSchema<\n Client extends AnySafeActionClient,\n Schema extends Parameters<Client['inputSchema']>[0],\n> =\n Client extends SafeActionClient<\n infer ServerError,\n infer ErrorsFormat,\n infer MetadataSchema,\n infer Metadata,\n infer HasMetadata,\n infer Ctx,\n infer InputSchemaFn,\n infer CurrentInputSchema,\n infer OutputSchema,\n infer BindArgsSchemas,\n any,\n infer ThrowsValidationErrors\n >\n ? SafeActionClient<\n ServerError,\n ErrorsFormat,\n MetadataSchema,\n Metadata,\n HasMetadata,\n Ctx,\n InputSchemaFn,\n ResolvedInputSchema<Schema>,\n OutputSchema,\n BindArgsSchemas,\n any,\n ThrowsValidationErrors\n >\n : AnySafeActionClient;\n\ntype MetadataClient<Client extends AnySafeActionClient> = ReturnType<Client['metadata']>;\n\ntype ActionBuilder<Client extends AnySafeActionClient> = {\n input: <Schema extends Parameters<Client['inputSchema']>[0]>(\n schema: Schema,\n ) => ActionBuilder<NextClientForSchema<Client, Schema>>;\n inputType: <Schema extends Parameters<Client['inputSchema']>[0]>(\n schema: Schema,\n ) => ActionBuilder<NextClientForSchema<Client, Schema>>;\n key: {\n (querySpec: ActionQuerySpec<InferClientParsedInput<Client>>): ActionBuilder<Client>;\n (getQueryKey: (input: InferClientParsedInput<Client>) => ActionQueryKey): ActionBuilder<Client>;\n };\n affects: (\n targets:\n | ActionInvalidationTarget[]\n | InvalidationResolver<InferClientParsedInput<Client>, unknown>,\n ) => ActionBuilder<Client>;\n run: <Data>(\n serverCodeFn: ServerCodeFn<\n InferClientMetadata<Client>,\n InferClientCtx<Client>,\n InferClientInputSchema<Client>,\n InferClientBindArgsSchemas<Client>,\n Data\n >,\n ) => ActionFnForClient<Client, Data>;\n runEffect: <Data>(\n effectFn: (\n parsedInput: InferClientParsedInput<Client>,\n ) => Effect.Effect<Data | EffectSuccessPayload<Data>, unknown>,\n options?: {\n scope?: string;\n telemetrySpanName?: string;\n input?: (\n parsedInput: InferClientParsedInput<Client>,\n actionArgs: ActionArgsForClient<Client>,\n ) => Record<string, unknown> | undefined;\n extra?: (\n parsedInput: InferClientParsedInput<Client>,\n actionArgs: ActionArgsForClient<Client>,\n ) => Record<string, unknown> | undefined;\n },\n ) => ActionFnForClient<Client, Data>;\n runOperation: <Data>(\n operationFn: ActionInputFnForClient<Client, Data>,\n options?: ActionOperationOptions<Client, Data>,\n ) => ActionFnForClient<Client, Data>;\n runDomainOperation: <Data>(\n operation: AnyDomainOperationForClient<Client, Data>,\n options?: ActionOperationOptions<Client, Data>,\n ) => ActionFnForClient<Client, Data>;\n};\n\ntype ActionBuilderConfig<Client> = {\n querySpec?: ActionQuerySpec<InferClientParsedInput<Client>>;\n invalidationQueryKeyPrefix?: ActionQueryKey;\n getQueryKey?: (input: InferClientParsedInput<Client>) => ActionQueryKey;\n getAffects?: InvalidationResolver<InferClientParsedInput<Client>, unknown>;\n};\n\nconst createActionBuilder = <Client extends AnySafeActionClient>(\n client: Client,\n metadata: ActionMetadata,\n config?: ActionBuilderConfig<Client>,\n): ActionBuilder<Client> => {\n const resolveKeyConfig = (\n specOrGetQueryKey:\n | ActionQuerySpec<InferClientParsedInput<Client>>\n | ((input: InferClientParsedInput<Client>) => ActionQueryKey),\n ): Pick<\n ActionBuilderConfig<Client>,\n 'querySpec' | 'invalidationQueryKeyPrefix' | 'getQueryKey'\n > => {\n if (typeof specOrGetQueryKey === 'function') {\n const getQueryKey = specOrGetQueryKey as (\n input: InferClientParsedInput<Client>,\n ) => ActionQueryKey;\n\n return {\n getQueryKey,\n querySpec: undefined,\n invalidationQueryKeyPrefix: undefined,\n };\n }\n\n return {\n getQueryKey: undefined,\n querySpec: specOrGetQueryKey,\n invalidationQueryKeyPrefix: getActionQueryKeyPrefixFromSpec(specOrGetQueryKey),\n };\n };\n\n const input = <Schema extends Parameters<Client['inputSchema']>[0]>(schema: Schema) => {\n const nextClient = client.inputSchema(schema);\n return createActionBuilder<typeof nextClient>(nextClient, metadata, config as any);\n };\n\n const inputType = <Schema extends Parameters<Client['inputSchema']>[0]>(schema: Schema) => {\n const nextClient = client.inputSchema(schema);\n return createActionBuilder<typeof nextClient>(nextClient, metadata, config as any);\n };\n\n function key(\n querySpec: ActionQuerySpec<InferClientParsedInput<Client>>,\n ): ReturnType<typeof createActionBuilder<Client>>;\n function key(\n getQueryKey: (input: InferClientParsedInput<Client>) => ActionQueryKey,\n ): ReturnType<typeof createActionBuilder<Client>>;\n function key(\n specOrGetQueryKey:\n | ActionQuerySpec<InferClientParsedInput<Client>>\n | ((input: InferClientParsedInput<Client>) => ActionQueryKey),\n ) {\n const nextKeyConfig = resolveKeyConfig(specOrGetQueryKey);\n\n return createActionBuilder(client, metadata, {\n ...config,\n ...nextKeyConfig,\n });\n }\n\n const affects = (\n targets:\n | ActionInvalidationTarget[]\n | InvalidationResolver<InferClientParsedInput<Client>, unknown>,\n ) =>\n createActionBuilder(client, metadata, {\n ...config,\n getAffects:\n typeof targets === 'function'\n ? (targets as InvalidationResolver<InferClientParsedInput<Client>, unknown>)\n : () => targets,\n });\n\n const run = <Data>(\n serverCodeFn: ServerCodeFn<\n InferClientMetadata<Client>,\n InferClientCtx<Client>,\n InferClientInputSchema<Client>,\n InferClientBindArgsSchemas<Client>,\n Data\n >,\n ): ActionFnForClient<Client, Data> =>\n attachActionRuntime(\n client.action<Data>(async actionArgs =>\n serverCodeFn(actionArgs as unknown as Parameters<typeof serverCodeFn>[0]),\n ) as ActionFnForClient<Client, Data>,\n {\n feature: metadata.feature,\n actionName: metadata.actionName,\n requiresAuth: metadata.requiresAuth ?? false,\n queryKeyPrefix: [metadata.feature, metadata.actionName] as const,\n querySpec: config?.querySpec,\n invalidationQueryKeyPrefix: config?.invalidationQueryKeyPrefix,\n getQueryKey: config?.getQueryKey as\n | ((input: InferClientParsedInput<Client>) => ActionQueryKey)\n | undefined,\n getAffectedQueryKeys: config?.getAffects\n ? args =>\n config\n .getAffects?.(args as { input: InferClientParsedInput<Client>; data: unknown })\n .flatMap(resolveInvalidationTarget) ?? []\n : undefined,\n },\n ) as unknown as ActionFnForClient<Client, Data>;\n\n const runEffect = <Data>(\n effectFn: (\n parsedInput: InferClientParsedInput<Client>,\n ) => Effect.Effect<Data | EffectSuccessPayload<Data>, unknown>,\n options?: {\n scope?: string;\n telemetrySpanName?: string;\n input?: (\n parsedInput: InferClientParsedInput<Client>,\n actionArgs: ActionArgsForClient<Client>,\n ) => Record<string, unknown> | undefined;\n extra?: (\n parsedInput: InferClientParsedInput<Client>,\n actionArgs: ActionArgsForClient<Client>,\n ) => Record<string, unknown> | undefined;\n },\n ) =>\n run<Data>(actionArgs => {\n const typedArgs = actionArgs as ActionArgsForClient<Client>;\n const parsedInput = typedArgs.parsedInput as InferClientParsedInput<Client>;\n const input =\n options?.input?.(parsedInput, typedArgs) ??\n (isRecord(parsedInput) ? parsedInput : undefined);\n const extra = options?.extra?.(parsedInput, typedArgs);\n\n return runServerEffect(effectFn(parsedInput), {\n scope:\n options?.scope ??\n `app.actions.${toScopeSegment(metadata.feature)}.${metadata.actionName}`,\n telemetrySpanName: options?.telemetrySpanName,\n input,\n extra,\n });\n });\n\n const runOperation = <Data>(\n operationFn: ActionInputFnForClient<Client, Data>,\n options?: ActionOperationOptions<Client, Data>,\n ): ActionFnForClient<Client, Data> =>\n run<Data>(async actionArgs => {\n const typedArgs = actionArgs as ActionArgsForClient<Client>;\n const parsedInput = typedArgs.parsedInput as InferClientParsedInput<Client>;\n const input = (options?.mapInput?.(parsedInput, typedArgs) ??\n parsedInput) as InferClientParsedInput<Client>;\n const result = await Promise.resolve(operationFn(input));\n\n if (options?.onSuccess) {\n await options.onSuccess({\n parsedInput,\n input,\n result: result as Awaited<Data>,\n actionArgs: typedArgs,\n });\n }\n\n return result;\n });\n\n const runDomainOperation = <Data>(\n operation: AnyDomainOperationForClient<Client, Data>,\n options?: ActionOperationOptions<Client, Data>,\n ): ActionFnForClient<Client, Data> => {\n if ('operation' in operation) {\n return runOperation(operation.operation, options);\n }\n\n const operationRunner = layer(operation.layer).operation(\n operation.name,\n operation.run as never,\n {\n defectLogMessage: operation.defectLogMessage,\n defectPublicMessage: operation.defectPublicMessage,\n extra: operation.extra,\n telemetrySpanName: operation.telemetrySpanName,\n requires: operation.requires,\n concerns: operation.concerns,\n conditions: operation.conditions,\n } as never,\n ) as ActionInputFnForClient<Client, Data>;\n\n return runOperation(operationRunner, options);\n };\n\n return { input, inputType, key, affects, run, runEffect, runOperation, runDomainOperation };\n};\n\ntype FeatureActionsFactory = <\n PublicClient extends AnySafeActionClient,\n AuthClient extends AnySafeActionClient,\n>(clients: {\n actionClient: PublicClient;\n authActionClient: AuthClient;\n}) => (feature: string) => {\n ALL: ReturnType<typeof createFeatureAllQueryTarget>;\n auth: (actionName: string) => ActionBuilder<MetadataClient<AuthClient>>;\n public: (actionName: string) => ActionBuilder<MetadataClient<PublicClient>>;\n};\n\nexport const createFeatureActionsFactory: FeatureActionsFactory =\n ({ actionClient, authActionClient }) =>\n (feature: string) => ({\n ALL: createFeatureAllQueryTarget(feature),\n auth: (actionName: string) =>\n createActionBuilder(\n withActionMetadata(authActionClient, {\n actionName,\n feature,\n requiresAuth: true,\n }),\n {\n actionName,\n feature,\n requiresAuth: true,\n },\n ),\n public: (actionName: string) =>\n createActionBuilder(\n withActionMetadata(actionClient, {\n actionName,\n feature,\n requiresAuth: false,\n }),\n {\n actionName,\n feature,\n requiresAuth: false,\n },\n ),\n });\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ontahi/runtime-nextjs",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.0-alpha.9",
|
|
4
4
|
"description": "Next.js runtime and transport adapters for Ontahi applications",
|
|
5
5
|
"homepage": "https://github.com/javifernandes/ontahi/tree/main/packages/runtime-nextjs",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"next-safe-action": "^8.3.0",
|
|
55
55
|
"server-only": "^0.0.1",
|
|
56
56
|
"zod": "^4.3.6",
|
|
57
|
-
"@ontahi/core": "
|
|
57
|
+
"@ontahi/core": "1.0.0-alpha.9"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@types/node": "^20.0.0",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"test:coverage": "pnpm exec vitest run --coverage",
|
|
93
93
|
"test:watch": "pnpm exec vitest",
|
|
94
94
|
"typecheck": "pnpm exec tsc -p tsconfig.json",
|
|
95
|
-
"lint": "pnpm exec eslint \"src/**/*.ts\"
|
|
96
|
-
"lint:fix": "pnpm exec eslint \"src/**/*.ts\"
|
|
95
|
+
"lint": "pnpm exec eslint \"src/**/*.ts\" --max-warnings 0",
|
|
96
|
+
"lint:fix": "pnpm exec eslint \"src/**/*.ts\" --fix --max-warnings 0"
|
|
97
97
|
}
|
|
98
98
|
}
|