create-platformatic 0.27.0 → 0.28.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/package.json +4 -4
- package/src/composer/create-composer-cli.mjs +1 -1
- package/src/create-package-json.mjs +7 -5
- package/src/db/README.md +1 -1
- package/src/db/create-db-cli.mjs +5 -1
- package/src/db/create-db.mjs +3 -0
- package/src/runtime/create-runtime-cli.mjs +24 -10
- package/src/service/create-service-cli.mjs +1 -1
- package/src/service/create-service.mjs +5 -2
- package/test/create-package-json.test.mjs +7 -7
- package/test/service/create-service.test.mjs +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-platformatic",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.28.1",
|
|
4
4
|
"description": "Create platformatic-db interactive tool",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"semver": "^7.5.1",
|
|
34
34
|
"undici": "^5.22.1",
|
|
35
35
|
"which": "^3.0.1",
|
|
36
|
-
"@platformatic/config": "0.
|
|
36
|
+
"@platformatic/config": "0.28.1"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"ajv": "^8.12.0",
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
"standard": "^17.1.0",
|
|
46
46
|
"tap": "^16.3.6",
|
|
47
47
|
"yaml": "^2.3.1",
|
|
48
|
-
"@platformatic/db": "0.
|
|
49
|
-
"@platformatic/service": "0.
|
|
48
|
+
"@platformatic/db": "0.28.1",
|
|
49
|
+
"@platformatic/service": "0.28.1"
|
|
50
50
|
},
|
|
51
51
|
"scripts": {
|
|
52
52
|
"test": "standard | snazzy && cross-env NODE_OPTIONS=\"--loader=esmock --no-warnings\" c8 --100 tap --no-coverage test/*test.mjs test/*/*test.mjs",
|
|
@@ -79,7 +79,7 @@ const createPlatformaticComposer = async (_args, opts) => {
|
|
|
79
79
|
// Create the package.json, notes that we don't have the option for TS (yet) so we don't generate
|
|
80
80
|
// the package.json with the TS build
|
|
81
81
|
if (!opts.skipPackageJson) {
|
|
82
|
-
await createPackageJson(
|
|
82
|
+
await createPackageJson(version, fastifyVersion, logger, projectDir, false)
|
|
83
83
|
}
|
|
84
84
|
if (!opts.skipGitignore) {
|
|
85
85
|
await createGitignore(logger, projectDir)
|
|
@@ -7,10 +7,10 @@ const packageJsonTemplate = (addTSBuild = false) => (`\
|
|
|
7
7
|
{
|
|
8
8
|
"scripts": {
|
|
9
9
|
${addTSBuild
|
|
10
|
-
? `"start": "npm run clean && platformatic
|
|
10
|
+
? `"start": "npm run clean && platformatic start",
|
|
11
11
|
"clean": "rm -fr ./dist",
|
|
12
12
|
"build": "npx tsc"`
|
|
13
|
-
: '"start": "platformatic
|
|
13
|
+
: '"start": "platformatic start"'}
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
16
|
"fastify": "^{fastifyVersion}"
|
|
@@ -23,12 +23,14 @@ const packageJsonTemplate = (addTSBuild = false) => (`\
|
|
|
23
23
|
}
|
|
24
24
|
}`)
|
|
25
25
|
|
|
26
|
-
export const createPackageJson = async (
|
|
26
|
+
export const createPackageJson = async (platVersion, fastifyVersion, logger, dir, addTSBuild = false, scripts = {}) => {
|
|
27
27
|
const packageJsonFileName = join(dir, 'package.json')
|
|
28
28
|
const isPackageJsonExists = await isFileAccessible(packageJsonFileName)
|
|
29
29
|
if (!isPackageJsonExists) {
|
|
30
|
-
const packageJson = pupa(packageJsonTemplate(addTSBuild), { platVersion, fastifyVersion
|
|
31
|
-
|
|
30
|
+
const packageJson = pupa(packageJsonTemplate(addTSBuild), { platVersion, fastifyVersion })
|
|
31
|
+
const parsed = JSON.parse(packageJson)
|
|
32
|
+
Object.assign(parsed.scripts, scripts)
|
|
33
|
+
await writeFile(packageJsonFileName, JSON.stringify(parsed, null, 2))
|
|
32
34
|
logger.debug(`${packageJsonFileName} successfully created.`)
|
|
33
35
|
} else {
|
|
34
36
|
logger.debug(`${packageJsonFileName} found, skipping creation of package.json file.`)
|
package/src/db/README.md
CHANGED
package/src/db/create-db-cli.mjs
CHANGED
|
@@ -108,8 +108,12 @@ const createPlatformaticDB = async (_args, opts) => {
|
|
|
108
108
|
|
|
109
109
|
const fastifyVersion = await getDependencyVersion('fastify')
|
|
110
110
|
|
|
111
|
+
const scripts = {
|
|
112
|
+
migrate: 'platformatic db migrations apply'
|
|
113
|
+
}
|
|
114
|
+
|
|
111
115
|
// Create the package.json, .gitignore, readme
|
|
112
|
-
await createPackageJson(
|
|
116
|
+
await createPackageJson(version, fastifyVersion, logger, projectDir, useTypescript, scripts)
|
|
113
117
|
await createGitignore(logger, projectDir)
|
|
114
118
|
await createReadme(logger, projectDir)
|
|
115
119
|
|
package/src/db/create-db.mjs
CHANGED
|
@@ -2,7 +2,7 @@ import { getVersion, getDependencyVersion, isFileAccessible } from '../utils.mjs
|
|
|
2
2
|
import { createPackageJson } from '../create-package-json.mjs'
|
|
3
3
|
import { createGitignore } from '../create-gitignore.mjs'
|
|
4
4
|
import { getPkgManager } from '../get-pkg-manager.mjs'
|
|
5
|
-
import { join } from 'path'
|
|
5
|
+
import { join, relative } from 'path'
|
|
6
6
|
import inquirer from 'inquirer'
|
|
7
7
|
import { readFile, writeFile, mkdir } from 'fs/promises'
|
|
8
8
|
import pino from 'pino'
|
|
@@ -46,21 +46,24 @@ export async function createPlatformaticRuntime (_args) {
|
|
|
46
46
|
const pkgManager = getPkgManager()
|
|
47
47
|
|
|
48
48
|
const projectDir = await askDir(logger, '.')
|
|
49
|
-
|
|
49
|
+
|
|
50
|
+
// Create the project directory
|
|
51
|
+
await mkdir(projectDir, { recursive: true })
|
|
52
|
+
|
|
53
|
+
const baseServicesDir = join(relative(process.cwd(), projectDir), 'services')
|
|
54
|
+
const servicesDir = await askDir(logger, baseServicesDir, 'Where would you like to load your services from?')
|
|
50
55
|
|
|
51
56
|
const { runPackageManagerInstall } = await inquirer.prompt([
|
|
52
57
|
getRunPackageManagerInstall(pkgManager)
|
|
53
58
|
])
|
|
54
59
|
|
|
55
|
-
// Create the project directory
|
|
56
|
-
await mkdir(projectDir, { recursive: true })
|
|
57
60
|
await mkdir(servicesDir, { recursive: true })
|
|
58
61
|
|
|
59
62
|
const fastifyVersion = await getDependencyVersion('fastify')
|
|
60
63
|
|
|
61
64
|
// Create the package.json, notes that we don't have the option for TS (yet) so we don't generate
|
|
62
65
|
// the package.json with the TS build
|
|
63
|
-
await createPackageJson(
|
|
66
|
+
await createPackageJson(version, fastifyVersion, logger, projectDir, false)
|
|
64
67
|
await createGitignore(logger, projectDir)
|
|
65
68
|
await createReadme(logger, projectDir)
|
|
66
69
|
|
|
@@ -124,13 +127,24 @@ export async function createRuntimeService ({ servicesDir, names, logger }) {
|
|
|
124
127
|
type: 'input',
|
|
125
128
|
name: 'name',
|
|
126
129
|
message: 'What is the name of the service?',
|
|
127
|
-
default: generateName().dashed
|
|
130
|
+
default: generateName().dashed,
|
|
131
|
+
validate: (value) => {
|
|
132
|
+
if (value.length === 0) {
|
|
133
|
+
return 'Please enter a name'
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (value.includes(' ')) {
|
|
137
|
+
return 'Please enter a name without spaces'
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (names.includes(value)) {
|
|
141
|
+
return 'This name is already used, please choose another one.'
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return true
|
|
145
|
+
}
|
|
128
146
|
})
|
|
129
147
|
|
|
130
|
-
if (names.includes(name)) {
|
|
131
|
-
logger.warn('This name is already used, please choose another one.')
|
|
132
|
-
return false
|
|
133
|
-
}
|
|
134
148
|
names.push(name)
|
|
135
149
|
|
|
136
150
|
const serviceDir = join(servicesDir, name)
|
|
@@ -80,7 +80,7 @@ const createPlatformaticService = async (_args, opts = {}) => {
|
|
|
80
80
|
if (!opts.skipPackageJson) {
|
|
81
81
|
// Create the package.json, notes that we don't have the option for TS (yet) so we don't generate
|
|
82
82
|
// the package.json with the TS build
|
|
83
|
-
await createPackageJson(
|
|
83
|
+
await createPackageJson(version, fastifyVersion, logger, projectDir, false)
|
|
84
84
|
}
|
|
85
85
|
if (!opts.skipGitignore) {
|
|
86
86
|
await createGitignore(logger, projectDir)
|
|
@@ -8,7 +8,7 @@ const TS_OUT_DIR = 'dist'
|
|
|
8
8
|
function generateConfig (version, typescript) {
|
|
9
9
|
const plugins = {
|
|
10
10
|
paths: [
|
|
11
|
-
'./plugins',
|
|
11
|
+
{ path: './plugins', encapsulate: false },
|
|
12
12
|
'./routes'
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -45,15 +45,16 @@ PLT_SERVER_LOGGER_LEVEL=info
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
const JS_PLUGIN_WITH_TYPES_SUPPORT = `\
|
|
48
|
+
/// <reference types="@platformatic/service" />
|
|
48
49
|
'use strict'
|
|
49
50
|
/** @param {import('fastify').FastifyInstance} fastify */
|
|
50
51
|
module.exports = async function (fastify, opts) {
|
|
51
52
|
fastify.decorate('example', 'foobar')
|
|
52
53
|
}
|
|
53
|
-
module.exports[Symbol.for('skip-override')] = true
|
|
54
54
|
`
|
|
55
55
|
|
|
56
56
|
const TS_PLUGIN_WITH_TYPES_SUPPORT = `\
|
|
57
|
+
/// <reference types="@platformatic/service" />
|
|
57
58
|
import { FastifyInstance, FastifyPluginOptions } from 'fastify'
|
|
58
59
|
|
|
59
60
|
export default async function (fastify: FastifyInstance, opts: FastifyPluginOptions) {
|
|
@@ -62,6 +63,7 @@ export default async function (fastify: FastifyInstance, opts: FastifyPluginOpti
|
|
|
62
63
|
`
|
|
63
64
|
|
|
64
65
|
const JS_ROUTES_WITH_TYPES_SUPPORT = `\
|
|
66
|
+
/// <reference types="@platformatic/service" />
|
|
65
67
|
'use strict'
|
|
66
68
|
/** @param {import('fastify').FastifyInstance} fastify */
|
|
67
69
|
module.exports = async function (fastify, opts) {
|
|
@@ -72,6 +74,7 @@ module.exports = async function (fastify, opts) {
|
|
|
72
74
|
`
|
|
73
75
|
|
|
74
76
|
const TS_ROUTES_WITH_TYPES_SUPPORT = `\
|
|
77
|
+
/// <reference types="@platformatic/service" />
|
|
75
78
|
import { FastifyInstance, FastifyPluginOptions } from 'fastify'
|
|
76
79
|
|
|
77
80
|
declare module 'fastify' {
|
|
@@ -23,12 +23,12 @@ afterEach(() => {
|
|
|
23
23
|
test('creates package.json file for db project', async ({ equal }) => {
|
|
24
24
|
const version = '1.2.3'
|
|
25
25
|
const fastifyVersion = '4.5.6'
|
|
26
|
-
await createPackageJson(
|
|
26
|
+
await createPackageJson(version, fastifyVersion, fakeLogger, tmpDir, false)
|
|
27
27
|
equal(log, `${join(tmpDir, 'package.json')} successfully created.`)
|
|
28
28
|
const accessible = await isFileAccessible(join(tmpDir, 'package.json'))
|
|
29
29
|
equal(accessible, true)
|
|
30
30
|
const packageJson = JSON.parse(readFileSync(join(tmpDir, 'package.json')))
|
|
31
|
-
equal(packageJson.scripts.start, 'platformatic
|
|
31
|
+
equal(packageJson.scripts.start, 'platformatic start')
|
|
32
32
|
equal(packageJson.scripts.build, undefined)
|
|
33
33
|
equal(packageJson.dependencies.platformatic, `^${version}`)
|
|
34
34
|
equal(packageJson.devDependencies.fastify, `^${fastifyVersion}`)
|
|
@@ -37,12 +37,12 @@ test('creates package.json file for db project', async ({ equal }) => {
|
|
|
37
37
|
test('creates package.json file for service project', async ({ equal }) => {
|
|
38
38
|
const version = '1.2.3'
|
|
39
39
|
const fastifyVersion = '4.5.6'
|
|
40
|
-
await createPackageJson(
|
|
40
|
+
await createPackageJson(version, fastifyVersion, fakeLogger, tmpDir, false)
|
|
41
41
|
equal(log, `${join(tmpDir, 'package.json')} successfully created.`)
|
|
42
42
|
const accessible = await isFileAccessible(join(tmpDir, 'package.json'))
|
|
43
43
|
equal(accessible, true)
|
|
44
44
|
const packageJson = JSON.parse(readFileSync(join(tmpDir, 'package.json')))
|
|
45
|
-
equal(packageJson.scripts.start, 'platformatic
|
|
45
|
+
equal(packageJson.scripts.start, 'platformatic start')
|
|
46
46
|
equal(packageJson.dependencies.platformatic, `^${version}`)
|
|
47
47
|
equal(packageJson.devDependencies.fastify, `^${fastifyVersion}`)
|
|
48
48
|
})
|
|
@@ -52,19 +52,19 @@ test('do not create package.json file because already present', async ({ equal }
|
|
|
52
52
|
const fastifyVersion = '4.5.6'
|
|
53
53
|
const packagejson = join(tmpDir, 'package.json')
|
|
54
54
|
writeFileSync(packagejson, 'TEST')
|
|
55
|
-
await createPackageJson(
|
|
55
|
+
await createPackageJson(version, fastifyVersion, fakeLogger, tmpDir, false)
|
|
56
56
|
equal(log, `${join(tmpDir, 'package.json')} found, skipping creation of package.json file.`)
|
|
57
57
|
})
|
|
58
58
|
|
|
59
59
|
test('creates package.json file with TS build', async ({ equal }) => {
|
|
60
60
|
const version = '1.2.3'
|
|
61
61
|
const fastifyVersion = '4.5.6'
|
|
62
|
-
await createPackageJson(
|
|
62
|
+
await createPackageJson(version, fastifyVersion, fakeLogger, tmpDir, true)
|
|
63
63
|
equal(log, `${join(tmpDir, 'package.json')} successfully created.`)
|
|
64
64
|
const accessible = await isFileAccessible(join(tmpDir, 'package.json'))
|
|
65
65
|
equal(accessible, true)
|
|
66
66
|
const packageJson = JSON.parse(readFileSync(join(tmpDir, 'package.json')))
|
|
67
|
-
equal(packageJson.scripts.start, 'npm run clean && platformatic
|
|
67
|
+
equal(packageJson.scripts.start, 'npm run clean && platformatic start')
|
|
68
68
|
equal(packageJson.scripts.clean, 'rm -fr ./dist')
|
|
69
69
|
equal(packageJson.scripts.build, 'npx tsc')
|
|
70
70
|
equal(packageJson.dependencies.platformatic, `^${version}`)
|
|
@@ -59,7 +59,7 @@ test('creates service with typescript', async ({ equal, same, ok }) => {
|
|
|
59
59
|
equal(process.env.PLT_SERVER_HOSTNAME, 'myhost')
|
|
60
60
|
equal(process.env.PORT, '6666')
|
|
61
61
|
|
|
62
|
-
same(plugins.paths, ['./plugins', './routes'])
|
|
62
|
+
same(plugins.paths, [{ path: './plugins', encapsulate: false }, './routes'])
|
|
63
63
|
equal(plugins.typescript, true)
|
|
64
64
|
|
|
65
65
|
ok(await isFileAccessible(join(tmpDir, 'tsconfig.json')))
|
|
@@ -95,7 +95,7 @@ test('creates service with javascript', async ({ equal, same, ok }) => {
|
|
|
95
95
|
equal(process.env.PLT_SERVER_HOSTNAME, 'myhost')
|
|
96
96
|
equal(process.env.PORT, '6666')
|
|
97
97
|
|
|
98
|
-
same(plugins, { paths: ['./plugins', './routes'] })
|
|
98
|
+
same(plugins, { paths: [{ path: './plugins', encapsulate: false }, './routes'] })
|
|
99
99
|
ok(await isFileAccessible(join(tmpDir, 'plugins', 'example.js')))
|
|
100
100
|
ok(await isFileAccessible(join(tmpDir, 'routes', 'root.js')))
|
|
101
101
|
})
|