@platformatic/runtime 0.29.0 → 0.30.1
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/fixtures/dbApp/platformatic.db.json +5 -0
- package/fixtures/dbApp/plugin.js +12 -0
- package/fixtures/start-command-in-runtime.js +2 -1
- package/fixtures/typescript-custom-flags/platformatic.runtime.json +12 -0
- package/fixtures/typescript-custom-flags/services/composer/platformatic.composer.json +28 -0
- package/fixtures/typescript-custom-flags/services/movies/global.d.ts +24 -0
- package/fixtures/typescript-custom-flags/services/movies/migrations/001.do.sql +6 -0
- package/fixtures/typescript-custom-flags/services/movies/migrations/001.undo.sql +3 -0
- package/fixtures/typescript-custom-flags/services/movies/platformatic.db.json +35 -0
- package/fixtures/typescript-custom-flags/services/movies/plugin.ts +5 -0
- package/fixtures/typescript-custom-flags/services/movies/tsconfig.json +21 -0
- package/fixtures/typescript-custom-flags/services/movies/types/Movie.d.ts +9 -0
- package/fixtures/typescript-custom-flags/services/movies/types/index.d.ts +7 -0
- package/fixtures/typescript-custom-flags/services/titles/client/client.d.ts +141 -0
- package/fixtures/typescript-custom-flags/services/titles/client/client.openapi.json +630 -0
- package/fixtures/typescript-custom-flags/services/titles/client/package.json +4 -0
- package/fixtures/typescript-custom-flags/services/titles/platformatic.service.json +33 -0
- package/fixtures/typescript-custom-flags/services/titles/plugins/example.ts +6 -0
- package/fixtures/typescript-custom-flags/services/titles/routes/root.ts +21 -0
- package/fixtures/typescript-custom-flags/services/titles/tsconfig.json +21 -0
- package/lib/api-client.js +21 -4
- package/lib/app.js +3 -2
- package/lib/compile.js +8 -10
- package/package.json +8 -8
- package/test/api.test.js +10 -0
- package/test/app.test.js +3 -1
- package/test/cli/compile.test.mjs +60 -2
- package/test/cli/watch.test.mjs +4 -1
- package/test/start.test.js +13 -0
- package/fixtures/typescript/services/movies/package.json +0 -17
|
@@ -5,7 +5,8 @@ const { startCommandInRuntime } = require('../lib/unified-api')
|
|
|
5
5
|
|
|
6
6
|
async function main () {
|
|
7
7
|
const entrypoint = await startCommandInRuntime(['-c', process.argv[2]])
|
|
8
|
-
const
|
|
8
|
+
const endpoint = process.argv[3] ?? '/'
|
|
9
|
+
const res = await request(entrypoint + endpoint)
|
|
9
10
|
|
|
10
11
|
assert.strictEqual(res.statusCode, 200)
|
|
11
12
|
process.exit(42)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://platformatic.dev/schemas/v0.28.1/composer",
|
|
3
|
+
"server": {
|
|
4
|
+
"hostname": "{PLT_SERVER_HOSTNAME}",
|
|
5
|
+
"port": "{PORT}",
|
|
6
|
+
"logger": {
|
|
7
|
+
"level": "{PLT_SERVER_LOGGER_LEVEL}"
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
"composer": {
|
|
11
|
+
"services": [
|
|
12
|
+
{
|
|
13
|
+
"id": "movies",
|
|
14
|
+
"openapi": {
|
|
15
|
+
"url": "/documentation/json"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "titles",
|
|
20
|
+
"openapi": {
|
|
21
|
+
"url": "/documentation/json"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"refreshTimeout": 1000
|
|
26
|
+
},
|
|
27
|
+
"watch": true
|
|
28
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Entity } from '@platformatic/sql-mapper';
|
|
2
|
+
import graphqlPlugin from '@platformatic/sql-graphql'
|
|
3
|
+
import { EntityTypes, Movie } from './types'
|
|
4
|
+
|
|
5
|
+
declare module 'fastify' {
|
|
6
|
+
interface FastifyInstance {
|
|
7
|
+
getSchema<T extends 'Movie'>(schemaId: T): {
|
|
8
|
+
'$id': string,
|
|
9
|
+
title: string,
|
|
10
|
+
description: string,
|
|
11
|
+
type: string,
|
|
12
|
+
properties: {
|
|
13
|
+
[x in keyof EntityTypes[T]]: { type: string, nullable?: boolean }
|
|
14
|
+
},
|
|
15
|
+
required: string[]
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
declare module '@platformatic/sql-mapper' {
|
|
21
|
+
interface Entities {
|
|
22
|
+
movie: Entity<Movie>,
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://platformatic.dev/schemas/v0.30.0/db",
|
|
3
|
+
"server": {
|
|
4
|
+
"hostname": "{PLT_SERVER_HOSTNAME}",
|
|
5
|
+
"port": "{PORT}",
|
|
6
|
+
"logger": {
|
|
7
|
+
"level": "{PLT_SERVER_LOGGER_LEVEL}"
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
"db": {
|
|
11
|
+
"connectionString": "{DATABASE_URL}",
|
|
12
|
+
"graphql": true,
|
|
13
|
+
"openapi": true
|
|
14
|
+
},
|
|
15
|
+
"watch": {
|
|
16
|
+
"ignore": [
|
|
17
|
+
"*.sqlite",
|
|
18
|
+
"*.sqlite-journal"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"migrations": {
|
|
22
|
+
"dir": "migrations"
|
|
23
|
+
},
|
|
24
|
+
"plugins": {
|
|
25
|
+
"paths": [
|
|
26
|
+
"plugin.ts"
|
|
27
|
+
],
|
|
28
|
+
"typescript": {
|
|
29
|
+
"flags": ["-b"]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"types": {
|
|
33
|
+
"autogenerate": true
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"module": "commonjs",
|
|
4
|
+
"esModuleInterop": true,
|
|
5
|
+
"target": "es2019",
|
|
6
|
+
"sourceMap": true,
|
|
7
|
+
"pretty": true,
|
|
8
|
+
"noEmitOnError": true,
|
|
9
|
+
"outDir": "dist"
|
|
10
|
+
},
|
|
11
|
+
"watchOptions": {
|
|
12
|
+
"watchFile": "fixedPollingInterval",
|
|
13
|
+
"watchDirectory": "fixedPollingInterval",
|
|
14
|
+
"fallbackPolling": "dynamicPriority",
|
|
15
|
+
"synchronousWatchDirectory": true,
|
|
16
|
+
"excludeDirectories": [
|
|
17
|
+
"**/node_modules",
|
|
18
|
+
"dist"
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { FastifyPluginAsync } from 'fastify'
|
|
2
|
+
|
|
3
|
+
interface GetMoviesRequest {
|
|
4
|
+
'limit'?: number;
|
|
5
|
+
'offset'?: number;
|
|
6
|
+
'totalCount'?: boolean;
|
|
7
|
+
'fields'?: Array<string>;
|
|
8
|
+
'where.id.eq'?: number;
|
|
9
|
+
'where.id.neq'?: number;
|
|
10
|
+
'where.id.gt'?: number;
|
|
11
|
+
'where.id.gte'?: number;
|
|
12
|
+
'where.id.lt'?: number;
|
|
13
|
+
'where.id.lte'?: number;
|
|
14
|
+
'where.id.like'?: number;
|
|
15
|
+
'where.id.in'?: string;
|
|
16
|
+
'where.id.nin'?: string;
|
|
17
|
+
'where.title.eq'?: string;
|
|
18
|
+
'where.title.neq'?: string;
|
|
19
|
+
'where.title.gt'?: string;
|
|
20
|
+
'where.title.gte'?: string;
|
|
21
|
+
'where.title.lt'?: string;
|
|
22
|
+
'where.title.lte'?: string;
|
|
23
|
+
'where.title.like'?: string;
|
|
24
|
+
'where.title.in'?: string;
|
|
25
|
+
'where.title.nin'?: string;
|
|
26
|
+
'where.or'?: Array<string>;
|
|
27
|
+
'orderby.id'?: string;
|
|
28
|
+
'orderby.title'?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
interface GetMoviesResponseOK {
|
|
32
|
+
'id'?: number;
|
|
33
|
+
'title': string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
interface CreateMovieRequest {
|
|
37
|
+
'id'?: number;
|
|
38
|
+
'title': string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
interface CreateMovieResponseOK {
|
|
42
|
+
'id'?: number;
|
|
43
|
+
'title': string;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
interface UpdateMoviesRequest {
|
|
47
|
+
'fields'?: Array<string>;
|
|
48
|
+
'where.id.eq'?: number;
|
|
49
|
+
'where.id.neq'?: number;
|
|
50
|
+
'where.id.gt'?: number;
|
|
51
|
+
'where.id.gte'?: number;
|
|
52
|
+
'where.id.lt'?: number;
|
|
53
|
+
'where.id.lte'?: number;
|
|
54
|
+
'where.id.like'?: number;
|
|
55
|
+
'where.id.in'?: string;
|
|
56
|
+
'where.id.nin'?: string;
|
|
57
|
+
'where.title.eq'?: string;
|
|
58
|
+
'where.title.neq'?: string;
|
|
59
|
+
'where.title.gt'?: string;
|
|
60
|
+
'where.title.gte'?: string;
|
|
61
|
+
'where.title.lt'?: string;
|
|
62
|
+
'where.title.lte'?: string;
|
|
63
|
+
'where.title.like'?: string;
|
|
64
|
+
'where.title.in'?: string;
|
|
65
|
+
'where.title.nin'?: string;
|
|
66
|
+
'where.or'?: Array<string>;
|
|
67
|
+
'id'?: number;
|
|
68
|
+
'title': string;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
interface UpdateMoviesResponseOK {
|
|
72
|
+
'id'?: number;
|
|
73
|
+
'title': string;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
interface GetMovieByIdRequest {
|
|
77
|
+
'fields'?: Array<string>;
|
|
78
|
+
'id': number;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
interface GetMovieByIdResponseOK {
|
|
82
|
+
'id'?: number;
|
|
83
|
+
'title': string;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
interface UpdateMovieRequest {
|
|
87
|
+
'fields'?: Array<string>;
|
|
88
|
+
'id': number;
|
|
89
|
+
'title': string;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
interface UpdateMovieResponseOK {
|
|
93
|
+
'id'?: number;
|
|
94
|
+
'title': string;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
interface DeleteMoviesRequest {
|
|
98
|
+
'fields'?: Array<string>;
|
|
99
|
+
'id': number;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
interface DeleteMoviesResponseOK {
|
|
103
|
+
'id'?: number;
|
|
104
|
+
'title': string;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
interface Client {
|
|
108
|
+
getMovies(req: GetMoviesRequest): Promise<Array<GetMoviesResponseOK>>;
|
|
109
|
+
createMovie(req: CreateMovieRequest): Promise<CreateMovieResponseOK>;
|
|
110
|
+
updateMovies(req: UpdateMoviesRequest): Promise<Array<UpdateMoviesResponseOK>>;
|
|
111
|
+
getMovieById(req: GetMovieByIdRequest): Promise<GetMovieByIdResponseOK>;
|
|
112
|
+
updateMovie(req: UpdateMovieRequest): Promise<UpdateMovieResponseOK>;
|
|
113
|
+
deleteMovies(req: DeleteMoviesRequest): Promise<DeleteMoviesResponseOK>;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
type ClientPlugin = FastifyPluginAsync<NonNullable<client.ClientOptions>>
|
|
117
|
+
|
|
118
|
+
declare module 'fastify' {
|
|
119
|
+
interface ConfigureClient {
|
|
120
|
+
getHeaders(req: FastifyRequest, reply: FastifyReply): Promise<Record<string,string>>;
|
|
121
|
+
}
|
|
122
|
+
interface FastifyInstance {
|
|
123
|
+
'client': Client;
|
|
124
|
+
configureClient(opts: ConfigureClient): unknown
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
interface FastifyRequest {
|
|
128
|
+
'client': Client;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
declare namespace client {
|
|
133
|
+
export interface ClientOptions {
|
|
134
|
+
url: string
|
|
135
|
+
}
|
|
136
|
+
export const client: ClientPlugin;
|
|
137
|
+
export { client as default };
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
declare function client(...params: Parameters<ClientPlugin>): ReturnType<ClientPlugin>;
|
|
141
|
+
export = client;
|