Skip to content

Commit

Permalink
feat(code-gen): promote experimental to stable (#2559)
Browse files Browse the repository at this point in the history
BREAKING CHANGE:
- Removes support for old code-gen. Use the new target based code-gen instead. See the new [docs](https://compasjs.com/generators/introduction.html) and [migration guide](https://compasjs.com/releases/code-gen-migration.html).
- It is expected that future Compas release fully break structure compatibility with legacy clients, so make sure to migrate as soon as possible.
- Update any `@compas/code-gen/experimental` import to `@compas/code-gen`
  • Loading branch information
dirkdev98 authored May 6, 2023
1 parent df9e43e commit 247aa0a
Show file tree
Hide file tree
Showing 394 changed files with 4,437 additions and 37,210 deletions.
2 changes: 1 addition & 1 deletion benchmark/validate.bench.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { readFileSync } from "fs";
import { bench, mainBenchFn } from "@compas/cli";
import { Generator } from "@compas/code-gen/experimental";
import { Generator } from "@compas/code-gen";
import { AppError, mainFn, pathJoin } from "@compas/stdlib";
import { testTemporaryDirectory } from "../src/testing.js";

Expand Down
3 changes: 1 addition & 2 deletions benchmark/validators.bench.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

import { pathToFileURL } from "url";
import { bench, mainBenchFn } from "@compas/cli";
import { TypeCreator } from "@compas/code-gen";
import { Generator } from "@compas/code-gen/experimental";
import { TypeCreator, Generator } from "@compas/code-gen";
import { mainFn, pathJoin } from "@compas/stdlib";
import FastestValidator from "fastest-validator";
import { testTemporaryDirectory } from "../src/testing.js";
Expand Down
3 changes: 1 addition & 2 deletions docs/generators/build-structure/routes.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ Route definitions built on top of the `TypeCreator` that we use for defining
types.

```ts
import { TypeCreator } from "@compas/code-gen";
import { Generator } from "@compas/code-gen/experimental";
import { Generator, TypeCreator } from "@compas/code-gen";
import { generate } from "@vue/compiler-core";

const generator = new Generator();
Expand Down
6 changes: 2 additions & 4 deletions docs/generators/build-structure/types-and-validators.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ the group or flow that the type belongs to and all the methods for building your
own structure which we will explore later.

```js
import { TypeCreator } from "@compas/code-gen";
import { Generator } from "@compas/code-gen/experimental";
import { Generator, TypeCreator } from "@compas/code-gen";

const generator = new Generator();
const T = new TypeCreator("myFlowName"); // like 'user' or 'userOnboarding'
Expand Down Expand Up @@ -60,8 +59,7 @@ T.date();
Top level types provided to `generator.add` need to have a name:

```js
import { TypeCreator } from "@compas/code-gen";
import { Generator } from "@compas/code-gen/experimental";
import { Generator, TypeCreator } from "@compas/code-gen";

const generator = new Generator();
const T = new TypeCreator(); // defaults to `App`
Expand Down
6 changes: 2 additions & 4 deletions docs/generators/importing-structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ generator.

```js {7-8}
import { readFileSync } from "fs";
import { loadApiStructureFromOpenAPI } from "@compas/code-gen";
import { Generator } from "@compas/code-gen/experimental";
import { Generator, loadApiStructureFromOpenAPI } from "@compas/code-gen";

const generator = new Generator();

Expand All @@ -28,8 +27,7 @@ specification.

```js {7-12}
import { readFileSync } from "fs";
import { loadApiStructureFromRemote } from "@compas/code-gen";
import { Generator } from "@compas/code-gen/experimental";
import { Generator, loadApiStructureFromRemote } from "@compas/code-gen";

const generator = new Generator();

Expand Down
18 changes: 9 additions & 9 deletions docs/generators/targets.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Compas code generators are based on a combination of targets. The most important
target is which programming language you want to use: the `targetLanguage`.

```js {6}
import { Generator } from "@compas/code-gen/experimental";
import { Generator } from "@compas/code-gen";

const generator = new Generator();

Expand All @@ -27,7 +27,7 @@ To automatically write the generated files to disk, you can use an
`outputDirectory`. If it is not specified all generated files will be returned.

```js {7}
import { Generator } from "@compas/code-gen/experimental";
import { Generator } from "@compas/code-gen";

const generator = new Generator();

Expand All @@ -44,7 +44,7 @@ for libraries to expose some types to the user or can be used for post
processing. It ignores all targets.

```js {8}
import { Generator } from "@compas/code-gen/experimental";
import { Generator } from "@compas/code-gen";

const generator = new Generator();

Expand All @@ -63,7 +63,7 @@ generators will utilize it to write their specific types. There are few options
you can optionally specify

```js {8-11}
import { Generator } from "@compas/code-gen/experimental";
import { Generator } from "@compas/code-gen";

const generator = new Generator();

Expand Down Expand Up @@ -102,7 +102,7 @@ parts of the generated output to ensure that only structurally correct values
can pass. Preventing wrong data or even over sharing information.

```js {8-10}
import { Generator } from "@compas/code-gen/experimental";
import { Generator } from "@compas/code-gen";

const generator = new Generator();

Expand Down Expand Up @@ -143,7 +143,7 @@ be enabled, and to work around compatibilities of different `FormData`
implementations.

```js {8-15}
import { Generator } from "@compas/code-gen/experimental";
import { Generator } from "@compas/code-gen";

const generator = new Generator();

Expand Down Expand Up @@ -207,7 +207,7 @@ It has support for the following target libraries:
open an [issue](https://github.com/compasjs/compas/issues/)!

```js {8-13}
import { Generator } from "@compas/code-gen/experimental";
import { Generator } from "@compas/code-gen";

const generator = new Generator();

Expand Down Expand Up @@ -236,7 +236,7 @@ format. This loses some information like [invalidations](/#todo). It can be used
to generate API clients for targets not supported by Compas.

```js {8-11}
import { Generator } from "@compas/code-gen/experimental";
import { Generator } from "@compas/code-gen";

const generator = new Generator();

Expand Down Expand Up @@ -269,7 +269,7 @@ Supported dialects
[porsager/postgres](https://www.npmjs.com/package/postgres) package.

```js {8-11}
import { Generator } from "@compas/code-gen/experimental";
import { Generator } from "@compas/code-gen";

const generator = new Generator();

Expand Down
2 changes: 1 addition & 1 deletion docs/generators/usage/axios-api-client.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ generated interface looks practically the same over all of them. In this
documented we use the Typescript variant for the broswer runtime

```js
import { Generator } from "@compas/code-gen/experimental";
import { Generator } from "@compas/code-gen";

const generator = new Generator();

Expand Down
2 changes: 1 addition & 1 deletion docs/generators/usage/js-postgres.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ provided entities, using
Compas `@compas/store` provided `query` helper.

```js
import { Generator } from "@compas/code-gen/experimental";
import { Generator } from "@compas/code-gen";

const generator = new Generator();

Expand Down
2 changes: 1 addition & 1 deletion docs/generators/usage/koa-router.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ As mentioned in [the targets](/generators/targets.html), Compas supports
generating a [Koa](https://koajs.com/) compatible router.

```js
import { Generator } from "@compas/code-gen/experimental";
import { Generator } from "@compas/code-gen";

const generator = new Generator();

Expand Down
10 changes: 4 additions & 6 deletions docs/releases/code-gen-migration.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
# Migration guide for the code-gen rewrite

::: warning

`@compas/code-gen/experimental` is still experimental!

:::

The new code generators are here! With built-in support for different target
combinations, a more consistent output and a better safety-net with validators
sprinkled in, in more parts of your application. We've tried to keep the amount
Expand Down Expand Up @@ -148,6 +142,10 @@ would be to execute the following replacements over your codebase;
- Other renames are less straight forward removing the `Api` or `Input`
suffixes.
Alternatively use the 'api-client-to-experimental-code-gen' code-mode via
`NODE_ENV=development npx compas code-mode exec --name api-client-to-experimental-code-gen`.
See `NODE_ENV=development npx compas code-mod list` for more information.
## Auto converting validators
The `.convert()` option is implied now for `T.number()` and `T.array()`. This
Expand Down
3 changes: 1 addition & 2 deletions examples/crud-basic/scripts/generate.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { TypeCreator } from "@compas/code-gen";
import { Generator } from "@compas/code-gen/experimental";
import { TypeCreator, Generator } from "@compas/code-gen";
import { mainFn } from "@compas/stdlib";

mainFn(import.meta, main);
Expand Down
3 changes: 1 addition & 2 deletions examples/crud-inline/scripts/generate.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { TypeCreator } from "@compas/code-gen";
import { Generator } from "@compas/code-gen/experimental";
import { TypeCreator, Generator } from "@compas/code-gen";
import { mainFn } from "@compas/stdlib";

mainFn(import.meta, main);
Expand Down
3 changes: 1 addition & 2 deletions examples/crud-nested/scripts/generate.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { TypeCreator } from "@compas/code-gen";
import { Generator } from "@compas/code-gen/experimental";
import { TypeCreator, Generator } from "@compas/code-gen";
import { mainFn } from "@compas/stdlib";

mainFn(import.meta, main);
Expand Down
2 changes: 1 addition & 1 deletion examples/default/commands/generate.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Generator } from "@compas/code-gen/experimental";
import { Generator } from "@compas/code-gen";
import { spawn } from "@compas/stdlib";
import { storeGetStructure } from "@compas/store";
import { extendWithDatabase } from "../gen/database.js";
Expand Down
2 changes: 1 addition & 1 deletion examples/default/gen/database.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { TypeCreator } from "@compas/code-gen";
/**
* Apply the database structure
*
* @param {import("@compas/code-gen/experimental").Generator} generator
* @param {import("@compas/code-gen").Generator} generator
*/
export function extendWithDatabase(generator) {
const T = new TypeCreator("database");
Expand Down
2 changes: 1 addition & 1 deletion examples/default/gen/post.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { TypeCreator } from "@compas/code-gen";
/**
* Apply the 'post' routes and related types
*
* @param {import("@compas/code-gen/experimental").Generator} generator
* @param {import("@compas/code-gen").Generator} generator
*/
export function extendWithPost(generator) {
const T = new TypeCreator("post");
Expand Down
4 changes: 2 additions & 2 deletions examples/with-auth/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ This project is structured according to the

- Uses `@compas/eslint-plugin` with `compas lint` for running ESLint and
Prettier
- Has code generation based on `@compas/code-gen/experimental`, with the
definitions stored in `gen/*` and a custom command in `commands/generate.js`
- Has code generation based on `@compas/code-gen`, with the definitions stored
in `gen/*` and a custom command in `commands/generate.js`
- Contains 'global' services via
[ES Module live bindings](https://stackoverflow.com/a/57552682) in
`services/core.js`.
Expand Down
2 changes: 1 addition & 1 deletion examples/with-auth/commands/generate.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Generator } from "@compas/code-gen/experimental";
import { Generator } from "@compas/code-gen";
import { spawn } from "@compas/stdlib";
import { storeGetStructure } from "@compas/store";
import { extendWithDatabase } from "../gen/database.js";
Expand Down
2 changes: 1 addition & 1 deletion examples/with-auth/gen/database.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { TypeCreator } from "@compas/code-gen";
/**
* Apply the database structure
*
* @param {import("@compas/code-gen/experimental").Generator} generator
* @param {import("@compas/code-gen").Generator} generator
*/
export function extendWithDatabase(generator) {
const T = new TypeCreator("database");
Expand Down
2 changes: 1 addition & 1 deletion examples/with-auth/gen/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { TypeCreator } from "@compas/code-gen";
/**
* Apply the 'post' routes and related types
*
* @param {import("@compas/code-gen/experimental").Generator} generator
* @param {import("@compas/code-gen").Generator} generator
*/
export function extendWithUser(generator) {
const T = new TypeCreator("user");
Expand Down
Loading

0 comments on commit 247aa0a

Please sign in to comment.