@feathersjs/generators 5.0.13 → 5.0.15
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 +12 -0
- package/lib/app/index.d.ts +19 -27
- package/lib/app/index.js +25 -30
- package/lib/app/index.js.map +1 -1
- package/lib/app/index.ts +17 -8
- package/lib/app/templates/app.test.tpl.d.ts +5 -2
- package/lib/app/templates/app.test.tpl.js +3 -7
- package/lib/app/templates/app.test.tpl.js.map +1 -1
- package/lib/app/templates/app.test.tpl.ts +4 -4
- package/lib/app/templates/app.tpl.d.ts +1 -1
- package/lib/app/templates/app.tpl.js +3 -7
- package/lib/app/templates/app.tpl.js.map +1 -1
- package/lib/app/templates/app.tpl.ts +4 -4
- package/lib/app/templates/channels.tpl.d.ts +1 -1
- package/lib/app/templates/channels.tpl.js +3 -7
- package/lib/app/templates/channels.tpl.js.map +1 -1
- package/lib/app/templates/channels.tpl.ts +4 -4
- package/lib/app/templates/client.test.tpl.d.ts +1 -1
- package/lib/app/templates/client.test.tpl.js +3 -7
- package/lib/app/templates/client.test.tpl.js.map +1 -1
- package/lib/app/templates/client.test.tpl.ts +4 -4
- package/lib/app/templates/client.tpl.d.ts +1 -1
- package/lib/app/templates/client.tpl.js +3 -7
- package/lib/app/templates/client.tpl.js.map +1 -1
- package/lib/app/templates/client.tpl.ts +4 -4
- package/lib/app/templates/configuration.tpl.d.ts +1 -1
- package/lib/app/templates/configuration.tpl.js +7 -11
- package/lib/app/templates/configuration.tpl.js.map +1 -1
- package/lib/app/templates/configuration.tpl.ts +4 -4
- package/lib/app/templates/declarations.tpl.d.ts +1 -1
- package/lib/app/templates/declarations.tpl.js +2 -6
- package/lib/app/templates/declarations.tpl.js.map +1 -1
- package/lib/app/templates/declarations.tpl.ts +3 -3
- package/lib/app/templates/index.html.tpl.d.ts +5 -2
- package/lib/app/templates/index.html.tpl.js +2 -6
- package/lib/app/templates/index.html.tpl.js.map +1 -1
- package/lib/app/templates/index.html.tpl.ts +3 -3
- package/lib/app/templates/index.tpl.d.ts +1 -1
- package/lib/app/templates/index.tpl.js +3 -7
- package/lib/app/templates/index.tpl.js.map +1 -1
- package/lib/app/templates/index.tpl.ts +4 -4
- package/lib/app/templates/logger.tpl.d.ts +1 -1
- package/lib/app/templates/logger.tpl.js +6 -10
- package/lib/app/templates/logger.tpl.js.map +1 -1
- package/lib/app/templates/logger.tpl.ts +4 -4
- package/lib/app/templates/package.json.tpl.d.ts +5 -2
- package/lib/app/templates/package.json.tpl.js +2 -6
- package/lib/app/templates/package.json.tpl.js.map +1 -1
- package/lib/app/templates/package.json.tpl.ts +3 -3
- package/lib/app/templates/prettierrc.tpl.d.ts +1 -1
- package/lib/app/templates/prettierrc.tpl.js +5 -9
- package/lib/app/templates/prettierrc.tpl.js.map +1 -1
- package/lib/app/templates/prettierrc.tpl.ts +4 -4
- package/lib/app/templates/readme.md.tpl.d.ts +5 -2
- package/lib/app/templates/readme.md.tpl.js +2 -6
- package/lib/app/templates/readme.md.tpl.js.map +1 -1
- package/lib/app/templates/readme.md.tpl.ts +3 -3
- package/lib/app/templates/services.tpl.d.ts +1 -1
- package/lib/app/templates/services.tpl.js +3 -7
- package/lib/app/templates/services.tpl.js.map +1 -1
- package/lib/app/templates/services.tpl.ts +4 -4
- package/lib/app/templates/tsconfig.json.tpl.d.ts +1 -1
- package/lib/app/templates/tsconfig.json.tpl.js +3 -7
- package/lib/app/templates/tsconfig.json.tpl.js.map +1 -1
- package/lib/app/templates/tsconfig.json.tpl.ts +3 -3
- package/lib/app/templates/validators.tpl.d.ts +1 -1
- package/lib/app/templates/validators.tpl.js +3 -7
- package/lib/app/templates/validators.tpl.js.map +1 -1
- package/lib/app/templates/validators.tpl.ts +4 -4
- package/lib/authentication/index.d.ts +10 -10
- package/lib/authentication/index.js +16 -19
- package/lib/authentication/index.js.map +1 -1
- package/lib/authentication/index.ts +65 -56
- package/lib/authentication/templates/authentication.tpl.d.ts +1 -1
- package/lib/authentication/templates/authentication.tpl.js +11 -15
- package/lib/authentication/templates/authentication.tpl.js.map +1 -1
- package/lib/authentication/templates/authentication.tpl.ts +5 -5
- package/lib/authentication/templates/client.test.tpl.d.ts +1 -1
- package/lib/authentication/templates/client.test.tpl.js +7 -11
- package/lib/authentication/templates/client.test.tpl.js.map +1 -1
- package/lib/authentication/templates/client.test.tpl.ts +5 -5
- package/lib/authentication/templates/config.tpl.d.ts +1 -1
- package/lib/authentication/templates/config.tpl.js +8 -15
- package/lib/authentication/templates/config.tpl.js.map +1 -1
- package/lib/authentication/templates/config.tpl.ts +3 -3
- package/lib/authentication/templates/declarations.tpl.d.ts +1 -1
- package/lib/authentication/templates/declarations.tpl.js +5 -9
- package/lib/authentication/templates/declarations.tpl.js.map +1 -1
- package/lib/authentication/templates/declarations.tpl.ts +3 -3
- package/lib/commons.d.ts +10 -2
- package/lib/commons.js +43 -76
- package/lib/commons.js.map +1 -1
- package/lib/commons.ts +22 -4
- package/lib/connection/index.d.ts +1 -1
- package/lib/connection/index.js +24 -30
- package/lib/connection/index.js.map +1 -1
- package/lib/connection/index.ts +10 -4
- package/lib/connection/templates/knex.tpl.d.ts +1 -1
- package/lib/connection/templates/knex.tpl.js +13 -20
- package/lib/connection/templates/knex.tpl.js.map +1 -1
- package/lib/connection/templates/knex.tpl.ts +4 -4
- package/lib/connection/templates/mongodb.tpl.d.ts +1 -1
- package/lib/connection/templates/mongodb.tpl.js +10 -14
- package/lib/connection/templates/mongodb.tpl.js.map +1 -1
- package/lib/connection/templates/mongodb.tpl.ts +4 -4
- package/lib/hook/index.d.ts +6 -6
- package/lib/hook/index.js +13 -17
- package/lib/hook/index.js.map +1 -1
- package/lib/hook/index.ts +7 -3
- package/lib/hook/templates/hook.tpl.d.ts +1 -1
- package/lib/hook/templates/hook.tpl.js +3 -7
- package/lib/hook/templates/hook.tpl.js.map +1 -1
- package/lib/hook/templates/hook.tpl.ts +4 -4
- package/lib/index.d.ts +7 -7
- package/lib/index.js +7 -36
- package/lib/index.js.map +1 -1
- package/lib/index.ts +7 -7
- package/lib/service/index.d.ts +1 -1
- package/lib/service/index.js +27 -31
- package/lib/service/index.js.map +1 -1
- package/lib/service/index.ts +94 -92
- package/lib/service/templates/client.tpl.d.ts +1 -1
- package/lib/service/templates/client.tpl.js +4 -8
- package/lib/service/templates/client.tpl.js.map +1 -1
- package/lib/service/templates/client.tpl.ts +4 -4
- package/lib/service/templates/schema.json.tpl.d.ts +1 -1
- package/lib/service/templates/schema.json.tpl.js +10 -14
- package/lib/service/templates/schema.json.tpl.js.map +1 -1
- package/lib/service/templates/schema.json.tpl.ts +4 -4
- package/lib/service/templates/schema.typebox.tpl.d.ts +1 -1
- package/lib/service/templates/schema.typebox.tpl.js +8 -12
- package/lib/service/templates/schema.typebox.tpl.js.map +1 -1
- package/lib/service/templates/schema.typebox.tpl.ts +4 -4
- package/lib/service/templates/service.tpl.d.ts +1 -1
- package/lib/service/templates/service.tpl.js +9 -14
- package/lib/service/templates/service.tpl.js.map +1 -1
- package/lib/service/templates/service.tpl.ts +4 -4
- package/lib/service/templates/shared.tpl.d.ts +1 -1
- package/lib/service/templates/shared.tpl.js +3 -7
- package/lib/service/templates/shared.tpl.js.map +1 -1
- package/lib/service/templates/shared.tpl.ts +4 -4
- package/lib/service/templates/test.tpl.d.ts +1 -1
- package/lib/service/templates/test.tpl.js +3 -7
- package/lib/service/templates/test.tpl.js.map +1 -1
- package/lib/service/templates/test.tpl.ts +4 -4
- package/lib/service/type/custom.tpl.d.ts +1 -1
- package/lib/service/type/custom.tpl.js +4 -9
- package/lib/service/type/custom.tpl.js.map +1 -1
- package/lib/service/type/custom.tpl.ts +4 -4
- package/lib/service/type/knex.tpl.d.ts +1 -1
- package/lib/service/type/knex.tpl.js +6 -11
- package/lib/service/type/knex.tpl.js.map +1 -1
- package/lib/service/type/knex.tpl.ts +4 -4
- package/lib/service/type/mongodb.tpl.d.ts +1 -1
- package/lib/service/type/mongodb.tpl.js +4 -9
- package/lib/service/type/mongodb.tpl.js.map +1 -1
- package/lib/service/type/mongodb.tpl.ts +4 -4
- package/package.json +31 -30
package/lib/commons.js
CHANGED
|
@@ -1,49 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.oauthTemplate = exports.localTemplate = exports.yyyymmddhhmmss = exports.fileExists = exports.injectSource = exports.renderSource = exports.prettify = exports.PRETTIERRC = exports.getJavaScript = exports.checkPreconditions = exports.initializeBaseContext = exports.addVersions = exports.getDatabaseAdapter = exports.DATABASE_TYPES = exports.version = void 0;
|
|
30
|
-
const fs_1 = __importDefault(require("fs"));
|
|
31
|
-
const path_1 = require("path");
|
|
32
|
-
const promises_1 = require("fs/promises");
|
|
33
|
-
const pinion_1 = require("@feathershq/pinion");
|
|
34
|
-
const ts = __importStar(require("typescript"));
|
|
35
|
-
const prettier_1 = __importDefault(require("prettier"));
|
|
36
|
-
const path_2 = __importDefault(require("path"));
|
|
37
|
-
exports.version = JSON.parse(fs_1.default.readFileSync((0, path_1.join)(__dirname, '..', 'package.json')).toString()).version;
|
|
38
|
-
exports.DATABASE_TYPES = ['mongodb', 'mysql', 'postgresql', 'sqlite', 'mssql', 'other'];
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import { join, dirname } from 'path';
|
|
3
|
+
import { readFile, writeFile } from 'fs/promises';
|
|
4
|
+
import { loadJSON, fromFile, getCallable, renderTemplate, inject, exec } from '@featherscloud/pinion';
|
|
5
|
+
import ts from 'typescript';
|
|
6
|
+
import prettier from 'prettier';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
// Set __dirname in es module
|
|
9
|
+
const __dirname = dirname(new URL(import.meta.url).pathname);
|
|
10
|
+
export const { version } = JSON.parse(fs.readFileSync(join(__dirname, '..', 'package.json')).toString());
|
|
11
|
+
export const DATABASE_TYPES = ['mongodb', 'mysql', 'postgresql', 'sqlite', 'mssql', 'other'];
|
|
39
12
|
/**
|
|
40
13
|
* Returns the name of the Feathers database adapter for a supported database type
|
|
41
14
|
*
|
|
42
15
|
* @param database The type of the database
|
|
43
16
|
* @returns The name of the adapter
|
|
44
17
|
*/
|
|
45
|
-
const getDatabaseAdapter = (database) => (database === 'mongodb' ? 'mongodb' : 'knex');
|
|
46
|
-
exports.getDatabaseAdapter = getDatabaseAdapter;
|
|
18
|
+
export const getDatabaseAdapter = (database) => (database === 'mongodb' ? 'mongodb' : 'knex');
|
|
47
19
|
/**
|
|
48
20
|
* Returns dependencies with the versions from the context attached (if available)
|
|
49
21
|
*
|
|
@@ -51,21 +23,20 @@ exports.getDatabaseAdapter = getDatabaseAdapter;
|
|
|
51
23
|
* @param versions The dependency version list
|
|
52
24
|
* @returns A list of dependencies with their versions
|
|
53
25
|
*/
|
|
54
|
-
const addVersions = (dependencies, versions) => dependencies.map((dep) => `${dep}@${versions[dep] ? versions[dep] : 'latest'}`);
|
|
55
|
-
exports.addVersions = addVersions;
|
|
26
|
+
export const addVersions = (dependencies, versions) => dependencies.map((dep) => `${dep}@${versions[dep] ? versions[dep] : 'latest'}`);
|
|
56
27
|
/**
|
|
57
28
|
* Loads the application package.json and populates information like the library and test directory
|
|
58
29
|
* and Feathers app specific information.
|
|
59
30
|
*
|
|
60
31
|
* @returns The updated context
|
|
61
32
|
*/
|
|
62
|
-
const initializeBaseContext = () => (ctx) => Promise.resolve(ctx)
|
|
63
|
-
.then(
|
|
64
|
-
.then(
|
|
33
|
+
export const initializeBaseContext = () => (ctx) => Promise.resolve(ctx)
|
|
34
|
+
.then(loadJSON(fromFile('package.json'), (pkg) => ({ pkg }), {}))
|
|
35
|
+
.then(loadJSON(path.join(__dirname, '..', 'package.json'), (pkg) => ({
|
|
65
36
|
dependencyVersions: {
|
|
66
37
|
...pkg.devDependencies,
|
|
67
38
|
...ctx.dependencyVersions,
|
|
68
|
-
'@feathersjs/cli':
|
|
39
|
+
'@feathersjs/cli': version
|
|
69
40
|
}
|
|
70
41
|
})))
|
|
71
42
|
.then((ctx) => {
|
|
@@ -78,7 +49,6 @@ const initializeBaseContext = () => (ctx) => Promise.resolve(ctx)
|
|
|
78
49
|
feathers: (_g = ctx.pkg) === null || _g === void 0 ? void 0 : _g.feathers
|
|
79
50
|
});
|
|
80
51
|
});
|
|
81
|
-
exports.initializeBaseContext = initializeBaseContext;
|
|
82
52
|
/**
|
|
83
53
|
* Checks if the current context contains a valid generated application. This is necesary for most
|
|
84
54
|
* generators (besides the app generator).
|
|
@@ -86,7 +56,7 @@ exports.initializeBaseContext = initializeBaseContext;
|
|
|
86
56
|
* @param ctx The context to check against
|
|
87
57
|
* @returns Throws an error or returns the original context
|
|
88
58
|
*/
|
|
89
|
-
const checkPreconditions = () => async (ctx) => {
|
|
59
|
+
export const checkPreconditions = () => async (ctx) => {
|
|
90
60
|
if (!ctx.feathers) {
|
|
91
61
|
throw new Error(`Can not run generator since the current folder does not appear to be a Feathers application.
|
|
92
62
|
Either your package.json is missing or it does not have \`feathers\` property.
|
|
@@ -94,7 +64,6 @@ Either your package.json is missing or it does not have \`feathers\` property.
|
|
|
94
64
|
}
|
|
95
65
|
return ctx;
|
|
96
66
|
};
|
|
97
|
-
exports.checkPreconditions = checkPreconditions;
|
|
98
67
|
const importRegex = /from '(\..*)'/g;
|
|
99
68
|
const escapeNewLines = (code) => code.replace(/\n\n/g, '\n/* :newline: */');
|
|
100
69
|
const restoreNewLines = (code) => code.replace(/\/\* :newline: \*\//g, '\n');
|
|
@@ -106,7 +75,7 @@ const fixLocalImports = (code) => code.replace(importRegex, "from '$1.js'");
|
|
|
106
75
|
* @param options TypeScript transpilation options
|
|
107
76
|
* @returns The formatted JavaScript source code
|
|
108
77
|
*/
|
|
109
|
-
const getJavaScript = (typescript, options = {}) => {
|
|
78
|
+
export const getJavaScript = (typescript, options = {}) => {
|
|
110
79
|
const source = escapeNewLines(typescript);
|
|
111
80
|
const transpiled = ts.transpileModule(source, {
|
|
112
81
|
...options,
|
|
@@ -119,12 +88,11 @@ const getJavaScript = (typescript, options = {}) => {
|
|
|
119
88
|
});
|
|
120
89
|
return fixLocalImports(restoreNewLines(transpiled.outputText));
|
|
121
90
|
};
|
|
122
|
-
|
|
123
|
-
const getFileName = async (target, ctx) => `${await (0, pinion_1.getCallable)(target, ctx)}.${ctx.language}`;
|
|
91
|
+
const getFileName = async (target, ctx) => `${await getCallable(target, ctx)}.${ctx.language}`;
|
|
124
92
|
/**
|
|
125
93
|
* The default configuration for prettifying files
|
|
126
94
|
*/
|
|
127
|
-
|
|
95
|
+
export const PRETTIERRC = {
|
|
128
96
|
tabWidth: 2,
|
|
129
97
|
useTabs: false,
|
|
130
98
|
printWidth: 110,
|
|
@@ -140,12 +108,12 @@ exports.PRETTIERRC = {
|
|
|
140
108
|
* @param options The Prettier options
|
|
141
109
|
* @returns The updated context
|
|
142
110
|
*/
|
|
143
|
-
const prettify = (target, options =
|
|
111
|
+
export const prettify = (target, options = PRETTIERRC) => async (ctx) => {
|
|
144
112
|
const fileName = await getFileName(target, ctx);
|
|
145
|
-
const config = (await
|
|
146
|
-
const content = (await
|
|
113
|
+
const config = (await prettier.resolveConfig(ctx.cwd)) || options;
|
|
114
|
+
const content = (await readFile(fileName)).toString();
|
|
147
115
|
try {
|
|
148
|
-
await
|
|
116
|
+
await writeFile(fileName, await prettier.format(content, {
|
|
149
117
|
parser: ctx.language === 'ts' ? 'typescript' : 'babel',
|
|
150
118
|
...config
|
|
151
119
|
}));
|
|
@@ -155,7 +123,6 @@ const prettify = (target, options = exports.PRETTIERRC) => async (ctx) => {
|
|
|
155
123
|
}
|
|
156
124
|
return ctx;
|
|
157
125
|
};
|
|
158
|
-
exports.prettify = prettify;
|
|
159
126
|
/**
|
|
160
127
|
* Render a source file template for the language set in the context.
|
|
161
128
|
*
|
|
@@ -163,14 +130,19 @@ exports.prettify = prettify;
|
|
|
163
130
|
* @param target The target filename without extension (will be added based on language)
|
|
164
131
|
* @returns The updated context
|
|
165
132
|
*/
|
|
166
|
-
const renderSource = (template, target, options) => async (ctx) => {
|
|
133
|
+
export const renderSource = (template, target, options) => async (ctx) => {
|
|
167
134
|
const { language } = ctx;
|
|
168
135
|
const fileName = await getFileName(target, ctx);
|
|
169
|
-
const content = language === 'js' ?
|
|
170
|
-
const renderer =
|
|
171
|
-
return renderer(ctx).then(
|
|
136
|
+
const content = language === 'js' ? getJavaScript(await getCallable(template, ctx)) : template;
|
|
137
|
+
const renderer = renderTemplate(content, fileName, options);
|
|
138
|
+
return renderer(ctx).then(prettify(target));
|
|
139
|
+
};
|
|
140
|
+
export const install = (dependencies, dev, packager) => async (ctx) => {
|
|
141
|
+
const dependencyList = await getCallable(dependencies, ctx);
|
|
142
|
+
const packageManager = await getCallable(packager, ctx);
|
|
143
|
+
const flags = dev ? [packageManager === 'yarn' ? '--dev' : '--save-dev'] : [];
|
|
144
|
+
return exec(packager, [packageManager === 'yarn' ? 'add' : 'install', ...dependencyList, ...flags])(ctx);
|
|
172
145
|
};
|
|
173
|
-
exports.renderSource = renderSource;
|
|
174
146
|
/**
|
|
175
147
|
* Inject a source template as the language set in the context.
|
|
176
148
|
*
|
|
@@ -180,27 +152,25 @@ exports.renderSource = renderSource;
|
|
|
180
152
|
* @param transpile Set to `false` if the code should not be transpiled to JavaScript
|
|
181
153
|
* @returns
|
|
182
154
|
*/
|
|
183
|
-
const injectSource = (template, location, target, transpile = true) => async (ctx) => {
|
|
155
|
+
export const injectSource = (template, location, target, transpile = true) => async (ctx) => {
|
|
184
156
|
const { language } = ctx;
|
|
185
|
-
const source = language === 'js' && transpile ?
|
|
157
|
+
const source = language === 'js' && transpile ? getJavaScript(await getCallable(template, ctx)) : template;
|
|
186
158
|
const fileName = await getFileName(target, ctx);
|
|
187
|
-
const injector =
|
|
188
|
-
return injector(ctx).then(
|
|
159
|
+
const injector = inject(source, location, fileName);
|
|
160
|
+
return injector(ctx).then(prettify(target));
|
|
189
161
|
};
|
|
190
|
-
exports.injectSource = injectSource;
|
|
191
162
|
/**
|
|
192
163
|
* Synchronously checks if a file exits
|
|
193
164
|
* @param context The base context
|
|
194
165
|
* @param filenames The filenames to check
|
|
195
166
|
* @returns Wether the file exists or not
|
|
196
167
|
*/
|
|
197
|
-
const fileExists = (...filenames) =>
|
|
198
|
-
exports.fileExists = fileExists;
|
|
168
|
+
export const fileExists = (...filenames) => fs.existsSync(join(...filenames));
|
|
199
169
|
/**
|
|
200
170
|
* The helper used by Knex to create migration names
|
|
201
171
|
* @returns The current date and time in the format `YYYYMMDDHHMMSS`
|
|
202
172
|
*/
|
|
203
|
-
const yyyymmddhhmmss = (offset = 0) => {
|
|
173
|
+
export const yyyymmddhhmmss = (offset = 0) => {
|
|
204
174
|
const now = new Date(Date.now() + offset);
|
|
205
175
|
return (now.getUTCFullYear().toString() +
|
|
206
176
|
(now.getUTCMonth() + 1).toString().padStart(2, '0') +
|
|
@@ -209,7 +179,6 @@ const yyyymmddhhmmss = (offset = 0) => {
|
|
|
209
179
|
now.getUTCMinutes().toString().padStart(2, '0') +
|
|
210
180
|
now.getUTCSeconds().toString().padStart(2, '0'));
|
|
211
181
|
};
|
|
212
|
-
exports.yyyymmddhhmmss = yyyymmddhhmmss;
|
|
213
182
|
/**
|
|
214
183
|
* Render a template if `local` authentication strategy has been selected
|
|
215
184
|
* @param authStrategies The list of selected authentication strategies
|
|
@@ -217,14 +186,12 @@ exports.yyyymmddhhmmss = yyyymmddhhmmss;
|
|
|
217
186
|
* @param alt The content to render if `local` is not selected
|
|
218
187
|
* @returns
|
|
219
188
|
*/
|
|
220
|
-
const localTemplate = (authStrategies, content, alt = '') => authStrategies.includes('local') ? content : alt;
|
|
221
|
-
exports.localTemplate = localTemplate;
|
|
189
|
+
export const localTemplate = (authStrategies, content, alt = '') => authStrategies.includes('local') ? content : alt;
|
|
222
190
|
/**
|
|
223
191
|
* Render a template if an `oauth` authentication strategy has been selected
|
|
224
192
|
* @param authStrategies
|
|
225
193
|
* @param content
|
|
226
194
|
* @returns
|
|
227
195
|
*/
|
|
228
|
-
const oauthTemplate = (authStrategies, content) => authStrategies.filter((s) => s !== 'local').length > 0 ? content : '';
|
|
229
|
-
exports.oauthTemplate = oauthTemplate;
|
|
196
|
+
export const oauthTemplate = (authStrategies, content) => authStrategies.filter((s) => s !== 'local').length > 0 ? content : '';
|
|
230
197
|
//# sourceMappingURL=commons.js.map
|
package/lib/commons.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commons.js","sourceRoot":"","sources":["../src/commons.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commons.js","sourceRoot":"","sources":["../src/commons.ts"],"names":[],"mappings":"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"}
|
package/lib/commons.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import fs from 'fs'
|
|
2
|
-
import { join } from 'path'
|
|
2
|
+
import { join, dirname } from 'path'
|
|
3
3
|
import { PackageJson } from 'type-fest'
|
|
4
4
|
import { readFile, writeFile } from 'fs/promises'
|
|
5
5
|
import {
|
|
@@ -10,12 +10,16 @@ import {
|
|
|
10
10
|
getCallable,
|
|
11
11
|
renderTemplate,
|
|
12
12
|
inject,
|
|
13
|
-
Location
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
Location,
|
|
14
|
+
exec
|
|
15
|
+
} from '@featherscloud/pinion'
|
|
16
|
+
import ts from 'typescript'
|
|
16
17
|
import prettier, { Options as PrettierOptions } from 'prettier'
|
|
17
18
|
import path from 'path'
|
|
18
19
|
|
|
20
|
+
// Set __dirname in es module
|
|
21
|
+
const __dirname = dirname(new URL(import.meta.url).pathname)
|
|
22
|
+
|
|
19
23
|
export const { version } = JSON.parse(fs.readFileSync(join(__dirname, '..', 'package.json')).toString())
|
|
20
24
|
|
|
21
25
|
export type DependencyVersions = { [key: string]: string }
|
|
@@ -251,6 +255,20 @@ export const renderSource =
|
|
|
251
255
|
return renderer(ctx).then(prettify(target))
|
|
252
256
|
}
|
|
253
257
|
|
|
258
|
+
export const install =
|
|
259
|
+
<C extends PinionContext & { language: 'js' | 'ts' }>(
|
|
260
|
+
dependencies: Callable<string[], C>,
|
|
261
|
+
dev: Callable<boolean, C>,
|
|
262
|
+
packager: Callable<string, C>
|
|
263
|
+
) =>
|
|
264
|
+
async (ctx: C) => {
|
|
265
|
+
const dependencyList = await getCallable(dependencies, ctx)
|
|
266
|
+
const packageManager = await getCallable(packager, ctx)
|
|
267
|
+
const flags = dev ? [packageManager === 'yarn' ? '--dev' : '--save-dev'] : []
|
|
268
|
+
|
|
269
|
+
return exec(packager, [packageManager === 'yarn' ? 'add' : 'install', ...dependencyList, ...flags])(ctx)
|
|
270
|
+
}
|
|
271
|
+
|
|
254
272
|
/**
|
|
255
273
|
* Inject a source template as the language set in the context.
|
|
256
274
|
*
|
package/lib/connection/index.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
-
const commons_1 = require("../commons");
|
|
10
|
-
const defaultConnectionString = (type, name) => {
|
|
1
|
+
import { dirname } from 'path';
|
|
2
|
+
import { runGenerator, prompt, mergeJSON, toFile, when } from '@featherscloud/pinion';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { install, getDatabaseAdapter, addVersions, checkPreconditions, initializeBaseContext } from '../commons.js';
|
|
5
|
+
// Set __dirname in es module
|
|
6
|
+
const __dirname = dirname(new URL(import.meta.url).pathname);
|
|
7
|
+
export const defaultConnectionString = (type, name) => {
|
|
11
8
|
const connectionStrings = {
|
|
12
9
|
mongodb: `mongodb://127.0.0.1:27017/${name}`,
|
|
13
10
|
mysql: `mysql://root:@localhost:3306/${name}`,
|
|
@@ -18,14 +15,13 @@ const defaultConnectionString = (type, name) => {
|
|
|
18
15
|
};
|
|
19
16
|
return connectionStrings[type];
|
|
20
17
|
};
|
|
21
|
-
|
|
22
|
-
const prompts = ({ database, connectionString, pkg, name }) => [
|
|
18
|
+
export const prompts = ({ database, connectionString, pkg, name }) => [
|
|
23
19
|
{
|
|
24
20
|
name: 'database',
|
|
25
21
|
type: 'list',
|
|
26
22
|
when: !database,
|
|
27
23
|
message: 'Which database are you connecting to?',
|
|
28
|
-
suffix:
|
|
24
|
+
suffix: chalk.grey(' Databases can be added at any time'),
|
|
29
25
|
choices: [
|
|
30
26
|
{ value: 'sqlite', name: 'SQLite' },
|
|
31
27
|
{ value: 'mongodb', name: 'MongoDB' },
|
|
@@ -34,7 +30,7 @@ const prompts = ({ database, connectionString, pkg, name }) => [
|
|
|
34
30
|
{ value: 'mssql', name: 'Microsoft SQL' },
|
|
35
31
|
{
|
|
36
32
|
value: 'other',
|
|
37
|
-
name: `Another database ${
|
|
33
|
+
name: `Another database ${chalk.grey('(not configured automatically, use with custom services)')}`
|
|
38
34
|
}
|
|
39
35
|
]
|
|
40
36
|
},
|
|
@@ -43,37 +39,36 @@ const prompts = ({ database, connectionString, pkg, name }) => [
|
|
|
43
39
|
type: 'input',
|
|
44
40
|
when: (answers) => !connectionString && database !== 'other' && answers.database !== 'other',
|
|
45
41
|
message: 'Enter your database connection string',
|
|
46
|
-
default: (answers) =>
|
|
42
|
+
default: (answers) => defaultConnectionString(answers.database, answers.name || name || pkg.name)
|
|
47
43
|
}
|
|
48
44
|
];
|
|
49
|
-
|
|
50
|
-
exports.DATABASE_CLIENTS = {
|
|
45
|
+
export const DATABASE_CLIENTS = {
|
|
51
46
|
mongodb: 'mongodb',
|
|
52
47
|
sqlite: 'sqlite3',
|
|
53
48
|
postgresql: 'pg',
|
|
54
49
|
mysql: 'mysql',
|
|
55
50
|
mssql: 'mssql'
|
|
56
51
|
};
|
|
57
|
-
const getDatabaseClient = (database) => database === 'other' ? null :
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
.then((
|
|
61
|
-
.then((
|
|
62
|
-
.then((
|
|
63
|
-
.then(
|
|
52
|
+
export const getDatabaseClient = (database) => database === 'other' ? null : DATABASE_CLIENTS[database];
|
|
53
|
+
export const generate = (ctx) => Promise.resolve(ctx)
|
|
54
|
+
.then(initializeBaseContext())
|
|
55
|
+
.then(checkPreconditions())
|
|
56
|
+
.then(prompt(prompts))
|
|
57
|
+
.then((ctx) => ctx)
|
|
58
|
+
.then(when((ctx) => ctx.database !== 'other', runGenerator(__dirname, 'templates', ({ database }) => `${getDatabaseAdapter(database)}.tpl`), mergeJSON(({ connectionString, database }) => getDatabaseAdapter(database) === 'knex'
|
|
64
59
|
? {
|
|
65
60
|
[database]: {
|
|
66
|
-
client:
|
|
61
|
+
client: getDatabaseClient(database),
|
|
67
62
|
connection: connectionString,
|
|
68
63
|
...(database === 'sqlite' ? { useNullAsDefault: true } : {})
|
|
69
64
|
}
|
|
70
65
|
}
|
|
71
66
|
: {
|
|
72
67
|
[database]: connectionString
|
|
73
|
-
},
|
|
68
|
+
}, toFile('config', 'default.json')), async (ctx) => {
|
|
74
69
|
const dependencies = [];
|
|
75
|
-
const adapter =
|
|
76
|
-
const dbClient =
|
|
70
|
+
const adapter = getDatabaseAdapter(ctx.database);
|
|
71
|
+
const dbClient = getDatabaseClient(ctx.database);
|
|
77
72
|
dependencies.push(`@feathersjs/${adapter}`);
|
|
78
73
|
if (adapter === 'knex') {
|
|
79
74
|
dependencies.push('knex');
|
|
@@ -85,7 +80,6 @@ const generate = (ctx) => (0, pinion_1.generator)(ctx)
|
|
|
85
80
|
dependencies: [...ctx.dependencies, ...dependencies]
|
|
86
81
|
};
|
|
87
82
|
}
|
|
88
|
-
return
|
|
83
|
+
return install(addVersions(dependencies, ctx.dependencyVersions), false, ctx.feathers.packager)(ctx);
|
|
89
84
|
}));
|
|
90
|
-
exports.generate = generate;
|
|
91
85
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connection/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connection/index.ts"],"names":[],"mappings":"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"}
|
package/lib/connection/index.ts
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { dirname } from 'path'
|
|
2
|
+
import { runGenerator, prompt, mergeJSON, toFile, when } from '@featherscloud/pinion'
|
|
2
3
|
import chalk from 'chalk'
|
|
3
4
|
import {
|
|
5
|
+
install,
|
|
4
6
|
FeathersBaseContext,
|
|
5
7
|
DatabaseType,
|
|
6
8
|
getDatabaseAdapter,
|
|
7
9
|
addVersions,
|
|
8
10
|
checkPreconditions,
|
|
9
11
|
initializeBaseContext
|
|
10
|
-
} from '../commons'
|
|
12
|
+
} from '../commons.js'
|
|
13
|
+
|
|
14
|
+
// Set __dirname in es module
|
|
15
|
+
const __dirname = dirname(new URL(import.meta.url).pathname)
|
|
11
16
|
|
|
12
17
|
export interface ConnectionGeneratorContext extends FeathersBaseContext {
|
|
13
18
|
name?: string
|
|
@@ -74,10 +79,11 @@ export const getDatabaseClient = (database: DatabaseType) =>
|
|
|
74
79
|
database === 'other' ? null : DATABASE_CLIENTS[database]
|
|
75
80
|
|
|
76
81
|
export const generate = (ctx: ConnectionGeneratorArguments) =>
|
|
77
|
-
|
|
82
|
+
Promise.resolve(ctx)
|
|
78
83
|
.then(initializeBaseContext())
|
|
79
84
|
.then(checkPreconditions())
|
|
80
|
-
.then(prompt
|
|
85
|
+
.then(prompt(prompts))
|
|
86
|
+
.then((ctx) => ctx as ConnectionGeneratorContext)
|
|
81
87
|
.then(
|
|
82
88
|
when<ConnectionGeneratorContext>(
|
|
83
89
|
(ctx) => ctx.database !== 'other',
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ConnectionGeneratorContext } from '../index';
|
|
1
|
+
import { ConnectionGeneratorContext } from '../index.js';
|
|
2
2
|
export declare const generate: (ctx: ConnectionGeneratorContext) => Promise<ConnectionGeneratorContext>;
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.generate = void 0;
|
|
7
|
-
const pinion_1 = require("@feathershq/pinion");
|
|
8
|
-
const commons_1 = require("../../commons");
|
|
9
|
-
const promises_1 = require("fs/promises");
|
|
10
|
-
const path_1 = __importDefault(require("path"));
|
|
1
|
+
import { toFile, before, mergeJSON } from '@featherscloud/pinion';
|
|
2
|
+
import { injectSource, renderSource } from '../../commons.js';
|
|
3
|
+
import { mkdir } from 'fs/promises';
|
|
4
|
+
import path from 'path';
|
|
11
5
|
const template = ({ database }) => /* ts */ `// For more information about this file see https://dove.feathersjs.com/guides/cli/databases.html
|
|
12
6
|
import knex from 'knex'
|
|
13
7
|
import type { Knex } from 'knex'
|
|
@@ -36,22 +30,21 @@ ${language === 'js' ? 'export default config' : 'module.exports = config'}
|
|
|
36
30
|
`;
|
|
37
31
|
const importTemplate = ({ database }) => `import { ${database} } from './${database}'`;
|
|
38
32
|
const configureTemplate = ({ database }) => `app.configure(${database})`;
|
|
39
|
-
const toAppFile =
|
|
40
|
-
const generate = (ctx) =>
|
|
41
|
-
.then(
|
|
42
|
-
.then(
|
|
43
|
-
.then(
|
|
33
|
+
const toAppFile = toFile(({ lib }) => [lib, 'app']);
|
|
34
|
+
export const generate = (ctx) => Promise.resolve(ctx)
|
|
35
|
+
.then(renderSource(template, toFile(({ lib, database }) => [lib, database])))
|
|
36
|
+
.then(renderSource(knexfile, toFile('knexfile')))
|
|
37
|
+
.then(mergeJSON({
|
|
44
38
|
scripts: {
|
|
45
39
|
migrate: 'knex migrate:latest',
|
|
46
40
|
'migrate:make': 'knex migrate:make',
|
|
47
41
|
test: 'cross-env NODE_ENV=test npm run migrate && npm run mocha'
|
|
48
42
|
}
|
|
49
|
-
},
|
|
50
|
-
.then(
|
|
51
|
-
.then(
|
|
43
|
+
}, toFile('package.json')))
|
|
44
|
+
.then(injectSource(importTemplate, before('import { services } from'), toAppFile))
|
|
45
|
+
.then(injectSource(configureTemplate, before('app.configure(services)'), toAppFile))
|
|
52
46
|
.then(async (ctx) => {
|
|
53
|
-
await
|
|
47
|
+
await mkdir(path.join(ctx.cwd, 'migrations'));
|
|
54
48
|
return ctx;
|
|
55
49
|
});
|
|
56
|
-
exports.generate = generate;
|
|
57
50
|
//# sourceMappingURL=knex.tpl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knex.tpl.js","sourceRoot":"","sources":["../../../src/connection/templates/knex.tpl.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"knex.tpl.js","sourceRoot":"","sources":["../../../src/connection/templates/knex.tpl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEjE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,MAAM,QAAQ,GAAG,CAAC,EAChB,QAAQ,EACmB,EAAE,EAAE,CAAC,QAAQ,CAAC;;;;;;;MAOrC,QAAQ;;;;eAIC,QAAQ;4BACK,QAAQ;;;aAGvB,QAAQ;;CAEpB,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,EAChB,GAAG,EACH,QAAQ,EACR,QAAQ,EACmB,EAAE,EAAE,CAAC,QAAQ,CAAC;yBAClB,GAAG;;;0BAGF,QAAQ;;EAEhC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,yBAAyB;CACxE,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,EAAE,QAAQ,EAA8B,EAAE,EAAE,CAClE,YAAY,QAAQ,cAAc,QAAQ,GAAG,CAAA;AAC/C,MAAM,iBAAiB,GAAG,CAAC,EAAE,QAAQ,EAA8B,EAAE,EAAE,CAAC,iBAAiB,QAAQ,GAAG,CAAA;AAEpG,MAAM,SAAS,GAAG,MAAM,CAA6B,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;AAE/E,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAA+B,EAAE,EAAE,CAC1D,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;KACjB,IAAI,CACH,YAAY,CACV,QAAQ,EACR,MAAM,CAA6B,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAC3E,CACF;KACA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;KAChD,IAAI,CACH,SAAS,CACP;IACE,OAAO,EAAE;QACP,OAAO,EAAE,qBAAqB;QAC9B,cAAc,EAAE,mBAAmB;QACnC,IAAI,EAAE,0DAA0D;KACjE;CACF,EACD,MAAM,CAAC,cAAc,CAAC,CACvB,CACF;KACA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,0BAA0B,CAAC,EAAE,SAAS,CAAC,CAAC;KACjF,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,yBAAyB,CAAC,EAAE,SAAS,CAAC,CAAC;KACnF,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAClB,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAA;IAC7C,OAAO,GAAG,CAAA;AACZ,CAAC,CAAC,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ConnectionGeneratorContext } from '../index'
|
|
3
|
-
import { injectSource, renderSource } from '../../commons'
|
|
1
|
+
import { toFile, before, mergeJSON } from '@featherscloud/pinion'
|
|
2
|
+
import { ConnectionGeneratorContext } from '../index.js'
|
|
3
|
+
import { injectSource, renderSource } from '../../commons.js'
|
|
4
4
|
import { mkdir } from 'fs/promises'
|
|
5
5
|
import path from 'path'
|
|
6
6
|
|
|
@@ -45,7 +45,7 @@ const configureTemplate = ({ database }: ConnectionGeneratorContext) => `app.con
|
|
|
45
45
|
const toAppFile = toFile<ConnectionGeneratorContext>(({ lib }) => [lib, 'app'])
|
|
46
46
|
|
|
47
47
|
export const generate = (ctx: ConnectionGeneratorContext) =>
|
|
48
|
-
|
|
48
|
+
Promise.resolve(ctx)
|
|
49
49
|
.then(
|
|
50
50
|
renderSource(
|
|
51
51
|
template,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ConnectionGeneratorContext } from '../index';
|
|
1
|
+
import { ConnectionGeneratorContext } from '../index.js';
|
|
2
2
|
export declare const generate: (ctx: ConnectionGeneratorContext) => Promise<ConnectionGeneratorContext>;
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.generate = void 0;
|
|
4
|
-
const pinion_1 = require("@feathershq/pinion");
|
|
5
|
-
const commons_1 = require("../../commons");
|
|
1
|
+
import { toFile, before, prepend, append } from '@featherscloud/pinion';
|
|
2
|
+
import { injectSource, renderSource } from '../../commons.js';
|
|
6
3
|
const template = ({ database }) => /* ts */ `// For more information about this file see https://dove.feathersjs.com/guides/cli/databases.html
|
|
7
4
|
import { MongoClient } from 'mongodb'
|
|
8
5
|
import type { Db } from 'mongodb'
|
|
@@ -28,13 +25,12 @@ const keywordTemplate = `dataValidator.addKeyword(keywordObjectId)
|
|
|
28
25
|
queryValidator.addKeyword(keywordObjectId)`;
|
|
29
26
|
const importTemplate = ({ database }) => `import { ${database} } from './${database}'`;
|
|
30
27
|
const configureTemplate = ({ database }) => `app.configure(${database})`;
|
|
31
|
-
const toAppFile =
|
|
32
|
-
const toValidatorFile =
|
|
33
|
-
const generate = (ctx) =>
|
|
34
|
-
.then(
|
|
35
|
-
.then(
|
|
36
|
-
.then(
|
|
37
|
-
.then(
|
|
38
|
-
.then(
|
|
39
|
-
exports.generate = generate;
|
|
28
|
+
const toAppFile = toFile(({ lib }) => [lib, 'app']);
|
|
29
|
+
const toValidatorFile = toFile(({ lib }) => [lib, 'validators']);
|
|
30
|
+
export const generate = (ctx) => Promise.resolve(ctx)
|
|
31
|
+
.then(renderSource(template, toFile(({ lib, database }) => [lib, database])))
|
|
32
|
+
.then(injectSource(importTemplate, before('import { services } from'), toAppFile))
|
|
33
|
+
.then(injectSource(configureTemplate, before('app.configure(services)'), toAppFile))
|
|
34
|
+
.then(injectSource(keywordImport, prepend(), toValidatorFile))
|
|
35
|
+
.then(injectSource(keywordTemplate, append(), toValidatorFile));
|
|
40
36
|
//# sourceMappingURL=mongodb.tpl.js.map
|