/* * Copyright 2025 the original author or authors. *
* Licensed under the Moderne Source Available License (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *
* https://docs.moderne.io/licensing/moderne-source-available-license *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {RewriteRpc} from "./rewrite-rpc";
import type {RpcRecipe} from "./recipe";
/**
* Prepare a Java recipe via the active {@link RewriteRpc} connection.
*
* Routes a `PrepareRecipe` request to whichever side hosts the Java
* implementation:
* - in production, the Java host that spawned the TS server (`dist/rpc/server.js`);
* - in tests, the JVM spawned via `JavaRpcTestServer` (see
* `@openrewrite/rewrite/test/java-rpc`).
*
* The returned {@link RpcRecipe} extends `Recipe`, so it can be used directly
* as a recipe — e.g. assigned to `RecipeSpec.recipe` — or composed inside a
* larger TS recipe (as the editor of a `check(usesType(...), ...)`
* precondition, or as a step in `recipeList()`).
*
* Top-level convenience functions for specific Java recipes (e.g.
* `addDependency`, `changeType`) sit naturally on top of this primitive:
*
* ```ts
* export function addDependency(options: AddDependencyOptions): Promise