@feathersjs/cli 5.0.0-pre.28 → 5.0.0-pre.30
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/CHANGELOG.md +28 -28
- package/bin/feathers +3 -6
- package/lib/app/index.js +34 -11
- package/lib/app/index.js.map +1 -1
- package/lib/app/index.ts +81 -53
- package/lib/app/templates/app.test.tpl.js +1 -1
- package/lib/app/templates/app.test.tpl.js.map +1 -1
- package/lib/app/templates/app.test.tpl.ts +1 -2
- package/lib/app/templates/app.tpl.js +24 -12
- package/lib/app/templates/app.tpl.js.map +1 -1
- package/lib/app/templates/app.tpl.ts +28 -14
- package/lib/app/templates/channels.tpl.js +1 -1
- package/lib/app/templates/channels.tpl.js.map +1 -1
- package/lib/app/templates/channels.tpl.ts +1 -2
- package/lib/app/templates/client.tpl.js +3 -3
- package/lib/app/templates/client.tpl.js.map +1 -1
- package/lib/app/templates/client.tpl.ts +3 -4
- package/lib/app/templates/config.tpl.js +10 -1
- package/lib/app/templates/config.tpl.js.map +1 -1
- package/lib/app/templates/config.tpl.ts +10 -0
- package/lib/app/templates/declarations.tpl.js +3 -3
- package/lib/app/templates/declarations.tpl.js.map +1 -1
- package/lib/app/templates/declarations.tpl.ts +5 -4
- package/lib/app/templates/index.html.tpl.js +12 -52
- package/lib/app/templates/index.html.tpl.js.map +1 -1
- package/lib/app/templates/index.html.tpl.ts +12 -53
- package/lib/app/templates/index.tpl.js +1 -1
- package/lib/app/templates/index.tpl.js.map +1 -1
- package/lib/app/templates/index.tpl.ts +1 -2
- package/lib/app/templates/logger.tpl.js +1 -1
- package/lib/app/templates/logger.tpl.js.map +1 -1
- package/lib/app/templates/logger.tpl.ts +2 -2
- package/lib/app/templates/package.json.tpl.js +4 -3
- package/lib/app/templates/package.json.tpl.js.map +1 -1
- package/lib/app/templates/package.json.tpl.ts +5 -3
- package/lib/app/templates/readme.md.tpl.js +11 -7
- package/lib/app/templates/readme.md.tpl.js.map +1 -1
- package/lib/app/templates/readme.md.tpl.ts +15 -8
- package/lib/app/templates/{configuration.tpl.d.ts → schemas.tpl.d.ts} +0 -0
- package/lib/app/templates/schemas.tpl.js +76 -0
- package/lib/app/templates/schemas.tpl.js.map +1 -0
- package/lib/app/templates/schemas.tpl.ts +90 -0
- package/lib/app/templates/services.tpl.js +1 -1
- package/lib/app/templates/services.tpl.js.map +1 -1
- package/lib/app/templates/services.tpl.ts +1 -2
- package/lib/authentication/index.d.ts +4 -3
- package/lib/authentication/index.js +12 -3
- package/lib/authentication/index.js.map +1 -1
- package/lib/authentication/index.ts +23 -5
- package/lib/authentication/templates/authentication.tpl.js +4 -6
- package/lib/authentication/templates/authentication.tpl.js.map +1 -1
- package/lib/authentication/templates/authentication.tpl.ts +6 -9
- package/lib/authentication/templates/config.tpl.js +10 -6
- package/lib/authentication/templates/config.tpl.js.map +1 -1
- package/lib/authentication/templates/config.tpl.ts +40 -34
- package/lib/authentication/templates/declarations.tpl.js +3 -3
- package/lib/authentication/templates/declarations.tpl.js.map +1 -1
- package/lib/authentication/templates/declarations.tpl.ts +9 -4
- package/lib/authentication/templates/knex.tpl.js +5 -4
- package/lib/authentication/templates/knex.tpl.js.map +1 -1
- package/lib/authentication/templates/knex.tpl.ts +5 -4
- package/lib/authentication/templates/{user.resolver.tpl.d.ts → schema.json.tpl.d.ts} +0 -0
- package/lib/authentication/templates/schema.json.tpl.js +92 -0
- package/lib/authentication/templates/schema.json.tpl.js.map +1 -0
- package/lib/authentication/templates/schema.json.tpl.ts +108 -0
- package/lib/authentication/templates/{user.schema.tpl.d.ts → schema.typebox.tpl.d.ts} +1 -0
- package/lib/authentication/templates/schema.typebox.tpl.js +79 -0
- package/lib/authentication/templates/schema.typebox.tpl.js.map +1 -0
- package/lib/authentication/templates/schema.typebox.tpl.ts +94 -0
- package/lib/authentication/templates/test.tpl.js +2 -2
- package/lib/authentication/templates/test.tpl.js.map +1 -1
- package/lib/authentication/templates/test.tpl.ts +6 -3
- package/lib/cli.d.ts +6 -0
- package/lib/cli.js +75 -0
- package/lib/cli.js.map +1 -0
- package/lib/cli.ts +68 -0
- package/lib/commons.d.ts +14 -1
- package/lib/commons.js +24 -4
- package/lib/commons.js.map +1 -1
- package/lib/commons.ts +29 -1
- package/lib/connection/index.d.ts +5 -3
- package/lib/connection/index.js +5 -3
- package/lib/connection/index.js.map +1 -1
- package/lib/connection/index.ts +19 -5
- package/lib/connection/templates/knex.tpl.js +2 -12
- package/lib/connection/templates/knex.tpl.js.map +1 -1
- package/lib/connection/templates/knex.tpl.ts +6 -20
- package/lib/connection/templates/mongodb.tpl.js +1 -3
- package/lib/connection/templates/mongodb.tpl.js.map +1 -1
- package/lib/connection/templates/mongodb.tpl.ts +1 -12
- package/lib/hook/index.d.ts +1 -1
- package/lib/hook/index.js +3 -0
- package/lib/hook/index.js.map +1 -1
- package/lib/hook/index.ts +3 -1
- package/lib/hook/templates/hook.tpl.js +2 -3
- package/lib/hook/templates/hook.tpl.js.map +1 -1
- package/lib/hook/templates/hook.tpl.ts +5 -3
- package/lib/index.d.ts +2 -16
- package/lib/index.js +16 -24
- package/lib/index.js.map +1 -1
- package/lib/index.ts +2 -28
- package/lib/service/index.d.ts +10 -2
- package/lib/service/index.js +79 -41
- package/lib/service/index.js.map +1 -1
- package/lib/service/index.ts +54 -6
- package/lib/service/templates/client.tpl.js +26 -6
- package/lib/service/templates/client.tpl.js.map +1 -1
- package/lib/service/templates/client.tpl.ts +41 -12
- package/lib/service/templates/{class.tpl.d.ts → schema.json.tpl.d.ts} +0 -0
- package/lib/service/templates/schema.json.tpl.js +73 -0
- package/lib/service/templates/schema.json.tpl.js.map +1 -0
- package/lib/service/templates/schema.json.tpl.ts +85 -0
- package/lib/service/templates/{resolver.tpl.d.ts → schema.typebox.tpl.d.ts} +0 -0
- package/lib/service/templates/schema.typebox.tpl.js +58 -0
- package/lib/service/templates/schema.typebox.tpl.js.map +1 -0
- package/lib/service/templates/schema.typebox.tpl.ts +70 -0
- package/lib/service/templates/service.tpl.d.ts +1 -0
- package/lib/service/templates/service.tpl.js +67 -15
- package/lib/service/templates/service.tpl.js.map +1 -1
- package/lib/service/templates/service.tpl.ts +98 -19
- package/lib/service/templates/test.tpl.js +1 -1
- package/lib/service/templates/test.tpl.js.map +1 -1
- package/lib/service/templates/test.tpl.ts +1 -2
- package/lib/service/type/custom.tpl.d.ts +1 -2
- package/lib/service/type/custom.tpl.js +32 -25
- package/lib/service/type/custom.tpl.js.map +1 -1
- package/lib/service/type/custom.tpl.ts +44 -35
- package/lib/service/type/knex.tpl.d.ts +1 -3
- package/lib/service/type/knex.tpl.js +33 -23
- package/lib/service/type/knex.tpl.js.map +1 -1
- package/lib/service/type/knex.tpl.ts +51 -29
- package/lib/service/type/mongodb.tpl.d.ts +1 -2
- package/lib/service/type/mongodb.tpl.js +30 -20
- package/lib/service/type/mongodb.tpl.js.map +1 -1
- package/lib/service/type/mongodb.tpl.ts +47 -29
- package/package.json +23 -24
- package/lib/app/templates/configuration.tpl.js +0 -39
- package/lib/app/templates/configuration.tpl.js.map +0 -1
- package/lib/app/templates/configuration.tpl.ts +0 -44
- package/lib/authentication/templates/user.resolver.tpl.js +0 -98
- package/lib/authentication/templates/user.resolver.tpl.js.map +0 -1
- package/lib/authentication/templates/user.resolver.tpl.ts +0 -111
- package/lib/authentication/templates/user.schema.tpl.js +0 -79
- package/lib/authentication/templates/user.schema.tpl.js.map +0 -1
- package/lib/authentication/templates/user.schema.tpl.ts +0 -87
- package/lib/service/templates/class.tpl.js +0 -63
- package/lib/service/templates/class.tpl.js.map +0 -1
- package/lib/service/templates/class.tpl.ts +0 -79
- package/lib/service/templates/resolver.tpl.js +0 -73
- package/lib/service/templates/resolver.tpl.js.map +0 -1
- package/lib/service/templates/resolver.tpl.ts +0 -78
- package/lib/service/templates/schema.tpl.d.ts +0 -2
- package/lib/service/templates/schema.tpl.js +0 -75
- package/lib/service/templates/schema.tpl.js.map +0 -1
- package/lib/service/templates/schema.tpl.ts +0 -80
|
@@ -1,10 +1,26 @@
|
|
|
1
|
-
import { generator, toFile
|
|
2
|
-
import {
|
|
1
|
+
import { generator, toFile } from '@feathershq/pinion'
|
|
2
|
+
import { renderSource } from '../../commons'
|
|
3
3
|
import { ServiceGeneratorContext } from '../index'
|
|
4
4
|
|
|
5
|
-
export const template = ({ className, upperName, relative }: ServiceGeneratorContext) =>
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export const template = ({ className, upperName, schema, fileName, relative }: ServiceGeneratorContext) => `
|
|
6
|
+
import type { Id, NullableId, Params } from '@feathersjs/feathers'
|
|
7
|
+
|
|
8
|
+
import type { Application } from '${relative}/declarations'
|
|
9
|
+
${
|
|
10
|
+
schema
|
|
11
|
+
? `import type {
|
|
12
|
+
${upperName},
|
|
13
|
+
${upperName}Data,
|
|
14
|
+
${upperName}Query
|
|
15
|
+
} from './${fileName}.schema'
|
|
16
|
+
`
|
|
17
|
+
: `
|
|
18
|
+
export type ${upperName} = any
|
|
19
|
+
export type ${upperName}Data = any
|
|
20
|
+
export type ${upperName}Query = any
|
|
21
|
+
`
|
|
22
|
+
}
|
|
23
|
+
|
|
8
24
|
export interface ${className}Options {
|
|
9
25
|
app: Application
|
|
10
26
|
}
|
|
@@ -18,20 +34,20 @@ export class ${className} {
|
|
|
18
34
|
constructor (public options: ${className}Options) {
|
|
19
35
|
}
|
|
20
36
|
|
|
21
|
-
async find (_params?: ${upperName}Params): Promise<${upperName}
|
|
37
|
+
async find (_params?: ${upperName}Params): Promise<${upperName}[]> {
|
|
22
38
|
return []
|
|
23
39
|
}
|
|
24
40
|
|
|
25
|
-
async get (id: Id, _params?: ${upperName}Params): Promise<${upperName}
|
|
41
|
+
async get (id: Id, _params?: ${upperName}Params): Promise<${upperName}> {
|
|
26
42
|
return {
|
|
27
43
|
id: 0,
|
|
28
44
|
text: \`A new message with ID: \${id}!\`
|
|
29
45
|
}
|
|
30
46
|
}
|
|
31
47
|
|
|
32
|
-
async create (data: ${upperName}Data, params?: ${upperName}Params): Promise<${upperName}
|
|
33
|
-
async create (data: ${upperName}Data[], params?: ${upperName}Params): Promise<${upperName}
|
|
34
|
-
async create (data: ${upperName}Data|${upperName}Data[], params?: ${upperName}Params): Promise<${upperName}
|
|
48
|
+
async create (data: ${upperName}Data, params?: ${upperName}Params): Promise<${upperName}>
|
|
49
|
+
async create (data: ${upperName}Data[], params?: ${upperName}Params): Promise<${upperName}[]>
|
|
50
|
+
async create (data: ${upperName}Data|${upperName}Data[], params?: ${upperName}Params): Promise<${upperName}|${upperName}[]> {
|
|
35
51
|
if (Array.isArray(data)) {
|
|
36
52
|
return Promise.all(data.map(current => this.create(current, params)));
|
|
37
53
|
}
|
|
@@ -42,49 +58,42 @@ export class ${className} {
|
|
|
42
58
|
}
|
|
43
59
|
}
|
|
44
60
|
|
|
45
|
-
async update (id: NullableId, data: ${upperName}Data, _params?: ${upperName}Params): Promise<${upperName}
|
|
61
|
+
async update (id: NullableId, data: ${upperName}Data, _params?: ${upperName}Params): Promise<${upperName}> {
|
|
46
62
|
return {
|
|
47
63
|
id: 0,
|
|
48
64
|
...data
|
|
49
65
|
}
|
|
50
66
|
}
|
|
51
67
|
|
|
52
|
-
async patch (id: NullableId, data: ${upperName}Data, _params?: ${upperName}Params): Promise<${upperName}
|
|
68
|
+
async patch (id: NullableId, data: ${upperName}Data, _params?: ${upperName}Params): Promise<${upperName}> {
|
|
53
69
|
return {
|
|
54
70
|
id: 0,
|
|
55
71
|
...data
|
|
56
72
|
}
|
|
57
73
|
}
|
|
58
74
|
|
|
59
|
-
async remove (id: NullableId, _params?: ${upperName}Params): Promise<${upperName}
|
|
75
|
+
async remove (id: NullableId, _params?: ${upperName}Params): Promise<${upperName}> {
|
|
60
76
|
return {
|
|
61
77
|
id: 0,
|
|
62
78
|
text: 'removed'
|
|
63
79
|
}
|
|
64
80
|
}
|
|
65
81
|
}
|
|
66
|
-
`
|
|
67
82
|
|
|
68
|
-
export const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const toServiceFile = toFile<ServiceGeneratorContext>(({ lib, folder, fileName }) => [
|
|
73
|
-
lib,
|
|
74
|
-
'services',
|
|
75
|
-
...folder,
|
|
76
|
-
`${fileName}.service`
|
|
77
|
-
])
|
|
78
|
-
|
|
79
|
-
const toClassFile = toFile<ServiceGeneratorContext>(({ lib, folder, fileName }) => [
|
|
80
|
-
lib,
|
|
81
|
-
'services',
|
|
82
|
-
...folder,
|
|
83
|
-
`${fileName}.class`
|
|
84
|
-
])
|
|
83
|
+
export const getOptions = (app: Application) => {
|
|
84
|
+
return { app }
|
|
85
|
+
}
|
|
86
|
+
`
|
|
85
87
|
|
|
86
88
|
export const generate = (ctx: ServiceGeneratorContext) =>
|
|
87
|
-
generator(ctx)
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
generator(ctx).then(
|
|
90
|
+
renderSource(
|
|
91
|
+
template,
|
|
92
|
+
toFile<ServiceGeneratorContext>(({ lib, folder, fileName }) => [
|
|
93
|
+
lib,
|
|
94
|
+
'services',
|
|
95
|
+
...folder,
|
|
96
|
+
`${fileName}.class`
|
|
97
|
+
])
|
|
98
|
+
)
|
|
99
|
+
)
|
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
import { ServiceGeneratorContext } from '../index';
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const classCode: ({ className, upperName }: ServiceGeneratorContext) => string;
|
|
4
|
-
export declare const optionTemplate: ({ kebabName, feathers }: ServiceGeneratorContext) => string;
|
|
2
|
+
export declare const template: ({ className, upperName, kebabName, feathers, schema, fileName, relative }: ServiceGeneratorContext) => string;
|
|
5
3
|
export declare const generate: (ctx: ServiceGeneratorContext) => Promise<ServiceGeneratorContext>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generate = exports.
|
|
3
|
+
exports.generate = exports.template = void 0;
|
|
4
4
|
const pinion_1 = require("@feathershq/pinion");
|
|
5
5
|
const commons_1 = require("../../commons");
|
|
6
|
-
const migrationTemplate = ({ kebabName }) => `import type { Knex } from 'knex'
|
|
6
|
+
const migrationTemplate = ({ kebabName }) => /* ts */ `import type { Knex } from 'knex'
|
|
7
7
|
|
|
8
8
|
export async function up(knex: Knex): Promise<void> {
|
|
9
9
|
await knex.schema.createTable('${kebabName}', table => {
|
|
@@ -16,36 +16,46 @@ export async function down(knex: Knex): Promise<void> {
|
|
|
16
16
|
await knex.schema.dropTable('${kebabName}')
|
|
17
17
|
}
|
|
18
18
|
`;
|
|
19
|
-
|
|
20
|
-
import type { KnexAdapterParams } from
|
|
21
|
-
|
|
19
|
+
const template = ({ className, upperName, kebabName, feathers, schema, fileName, relative }) => /* ts */ `import { KnexService } from '@feathersjs/knex'
|
|
20
|
+
import type { KnexAdapterParams } from '@feathersjs/knex'
|
|
21
|
+
|
|
22
|
+
import type { Application } from '${relative}/declarations'
|
|
23
|
+
${schema
|
|
24
|
+
? `import type {
|
|
25
|
+
${upperName},
|
|
26
|
+
${upperName}Data,
|
|
27
|
+
${upperName}Query
|
|
28
|
+
} from './${fileName}.schema'
|
|
29
|
+
`
|
|
30
|
+
: `
|
|
31
|
+
export type ${upperName} = any
|
|
32
|
+
export type ${upperName}Data = any
|
|
33
|
+
export type ${upperName}Query = any
|
|
34
|
+
`}
|
|
35
|
+
|
|
36
|
+
export interface ${upperName}Params extends KnexAdapterParams<${upperName}Query> {
|
|
22
37
|
}
|
|
23
38
|
|
|
24
39
|
// By default calls the standard Knex adapter service methods but can be customized with your own functionality.
|
|
25
|
-
export class ${className} extends KnexService<${upperName}
|
|
40
|
+
export class ${className} extends KnexService<${upperName}, ${upperName}Data, ${upperName}Params> {
|
|
26
41
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
42
|
+
|
|
43
|
+
export const getOptions = (app: Application) => {
|
|
44
|
+
return {
|
|
45
|
+
paginate: app.get('paginate'),
|
|
30
46
|
Model: app.get('${feathers.database}Client'),
|
|
31
|
-
name: '${kebabName}'
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
]);
|
|
39
|
-
const toClassFile = (0, pinion_1.toFile)(({ lib, folder, fileName }) => [
|
|
47
|
+
name: '${kebabName}'
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
`;
|
|
51
|
+
exports.template = template;
|
|
52
|
+
const generate = (ctx) => (0, pinion_1.generator)(ctx)
|
|
53
|
+
.then((0, commons_1.renderSource)(exports.template, (0, pinion_1.toFile)(({ lib, folder, fileName }) => [
|
|
40
54
|
lib,
|
|
41
55
|
'services',
|
|
42
56
|
...folder,
|
|
43
57
|
`${fileName}.class`
|
|
44
|
-
])
|
|
45
|
-
const generate = (ctx) => (0, pinion_1.generator)(ctx)
|
|
46
|
-
.then((0, commons_1.injectSource)(exports.classCode, (0, pinion_1.append)(), toClassFile))
|
|
47
|
-
.then((0, commons_1.injectSource)(exports.importTemplate, (0, pinion_1.prepend)(), toClassFile))
|
|
48
|
-
.then((0, commons_1.injectSource)(exports.optionTemplate, (0, pinion_1.after)('const options ='), toServiceFile, false))
|
|
58
|
+
])))
|
|
49
59
|
.then((0, commons_1.renderSource)(migrationTemplate, (0, pinion_1.toFile)('migrations', ({ kebabName }) => {
|
|
50
60
|
// Probably not great but it works to align with the Knex migration file format
|
|
51
61
|
const migrationDate = new Date().toISOString().replace(/\D/g, '').substring(0, 14);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knex.tpl.js","sourceRoot":"","sources":["../../../src/service/type/knex.tpl.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"knex.tpl.js","sourceRoot":"","sources":["../../../src/service/type/knex.tpl.ts"],"names":[],"mappings":";;;AAAA,+CAAsD;AACtD,2CAA4C;AAG5C,MAAM,iBAAiB,GAAG,CAAC,EACzB,SAAS,EACe,EAAE,EAAE,CAAC,QAAQ,CAAC;;;mCAGL,SAAS;;;;;;;iCAOX,SAAS;;CAEzC,CAAA;AAEM,MAAM,QAAQ,GAAG,CAAC,EACvB,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACgB,EAAE,EAAE,CAAC,QAAQ,CAAC;;;oCAGJ,QAAQ;EAE1C,MAAM;IACJ,CAAC,CAAC;IACF,SAAS;IACT,SAAS;IACT,SAAS;YACD,QAAQ;CACnB;IACG,CAAC,CAAC;cACQ,SAAS;cACT,SAAS;cACT,SAAS;CAEvB;;mBAEmB,SAAS,oCAAoC,SAAS;;;;eAI1D,SAAS,wBAAwB,SAAS,KAAK,SAAS,SAAS,SAAS;;;;;;sBAMnE,QAAQ,CAAC,QAAQ;aAC1B,SAAS;;;CAGrB,CAAA;AAzCY,QAAA,QAAQ,YAyCpB;AAEM,MAAM,QAAQ,GAAG,CAAC,GAA4B,EAAE,EAAE,CACvD,IAAA,kBAAS,EAAC,GAAG,CAAC;KACX,IAAI,CACH,IAAA,sBAAY,EACV,gBAAQ,EACR,IAAA,eAAM,EAA0B,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7D,GAAG;IACH,UAAU;IACV,GAAG,MAAM;IACT,GAAG,QAAQ,QAAQ;CACpB,CAAC,CACH,CACF;KACA,IAAI,CACH,IAAA,sBAAY,EACV,iBAAiB,EACjB,IAAA,eAAM,EAA0B,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;IAC9D,+EAA+E;IAC/E,MAAM,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAElF,OAAO,GAAG,aAAa,IAAI,SAAS,EAAE,CAAA;AACxC,CAAC,CAAC,CACH,CACF,CAAA;AAvBQ,QAAA,QAAQ,YAuBhB"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { generator, toFile
|
|
2
|
-
import {
|
|
1
|
+
import { generator, toFile } from '@feathershq/pinion'
|
|
2
|
+
import { renderSource } from '../../commons'
|
|
3
3
|
import { ServiceGeneratorContext } from '../index'
|
|
4
4
|
|
|
5
|
-
const migrationTemplate = ({
|
|
5
|
+
const migrationTemplate = ({
|
|
6
|
+
kebabName
|
|
7
|
+
}: ServiceGeneratorContext) => /* ts */ `import type { Knex } from 'knex'
|
|
6
8
|
|
|
7
9
|
export async function up(knex: Knex): Promise<void> {
|
|
8
10
|
await knex.schema.createTable('${kebabName}', table => {
|
|
@@ -16,42 +18,62 @@ export async function down(knex: Knex): Promise<void> {
|
|
|
16
18
|
}
|
|
17
19
|
`
|
|
18
20
|
|
|
19
|
-
export const
|
|
20
|
-
|
|
21
|
+
export const template = ({
|
|
22
|
+
className,
|
|
23
|
+
upperName,
|
|
24
|
+
kebabName,
|
|
25
|
+
feathers,
|
|
26
|
+
schema,
|
|
27
|
+
fileName,
|
|
28
|
+
relative
|
|
29
|
+
}: ServiceGeneratorContext) => /* ts */ `import { KnexService } from '@feathersjs/knex'
|
|
30
|
+
import type { KnexAdapterParams } from '@feathersjs/knex'
|
|
21
31
|
|
|
22
|
-
|
|
23
|
-
|
|
32
|
+
import type { Application } from '${relative}/declarations'
|
|
33
|
+
${
|
|
34
|
+
schema
|
|
35
|
+
? `import type {
|
|
36
|
+
${upperName},
|
|
37
|
+
${upperName}Data,
|
|
38
|
+
${upperName}Query
|
|
39
|
+
} from './${fileName}.schema'
|
|
40
|
+
`
|
|
41
|
+
: `
|
|
42
|
+
export type ${upperName} = any
|
|
43
|
+
export type ${upperName}Data = any
|
|
44
|
+
export type ${upperName}Query = any
|
|
45
|
+
`
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface ${upperName}Params extends KnexAdapterParams<${upperName}Query> {
|
|
24
49
|
}
|
|
25
50
|
|
|
26
51
|
// By default calls the standard Knex adapter service methods but can be customized with your own functionality.
|
|
27
|
-
export class ${className} extends KnexService<${upperName}
|
|
52
|
+
export class ${className} extends KnexService<${upperName}, ${upperName}Data, ${upperName}Params> {
|
|
28
53
|
}
|
|
29
|
-
`
|
|
30
54
|
|
|
31
|
-
export const
|
|
32
|
-
|
|
55
|
+
export const getOptions = (app: Application) => {
|
|
56
|
+
return {
|
|
57
|
+
paginate: app.get('paginate'),
|
|
33
58
|
Model: app.get('${feathers.database}Client'),
|
|
34
|
-
name: '${kebabName}'
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
'services',
|
|
39
|
-
...folder,
|
|
40
|
-
`${fileName}.service`
|
|
41
|
-
])
|
|
42
|
-
|
|
43
|
-
const toClassFile = toFile<ServiceGeneratorContext>(({ lib, folder, fileName }) => [
|
|
44
|
-
lib,
|
|
45
|
-
'services',
|
|
46
|
-
...folder,
|
|
47
|
-
`${fileName}.class`
|
|
48
|
-
])
|
|
59
|
+
name: '${kebabName}'
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
`
|
|
49
63
|
|
|
50
64
|
export const generate = (ctx: ServiceGeneratorContext) =>
|
|
51
65
|
generator(ctx)
|
|
52
|
-
.then(
|
|
53
|
-
|
|
54
|
-
|
|
66
|
+
.then(
|
|
67
|
+
renderSource(
|
|
68
|
+
template,
|
|
69
|
+
toFile<ServiceGeneratorContext>(({ lib, folder, fileName }) => [
|
|
70
|
+
lib,
|
|
71
|
+
'services',
|
|
72
|
+
...folder,
|
|
73
|
+
`${fileName}.class`
|
|
74
|
+
])
|
|
75
|
+
)
|
|
76
|
+
)
|
|
55
77
|
.then(
|
|
56
78
|
renderSource(
|
|
57
79
|
migrationTemplate,
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { ServiceGeneratorContext } from '../index';
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const classCode: ({ className, upperName }: ServiceGeneratorContext) => string;
|
|
2
|
+
export declare const template: ({ className, upperName, kebabName, schema, fileName, relative }: ServiceGeneratorContext) => string;
|
|
4
3
|
export declare const generate: (ctx: ServiceGeneratorContext) => Promise<ServiceGeneratorContext>;
|
|
@@ -1,35 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generate = exports.
|
|
3
|
+
exports.generate = exports.template = void 0;
|
|
4
4
|
const pinion_1 = require("@feathershq/pinion");
|
|
5
5
|
const commons_1 = require("../../commons");
|
|
6
|
-
|
|
7
|
-
import type { MongoDBAdapterParams } from \'@feathersjs/mongodb\'
|
|
8
|
-
|
|
6
|
+
const template = ({ className, upperName, kebabName, schema, fileName, relative }) => /* ts */ `import { MongoDBService } from \'@feathersjs/mongodb\'
|
|
7
|
+
import type { MongoDBAdapterParams } from \'@feathersjs/mongodb\'
|
|
8
|
+
|
|
9
|
+
import type { Application } from '${relative}/declarations'
|
|
10
|
+
${schema
|
|
11
|
+
? `import type {
|
|
12
|
+
${upperName},
|
|
13
|
+
${upperName}Data,
|
|
14
|
+
${upperName}Query
|
|
15
|
+
} from './${fileName}.schema'
|
|
16
|
+
`
|
|
17
|
+
: `
|
|
18
|
+
export type ${upperName} = any
|
|
19
|
+
export type ${upperName}Data = any
|
|
20
|
+
export type ${upperName}Query = any
|
|
21
|
+
`}
|
|
22
|
+
|
|
23
|
+
export interface ${upperName}Params extends MongoDBAdapterParams<${upperName}Query> {
|
|
9
24
|
}
|
|
10
25
|
|
|
11
26
|
// By default calls the standard MongoDB adapter service methods but can be customized with your own functionality.
|
|
12
|
-
export class ${className} extends MongoDBService<${upperName}
|
|
27
|
+
export class ${className} extends MongoDBService<${upperName}, ${upperName}Data, ${upperName}Params> {
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export const getOptions = (app: Application) => {
|
|
31
|
+
return {
|
|
32
|
+
paginate: app.get('paginate'),
|
|
33
|
+
Model: app.get('mongodbClient').then(db => db.collection('${kebabName}'))
|
|
34
|
+
}
|
|
13
35
|
}
|
|
14
36
|
`;
|
|
15
|
-
exports.
|
|
16
|
-
const
|
|
17
|
-
Model: app.get('mongodbClient').then(db => db.collection('${kebabName}'))`;
|
|
18
|
-
const toServiceFile = (0, pinion_1.toFile)(({ lib, folder, fileName }) => [
|
|
19
|
-
lib,
|
|
20
|
-
'services',
|
|
21
|
-
...folder,
|
|
22
|
-
`${fileName}.service`
|
|
23
|
-
]);
|
|
24
|
-
const toClassFile = (0, pinion_1.toFile)(({ lib, folder, fileName }) => [
|
|
37
|
+
exports.template = template;
|
|
38
|
+
const generate = (ctx) => (0, pinion_1.generator)(ctx).then((0, commons_1.renderSource)(exports.template, (0, pinion_1.toFile)(({ lib, folder, fileName }) => [
|
|
25
39
|
lib,
|
|
26
40
|
'services',
|
|
27
41
|
...folder,
|
|
28
42
|
`${fileName}.class`
|
|
29
|
-
]);
|
|
30
|
-
const generate = (ctx) => (0, pinion_1.generator)(ctx)
|
|
31
|
-
.then((0, commons_1.injectSource)(exports.classCode, (0, pinion_1.append)(), toClassFile))
|
|
32
|
-
.then((0, commons_1.injectSource)(exports.importTemplate, (0, pinion_1.prepend)(), toClassFile))
|
|
33
|
-
.then((0, commons_1.injectSource)(optionTemplate, (0, pinion_1.after)('const options ='), toServiceFile, false));
|
|
43
|
+
])));
|
|
34
44
|
exports.generate = generate;
|
|
35
45
|
//# sourceMappingURL=mongodb.tpl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongodb.tpl.js","sourceRoot":"","sources":["../../../src/service/type/mongodb.tpl.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"mongodb.tpl.js","sourceRoot":"","sources":["../../../src/service/type/mongodb.tpl.ts"],"names":[],"mappings":";;;AAAA,+CAAsD;AACtD,2CAA4C;AAGrC,MAAM,QAAQ,GAAG,CAAC,EACvB,SAAS,EACT,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,QAAQ,EACgB,EAAE,EAAE,CAAC,QAAQ,CAAC;;;oCAGJ,QAAQ;EAE1C,MAAM;IACJ,CAAC,CAAC;IACF,SAAS;IACT,SAAS;IACT,SAAS;YACD,QAAQ;CACnB;IACG,CAAC,CAAC;cACQ,SAAS;cACT,SAAS;cACT,SAAS;CAEvB;;mBAEmB,SAAS,uCAAuC,SAAS;;;;eAI7D,SAAS,2BAA2B,SAAS,KAAK,SAAS,SAAS,SAAS;;;;;;gEAM5B,SAAS;;;CAGxE,CAAA;AAvCY,QAAA,QAAQ,YAuCpB;AAEM,MAAM,QAAQ,GAAG,CAAC,GAA4B,EAAE,EAAE,CACvD,IAAA,kBAAS,EAAC,GAAG,CAAC,CAAC,IAAI,CACjB,IAAA,sBAAY,EACV,gBAAQ,EACR,IAAA,eAAM,EAA0B,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7D,GAAG;IACH,UAAU;IACV,GAAG,MAAM;IACT,GAAG,QAAQ,QAAQ;CACpB,CAAC,CACH,CACF,CAAA;AAXU,QAAA,QAAQ,YAWlB"}
|
|
@@ -1,39 +1,57 @@
|
|
|
1
|
-
import { generator, toFile
|
|
2
|
-
import {
|
|
1
|
+
import { generator, toFile } from '@feathershq/pinion'
|
|
2
|
+
import { renderSource } from '../../commons'
|
|
3
3
|
import { ServiceGeneratorContext } from '../index'
|
|
4
4
|
|
|
5
|
-
export const
|
|
6
|
-
|
|
5
|
+
export const template = ({
|
|
6
|
+
className,
|
|
7
|
+
upperName,
|
|
8
|
+
kebabName,
|
|
9
|
+
schema,
|
|
10
|
+
fileName,
|
|
11
|
+
relative
|
|
12
|
+
}: ServiceGeneratorContext) => /* ts */ `import { MongoDBService } from \'@feathersjs/mongodb\'
|
|
13
|
+
import type { MongoDBAdapterParams } from \'@feathersjs/mongodb\'
|
|
7
14
|
|
|
8
|
-
|
|
9
|
-
|
|
15
|
+
import type { Application } from '${relative}/declarations'
|
|
16
|
+
${
|
|
17
|
+
schema
|
|
18
|
+
? `import type {
|
|
19
|
+
${upperName},
|
|
20
|
+
${upperName}Data,
|
|
21
|
+
${upperName}Query
|
|
22
|
+
} from './${fileName}.schema'
|
|
23
|
+
`
|
|
24
|
+
: `
|
|
25
|
+
export type ${upperName} = any
|
|
26
|
+
export type ${upperName}Data = any
|
|
27
|
+
export type ${upperName}Query = any
|
|
28
|
+
`
|
|
10
29
|
}
|
|
11
30
|
|
|
12
|
-
|
|
13
|
-
export class ${className} extends MongoDBService<${upperName}Result, ${upperName}Data, ${upperName}Params> {
|
|
31
|
+
export interface ${upperName}Params extends MongoDBAdapterParams<${upperName}Query> {
|
|
14
32
|
}
|
|
15
|
-
`
|
|
16
|
-
|
|
17
|
-
const optionTemplate = ({ kebabName }: ServiceGeneratorContext) =>
|
|
18
|
-
` paginate: app.get('paginate'),
|
|
19
|
-
Model: app.get('mongodbClient').then(db => db.collection('${kebabName}'))`
|
|
20
33
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
...folder,
|
|
25
|
-
`${fileName}.service`
|
|
26
|
-
])
|
|
34
|
+
// By default calls the standard MongoDB adapter service methods but can be customized with your own functionality.
|
|
35
|
+
export class ${className} extends MongoDBService<${upperName}, ${upperName}Data, ${upperName}Params> {
|
|
36
|
+
}
|
|
27
37
|
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
38
|
+
export const getOptions = (app: Application) => {
|
|
39
|
+
return {
|
|
40
|
+
paginate: app.get('paginate'),
|
|
41
|
+
Model: app.get('mongodbClient').then(db => db.collection('${kebabName}'))
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
`
|
|
34
45
|
|
|
35
46
|
export const generate = (ctx: ServiceGeneratorContext) =>
|
|
36
|
-
generator(ctx)
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
47
|
+
generator(ctx).then(
|
|
48
|
+
renderSource(
|
|
49
|
+
template,
|
|
50
|
+
toFile<ServiceGeneratorContext>(({ lib, folder, fileName }) => [
|
|
51
|
+
lib,
|
|
52
|
+
'services',
|
|
53
|
+
...folder,
|
|
54
|
+
`${fileName}.class`
|
|
55
|
+
])
|
|
56
|
+
)
|
|
57
|
+
)
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@feathersjs/cli",
|
|
3
3
|
"description": "The command line interface for creating Feathers applications",
|
|
4
|
-
"version": "5.0.0-pre.
|
|
4
|
+
"version": "5.0.0-pre.30",
|
|
5
5
|
"homepage": "https://feathersjs.com",
|
|
6
6
|
"main": "lib/",
|
|
7
7
|
"bin": {
|
|
@@ -47,41 +47,40 @@
|
|
|
47
47
|
"mocha": "mocha --timeout 60000 --config ../../.mocharc.json --recursive test/**.test.ts test/**/*.test.ts",
|
|
48
48
|
"test": "npm run compile && npm run mocha"
|
|
49
49
|
},
|
|
50
|
-
"directories": {
|
|
51
|
-
"lib": "lib/cli"
|
|
52
|
-
},
|
|
53
50
|
"publishConfig": {
|
|
54
51
|
"access": "public"
|
|
55
52
|
},
|
|
56
53
|
"dependencies": {
|
|
57
|
-
"@feathershq/pinion": "^0.3.
|
|
54
|
+
"@feathershq/pinion": "^0.3.5",
|
|
58
55
|
"chalk": "^4.0.1",
|
|
56
|
+
"commander": "^9.4.1",
|
|
59
57
|
"lodash": "^4.17.21",
|
|
60
58
|
"prettier": "^2.7.1"
|
|
61
59
|
},
|
|
62
60
|
"devDependencies": {
|
|
63
|
-
"@feathersjs/authentication": "^5.0.0-pre.
|
|
64
|
-
"@feathersjs/authentication-local": "^5.0.0-pre.
|
|
65
|
-
"@feathersjs/authentication-oauth": "^5.0.0-pre.
|
|
66
|
-
"@feathersjs/configuration": "^5.0.0-pre.
|
|
67
|
-
"@feathersjs/errors": "^5.0.0-pre.
|
|
68
|
-
"@feathersjs/express": "^5.0.0-pre.
|
|
69
|
-
"@feathersjs/feathers": "^5.0.0-pre.
|
|
70
|
-
"@feathersjs/knex": "^5.0.0-pre.
|
|
71
|
-
"@feathersjs/koa": "^5.0.0-pre.
|
|
72
|
-
"@feathersjs/mongodb": "^5.0.0-pre.
|
|
73
|
-
"@feathersjs/schema": "^5.0.0-pre.
|
|
74
|
-
"@feathersjs/socketio": "^5.0.0-pre.
|
|
75
|
-
"@feathersjs/transport-commons": "^5.0.0-pre.
|
|
76
|
-
"@
|
|
77
|
-
"@types/
|
|
78
|
-
"@types/
|
|
61
|
+
"@feathersjs/authentication": "^5.0.0-pre.30",
|
|
62
|
+
"@feathersjs/authentication-local": "^5.0.0-pre.30",
|
|
63
|
+
"@feathersjs/authentication-oauth": "^5.0.0-pre.30",
|
|
64
|
+
"@feathersjs/configuration": "^5.0.0-pre.30",
|
|
65
|
+
"@feathersjs/errors": "^5.0.0-pre.30",
|
|
66
|
+
"@feathersjs/express": "^5.0.0-pre.30",
|
|
67
|
+
"@feathersjs/feathers": "^5.0.0-pre.30",
|
|
68
|
+
"@feathersjs/knex": "^5.0.0-pre.30",
|
|
69
|
+
"@feathersjs/koa": "^5.0.0-pre.30",
|
|
70
|
+
"@feathersjs/mongodb": "^5.0.0-pre.30",
|
|
71
|
+
"@feathersjs/schema": "^5.0.0-pre.30",
|
|
72
|
+
"@feathersjs/socketio": "^5.0.0-pre.30",
|
|
73
|
+
"@feathersjs/transport-commons": "^5.0.0-pre.30",
|
|
74
|
+
"@feathersjs/typebox": "^5.0.0-pre.30",
|
|
75
|
+
"@types/mocha": "^10.0.0",
|
|
76
|
+
"@types/node": "^18.8.2",
|
|
77
|
+
"@types/prettier": "^2.7.1",
|
|
79
78
|
"axios": "^0.27.2",
|
|
80
79
|
"mocha": "^10.0.0",
|
|
81
80
|
"shx": "^0.3.4",
|
|
82
81
|
"ts-node": "^10.9.1",
|
|
83
|
-
"type-fest": "^
|
|
84
|
-
"typescript": "^4.
|
|
82
|
+
"type-fest": "^3.0.0",
|
|
83
|
+
"typescript": "^4.8.4"
|
|
85
84
|
},
|
|
86
|
-
"gitHead": "
|
|
85
|
+
"gitHead": "b535c91197f4b997520e0a0e608793eeba791931"
|
|
87
86
|
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generate = void 0;
|
|
4
|
-
const pinion_1 = require("@feathershq/pinion");
|
|
5
|
-
const commons_1 = require("../../commons");
|
|
6
|
-
const template = ({}) => `import { schema, Ajv } from '@feathersjs/schema'
|
|
7
|
-
import type { Infer } from '@feathersjs/schema'
|
|
8
|
-
import { authenticationSettingsSchema } from '@feathersjs/authentication'
|
|
9
|
-
|
|
10
|
-
export const configurationSchema = schema(
|
|
11
|
-
{
|
|
12
|
-
$id: 'ApplicationConfiguration',
|
|
13
|
-
type: 'object',
|
|
14
|
-
additionalProperties: false,
|
|
15
|
-
required: [ 'host', 'port', 'public', 'paginate' ],
|
|
16
|
-
properties: {
|
|
17
|
-
host: { type: 'string' },
|
|
18
|
-
port: { type: 'number' },
|
|
19
|
-
public: { type: 'string' },
|
|
20
|
-
authentication: authenticationSettingsSchema,
|
|
21
|
-
paginate: {
|
|
22
|
-
type: 'object',
|
|
23
|
-
additionalProperties: false,
|
|
24
|
-
required: [ 'default', 'max' ],
|
|
25
|
-
properties: {
|
|
26
|
-
default: { type: 'number' },
|
|
27
|
-
max: { type: 'number' }
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
} as const,
|
|
32
|
-
new Ajv()
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
export type ConfigurationSchema = Infer<typeof configurationSchema>
|
|
36
|
-
`;
|
|
37
|
-
const generate = (ctx) => (0, pinion_1.generator)(ctx).then((0, commons_1.renderSource)(template, (0, pinion_1.toFile)(({ lib }) => lib, 'configuration')));
|
|
38
|
-
exports.generate = generate;
|
|
39
|
-
//# sourceMappingURL=configuration.tpl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.tpl.js","sourceRoot":"","sources":["../../../src/app/templates/configuration.tpl.ts"],"names":[],"mappings":";;;AAAA,+CAAsD;AACtD,2CAA4C;AAG5C,MAAM,QAAQ,GAAG,CAAC,EAAuB,EAAE,EAAE,CAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BD,CAAA;AAEM,MAAM,QAAQ,GAAG,CAAC,GAAwB,EAAE,EAAE,CACnD,IAAA,kBAAS,EAAC,GAAG,CAAC,CAAC,IAAI,CACjB,IAAA,sBAAY,EACV,QAAQ,EACR,IAAA,eAAM,EAAsB,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,CAC/D,CACF,CAAA;AANU,QAAA,QAAQ,YAMlB"}
|