diff --git a/README.md b/README.md
index 3ac2c6c5..dac69834 100644
--- a/README.md
+++ b/README.md
@@ -4,9 +4,13 @@
[](https://badge.fury.io/js/%40api-platform%2Fclient-generator)
API Platform Client Generator is a generator to scaffold app with Create-Retrieve-Update-Delete features for any API exposing a [Hydra](http://www.hydra-cg.com/spec/latest/core/) or [OpenAPI](https://www.openapis.org/) documentation for:
+ * Quasar Framework
+ * Next.js
* React/Redux
* React Native
+ * TypeScript Interfaces
* Vue.js
+ * Vuetify.js
Works especially well with APIs built with the [API Platform](https://api-platform.com) framework.
diff --git a/package.json b/package.json
index 405cca81..5dddfdef 100644
--- a/package.json
+++ b/package.json
@@ -53,9 +53,9 @@
"eslint-check": "eslint --print-config .eslintrc.js | eslint-config-prettier-check",
"build": "babel src -d lib --ignore '*.test.js'",
"watch": "babel --watch src -d lib --ignore '*.test.js'",
- "test-gen": "rm -rf ./tmp && yarn build && ./lib/index.js https://demo.api-platform.com ./tmp/react && ./lib/index.js https://demo.api-platform.com ./tmp/react-native -g react-native && ./lib/index.js https://demo.api-platform.com ./tmp/vue -g vue && ./lib/index.js https://demo.api-platform.com ./tmp/admin-on-rest -g admin-on-rest",
+ "test-gen": "rm -rf ./tmp && yarn build && ./lib/index.js https://demo.api-platform.com ./tmp/react && ./lib/index.js https://demo.api-platform.com ./tmp/react-native -g react-native && ./lib/index.js https://demo.api-platform.com ./tmp/vue -g vue",
"test-gen-cs": "./node_modules/.bin/prettier --single-quote -l \"./tmp/react/**/*.{js,jsx,ts,tsx,json,css,scss,md}\"",
- "test-gen-swagger": "rm -rf ./tmp && yarn build && ./lib/index.js https://demo.api-platform.com/docs.json ./tmp/react -f swagger && ./lib/index.js https://demo.api-platform.com/docs.json ./tmp/react-native -g react-native -f swagger && ./lib/index.js https://demo.api-platform.com/docs.json ./tmp/vue -g vue -f swagger && ./lib/index.js https://demo.api-platform.com/docs.json ./tmp/admin-on-rest -g admin-on-rest -f swagger",
+ "test-gen-swagger": "rm -rf ./tmp && yarn build && ./lib/index.js https://demo.api-platform.com/docs.json ./tmp/react -f swagger && ./lib/index.js https://demo.api-platform.com/docs.json ./tmp/react-native -g react-native -f swagger && ./lib/index.js https://demo.api-platform.com/docs.json ./tmp/vue -g vue -f swagger",
"test-gen-env": "rm -rf ./tmp && yarn build && API_PLATFORM_CLIENT_GENERATOR_ENTRYPOINT=https://demo.api-platform.com API_PLATFORM_CLIENT_GENERATOR_OUTPUT=./tmp ./lib/index.js"
},
"husky": {
diff --git a/src/generators.js b/src/generators.js
index 59aa934c..ee4c959c 100644
--- a/src/generators.js
+++ b/src/generators.js
@@ -1,4 +1,3 @@
-import AdminOnRestGenerator from "./generators/AdminOnRestGenerator";
import NextGenerator from "./generators/NextGenerator";
import NuxtGenerator from "./generators/NuxtGenerator";
import ReactGenerator from "./generators/ReactGenerator";
@@ -15,8 +14,6 @@ function wrap(cl) {
export default function generators(generator = "react") {
switch (generator) {
- case "admin-on-rest":
- return wrap(AdminOnRestGenerator);
case "next":
return wrap(NextGenerator);
case "nuxt":
diff --git a/src/generators/AdminOnRestGenerator.js b/src/generators/AdminOnRestGenerator.js
deleted file mode 100644
index d3fec130..00000000
--- a/src/generators/AdminOnRestGenerator.js
+++ /dev/null
@@ -1,69 +0,0 @@
-import fs from "fs";
-import BaseGenerator from "./BaseGenerator";
-import handlebars from "handlebars";
-import hbh_comparison from "handlebars-helpers/lib/comparison";
-
-export default class extends BaseGenerator {
- constructor(params) {
- super(params);
-
- this.registerTemplates(`admin-on-rest/`, [
- "components/foo.js",
- "config/foo.js",
- "resources/foo.js",
- "resource-import.js"
- ]);
-
- handlebars.registerHelper("compare", hbh_comparison.compare);
- }
-
- help(resource) {
- console.log(
- 'Code for the "%s" resource type has been generated!',
- resource.title
- );
- }
-
- appendFile(template, dest, context = {}) {
- fs.appendFileSync(dest, this.templates[template](context));
- }
-
- generate(api, resource, dir) {
- const lc = resource.title.toLowerCase();
- const titleUcFirst =
- resource.title.charAt(0).toUpperCase() + resource.title.slice(1);
-
- const context = {
- title: resource.title,
- name: resource.name,
- lc,
- uc: resource.title.toUpperCase(),
- fields: resource.readableFields,
- formFields: this.buildFields(resource.writableFields),
- hydraPrefix: this.hydraPrefix,
- titleUcFirst
- };
-
- // Create directories
- // These directories may already exist
- for (let dir of [
- `${dir}/config`,
- `${dir}/resources`,
- `${dir}/components/`
- ]) {
- this.createDir(dir, false);
- }
-
- for (let pattern of [
- "components/%s.js",
- "config/%s.js",
- "resources/%s.js"
- ]) {
- this.createFileFromPattern(pattern, dir, lc, context);
- }
-
- this.appendFile("resource-import.js", `${dir}/resource-import.js`, context);
-
- this.createEntrypoint(api.entrypoint, `${dir}/config/entrypoint.js`);
- }
-}
diff --git a/src/generators/AdminOnRestGenerator.test.js b/src/generators/AdminOnRestGenerator.test.js
deleted file mode 100644
index d53ac5a6..00000000
--- a/src/generators/AdminOnRestGenerator.test.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { Api, Resource, Field } from "@api-platform/api-doc-parser/lib";
-import fs from "fs";
-import tmp from "tmp";
-import AdminOnRestGenerator from "./AdminOnRestGenerator";
-
-test("Generate a Admin On Rest app", () => {
- const generator = new AdminOnRestGenerator({
- hydraPrefix: "hydra:",
- templateDirectory: `${__dirname}/../../templates`
- });
- const tmpobj = tmp.dirSync({ unsafeCleanup: true });
-
- const fields = [
- new Field("bar", {
- id: "http://schema.org/url",
- range: "http://www.w3.org/2001/XMLSchema#string",
- reference: null,
- required: true,
- description: "An URL"
- })
- ];
- const resource = new Resource("abc", "http://example.com/foos", {
- id: "abc",
- title: "abc",
- readableFields: fields,
- writableFields: fields
- });
- const api = new Api("http://example.com", {
- entrypoint: "http://example.com:8080",
- title: "My API",
- resources: [resource]
- });
- generator.generate(api, resource, tmpobj.name);
-
- [
- "/config/entrypoint.js",
- "/resources/abc.js",
- "/resource-import.js"
- ].forEach(file => expect(fs.existsSync(tmpobj.name + file)).toBe(true));
-
- ["/components/abc.js", "/config/abc.js"].forEach(file => {
- expect(fs.existsSync(tmpobj.name + file)).toBe(true);
- expect(fs.readFileSync(tmpobj.name + file, "utf8")).toMatch(/bar/);
- });
-
- tmpobj.removeCallback();
-});
diff --git a/src/index.js b/src/index.js
index b8e1a761..7eb74656 100755
--- a/src/index.js
+++ b/src/index.js
@@ -28,7 +28,7 @@ program
.option("--bearer [bearer]", "Token for bearer auth (Hydra only)")
.option(
"-g, --generator [generator]",
- 'The generator to use, one of "react", "react-native", "vue", "admin-on-rest", "typescript", "next", "nuxt"',
+ 'The generator to use, one of "next", "nuxt", "quasar", "react", "react-native", "typescript", "vue", "vuetify"',
"react"
)
.option(
diff --git a/templates/admin-on-rest/components/foo.js b/templates/admin-on-rest/components/foo.js
deleted file mode 100644
index f8c588ca..00000000
--- a/templates/admin-on-rest/components/foo.js
+++ /dev/null
@@ -1,106 +0,0 @@
-import React from 'react';
-import {CardActions} from 'material-ui/Card';
-import {
- List, Datagrid, Edit, Create, Show, SimpleShowLayout, SimpleForm,
- DateField, TextField,
- TextInput, DateInput,
- EditButton,ShowButton, DeleteButton, RefreshButton, ListButton, CreateButton
-} from 'admin-on-rest';
-import {configList, configEdit, configCreate, configShow} from '../config/{{{lc}}}';
-
-export const {{title}}List = (props) => (
- }
- {...props}
- >
-
- {{#each fields}}
- {configList.{{name}} && }
- {{/each}}
- {configList.buttons.show && }
- {configList.buttons.edit && }
- {configList.buttons.delete && }
-
-
-);
-
-const {{title}}Title = ({record}) => {
- return {{title}} {record && record.id ? ` : ${record.id}` : ''};
-};
-
-export const {{title}}Edit = (props) => (
- }
- title={<{{title}}Title />}
- {...props}
- >
-
- {{#each formFields}}
- {{#compare type "==" "dateTime" }}
- {configEdit.{{name}} && }
- {{else}}
- {configEdit.{{name}} && }
- {{/compare}}
- {{/each}}
-
-
-);
-
-export const {{title}}Create = (props) => (
-
-
- {{#each formFields}}
- {{#compare type "==" "dateTime" }}
- {configCreate.{{name}} && }
- {{else}}
- {configCreate.{{name}} && }
- {{/compare}}
- {{/each}}
-
-
-);
-
-export const {{title}}Show = (props) => (
- }
- title={<{{title}}Title />}
- {...props}
- >
-
- {{#each fields}}
- {configShow.{{name}} && }
- {{/each}}
-
-
-);
-
-const cardActionStyle = {
- zIndex: 2,
- display: 'inline-block',
- float: 'right',
-};
-
-const {{title}}ListActions = ({basePath, data}) => (
-
- {configList.buttons.create && }
- {configList.buttons.refresh && }
-
-);
-
-const {{title}}ShowActions = ({basePath, data}) => (
-
- {configShow.buttons.edit && }
- {configShow.buttons.list && }
- {configShow.buttons.delete && }
- {configShow.buttons.refresh && }
-
-);
-
-const {{title}}EditActions = ({basePath, data}) => (
-
- {configShow.buttons.show && }
- {configShow.buttons.list && }
- {configShow.buttons.delete && }
- {configShow.buttons.refresh && }
-
-);
diff --git a/templates/admin-on-rest/config/foo.js b/templates/admin-on-rest/config/foo.js
deleted file mode 100644
index 4be827a6..00000000
--- a/templates/admin-on-rest/config/foo.js
+++ /dev/null
@@ -1,49 +0,0 @@
-export const configList = {
- '@id': true,
-{{#each fields}}
- {{{name}}}: true,
-{{/each}}
- buttons: {
- show: true,
- edit: true,
- create: true,
- refresh: true,
- delete: true,
- }
-}
-
-export const configEdit = {
- '@id': true,
-{{#each fields}}
- {{{name}}}: true,
-{{/each}}
- buttons: {
- show: true,
- list: true,
- delete: true,
- refresh: true,
- }
-}
-
-export const configCreate = {
- '@id': true,
-{{#each fields}}
- {{{name}}}: true,
-{{/each}}
- buttons: {
- list: true,
- }
-}
-
-export const configShow = {
- '@id': true,
-{{#each fields}}
- {{{name}}}: true,
-{{/each}}
- buttons: {
- edit: true,
- list: true,
- delete: true,
- refresh: true,
- }
-}
diff --git a/templates/admin-on-rest/resource-import.js b/templates/admin-on-rest/resource-import.js
deleted file mode 100644
index 12cfce9c..00000000
--- a/templates/admin-on-rest/resource-import.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default as {{lc}} } from './resources/{{{lc}}}';
diff --git a/templates/admin-on-rest/resources/foo.js b/templates/admin-on-rest/resources/foo.js
deleted file mode 100644
index d007e023..00000000
--- a/templates/admin-on-rest/resources/foo.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import React from 'react'
-import { Resource, Delete } from 'admin-on-rest'
-import { {{title}}Create, {{title}}Edit, {{title}}List, {{title}}Show } from '../components/{{{lc}}}';
-
-export default (
-
-);