@apso/cli 0.0.5 → 0.0.44
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/LICENSE +21 -0
- package/README.md +313 -53
- package/bin/dev +17 -0
- package/bin/dev.cmd +3 -0
- package/bin/run +3 -3
- package/dist/commands/server/new.d.ts +22 -0
- package/dist/commands/server/new.js +100 -0
- package/dist/commands/server/scaffold.d.ts +14 -0
- package/dist/commands/server/scaffold.js +60 -0
- package/dist/index.d.ts +1 -0
- package/{lib → dist}/index.js +3 -2
- package/dist/lib/apsorc-parser.d.ts +26 -0
- package/dist/lib/apsorc-parser.js +65 -0
- package/dist/lib/base-command.d.ts +4 -0
- package/dist/lib/base-command.js +24 -0
- package/dist/lib/controller.d.ts +2 -0
- package/dist/lib/controller.js +36 -0
- package/dist/lib/dto.d.ts +7 -0
- package/dist/lib/dto.js +49 -0
- package/dist/lib/entity.d.ts +2 -0
- package/dist/lib/entity.js +43 -0
- package/dist/lib/enums.d.ts +6 -0
- package/dist/lib/enums.js +31 -0
- package/dist/lib/gql-dto.d.ts +3 -0
- package/dist/lib/gql-dto.js +43 -0
- package/dist/lib/index-module.d.ts +2 -0
- package/dist/lib/index-module.js +18 -0
- package/dist/lib/index.d.ts +10 -0
- package/dist/lib/index.js +21 -0
- package/dist/lib/module.d.ts +1 -0
- package/dist/lib/module.js +28 -0
- package/dist/lib/service.d.ts +1 -0
- package/dist/lib/service.js +24 -0
- package/dist/lib/templates/entities/entity-col-array.eta +12 -0
- package/dist/lib/templates/entities/entity-col-bigint.eta +11 -0
- package/dist/lib/templates/entities/entity-col-bigserial.eta +12 -0
- package/dist/lib/templates/entities/entity-col-boolean.eta +11 -0
- package/dist/lib/templates/entities/entity-col-bytea.eta +11 -0
- package/dist/lib/templates/entities/entity-col-char.eta +15 -0
- package/dist/lib/templates/entities/entity-col-date.eta +8 -0
- package/dist/lib/templates/entities/entity-col-decimal.eta +11 -0
- package/dist/lib/templates/entities/entity-col-double.eta +11 -0
- package/dist/lib/templates/entities/entity-col-enum.eta +12 -0
- package/dist/lib/templates/entities/entity-col-float.eta +7 -0
- package/dist/lib/templates/entities/entity-col-inet.eta +11 -0
- package/dist/lib/templates/entities/entity-col-int4range.eta +34 -0
- package/dist/lib/templates/entities/entity-col-integer.eta +11 -0
- package/dist/lib/templates/entities/entity-col-interval.eta +11 -0
- package/dist/lib/templates/entities/entity-col-json-plain.eta +8 -0
- package/dist/lib/templates/entities/entity-col-json.eta +5 -0
- package/dist/lib/templates/entities/entity-col-jsonb.eta +5 -0
- package/dist/lib/templates/entities/entity-col-money.eta +11 -0
- package/dist/lib/templates/entities/entity-col-numeric.eta +11 -0
- package/dist/lib/templates/entities/entity-col-point.eta +25 -0
- package/dist/lib/templates/entities/entity-col-real.eta +11 -0
- package/dist/lib/templates/entities/entity-col-serial.eta +12 -0
- package/dist/lib/templates/entities/entity-col-smallint.eta +11 -0
- package/dist/lib/templates/entities/entity-col-smallserial.eta +12 -0
- package/dist/lib/templates/entities/entity-col-string.eta +23 -0
- package/dist/lib/templates/entities/entity-col-text.eta +23 -0
- package/dist/lib/templates/entities/entity-col-time.eta +11 -0
- package/dist/lib/templates/entities/entity-col-timestamp.eta +4 -0
- package/dist/lib/templates/entities/entity-col-timestamptz.eta +4 -0
- package/dist/lib/templates/entities/entity-col-timetz.eta +11 -0
- package/dist/lib/templates/entities/entity-col-tsvector.eta +11 -0
- package/dist/lib/templates/entities/entity-col-uuid.eta +11 -0
- package/dist/lib/templates/entities/entity-col-varchar.eta +18 -0
- package/dist/lib/templates/entities/entity-col-xml.eta +11 -0
- package/dist/lib/templates/entities/entity.eta +116 -0
- package/dist/lib/templates/graphql/dto/dto-col-array.eta +4 -0
- package/dist/lib/templates/graphql/dto/dto-col-boolean.eta +6 -0
- package/dist/lib/templates/graphql/dto/dto-col-date.eta +4 -0
- package/dist/lib/templates/graphql/dto/dto-col-enum.eta +5 -0
- package/dist/lib/templates/graphql/dto/dto-col-float.eta +4 -0
- package/dist/lib/templates/graphql/dto/dto-col-integer.eta +4 -0
- package/dist/lib/templates/graphql/dto/dto-col-json-plain.eta +5 -0
- package/dist/lib/templates/graphql/dto/dto-col-json.eta +5 -0
- package/dist/lib/templates/graphql/dto/dto-col-text.eta +11 -0
- package/dist/lib/templates/graphql/dto/dto-col-timestamp.eta +3 -0
- package/dist/lib/templates/graphql/dto/dto-col-timestamptz.eta +3 -0
- package/dist/lib/templates/graphql/enums-graphql.eta +12 -0
- package/dist/lib/templates/graphql/gql-dto-graphql.eta +67 -0
- package/dist/lib/templates/graphql/index-module-graphql.eta +26 -0
- package/dist/lib/templates/graphql/module-graphql.eta +19 -0
- package/dist/lib/templates/header.eta +3 -0
- package/dist/lib/templates/rest/controller-rest-spec.eta +77 -0
- package/dist/lib/templates/rest/controller-rest.eta +171 -0
- package/dist/lib/templates/rest/dto-rest.eta +48 -0
- package/dist/lib/templates/rest/enums-rest.eta +7 -0
- package/dist/lib/templates/rest/index-module-rest.eta +11 -0
- package/dist/lib/templates/rest/module-rest.eta +16 -0
- package/dist/lib/templates/rest/ormconfig.eta +9 -0
- package/dist/lib/templates/rest/service-rest.eta +25 -0
- package/dist/lib/types/constraints.d.ts +4 -0
- package/dist/lib/types/constraints.js +2 -0
- package/dist/lib/types/entity.d.ts +13 -0
- package/dist/lib/types/entity.js +2 -0
- package/dist/lib/types/field.d.ts +16 -0
- package/dist/lib/types/field.js +2 -0
- package/dist/lib/types/index.d.ts +5 -0
- package/dist/lib/types/index.js +2 -0
- package/dist/lib/types/indices.d.ts +4 -0
- package/dist/lib/types/indices.js +2 -0
- package/dist/lib/types/json.d.ts +3 -0
- package/dist/lib/types/json.js +2 -0
- package/dist/lib/types/relationship.d.ts +43 -0
- package/dist/lib/types/relationship.js +2 -0
- package/dist/lib/utils/casing.d.ts +2 -0
- package/dist/lib/utils/casing.js +16 -0
- package/dist/lib/utils/field.d.ts +6 -0
- package/dist/lib/utils/field.js +65 -0
- package/dist/lib/utils/file-system.d.ts +2 -0
- package/dist/lib/utils/file-system.js +52 -0
- package/dist/lib/utils/relationships/index.d.ts +2 -0
- package/dist/lib/utils/relationships/index.js +11 -0
- package/dist/lib/utils/relationships/parse-v1.d.ts +4 -0
- package/dist/lib/utils/relationships/parse-v1.js +86 -0
- package/dist/lib/utils/relationships/parse.d.ts +11 -0
- package/dist/lib/utils/relationships/parse.js +192 -0
- package/dist/tests/templates/entities/types/array-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/array-template.spec.js +82 -0
- package/dist/tests/templates/entities/types/bigint-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/bigint-template.spec.js +82 -0
- package/dist/tests/templates/entities/types/boolean-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/boolean-template.spec.js +77 -0
- package/dist/tests/templates/entities/types/bytea-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/bytea-template.spec.js +68 -0
- package/dist/tests/templates/entities/types/char-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/char-template.spec.js +68 -0
- package/dist/tests/templates/entities/types/date-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/date-template.spec.js +56 -0
- package/dist/tests/templates/entities/types/decimal-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/decimal-template.spec.js +86 -0
- package/dist/tests/templates/entities/types/double-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/double-template.spec.js +67 -0
- package/dist/tests/templates/entities/types/enum-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/enum-template.spec.js +85 -0
- package/dist/tests/templates/entities/types/float-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/float-template.spec.js +67 -0
- package/dist/tests/templates/entities/types/inet-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/inet-template.spec.js +69 -0
- package/dist/tests/templates/entities/types/int4range-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/int4range-template.spec.js +60 -0
- package/dist/tests/templates/entities/types/integer-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/integer-template.spec.js +79 -0
- package/dist/tests/templates/entities/types/interval-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/interval-template.spec.js +68 -0
- package/dist/tests/templates/entities/types/json-plain-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/json-plain-template.spec.js +54 -0
- package/dist/tests/templates/entities/types/json-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/json-template.spec.js +40 -0
- package/dist/tests/templates/entities/types/jsonb-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/jsonb-template.spec.js +40 -0
- package/dist/tests/templates/entities/types/money-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/money-template.spec.js +68 -0
- package/dist/tests/templates/entities/types/numeric-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/numeric-template.spec.js +84 -0
- package/dist/tests/templates/entities/types/point-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/point-template.spec.js +58 -0
- package/dist/tests/templates/entities/types/real-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/real-template.spec.js +67 -0
- package/dist/tests/templates/entities/types/serial-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/serial-template.spec.js +113 -0
- package/dist/tests/templates/entities/types/smallint-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/smallint-template.spec.js +82 -0
- package/dist/tests/templates/entities/types/string-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/string-template.spec.js +111 -0
- package/dist/tests/templates/entities/types/text-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/text-template.spec.js +70 -0
- package/dist/tests/templates/entities/types/time-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/time-template.spec.js +68 -0
- package/dist/tests/templates/entities/types/timestamp-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/timestamp-template.spec.js +74 -0
- package/dist/tests/templates/entities/types/timetz-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/timetz-template.spec.js +68 -0
- package/dist/tests/templates/entities/types/tsvector-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/tsvector-template.spec.js +55 -0
- package/dist/tests/templates/entities/types/uuid-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/uuid-template.spec.js +82 -0
- package/dist/tests/templates/entities/types/varchar-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/varchar-template.spec.js +102 -0
- package/dist/tests/templates/entities/types/xml-template.spec.d.ts +1 -0
- package/dist/tests/templates/entities/types/xml-template.spec.js +55 -0
- package/dist/tests/templates/entities/utils/template-test-utils.d.ts +31 -0
- package/dist/tests/templates/entities/utils/template-test-utils.js +50 -0
- package/oclif.manifest.json +60 -1
- package/package.json +84 -55
- package/lib/commands/new.d.ts +0 -22
- package/lib/commands/new.js +0 -198
- package/lib/commands/scaffold.d.ts +0 -18
- package/lib/commands/scaffold.js +0 -106
- package/lib/index.d.ts +0 -1
- package/lib/lib/scaffold.d.ts +0 -30
- package/lib/lib/scaffold.js +0 -566
package/lib/commands/new.js
DELETED
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/* eslint-disable no-console */
|
|
4
|
-
/* eslint-disable no-warning-comments */
|
|
5
|
-
/* eslint-disable prefer-promise-reject-errors */
|
|
6
|
-
const command_1 = require("@oclif/command");
|
|
7
|
-
const child_process_1 = require("child_process");
|
|
8
|
-
const path = require("path");
|
|
9
|
-
const fs = require("fs-extra");
|
|
10
|
-
const os = require("os");
|
|
11
|
-
const chalk = require("chalk");
|
|
12
|
-
const validateProjectName = require("validate-npm-package-name");
|
|
13
|
-
let Init = /** @class */ (() => {
|
|
14
|
-
class Init extends command_1.Command {
|
|
15
|
-
async checkAppName(appName) {
|
|
16
|
-
const validationResult = validateProjectName(appName);
|
|
17
|
-
if (!validationResult.validForNewPackages) {
|
|
18
|
-
this.log(chalk.red(`Cannot create a project named ${chalk.green(`"${appName}"`)} because of npm naming restrictions:\n`));
|
|
19
|
-
[
|
|
20
|
-
...(validationResult.errors || []),
|
|
21
|
-
...(validationResult.warnings || []),
|
|
22
|
-
].forEach(error => {
|
|
23
|
-
this.log(chalk.red(` * ${error}`));
|
|
24
|
-
});
|
|
25
|
-
this.error(chalk.red('\nPlease choose a different project name.'));
|
|
26
|
-
}
|
|
27
|
-
// TODO: there should be a single place that holds the dependencies
|
|
28
|
-
const dependencies = ['react', 'react-dom', 'react-scripts'].sort();
|
|
29
|
-
if (dependencies.includes(appName)) {
|
|
30
|
-
this.error(chalk.red(`Cannot create a project named ${chalk.green(`"${appName}"`)} because a dependency with the same name exists.\n` +
|
|
31
|
-
'Due to the way npm works, the following names are not allowed:\n\n') +
|
|
32
|
-
chalk.cyan(dependencies.map(depName => ` ${depName}`).join('\n')) +
|
|
33
|
-
chalk.red('\n\nPlease choose a different project name.'));
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
async install(root, dependencies) {
|
|
37
|
-
return new Promise((resolve, reject) => {
|
|
38
|
-
const command = 'yarnpkg';
|
|
39
|
-
const args = ['add', '--exact'].concat(dependencies);
|
|
40
|
-
// Explicitly set cwd() to work around issues like
|
|
41
|
-
// https://github.com/facebook/create-react-app/issues/3326.
|
|
42
|
-
// Unfortunately we can only do this for Yarn because npm support for
|
|
43
|
-
// equivalent --prefix flag doesn't help with this issue.
|
|
44
|
-
// This is why for npm, we run checkThatNpmCanReadCwd() early instead.
|
|
45
|
-
args.push('--cwd');
|
|
46
|
-
args.push(root);
|
|
47
|
-
// args.push('--verbose')
|
|
48
|
-
args.push('--slient');
|
|
49
|
-
const child = child_process_1.spawn(command, args, { stdio: 'inherit' });
|
|
50
|
-
child.on('close', code => {
|
|
51
|
-
if (code !== 0) {
|
|
52
|
-
reject({
|
|
53
|
-
command: `${command} ${args.join(' ')}`,
|
|
54
|
-
});
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
resolve();
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
async installModules(root) {
|
|
62
|
-
return new Promise((resolve, reject) => {
|
|
63
|
-
const command = 'yarn';
|
|
64
|
-
const args = ['install'];
|
|
65
|
-
// Explicitly set cwd() to work around issues like
|
|
66
|
-
// https://github.com/facebook/create-react-app/issues/3326.
|
|
67
|
-
// Unfortunately we can only do this for Yarn because npm support for
|
|
68
|
-
// equivalent --prefix flag doesn't help with this issue.
|
|
69
|
-
// This is why for npm, we run checkThatNpmCanReadCwd() early instead.
|
|
70
|
-
args.push('--cwd');
|
|
71
|
-
args.push(root);
|
|
72
|
-
// args.push('--verbose')
|
|
73
|
-
args.push('--slient');
|
|
74
|
-
const child = child_process_1.spawn(command, args, { stdio: 'inherit' });
|
|
75
|
-
child.on('close', code => {
|
|
76
|
-
if (code !== 0) {
|
|
77
|
-
reject({
|
|
78
|
-
command: `${command} ${args.join(' ')}`,
|
|
79
|
-
});
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
resolve();
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
async startApp(root) {
|
|
87
|
-
return new Promise((resolve, reject) => {
|
|
88
|
-
const command = 'yarn';
|
|
89
|
-
const args = ['start'];
|
|
90
|
-
// Explicitly set cwd() to work around issues like
|
|
91
|
-
// https://github.com/facebook/create-react-app/issues/3326.
|
|
92
|
-
// Unfortunately we can only do this for Yarn because npm support for
|
|
93
|
-
// equivalent --prefix flag doesn't help with this issue.
|
|
94
|
-
// This is why for npm, we run checkThatNpmCanReadCwd() early instead.
|
|
95
|
-
// args.push('--cwd')
|
|
96
|
-
// args.push(root)
|
|
97
|
-
// args.push('--verbose')
|
|
98
|
-
const child = child_process_1.spawn(command, args, { stdio: 'inherit', cwd: root });
|
|
99
|
-
child.on('close', code => {
|
|
100
|
-
if (code !== 0) {
|
|
101
|
-
reject({
|
|
102
|
-
command: `${command} ${args.join(' ')}`,
|
|
103
|
-
});
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
resolve();
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
async initFromTemplate(name, template) {
|
|
111
|
-
const root = path.resolve(name);
|
|
112
|
-
const appName = path.basename(root);
|
|
113
|
-
this.checkAppName(appName);
|
|
114
|
-
fs.ensureDirSync(name);
|
|
115
|
-
// TODO: Add functionality to verify the path is ok to create app in.
|
|
116
|
-
this.log(`Creating a new Apso app in ${chalk.green(root)}.`);
|
|
117
|
-
const packageJson = {
|
|
118
|
-
name: appName,
|
|
119
|
-
version: '0.1.0',
|
|
120
|
-
private: true,
|
|
121
|
-
};
|
|
122
|
-
fs.writeFileSync(path.join(root, 'package.json'), JSON.stringify(packageJson, null, 2) + os.EOL);
|
|
123
|
-
const dependencies = [template];
|
|
124
|
-
this.install(root, dependencies)
|
|
125
|
-
.then(() => {
|
|
126
|
-
const templateDir = path.join(root, 'node_modules', template);
|
|
127
|
-
// const templateDir = template.replace('file://', '')
|
|
128
|
-
fs.copySync(templateDir, root);
|
|
129
|
-
return this.installModules(root);
|
|
130
|
-
})
|
|
131
|
-
.then(() => this.startApp(root))
|
|
132
|
-
.catch(error => console.log(error));
|
|
133
|
-
}
|
|
134
|
-
async run() {
|
|
135
|
-
const { args, flags } = this.parse(Init);
|
|
136
|
-
const web = flags.web;
|
|
137
|
-
const server = flags.server;
|
|
138
|
-
const serverless = flags.serverless;
|
|
139
|
-
if (!web && !server && !serverless) {
|
|
140
|
-
this.error('must specify `web` or `server` or `serverless`');
|
|
141
|
-
}
|
|
142
|
-
const name = flags.name;
|
|
143
|
-
if (typeof (name) === 'undefined') {
|
|
144
|
-
this.error('`name` must be set (e.g. WoofyApp)');
|
|
145
|
-
}
|
|
146
|
-
this.log(`initilizing ${name}...`);
|
|
147
|
-
if (args.file && flags.force) {
|
|
148
|
-
this.log(`you input --force and --file: ${args.file}`);
|
|
149
|
-
}
|
|
150
|
-
if (web) {
|
|
151
|
-
return this.initFromTemplate(name, '@apso/client-template');
|
|
152
|
-
}
|
|
153
|
-
if (server) {
|
|
154
|
-
return this.initFromTemplate(name, '@apso/server-template');
|
|
155
|
-
}
|
|
156
|
-
if (serverless) {
|
|
157
|
-
return this.initFromTemplate(name, '@apso/lambda-template');
|
|
158
|
-
}
|
|
159
|
-
this.error('Should never get here.');
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
Init.description = 'Initialize your server or client project';
|
|
163
|
-
Init.examples = [
|
|
164
|
-
`$ apso new --web
|
|
165
|
-
hello world from ./src/hello.ts!
|
|
166
|
-
`,
|
|
167
|
-
];
|
|
168
|
-
Init.flags = {
|
|
169
|
-
help: command_1.flags.help({ char: 'h' }),
|
|
170
|
-
// flag with a value (-n, --name=VALUE)
|
|
171
|
-
name: command_1.flags.string({
|
|
172
|
-
char: 'n',
|
|
173
|
-
description: 'name of application',
|
|
174
|
-
}),
|
|
175
|
-
web: command_1.flags.boolean({
|
|
176
|
-
char: 'w',
|
|
177
|
-
description: 'initialize web application',
|
|
178
|
-
}),
|
|
179
|
-
server: command_1.flags.boolean({
|
|
180
|
-
char: 's',
|
|
181
|
-
description: 'initialize server application',
|
|
182
|
-
}),
|
|
183
|
-
serverless: command_1.flags.boolean({
|
|
184
|
-
char: 'S',
|
|
185
|
-
description: 'initialize serverless application',
|
|
186
|
-
}),
|
|
187
|
-
// flag with no value (-f, --force)
|
|
188
|
-
force: command_1.flags.boolean({ char: 'f' }),
|
|
189
|
-
};
|
|
190
|
-
Init.args = [
|
|
191
|
-
{ name: 'web' },
|
|
192
|
-
{ name: 'server' },
|
|
193
|
-
{ name: 'serverless' },
|
|
194
|
-
{ name: 'name' },
|
|
195
|
-
];
|
|
196
|
-
return Init;
|
|
197
|
-
})();
|
|
198
|
-
exports.default = Init;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Command, flags } from '@oclif/command';
|
|
2
|
-
import { Entity } from '../lib/scaffold';
|
|
3
|
-
export default class Init extends Command {
|
|
4
|
-
static description: string;
|
|
5
|
-
static examples: string[];
|
|
6
|
-
static flags: {
|
|
7
|
-
help: import("@oclif/parser/lib/flags").IBooleanFlag<void>;
|
|
8
|
-
entity: flags.IOptionFlag<string | undefined>;
|
|
9
|
-
web: import("@oclif/parser/lib/flags").IBooleanFlag<boolean>;
|
|
10
|
-
server: import("@oclif/parser/lib/flags").IBooleanFlag<boolean>;
|
|
11
|
-
};
|
|
12
|
-
static args: {
|
|
13
|
-
name: string;
|
|
14
|
-
}[];
|
|
15
|
-
scaffoldServer(entity: Entity): Promise<void>;
|
|
16
|
-
scaffoldClient(entity: Entity): Promise<void>;
|
|
17
|
-
run(): Promise<void>;
|
|
18
|
-
}
|
package/lib/commands/scaffold.js
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/* eslint-disable array-callback-return */
|
|
4
|
-
/* eslint-disable no-console */
|
|
5
|
-
/* eslint-disable no-warning-comments */
|
|
6
|
-
/* eslint-disable prefer-promise-reject-errors */
|
|
7
|
-
const command_1 = require("@oclif/command");
|
|
8
|
-
const scaffold_1 = require("../lib/scaffold");
|
|
9
|
-
const path = require("path");
|
|
10
|
-
const rc = require("rc");
|
|
11
|
-
let Init = /** @class */ (() => {
|
|
12
|
-
class Init extends command_1.Command {
|
|
13
|
-
async scaffoldServer(entity) {
|
|
14
|
-
const dir = path.join(process.cwd(), 'src');
|
|
15
|
-
const entityName = entity.name;
|
|
16
|
-
this.log('Creating Entity...');
|
|
17
|
-
scaffold_1.createEntity(dir, entity);
|
|
18
|
-
this.log('Creating Model Repository...');
|
|
19
|
-
scaffold_1.createRepository(dir, entityName);
|
|
20
|
-
this.log('Creating Model GraphQL Resolver...');
|
|
21
|
-
scaffold_1.createResolver(dir, entity);
|
|
22
|
-
this.log('Creating Service...');
|
|
23
|
-
scaffold_1.createService(dir, entityName);
|
|
24
|
-
this.log('Creating Controller...');
|
|
25
|
-
scaffold_1.createController(dir, entityName);
|
|
26
|
-
this.log('Creating Routes...');
|
|
27
|
-
scaffold_1.createRoutes(dir, entityName);
|
|
28
|
-
}
|
|
29
|
-
async scaffoldClient(entity) {
|
|
30
|
-
// const entityName = entity.name
|
|
31
|
-
const baseDir = path.join(process.cwd(), 'src');
|
|
32
|
-
// const dir = path.join(baseDir, 'modules', entityName)
|
|
33
|
-
// if (!fs.existsSync(dir)) {
|
|
34
|
-
// fs.mkdirSync(dir)
|
|
35
|
-
// }
|
|
36
|
-
this.log('Creating GraphQL Model...');
|
|
37
|
-
scaffold_1.createGraphQLActions(baseDir, entity);
|
|
38
|
-
// createModuleModel(dir, entityName)
|
|
39
|
-
// this.log('Creating Reducer...')
|
|
40
|
-
// createModuleReducer(dir, entityName)
|
|
41
|
-
// this.log('Creating Action...')
|
|
42
|
-
// createModuleAction(dir, entityName)
|
|
43
|
-
// this.log('Creating Operations...')
|
|
44
|
-
// createModuleOpertions(dir, entityName)
|
|
45
|
-
// this.log('Creating Service...')
|
|
46
|
-
// createModuleService(dir, entityName)
|
|
47
|
-
// this.log('Creating Component...')
|
|
48
|
-
// createModuleComponent(dir, entityName)
|
|
49
|
-
// this.log('Creating Module...')
|
|
50
|
-
// createModuleExport(dir, entityName)
|
|
51
|
-
}
|
|
52
|
-
async run() {
|
|
53
|
-
const { flags } = this.parse(Init);
|
|
54
|
-
const web = flags.web;
|
|
55
|
-
const server = flags.server;
|
|
56
|
-
if (!web && !server) {
|
|
57
|
-
this.error('must specify `web` or `server`');
|
|
58
|
-
}
|
|
59
|
-
let models = [];
|
|
60
|
-
if (typeof (flags.entity) === 'undefined') {
|
|
61
|
-
const apsoConfig = rc('apso');
|
|
62
|
-
this.log(JSON.stringify(apsoConfig));
|
|
63
|
-
models = apsoConfig.entities;
|
|
64
|
-
if (!apsoConfig) {
|
|
65
|
-
this.error('`entity` must be set (e.g. User) or define in .apsorc file');
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
models = [{ name: flags.entity }];
|
|
70
|
-
}
|
|
71
|
-
models.map(entity => {
|
|
72
|
-
this.log(`Building entity... ${entity.name}`);
|
|
73
|
-
const scaffoldModel = web ? this.scaffoldClient.bind(this) : this.scaffoldServer.bind(this);
|
|
74
|
-
scaffoldModel(entity);
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
Init.description = 'Create new models for Server or Client';
|
|
79
|
-
Init.examples = [
|
|
80
|
-
`$ apso scaffold
|
|
81
|
-
hello world from ./src/hello.ts!
|
|
82
|
-
`,
|
|
83
|
-
];
|
|
84
|
-
Init.flags = {
|
|
85
|
-
help: command_1.flags.help({ char: 'h' }),
|
|
86
|
-
entity: command_1.flags.string({
|
|
87
|
-
char: 'm',
|
|
88
|
-
description: 'model name',
|
|
89
|
-
}),
|
|
90
|
-
web: command_1.flags.boolean({
|
|
91
|
-
char: 'w',
|
|
92
|
-
description: 'initialize web application',
|
|
93
|
-
}),
|
|
94
|
-
server: command_1.flags.boolean({
|
|
95
|
-
char: 's',
|
|
96
|
-
description: 'initialize server application',
|
|
97
|
-
}),
|
|
98
|
-
};
|
|
99
|
-
Init.args = [
|
|
100
|
-
{ name: 'web' },
|
|
101
|
-
{ name: 'server' },
|
|
102
|
-
{ name: 'entity' },
|
|
103
|
-
];
|
|
104
|
-
return Init;
|
|
105
|
-
})();
|
|
106
|
-
exports.default = Init;
|
package/lib/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { run } from '@oclif/command';
|
package/lib/lib/scaffold.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
interface Field {
|
|
2
|
-
name: string;
|
|
3
|
-
type: 'text' | 'boolean' | 'array' | 'enum';
|
|
4
|
-
values?: string[];
|
|
5
|
-
nullable?: boolean;
|
|
6
|
-
}
|
|
7
|
-
interface Association {
|
|
8
|
-
name: string;
|
|
9
|
-
type: 'OneToMany' | 'ManyToOne' | 'ManyToMany';
|
|
10
|
-
}
|
|
11
|
-
export interface Entity {
|
|
12
|
-
name: string;
|
|
13
|
-
fields?: Field[];
|
|
14
|
-
associations?: Association[];
|
|
15
|
-
}
|
|
16
|
-
export declare const createController: (apiBaseDir: string, entityName: string) => void;
|
|
17
|
-
export declare const createRoutes: (apiBaseDir: string, entityName: string) => void;
|
|
18
|
-
export declare const createService: (apiBaseDir: string, entityName: string) => void;
|
|
19
|
-
export declare const createEntity: (apiBaseDir: string, entity: Entity) => void;
|
|
20
|
-
export declare const createRepository: (apiBaseDir: string, entityName: string) => void;
|
|
21
|
-
export declare const createResolver: (apiBaseDir: string, entity: Entity) => void;
|
|
22
|
-
export declare const createGraphQLActions: (appBaseDir: string, entity: Entity) => void;
|
|
23
|
-
export declare const createModuleModel: (appBaseDir: string, entityName: string) => void;
|
|
24
|
-
export declare const createModuleAction: (appBaseDir: string, entityName: string) => void;
|
|
25
|
-
export declare const createModuleReducer: (appBaseDir: string, entityName: string) => void;
|
|
26
|
-
export declare const createModuleOpertions: (appBaseDir: string, entityName: string) => void;
|
|
27
|
-
export declare const createModuleService: (appBaseDir: string, entityName: string) => void;
|
|
28
|
-
export declare const createModuleComponent: (appBaseDir: string, entityName: string) => void;
|
|
29
|
-
export declare const createModuleExport: (appBaseDir: string, entityName: string) => void;
|
|
30
|
-
export {};
|