@platformatic/runtime 0.28.1 → 0.29.0
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/monorepo/serviceApp/plugin.js +4 -0
- package/fixtures/typescript/platformatic.runtime.json +12 -0
- package/fixtures/typescript/services/composer/platformatic.composer.json +28 -0
- package/fixtures/typescript/services/movies/global.d.ts +24 -0
- package/fixtures/typescript/services/movies/migrations/001.do.sql +6 -0
- package/fixtures/typescript/services/movies/migrations/001.undo.sql +3 -0
- package/fixtures/typescript/services/movies/package.json +17 -0
- package/fixtures/typescript/services/movies/platformatic.db.json +33 -0
- package/fixtures/typescript/services/movies/plugin.ts +5 -0
- package/fixtures/typescript/services/movies/tsconfig.json +21 -0
- package/fixtures/typescript/services/movies/types/Movie.d.ts +9 -0
- package/fixtures/typescript/services/movies/types/index.d.ts +7 -0
- package/fixtures/typescript/services/titles/client/client.d.ts +141 -0
- package/fixtures/typescript/services/titles/client/client.openapi.json +630 -0
- package/fixtures/typescript/services/titles/client/package.json +4 -0
- package/fixtures/typescript/services/titles/platformatic.service.json +31 -0
- package/fixtures/typescript/services/titles/plugins/example.ts +6 -0
- package/fixtures/typescript/services/titles/routes/root.ts +21 -0
- package/fixtures/typescript/services/titles/tsconfig.json +21 -0
- package/help/compile.txt +8 -0
- package/index.js +7 -7
- package/lib/api-client.js +74 -0
- package/lib/api.js +26 -77
- package/lib/app.js +6 -2
- package/lib/compile.js +43 -0
- package/lib/config.js +77 -14
- package/lib/message-port-writable.js +42 -0
- package/lib/start.js +38 -19
- package/lib/unified-api.js +2 -0
- package/lib/worker.js +25 -26
- package/package.json +12 -8
- package/runtime.mjs +4 -0
- package/test/api.test.js +2 -1
- package/test/app.test.js +1 -1
- package/test/cli/compile.test.mjs +52 -0
- package/test/cli/start.test.mjs +56 -0
- package/test/cli/validations.test.mjs +2 -1
- package/test/cli/watch.test.mjs +12 -12
- package/test/config.test.js +137 -1
- package/test/start.test.js +44 -0
|
@@ -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,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"scripts": {
|
|
3
|
+
"start": "npm run clean && platformatic start",
|
|
4
|
+
"clean": "rm -fr ./dist",
|
|
5
|
+
"build": "npx tsc",
|
|
6
|
+
"migrate": "platformatic db migrations apply"
|
|
7
|
+
},
|
|
8
|
+
"devDependencies": {
|
|
9
|
+
"fastify": "^4.18.0"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"platformatic": "^0.28.1"
|
|
13
|
+
},
|
|
14
|
+
"engines": {
|
|
15
|
+
"node": "^18.8.0 || >=19"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://platformatic.dev/schemas/v0.28.1/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": true
|
|
29
|
+
},
|
|
30
|
+
"types": {
|
|
31
|
+
"autogenerate": true
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -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;
|