@sealcode/sealgen 0.1.6 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.log/ti-101379.log +524 -0
- package/.log/ti-131883.log +505 -0
- package/.log/ti-13490.log +652 -0
- package/.log/ti-138140.log +505 -0
- package/.log/ti-138288.log +526 -0
- package/.log/ti-46589.log +675 -0
- package/.log/tsserver.log +1666 -0
- package/@types/find-scss-includes.d.ts +1 -0
- package/@types/templates/form.d.ts +1 -1
- package/@types/templates/list.d.ts +1 -0
- package/@types/templates/page.d.ts +1 -1
- package/@types/utils/list-collections.d.ts +1 -0
- package/lib/add-collection.js +13 -24
- package/lib/add-collection.js.map +1 -1
- package/lib/add-route.js +25 -32
- package/lib/add-route.js.map +1 -1
- package/lib/find-scss-includes.js +26 -0
- package/lib/find-scss-includes.js.map +1 -0
- package/lib/generate-collections.js +30 -43
- package/lib/generate-collections.js.map +1 -1
- package/lib/generate-routes.js +29 -42
- package/lib/generate-routes.js.map +1 -1
- package/lib/index.js +12 -23
- package/lib/index.js.map +1 -1
- package/lib/templates/form.js +2 -2
- package/lib/templates/form.js.map +1 -1
- package/lib/templates/list.js +61 -0
- package/lib/templates/list.js.map +1 -0
- package/lib/templates/page.js +3 -1
- package/lib/templates/page.js.map +1 -1
- package/lib/utils/exec.js +16 -27
- package/lib/utils/exec.js.map +1 -1
- package/lib/utils/list-collections.js +20 -0
- package/lib/utils/list-collections.js.map +1 -0
- package/lib/utils/question.js +15 -26
- package/lib/utils/question.js.map +1 -1
- package/lib/utils/walk.js +14 -25
- package/lib/utils/walk.js.map +1 -1
- package/package.json +4 -2
- package/src/add-route.ts +14 -9
- package/src/find-scss-includes.ts +31 -0
- package/src/generate-routes.ts +6 -1
- package/src/index.ts +2 -0
- package/src/templates/form.ts +5 -2
- package/src/templates/list.ts +65 -0
- package/src/templates/page.ts +4 -2
- package/src/utils/list-collections.ts +16 -0
- package/tsconfig.json +20 -25
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function generateScssIncludes(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare
|
|
1
|
+
export declare function formTemplate(action_name: string, newfilefullpath: string): Promise<string>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const listTemplate: (action_name: string, newfilefullpath: string) => Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare
|
|
1
|
+
export declare function pageTemplate(action_name: string, fullpath: string): Promise<string>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function listCollections(): Promise<string[]>;
|
package/lib/add-collection.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -20,22 +11,20 @@ const question_1 = require("./utils/question");
|
|
|
20
11
|
const collection_1 = require("./templates/collection");
|
|
21
12
|
const generate_collections_1 = require("./generate-collections");
|
|
22
13
|
const target_locreq = locreq_1.default(process.cwd());
|
|
23
|
-
function addCollection() {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (fs_1.existsSync(file_path)) {
|
|
29
|
-
// eslint-disable-next-line no-console
|
|
30
|
-
console.error(`ERROR: File ${file_path} already exists.`);
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
yield fs_1.promises.mkdir(path_1.resolve(file_path, "../"), { recursive: true });
|
|
34
|
-
yield fs_1.promises.writeFile(file_path, collection_1.collectionTemplate(collection_name));
|
|
14
|
+
async function addCollection() {
|
|
15
|
+
const collection_name = await question_1.question('What\'s the name of the collection class (e.g. "SecretDocuments", must start with a capital letter): ', (s) => s.length > 3 && s[0].toUpperCase() == s[0]);
|
|
16
|
+
const url = await question_1.question("Enter the url-friendly name for the collection (e.g. secret-documents): ", (s) => !s.includes("/") && !s.includes(" "));
|
|
17
|
+
const file_path = target_locreq.resolve(`src/back/collections/${url}.ts`);
|
|
18
|
+
if (fs_1.existsSync(file_path)) {
|
|
35
19
|
// eslint-disable-next-line no-console
|
|
36
|
-
console.
|
|
37
|
-
|
|
38
|
-
}
|
|
20
|
+
console.error(`ERROR: File ${file_path} already exists.`);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
await fs_1.promises.mkdir(path_1.resolve(file_path, "../"), { recursive: true });
|
|
24
|
+
await fs_1.promises.writeFile(file_path, collection_1.collectionTemplate(collection_name));
|
|
25
|
+
// eslint-disable-next-line no-console
|
|
26
|
+
console.log(`${file_path} created`);
|
|
27
|
+
await generate_collections_1.generateCollections();
|
|
39
28
|
}
|
|
40
29
|
exports.addCollection = addCollection;
|
|
41
30
|
//# sourceMappingURL=add-collection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-collection.js","sourceRoot":"","sources":["../src/add-collection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add-collection.js","sourceRoot":"","sources":["../src/add-collection.ts"],"names":[],"mappings":";;;;;;AAAA,+BAA+B;AAC/B,oDAA6B;AAC7B,2BAAgD;AAChD,+CAA4C;AAC5C,uDAA4D;AAC5D,iEAA6D;AAC7D,MAAM,aAAa,GAAG,gBAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAEtC,KAAK,UAAU,aAAa;IAClC,MAAM,eAAe,GAAG,MAAM,mBAAQ,CACrC,uGAAuG,EACvG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CACzD,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,mBAAQ,CACzB,0EAA0E,EAC1E,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CACnD,CAAC;IACF,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,wBAAwB,GAAG,KAAK,CAAC,CAAC;IAE1E,IAAI,eAAU,CAAC,SAAS,CAAC,EAAE;QAC1B,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,eAAe,SAAS,kBAAkB,CAAC,CAAC;QAC1D,OAAO;KACP;IACD,MAAM,aAAE,CAAC,KAAK,CAAC,cAAO,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,aAAE,CAAC,SAAS,CAAC,SAAS,EAAE,+BAAkB,CAAC,eAAe,CAAC,CAAC,CAAC;IACnE,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,UAAU,CAAC,CAAC;IACpC,MAAM,0CAAmB,EAAE,CAAC;AAC7B,CAAC;AArBD,sCAqBC"}
|
package/lib/add-route.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -22,31 +13,33 @@ const route_test_1 = require("./templates/route-test");
|
|
|
22
13
|
const escape_url_params_1 = require("./utils/escape-url-params");
|
|
23
14
|
const locreq_1 = __importDefault(require("locreq"));
|
|
24
15
|
const generate_routes_1 = require("./generate-routes");
|
|
16
|
+
const list_1 = require("./templates/list");
|
|
25
17
|
const target_locreq = locreq_1.default(process.cwd());
|
|
26
|
-
function addRoute() {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
yield fs_1.promises.mkdir(path_1.resolve(file_path, "../"), { recursive: true });
|
|
42
|
-
yield fs_1.promises.writeFile(file_path, template(action, file_path));
|
|
43
|
-
yield fs_1.promises.writeFile(test_file_path, route_test_1.testTemplate(action, file_path));
|
|
44
|
-
// eslint-disable-next-line no-console
|
|
45
|
-
console.log(`${file_path} created`);
|
|
18
|
+
async function addRoute() {
|
|
19
|
+
const action = await question_1.question('What\'s the name of the action (e.g. "AddUser"): ', (s) => s.length > 3);
|
|
20
|
+
const url = await question_1.question("Enter a full absolute path for the new route (e.g. /admin/users/add): ", (s) => s.trim()[0] == "/");
|
|
21
|
+
const mode_answer = (await question_1.question("Is this a page (p), a form (f), or a list (l)? ", (a) => ["p", "f", "l"].includes(a.toLowerCase())));
|
|
22
|
+
const mode = { p: "page", f: "form", l: "list" }[mode_answer];
|
|
23
|
+
const file_path = target_locreq.resolve(`src/back/routes/${escape_url_params_1.escape_url_params(url)}.${mode}.ts`);
|
|
24
|
+
const test_file_path = target_locreq.resolve(`src/back/routes/${escape_url_params_1.escape_url_params(url)}.test.ts`);
|
|
25
|
+
const template = {
|
|
26
|
+
page: page_1.pageTemplate,
|
|
27
|
+
form: form_1.formTemplate,
|
|
28
|
+
list: list_1.listTemplate,
|
|
29
|
+
}[mode];
|
|
30
|
+
if (fs_1.existsSync(file_path)) {
|
|
46
31
|
// eslint-disable-next-line no-console
|
|
47
|
-
console.
|
|
48
|
-
|
|
49
|
-
}
|
|
32
|
+
console.error(`ERROR: File ${file_path} already exists.`);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
await fs_1.promises.mkdir(path_1.resolve(file_path, "../"), { recursive: true });
|
|
36
|
+
await fs_1.promises.writeFile(file_path, await template(action, file_path));
|
|
37
|
+
await fs_1.promises.writeFile(test_file_path, route_test_1.testTemplate(action, file_path));
|
|
38
|
+
// eslint-disable-next-line no-console
|
|
39
|
+
console.log(`${file_path} created`);
|
|
40
|
+
// eslint-disable-next-line no-console
|
|
41
|
+
console.log(`${test_file_path} created`);
|
|
42
|
+
await generate_routes_1.generateRoutes();
|
|
50
43
|
}
|
|
51
44
|
exports.addRoute = addRoute;
|
|
52
45
|
//# sourceMappingURL=add-route.js.map
|
package/lib/add-route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-route.js","sourceRoot":"","sources":["../src/add-route.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add-route.js","sourceRoot":"","sources":["../src/add-route.ts"],"names":[],"mappings":";;;;;;AAAA,+BAA+B;AAC/B,2BAAgD;AAChD,+CAA4C;AAC5C,2CAAgD;AAChD,2CAAgD;AAChD,uDAAsD;AACtD,iEAA8D;AAE9D,oDAA6B;AAC7B,uDAAmD;AACnD,2CAAgD;AAChD,MAAM,aAAa,GAAG,gBAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAEtC,KAAK,UAAU,QAAQ;IAC7B,MAAM,MAAM,GAAG,MAAM,mBAAQ,CAC5B,mDAAmD,EACnD,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAC3B,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,mBAAQ,CACzB,wEAAwE,EACxE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CACjC,CAAC;IACF,MAAM,WAAW,GAAG,CAAC,MAAM,mBAAQ,CAClC,iDAAiD,EACjD,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CACxD,CAAoB,CAAC;IACtB,MAAM,IAAI,GAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAG,CAAC,WAAW,CAAC,CAAC;IAEvE,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CACtC,mBAAmB,qCAAiB,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CACtD,CAAC;IACF,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAC3C,mBAAmB,qCAAiB,CAAC,GAAG,CAAC,UAAU,CACnD,CAAC;IACF,MAAM,QAAQ,GAAG;QAChB,IAAI,EAAE,mBAAY;QAClB,IAAI,EAAE,mBAAY;QAClB,IAAI,EAAE,mBAAY;KAClB,CAAC,IAAI,CAAC,CAAC;IAER,IAAI,eAAU,CAAC,SAAS,CAAC,EAAE;QAC1B,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,eAAe,SAAS,kBAAkB,CAAC,CAAC;QAC1D,OAAO;KACP;IACD,MAAM,aAAE,CAAC,KAAK,CAAC,cAAO,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,aAAE,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACjE,MAAM,aAAE,CAAC,SAAS,CAAC,cAAc,EAAE,yBAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACpE,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,UAAU,CAAC,CAAC;IACpC,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,GAAG,cAAc,UAAU,CAAC,CAAC;IACzC,MAAM,gCAAc,EAAE,CAAC;AACxB,CAAC;AAxCD,4BAwCC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generateScssIncludes = void 0;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const locreq_1 = __importDefault(require("locreq"));
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const walk_1 = require("./utils/walk");
|
|
11
|
+
const target_locreq = locreq_1.default(process.cwd());
|
|
12
|
+
async function generateScssIncludes() {
|
|
13
|
+
const files = await Promise.all((await walk_1.walk(target_locreq.resolve("src/")))
|
|
14
|
+
.filter((f) => f.endsWith(".scss") &&
|
|
15
|
+
!f.endsWith("/main.scss") &&
|
|
16
|
+
!f.endsWith("/includes.scss"))
|
|
17
|
+
.map((fullpath) => path_1.relative(target_locreq.resolve("src/"), fullpath)));
|
|
18
|
+
await fs_1.promises.writeFile(target_locreq.resolve("src/includes.scss"), `// DO NOT EDIT! This file is generated automaticaly with npx sealgen generate-scss-includes
|
|
19
|
+
|
|
20
|
+
${files.map((path) => `@import "${path}";`).join("\n")}
|
|
21
|
+
`);
|
|
22
|
+
// eslint-disable-next-line no-console
|
|
23
|
+
console.log("Successfuly generated new src/includes.scss file");
|
|
24
|
+
}
|
|
25
|
+
exports.generateScssIncludes = generateScssIncludes;
|
|
26
|
+
//# sourceMappingURL=find-scss-includes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-scss-includes.js","sourceRoot":"","sources":["../src/find-scss-includes.ts"],"names":[],"mappings":";;;;;;AAAA,2BAAoC;AACpC,oDAA6B;AAC7B,+BAAgC;AAChC,uCAAoC;AAEpC,MAAM,aAAa,GAAG,gBAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAEtC,KAAK,UAAU,oBAAoB;IACzC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,CAAC,MAAM,WAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;SACzC,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnB,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QACzB,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAC9B;SACA,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACjB,eAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CACjD,CACF,CAAC;IAEF,MAAM,aAAE,CAAC,SAAS,CACjB,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAC1C;;EAEA,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CACrD,CACC,CAAC;IACF,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;AACjE,CAAC;AAvBD,oDAuBC"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -17,51 +8,47 @@ const locreq_1 = __importDefault(require("locreq"));
|
|
|
17
8
|
const fs_1 = require("fs");
|
|
18
9
|
const ts_predicates_1 = require("@sealcode/ts-predicates");
|
|
19
10
|
const target_locreq = locreq_1.default(process.cwd());
|
|
20
|
-
function extractCollectionClassname(full_file_path) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return ts_predicates_1.assertType(result[1], ts_predicates_1.predicates.string, "Missing export default class?");
|
|
28
|
-
});
|
|
11
|
+
async function extractCollectionClassname(full_file_path) {
|
|
12
|
+
const file_content = await fs_1.promises.readFile(full_file_path, "utf-8");
|
|
13
|
+
const result = file_content.match(/export default class (\w+)/);
|
|
14
|
+
if (result === null) {
|
|
15
|
+
throw new Error("Missing 'export default class' statement?");
|
|
16
|
+
}
|
|
17
|
+
return ts_predicates_1.assertType(result[1], ts_predicates_1.predicates.string, "Missing export default class?");
|
|
29
18
|
}
|
|
30
|
-
function generateCollections() {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const content = `// DO NOT EDIT! This file is generated automaticaly with 'npm run generate-collections'
|
|
19
|
+
async function generateCollections() {
|
|
20
|
+
const collections_dir = target_locreq.resolve("src/back/collections");
|
|
21
|
+
const files = (await fs_1.promises.readdir(collections_dir)).filter((f) => !f.match(/\.(sub)?test\./) && f != "collections.ts");
|
|
22
|
+
const file_data = await Promise.all(files.map(async (file) => {
|
|
23
|
+
const full_path = target_locreq.resolve("src/back/collections/" + file);
|
|
24
|
+
const class_name = await extractCollectionClassname(full_path);
|
|
25
|
+
return {
|
|
26
|
+
class_name,
|
|
27
|
+
file,
|
|
28
|
+
full_path,
|
|
29
|
+
urlname: file.replace(".ts", ""),
|
|
30
|
+
};
|
|
31
|
+
}));
|
|
32
|
+
const content = `// DO NOT EDIT! This file is generated automaticaly with 'npm run generate-collections'
|
|
45
33
|
import { App } from "sealious";
|
|
46
34
|
|
|
47
35
|
${file_data
|
|
48
|
-
|
|
49
|
-
|
|
36
|
+
.map(({ class_name, urlname }) => `import _${class_name} from "./${urlname}";`)
|
|
37
|
+
.join("\n")}
|
|
50
38
|
|
|
51
39
|
${file_data
|
|
52
|
-
|
|
53
|
-
|
|
40
|
+
.map(({ class_name }) => `export const ${class_name} = new _${class_name}();`)
|
|
41
|
+
.join("\n")}
|
|
54
42
|
|
|
55
43
|
export const collections = {
|
|
56
44
|
...App.BaseCollections,
|
|
57
45
|
${file_data
|
|
58
|
-
|
|
59
|
-
|
|
46
|
+
.map(({ class_name, urlname }) => ` "${urlname}": ${class_name},`)
|
|
47
|
+
.join("\n")}
|
|
60
48
|
};`;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
});
|
|
49
|
+
await fs_1.promises.writeFile(target_locreq.resolve("src/back/collections/collections.ts"), content);
|
|
50
|
+
// eslint-disable-next-line no-console
|
|
51
|
+
console.log("Successfuly generated new src/back/collections/collections.ts file");
|
|
65
52
|
}
|
|
66
53
|
exports.generateCollections = generateCollections;
|
|
67
54
|
//# sourceMappingURL=generate-collections.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-collections.js","sourceRoot":"","sources":["../src/generate-collections.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate-collections.js","sourceRoot":"","sources":["../src/generate-collections.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA6B;AAC7B,2BAAoC;AACpC,2DAAiE;AAEjE,MAAM,aAAa,GAAG,gBAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAE7C,KAAK,UAAU,0BAA0B,CACxC,cAAsB;IAEtB,MAAM,YAAY,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChE,IAAI,MAAM,KAAK,IAAI,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC7D;IACD,OAAO,0BAAU,CAChB,MAAM,CAAC,CAAC,CAAC,EACT,0BAAU,CAAC,MAAM,EACjB,+BAA+B,CAC/B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,mBAAmB;IACxC,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,CAAC,MAAM,aAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CACvD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAC1D,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACxB,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CACtC,uBAAuB,GAAG,IAAI,CAC9B,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,0BAA0B,CAAC,SAAS,CAAC,CAAC;QAC/D,OAAO;YACN,UAAU;YACV,IAAI;YACJ,SAAS;YACT,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAChC,CAAC;IACH,CAAC,CAAC,CACF,CAAC;IAEF,MAAM,OAAO,GAAG;;;EAGf,SAAS;SACT,GAAG,CACH,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAC3B,WAAW,UAAU,YAAY,OAAO,IAAI,CAC7C;SACA,IAAI,CAAC,IAAI,CAAC;;EAEV,SAAS;SACT,GAAG,CACH,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,gBAAgB,UAAU,WAAW,UAAU,KAAK,CACxE;SACA,IAAI,CAAC,IAAI,CAAC;;;;EAIV,SAAS;SACT,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,KAAK,OAAO,MAAM,UAAU,GAAG,CAAC;SACjE,IAAI,CAAC,IAAI,CAAC;GACT,CAAC;IACH,MAAM,aAAE,CAAC,SAAS,CACjB,aAAa,CAAC,OAAO,CAAC,qCAAqC,CAAC,EAC5D,OAAO,CACP,CAAC;IACF,sCAAsC;IACtC,OAAO,CAAC,GAAG,CACV,oEAAoE,CACpE,CAAC;AACH,CAAC;AAlDD,kDAkDC"}
|
package/lib/generate-routes.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -21,53 +12,49 @@ const import_path_1 = require("./utils/import-path");
|
|
|
21
12
|
const ts_predicates_1 = require("@sealcode/ts-predicates");
|
|
22
13
|
const escape_url_params_1 = require("./utils/escape-url-params");
|
|
23
14
|
const target_locreq = locreq_1.default(process.cwd());
|
|
24
|
-
function extractActionName(full_file_path) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return ts_predicates_1.assertType(result[1], ts_predicates_1.predicates.string, "Missing export default class?");
|
|
32
|
-
});
|
|
15
|
+
async function extractActionName(full_file_path) {
|
|
16
|
+
const file_content = await fs_1.promises.readFile(full_file_path, "utf-8");
|
|
17
|
+
const result = file_content.match(/export const actionName = "(\w+)"/);
|
|
18
|
+
if (result === null) {
|
|
19
|
+
throw new Error("Missing 'export const actionName' statement?");
|
|
20
|
+
}
|
|
21
|
+
return ts_predicates_1.assertType(result[1], ts_predicates_1.predicates.string, "Missing export default class?");
|
|
33
22
|
}
|
|
34
|
-
function generateRoutes() {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
yield fs_1.promises.writeFile(target_locreq.resolve("src/back/routes/routes.ts"), `// DO NOT EDIT! This file is generated automaticaly with npm run generate-routes
|
|
23
|
+
async function generateRoutes() {
|
|
24
|
+
const files = await Promise.all((await walk_1.walk(target_locreq.resolve("src/back/routes")))
|
|
25
|
+
.filter((f) => f.endsWith(".page.ts") ||
|
|
26
|
+
f.endsWith(".form.ts") ||
|
|
27
|
+
f.endsWith(".list.ts"))
|
|
28
|
+
.map(async (fullpath) => ({
|
|
29
|
+
fullpath,
|
|
30
|
+
actionName: await extractActionName(fullpath),
|
|
31
|
+
url: escape_url_params_1.unescape_url_params("/" +
|
|
32
|
+
path_1.relative(target_locreq.resolve("src/back/routes"), fullpath).replace(/\..+/, "") +
|
|
33
|
+
"/" // trailing slash is important here, as it enables to use the entire path while building relative URLs. For example, while visiting /users/123, the path ./add-photo leads to /users/add-photo. While visiting /users/123/ (note the trailing slash), the path ./add-photo leads to /users/123/add-photo
|
|
34
|
+
),
|
|
35
|
+
})));
|
|
36
|
+
await fs_1.promises.writeFile(target_locreq.resolve("src/back/routes/routes.ts"), `// DO NOT EDIT! This file is generated automaticaly with npm run generate-routes
|
|
49
37
|
|
|
50
38
|
import Router from "@koa/router";
|
|
51
39
|
import { Middlewares } from "sealious";
|
|
52
40
|
|
|
53
41
|
${files
|
|
54
|
-
|
|
55
|
-
|
|
42
|
+
.map(({ actionName, fullpath }) => `import { default as ${actionName} } from "${import_path_1.importPath(target_locreq.resolve("src/back/routes/routes.ts"), fullpath)}";`)
|
|
43
|
+
.join("\n")}
|
|
56
44
|
|
|
57
45
|
${files
|
|
58
|
-
|
|
59
|
-
|
|
46
|
+
.map(({ actionName, url }) => `export const ${actionName}URL = "${url}";`)
|
|
47
|
+
.join("\n")}
|
|
60
48
|
|
|
61
49
|
export default function mountAutoRoutes(router: Router) {
|
|
62
50
|
${files
|
|
63
|
-
|
|
51
|
+
.map(({ actionName, }) => ` router.use(${actionName}URL, Middlewares.extractContext(), Middlewares.parseBody());
|
|
64
52
|
${actionName}.mount(router, ${actionName}URL);`)
|
|
65
|
-
|
|
53
|
+
.join("\n\n")}
|
|
66
54
|
}
|
|
67
55
|
`);
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
});
|
|
56
|
+
// eslint-disable-next-line no-console
|
|
57
|
+
console.log("Successfuly generated new src/back/routes/routes.ts file");
|
|
71
58
|
}
|
|
72
59
|
exports.generateRoutes = generateRoutes;
|
|
73
60
|
//# sourceMappingURL=generate-routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-routes.js","sourceRoot":"","sources":["../src/generate-routes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate-routes.js","sourceRoot":"","sources":["../src/generate-routes.ts"],"names":[],"mappings":";;;;;;AAAA,2BAAoC;AACpC,+BAAgC;AAChC,oDAA6B;AAC7B,uCAAoC;AACpC,qDAAiD;AACjD,2DAAiE;AACjE,iEAAgE;AAEhE,MAAM,aAAa,GAAG,gBAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAE7C,KAAK,UAAU,iBAAiB,CAAC,cAAsB;IACtD,MAAM,YAAY,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvE,IAAI,MAAM,KAAK,IAAI,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;KAChE;IACD,OAAO,0BAAU,CAChB,MAAM,CAAC,CAAC,CAAC,EACT,0BAAU,CAAC,MAAM,EACjB,+BAA+B,CAC/B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,cAAc;IACnC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,CACC,MAAM,WAAI,CAAC,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CACpD;SACC,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CACvB;SACA,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzB,QAAQ;QACR,UAAU,EAAE,MAAM,iBAAiB,CAAC,QAAQ,CAAC;QAC7C,GAAG,EAAE,uCAAmB,CACvB,GAAG;YACF,eAAQ,CACP,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,EACxC,QAAQ,CACR,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACrB,GAAG,CAAC,wSAAwS;SAC7S;KACD,CAAC,CAAC,CACJ,CAAC;IAEF,MAAM,aAAE,CAAC,SAAS,CACjB,aAAa,CAAC,OAAO,CAAC,2BAA2B,CAAC,EAClD;;;;;EAKA,KAAK;SACL,GAAG,CACH,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CAC5B,uBAAuB,UAAU,YAAY,wBAAU,CACtD,aAAa,CAAC,OAAO,CAAC,2BAA2B,CAAC,EAClD,QAAQ,CACR,IAAI,CACN;SACA,IAAI,CAAC,IAAI,CAAC;;EAEV,KAAK;SACL,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,gBAAgB,UAAU,UAAU,GAAG,IAAI,CAAC;SACzE,IAAI,CAAC,IAAI,CAAC;;;EAGV,KAAK;SACL,GAAG,CACH,CAAC,EACA,UAAU,GACV,EAAE,EAAE,CAAC,eAAe,UAAU;GAC9B,UAAU,kBAAkB,UAAU,OAAO,CAC9C;SACA,IAAI,CAAC,MAAM,CAAC;;CAEb,CACC,CAAC;IACF,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;AACzE,CAAC;AA5DD,wCA4DC"}
|
package/lib/index.js
CHANGED
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
-
});
|
|
11
|
-
};
|
|
12
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
4
|
const add_collection_1 = require("./add-collection");
|
|
14
5
|
const add_route_1 = require("./add-route");
|
|
6
|
+
const find_scss_includes_1 = require("./find-scss-includes");
|
|
15
7
|
const generate_collections_1 = require("./generate-collections");
|
|
16
8
|
const generate_routes_1 = require("./generate-routes");
|
|
17
9
|
const actions = {
|
|
@@ -19,21 +11,18 @@ const actions = {
|
|
|
19
11
|
"add-route": add_route_1.addRoute,
|
|
20
12
|
"generate-collections": generate_collections_1.generateCollections,
|
|
21
13
|
"generate-routes": generate_routes_1.generateRoutes,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
});
|
|
14
|
+
"generate-scss-includes": find_scss_includes_1.generateScssIncludes,
|
|
15
|
+
default: async function () {
|
|
16
|
+
console.log("Usage: `sealscript <action>`");
|
|
17
|
+
console.log(`Available actions: ${Object.keys(actions)
|
|
18
|
+
.filter((e) => e != "default")
|
|
19
|
+
.join(", ")}`);
|
|
29
20
|
},
|
|
30
21
|
};
|
|
31
|
-
void (function () {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
yield fn();
|
|
37
|
-
});
|
|
22
|
+
void (async function () {
|
|
23
|
+
const action = process.argv.at(-1);
|
|
24
|
+
actions;
|
|
25
|
+
const fn = actions[action || "default"] || actions.default;
|
|
26
|
+
await fn();
|
|
38
27
|
})();
|
|
39
28
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,qDAAiD;AACjD,2CAAuC;AACvC,6DAA4D;AAC5D,iEAA6D;AAC7D,uDAAmD;AAEnD,MAAM,OAAO,GAAoD;IAChE,gBAAgB,EAAE,8BAAa;IAC/B,WAAW,EAAE,oBAAQ;IACrB,sBAAsB,EAAE,0CAAmB;IAC3C,iBAAiB,EAAE,gCAAc;IACjC,wBAAwB,EAAE,yCAAoB;IAC9C,OAAO,EAAE,KAAK;QACb,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CACV,sBAAsB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;aACxC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC;aAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,CACd,CAAC;IACH,CAAC;CACD,CAAC;AAEF,KAAK,CAAC,KAAK;IACV,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC;IACR,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC;IAC3D,MAAM,EAAE,EAAE,CAAC;AACZ,CAAC,CAAC,EAAE,CAAC"}
|
package/lib/templates/form.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.formTemplate = void 0;
|
|
4
4
|
const import_path_1 = require("../utils/import-path");
|
|
5
|
-
|
|
5
|
+
async function formTemplate(action_name, newfilefullpath) {
|
|
6
6
|
const rel = import_path_1.curryImportPath(newfilefullpath);
|
|
7
7
|
return `import { BaseContext } from "koa";
|
|
8
8
|
import {Users} from "${rel("src/back/collections/collections")}";
|
|
@@ -41,6 +41,6 @@ export default new(class ${action_name}Form extends Form {
|
|
|
41
41
|
}
|
|
42
42
|
})();
|
|
43
43
|
`;
|
|
44
|
-
}
|
|
44
|
+
}
|
|
45
45
|
exports.formTemplate = formTemplate;
|
|
46
46
|
//# sourceMappingURL=form.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/templates/form.ts"],"names":[],"mappings":";;;AAAA,sDAAuD;AAEhD,
|
|
1
|
+
{"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/templates/form.ts"],"names":[],"mappings":";;;AAAA,sDAAuD;AAEhD,KAAK,UAAU,YAAY,CACjC,WAAmB,EACnB,eAAuB;IAEvB,MAAM,GAAG,GAAG,6BAAe,CAAC,eAAe,CAAC,CAAC;IAC7C,OAAO;uBACe,GAAG,CAAC,kCAAkC,CAAC;2CACnB,GAAG,CAAC,yBAAyB,CAAC;6BAC5C,GAAG,CAAC,sBAAsB,CAAC;kCACtB,GAAG,CAAC,qBAAqB,CAAC;4CAChB,GAAG,CAAC,0BAA0B,CAAC;oBACvD,GAAG,CAAC,eAAe,CAAC;;6BAEX,WAAW;;2BAEb,WAAW;;;;;;;;;;;;;;;;;;;;;;;sBAuBhB,WAAW;;;CAGhC,CAAC;AACF,CAAC;AA1CD,oCA0CC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listTemplate = void 0;
|
|
4
|
+
const import_path_1 = require("../utils/import-path");
|
|
5
|
+
const prompts = require("prompts");
|
|
6
|
+
const list_collections_1 = require("../utils/list-collections");
|
|
7
|
+
const listTemplate = async (action_name, newfilefullpath) => {
|
|
8
|
+
const response = await prompts({
|
|
9
|
+
type: "autocomplete",
|
|
10
|
+
name: "collection",
|
|
11
|
+
message: "Which sealious collection do you want to list?",
|
|
12
|
+
choices: (await list_collections_1.listCollections()).map((collection) => ({
|
|
13
|
+
title: collection,
|
|
14
|
+
value: collection,
|
|
15
|
+
})),
|
|
16
|
+
});
|
|
17
|
+
const collection = response.collection;
|
|
18
|
+
const uppercase_collection = collection[0].toLocaleUpperCase() + collection.slice(1);
|
|
19
|
+
const rel = import_path_1.curryImportPath(newfilefullpath);
|
|
20
|
+
return `import { BaseContext } from "koa";
|
|
21
|
+
import { CollectionItem, Middlewares } from "sealious";
|
|
22
|
+
import { tempstream } from "tempstream";
|
|
23
|
+
import { ${uppercase_collection} } from "${rel("src/back/collections/collections")}";
|
|
24
|
+
import html from "${rel("src/back/html.ts")}";
|
|
25
|
+
import {
|
|
26
|
+
BaseListPageDefaultProps,
|
|
27
|
+
BaseListPageProps,
|
|
28
|
+
BaseListPagePropsShape,
|
|
29
|
+
SealiousItemListPage,
|
|
30
|
+
} from "${rel("src/back/page/list.ts")}";
|
|
31
|
+
import { AllQueryParams } from "${rel("src/back/page/props-parser.ts")}";
|
|
32
|
+
|
|
33
|
+
export const actionName = "${action_name}";
|
|
34
|
+
|
|
35
|
+
export default new (class ${action_name}Page extends SealiousItemListPage<typeof ${uppercase_collection}> {
|
|
36
|
+
propsParser = new AllQueryParams<BaseListPageProps>(
|
|
37
|
+
BaseListPagePropsShape,
|
|
38
|
+
BaseListPageDefaultProps
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
async render(ctx: BaseContext) {
|
|
42
|
+
return html(
|
|
43
|
+
ctx,
|
|
44
|
+
"${uppercase_collection}",
|
|
45
|
+
tempstream/* HTML */ \`<div>
|
|
46
|
+
<h2>${uppercase_collection} List</h2>
|
|
47
|
+
<ul>
|
|
48
|
+
\${super.render(ctx)}
|
|
49
|
+
</ul>
|
|
50
|
+
</div>\`
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async renderItem(_: BaseContext, item: CollectionItem<typeof ${uppercase_collection}>) {
|
|
55
|
+
return tempstream\`<li>\${item.id}</li>\`;
|
|
56
|
+
}
|
|
57
|
+
})(${uppercase_collection});
|
|
58
|
+
`;
|
|
59
|
+
};
|
|
60
|
+
exports.listTemplate = listTemplate;
|
|
61
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/templates/list.ts"],"names":[],"mappings":";;;AAAA,sDAAuD;AACvD,mCAAoC;AACpC,gEAA4D;AAErD,MAAM,YAAY,GAAG,KAAK,EAChC,WAAmB,EACnB,eAAuB,EACL,EAAE;IACpB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;QAC9B,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,gDAAgD;QACzD,OAAO,EAAE,CACR,MAAM,kCAAe,EAAE,CACvB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACtB,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,UAAU;SACjB,CAAC,CAAC;KACH,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAoB,CAAC;IACjD,MAAM,oBAAoB,GACzB,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,6BAAe,CAAC,eAAe,CAAC,CAAC;IAC7C,OAAO;;;WAGG,oBAAoB,YAAY,GAAG,CAC5C,kCAAkC,CAClC;oBACkB,GAAG,CAAC,kBAAkB,CAAC;;;;;;UAMjC,GAAG,CAAC,uBAAuB,CAAC;kCACJ,GAAG,CAAC,+BAA+B,CAAC;;6BAEzC,WAAW;;4BAEZ,WAAW,4CAA4C,oBAAoB;;;;;;;;;eASxF,oBAAoB;;sBAEb,oBAAoB;;;;;;;;mEAQyB,oBAAoB;;;KAGlF,oBAAoB;CACxB,CAAC;AACF,CAAC,CAAC;AA5DW,QAAA,YAAY,gBA4DvB"}
|
package/lib/templates/page.js
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.pageTemplate = void 0;
|
|
4
4
|
const import_path_1 = require("../utils/import-path");
|
|
5
|
-
|
|
5
|
+
async function pageTemplate(action_name, fullpath) {
|
|
6
|
+
return `import { BaseContext } from "koa";
|
|
6
7
|
import { tempstream } from "tempstream";
|
|
7
8
|
import { Page } from "${import_path_1.importPath(fullpath, "src/back/page/page")}";
|
|
8
9
|
|
|
@@ -20,5 +21,6 @@ export default new (class ${action_name}Page extends Page {
|
|
|
20
21
|
}
|
|
21
22
|
})();
|
|
22
23
|
`;
|
|
24
|
+
}
|
|
23
25
|
exports.pageTemplate = pageTemplate;
|
|
24
26
|
//# sourceMappingURL=page.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/templates/page.ts"],"names":[],"mappings":";;;AAAA,sDAAkD;AAE3C,
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/templates/page.ts"],"names":[],"mappings":";;;AAAA,sDAAkD;AAE3C,KAAK,UAAU,YAAY,CACjC,WAAmB,EACnB,QAAgB;IAEhB,OAAO;;wBAEgB,wBAAU,CAAC,QAAQ,EAAE,oBAAoB,CAAC;;6BAErC,WAAW;;4BAEZ,WAAW;;;;;;;;;;;CAWtC,CAAC;AACF,CAAC;AAtBD,oCAsBC"}
|