tkeron 0.0.4

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.
Files changed (183) hide show
  1. package/.github/workflows/CICD.yml +43 -0
  2. package/LICENSE +21 -0
  3. package/README.md +76 -0
  4. package/assets/tkexample.gif +0 -0
  5. package/changelog.md +8 -0
  6. package/dist/base64.d.ts +2 -0
  7. package/dist/base64.js +7 -0
  8. package/dist/build.d.ts +10 -0
  9. package/dist/build.js +102 -0
  10. package/dist/buildFront.d.ts +10 -0
  11. package/dist/buildFront.js +27 -0
  12. package/dist/buildLoaders.d.ts +13 -0
  13. package/dist/buildLoaders.js +23 -0
  14. package/dist/bundleTs.d.ts +1 -0
  15. package/dist/bundleTs.js +35 -0
  16. package/dist/cicd.d.ts +1 -0
  17. package/dist/cicd.js +8 -0
  18. package/dist/cmdBuild.d.ts +1 -0
  19. package/dist/cmdBuild.js +11 -0
  20. package/dist/cmdDev.d.ts +7 -0
  21. package/dist/cmdDev.js +63 -0
  22. package/dist/cmdGenerate.d.ts +1 -0
  23. package/dist/cmdGenerate.js +41 -0
  24. package/dist/cmdInit.d.ts +1 -0
  25. package/dist/cmdInit.js +36 -0
  26. package/dist/copyDir.d.ts +1 -0
  27. package/dist/copyDir.js +18 -0
  28. package/dist/createModFile.d.ts +1 -0
  29. package/dist/createModFile.js +14 -0
  30. package/dist/createTsConfigFile.d.ts +1 -0
  31. package/dist/createTsConfigFile.js +39 -0
  32. package/dist/eventEmitter.d.ts +5 -0
  33. package/dist/eventEmitter.js +29 -0
  34. package/dist/fileExist.d.ts +1 -0
  35. package/dist/fileExist.js +6 -0
  36. package/dist/generateItems.d.ts +11 -0
  37. package/dist/generateItems.js +16 -0
  38. package/dist/getDocument.d.ts +11 -0
  39. package/dist/getDocument.js +37 -0
  40. package/dist/getFilesRecursive.d.ts +9 -0
  41. package/dist/getFilesRecursive.js +53 -0
  42. package/dist/getOptions.d.ts +8 -0
  43. package/dist/getOptions.js +28 -0
  44. package/dist/getType.d.ts +1 -0
  45. package/dist/getType.js +5 -0
  46. package/dist/getVersion.d.ts +2 -0
  47. package/dist/getVersion.js +16 -0
  48. package/dist/index.d.ts +2 -0
  49. package/dist/index.js +5 -0
  50. package/dist/injectCode.d.ts +1 -0
  51. package/dist/injectCode.js +7 -0
  52. package/dist/injectTsFile.d.ts +8 -0
  53. package/dist/injectTsFile.js +22 -0
  54. package/dist/jsDom/crypto.d.ts +3 -0
  55. package/dist/jsDom/crypto.js +22 -0
  56. package/dist/jsDom/errors.d.ts +3 -0
  57. package/dist/jsDom/errors.js +30 -0
  58. package/dist/jsDom/joinScripts.d.ts +1 -0
  59. package/dist/jsDom/joinScripts.js +25 -0
  60. package/dist/jsDom/logs.d.ts +1 -0
  61. package/dist/jsDom/logs.js +10 -0
  62. package/dist/jsDom/writeLogElement.d.ts +1 -0
  63. package/dist/jsDom/writeLogElement.js +49 -0
  64. package/dist/libFiles.ts.d.ts +1 -0
  65. package/dist/libFiles.ts.js +14 -0
  66. package/dist/main.d.ts +1 -0
  67. package/dist/main.js +58 -0
  68. package/dist/mod.d.ts +3 -0
  69. package/dist/mod.js +9 -0
  70. package/dist/pathToUrlResource.d.ts +4 -0
  71. package/dist/pathToUrlResource.js +11 -0
  72. package/dist/random.d.ts +3 -0
  73. package/dist/random.js +31 -0
  74. package/dist/range.d.ts +1 -0
  75. package/dist/range.js +5 -0
  76. package/dist/readJsonFile.d.ts +1 -0
  77. package/dist/readJsonFile.js +20 -0
  78. package/dist/rectReady.d.ts +1 -0
  79. package/dist/rectReady.js +33 -0
  80. package/dist/rnd.d.ts +2 -0
  81. package/dist/rnd.js +11 -0
  82. package/dist/rnda.d.ts +1 -0
  83. package/dist/rnda.js +8 -0
  84. package/dist/runOncePerTime.d.ts +1 -0
  85. package/dist/runOncePerTime.js +17 -0
  86. package/dist/serializeDocument.d.ts +1 -0
  87. package/dist/serializeDocument.js +5 -0
  88. package/dist/simpleHotRestart.d.ts +1 -0
  89. package/dist/simpleHotRestart.js +17 -0
  90. package/dist/test/buildLoaders.test.d.ts +1 -0
  91. package/dist/test/buildLoaders.test.js +27 -0
  92. package/dist/test/bundleTs.test.d.ts +1 -0
  93. package/dist/test/bundleTs.test.js +94 -0
  94. package/dist/test/errors.test.d.ts +1 -0
  95. package/dist/test/errors.test.js +29 -0
  96. package/dist/test/fileExist.test.d.ts +1 -0
  97. package/dist/test/fileExist.test.js +26 -0
  98. package/dist/test/getFilesRecursive.test.d.ts +1 -0
  99. package/dist/test/getFilesRecursive.test.js +66 -0
  100. package/dist/test/getRandomValues.test.d.ts +1 -0
  101. package/dist/test/getRandomValues.test.js +35 -0
  102. package/dist/test/logs.test.d.ts +1 -0
  103. package/dist/test/logs.test.js +20 -0
  104. package/dist/test/main.test.d.ts +1 -0
  105. package/dist/test/main.test.js +15 -0
  106. package/dist/test/pathToUrlResource.test.d.ts +1 -0
  107. package/dist/test/pathToUrlResource.test.js +14 -0
  108. package/dist/test/runOncePerTime.test.d.ts +1 -0
  109. package/dist/test/runOncePerTime.test.js +17 -0
  110. package/dist/tk.d.ts +2 -0
  111. package/dist/tk.js +5 -0
  112. package/dist/tkeron.d.ts +44 -0
  113. package/dist/tkeron.js +258 -0
  114. package/dist/wait.d.ts +1 -0
  115. package/dist/wait.js +5 -0
  116. package/distFiles/eventEmitter.ts +29 -0
  117. package/distFiles/getType.ts +2 -0
  118. package/distFiles/random.ts +26 -0
  119. package/distFiles/range.ts +2 -0
  120. package/distFiles/rectReady.ts +27 -0
  121. package/distFiles/rnda.ts +5 -0
  122. package/distFiles/runOncePerTime.ts +12 -0
  123. package/distFiles/simpleHotRestart.ts +18 -0
  124. package/distFiles/tkeron.ts +317 -0
  125. package/package.json +47 -0
  126. package/src/base64.ts +3 -0
  127. package/src/build.ts +112 -0
  128. package/src/buildFront.ts +40 -0
  129. package/src/buildLoaders.ts +23 -0
  130. package/src/bundleTs.ts +32 -0
  131. package/src/cicd.ts +8 -0
  132. package/src/cmdBuild.ts +9 -0
  133. package/src/cmdDev.ts +68 -0
  134. package/src/cmdGenerate.ts +41 -0
  135. package/src/cmdInit.ts +37 -0
  136. package/src/copyDir.ts +16 -0
  137. package/src/createModFile.ts +15 -0
  138. package/src/createTsConfigFile.ts +37 -0
  139. package/src/eventEmitter.ts +29 -0
  140. package/src/fileExist.ts +4 -0
  141. package/src/generateItems.ts +16 -0
  142. package/src/getDocument.ts +40 -0
  143. package/src/getFilesRecursive.ts +49 -0
  144. package/src/getOptions.ts +27 -0
  145. package/src/getType.ts +2 -0
  146. package/src/getVersion.ts +14 -0
  147. package/src/index.ts +5 -0
  148. package/src/injectCode.ts +9 -0
  149. package/src/injectTsFile.ts +28 -0
  150. package/src/jsDom/crypto.ts +22 -0
  151. package/src/jsDom/errors.ts +35 -0
  152. package/src/jsDom/joinScripts.ts +22 -0
  153. package/src/jsDom/logs.ts +7 -0
  154. package/src/jsDom/writeLogElement.ts +45 -0
  155. package/src/libFiles.ts.ts +16 -0
  156. package/src/main.ts +67 -0
  157. package/src/mod.ts +7 -0
  158. package/src/pathToUrlResource.ts +10 -0
  159. package/src/random.ts +26 -0
  160. package/src/range.ts +2 -0
  161. package/src/readJsonFile.ts +16 -0
  162. package/src/rectReady.ts +27 -0
  163. package/src/rnd.ts +5 -0
  164. package/src/rnda.ts +5 -0
  165. package/src/runOncePerTime.ts +12 -0
  166. package/src/serializeDocument.ts +7 -0
  167. package/src/simpleHotRestart.ts +18 -0
  168. package/src/test/buildLoaders.test.ts +31 -0
  169. package/src/test/bundleTs.test.ts +98 -0
  170. package/src/test/errors.test.ts +31 -0
  171. package/src/test/fileExist.test.ts +29 -0
  172. package/src/test/getFilesRecursive.test.ts +67 -0
  173. package/src/test/getRandomValues.test.ts +34 -0
  174. package/src/test/logs.test.ts +20 -0
  175. package/src/test/main.test.ts +16 -0
  176. package/src/test/pathToUrlResource.test.ts +18 -0
  177. package/src/test/runOncePerTime.test.ts +16 -0
  178. package/src/tk.ts +5 -0
  179. package/src/tkeron.ts +317 -0
  180. package/src/wait.ts +2 -0
  181. package/tkeron.json +4 -0
  182. package/tkeron.tsconfig.json +12 -0
  183. package/tsconfig.json +29 -0
@@ -0,0 +1,43 @@
1
+ name: CICD
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v3
13
+ - uses: actions/setup-node@v3
14
+ - name: Intall
15
+ run: npm i
16
+ - name: Build
17
+ run: npm run build
18
+ - name: Test
19
+ run: npm test
20
+ publish:
21
+ if: ${{ contains(github.event.head_commit.message, '#publish') }}
22
+ needs: [test]
23
+ name: Publish to npm
24
+ runs-on: ubuntu-latest
25
+ steps:
26
+ - uses: actions/checkout@v3
27
+ - uses: actions/setup-node@v3
28
+ with:
29
+ node-version: 16.x
30
+ registry-url: "https://registry.npmjs.org/"
31
+ - name: Intall
32
+ run: npm i
33
+ - name: Build
34
+ run: npm run build
35
+ - name: cicd command
36
+ run: npm run cicd
37
+ - run: rm -rf src dist/test front web .github
38
+ - name: Publish
39
+ run: npm publish --access public
40
+ env:
41
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
42
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
43
+ token: ${{ secrets.NPM_TOKEN }}
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2020 tkeron
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,76 @@
1
+ # Tkeron
2
+
3
+ Micro framework for developing web user interfaces with typescript.
4
+
5
+ - Create web interfaces with typescript without configuration.
6
+ - Take advantage of hot reloading to see your changes as you go.
7
+ - Start your project faster, compile faster than other frameworks (thanks to esbuild).
8
+ - Create pre-rendered components or pages.
9
+
10
+
11
+ ![tkeron example](./assets/tkexample.gif)
12
+
13
+ **How to use**
14
+
15
+
16
+ ---
17
+ - Install tkeron globally
18
+
19
+ ```bash
20
+ npm i -g tkeron
21
+ ```
22
+
23
+ ---
24
+ - Enter in your project directory and run:
25
+
26
+ ```bash
27
+ tkeron init
28
+ ```
29
+
30
+ This will create a blank project in the "front" directory.
31
+
32
+ ---
33
+ - To build the html file run this:
34
+
35
+ ```bash
36
+ tkeron build
37
+ ```
38
+
39
+ This will transpile the project in the directory "web"
40
+
41
+ ---
42
+ - To run in your browser:
43
+
44
+ ```bash
45
+ tkeron dev
46
+ ```
47
+
48
+ This command will create a server on port 5000 for the "web" directory and will observe the file change in the "front" directory.
49
+
50
+ ---
51
+ - to create a page use this:
52
+
53
+ ```bash
54
+ tkeron generate page index
55
+ ```
56
+
57
+ or its short version:
58
+
59
+ ```bash
60
+ tk g p index
61
+ ```
62
+
63
+ ---
64
+ - to create a component use this:
65
+
66
+ ```bash
67
+ tkeron generate component my/button
68
+ ```
69
+
70
+ or its short version:
71
+
72
+ ```bash
73
+ tk g c my/button
74
+ ```
75
+
76
+
Binary file
package/changelog.md ADDED
@@ -0,0 +1,8 @@
1
+ # v0.0.4
2
+
3
+ - update bundleTs function to allow delete outfile.
4
+
5
+ # v0.0.3
6
+
7
+ - fix error in simpleHotRestart script due to undefined "exports" variable.
8
+
@@ -0,0 +1,2 @@
1
+ export declare const fromBase64: (base64str: string) => string;
2
+ export declare const toBase64: (base64str: string) => string;
package/dist/base64.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toBase64 = exports.fromBase64 = void 0;
4
+ const fromBase64 = (base64str) => Buffer.from(base64str, "base64").toString("utf-8");
5
+ exports.fromBase64 = fromBase64;
6
+ const toBase64 = (base64str) => Buffer.from(base64str, "utf-8").toString("base64");
7
+ exports.toBase64 = toBase64;
@@ -0,0 +1,10 @@
1
+ export interface buildArguments {
2
+ sourceDir: string;
3
+ outputDir: string;
4
+ hotRestart?: boolean;
5
+ ignoreConsoleLogs?: boolean;
6
+ ignoreErrors?: boolean;
7
+ minify?: boolean;
8
+ }
9
+ export declare const build: (args: buildArguments, minify?: boolean) => Promise<void>;
10
+ export declare const tryBuildFront: (name: string, html: string, outHtmlFile: string, hotRestart: boolean, outTsFile: string, scriptId: string, tsFile: string, minify?: boolean) => Promise<[boolean, string, CallableFunction]>;
package/dist/build.js ADDED
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tryBuildFront = exports.build = void 0;
4
+ const path_1 = require("path");
5
+ const promises_1 = require("fs/promises");
6
+ const fileExist_1 = require("./fileExist");
7
+ const generateItems_1 = require("./generateItems");
8
+ const getDocument_1 = require("./getDocument");
9
+ const getFilesRecursive_1 = require("./getFilesRecursive");
10
+ const getOptions_1 = require("./getOptions");
11
+ const injectTsFile_1 = require("./injectTsFile");
12
+ const rnd_1 = require("./rnd");
13
+ const buildFront_1 = require("./buildFront");
14
+ const serializeDocument_1 = require("./serializeDocument");
15
+ const backRegex = /\.back\.ts$/;
16
+ const htmlPageRegex = /\.page\.html$/;
17
+ const build = async (args, minify = true) => {
18
+ const { hotRestart, ignoreConsoleLogs, ignoreErrors } = args;
19
+ const { outputDir, sourceDir } = (0, getOptions_1.getOptions)({ sourceDir: args.sourceDir, outputDir: args.outputDir });
20
+ if (!await (0, fileExist_1.fileExists)(sourceDir))
21
+ throw "directory does not exist";
22
+ await (0, promises_1.mkdir)(outputDir, { recursive: true });
23
+ const pagesReady = [];
24
+ const backFiles = [...(0, getFilesRecursive_1.getFilesRecursive)(sourceDir, { pattern: backRegex })];
25
+ const buildFrontPromises = [];
26
+ for (const file of backFiles) {
27
+ const name = (0, path_1.basename)(file).replace(backRegex, "");
28
+ const htmlFile = file.replace(backRegex, ".page.html");
29
+ pagesReady.push(htmlFile);
30
+ const htmlExist = await (0, fileExist_1.fileExists)(htmlFile);
31
+ let html = htmlExist ? await (0, promises_1.readFile)(htmlFile, { encoding: "utf-8" }) : (0, generateItems_1.pageItem)(name).html;
32
+ const scriptId = "tmp" + (0, rnd_1.rnds)(25);
33
+ html = await (0, injectTsFile_1.injectTsFile)({ html, outputDir, sourceDir, tsFile: file, scriptId });
34
+ const { document, jsDomErrors, window } = (0, getDocument_1.getDocument)(html, { ignoreConsoleLogs, ignoreErrors });
35
+ if (ignoreErrors && jsDomErrors.length)
36
+ jsDomErrors.forEach((_) => console["log"](`page ${name} error: `, _.detail || _));
37
+ await new Promise((ok) => {
38
+ const handle = setTimeout(() => {
39
+ console["log"](`time up: ${name}`);
40
+ ok(0);
41
+ }, 6e3);
42
+ document.addEventListener("load", () => {
43
+ clearTimeout(handle);
44
+ ok(0);
45
+ });
46
+ });
47
+ const scriptNode = document.querySelector(`#${scriptId}`);
48
+ if (scriptNode)
49
+ document.head.removeChild(scriptNode);
50
+ html = (0, serializeDocument_1.serializeDocument)(document);
51
+ window.close();
52
+ const tsFile = htmlFile.replace(htmlPageRegex, ".page.ts");
53
+ const outHtmlFile = file.replace(sourceDir, outputDir).replace(backRegex, ".html");
54
+ const outTsFile = file.replace(sourceDir, outputDir).replace(backRegex, ".js");
55
+ html = html.replace(/\/\*tkeron\-front\-script/g, "");
56
+ html = html.replace(/tkeron\-front\-script\*\//g, "");
57
+ buildFrontPromises.push((0, exports.tryBuildFront)(name, html, outHtmlFile, hotRestart, outTsFile, "tkeron_page_js", tsFile, minify));
58
+ }
59
+ const htmlFiles = [...(0, getFilesRecursive_1.getFilesRecursive)(sourceDir, { pattern: htmlPageRegex })];
60
+ for (const file of htmlFiles) {
61
+ const name = (0, path_1.basename)(file).replace(htmlPageRegex, "");
62
+ if (pagesReady.includes(file))
63
+ continue;
64
+ let html = await (0, promises_1.readFile)(file, { encoding: "utf-8" });
65
+ const outHtmlFile = file.replace(sourceDir, outputDir).replace(htmlPageRegex, ".html");
66
+ const outTsFile = file.replace(sourceDir, outputDir).replace(htmlPageRegex, ".html");
67
+ const tsFile = file.replace(htmlPageRegex, ".page.ts");
68
+ html = html.replace(/\/\*tkeron\-front\-script/g, "");
69
+ html = html.replace(/tkeron\-front\-script\*\//g, "");
70
+ buildFrontPromises.push((0, exports.tryBuildFront)(name, html, outHtmlFile, hotRestart, outTsFile, "tkeron_page_js", tsFile, minify));
71
+ }
72
+ const results = await Promise.all(buildFrontPromises);
73
+ for (const result of results) {
74
+ const [ok, name, retry] = result;
75
+ if (ok)
76
+ continue;
77
+ console["log"](`\nretry build ${name}...`);
78
+ await new Promise((done) => setTimeout(done, 300));
79
+ const [done] = await retry();
80
+ if (!done)
81
+ throw `error building ${name}, try build command again...`;
82
+ }
83
+ const compdate = new Date().getTime().toString();
84
+ const compdateDir = (0, path_1.join)(outputDir, "compdate.txt");
85
+ await (0, promises_1.writeFile)(compdateDir, compdate, { encoding: "utf-8" });
86
+ console["log"]("\nall site built");
87
+ };
88
+ exports.build = build;
89
+ const tryBuildFront = async (name, html, outHtmlFile, hotRestart, outTsFile, scriptId, tsFile, minify = true) => {
90
+ return new Promise(async (ok) => {
91
+ try {
92
+ await (0, buildFront_1.buildFront)({ html, outHtmlFile, hotRestart, outTsFile, scriptId: "tkeron_page_js", tsFile, minify });
93
+ console["log"](`site ${name} built`);
94
+ ok([true, name, async () => { }]);
95
+ }
96
+ catch (_) {
97
+ console["log"](`error building site ${name}: `, _);
98
+ ok([false, name, () => (0, exports.tryBuildFront)(name, html, outHtmlFile, hotRestart, outTsFile, scriptId, tsFile)]);
99
+ }
100
+ });
101
+ };
102
+ exports.tryBuildFront = tryBuildFront;
@@ -0,0 +1,10 @@
1
+ export interface buildFrontOptions {
2
+ html: string;
3
+ tsFile: string;
4
+ outTsFile: string;
5
+ outHtmlFile: string;
6
+ hotRestart?: boolean;
7
+ scriptId: string;
8
+ minify?: boolean;
9
+ }
10
+ export declare const buildFront: (options: buildFrontOptions) => Promise<string>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildFront = void 0;
4
+ const promises_1 = require("fs/promises");
5
+ const path_1 = require("path");
6
+ const bundleTs_1 = require("./bundleTs");
7
+ const fileExist_1 = require("./fileExist");
8
+ const injectCode_1 = require("./injectCode");
9
+ const buildFront = async (options) => {
10
+ const { hotRestart, outHtmlFile, scriptId, tsFile, outTsFile, minify } = options;
11
+ let { html } = options;
12
+ const outHtmlDir = (0, path_1.dirname)(outHtmlFile);
13
+ if (hotRestart === true) {
14
+ const code = await (0, bundleTs_1.bundleTs)((0, path_1.join)(__dirname, "..", "distFiles", "simpleHotRestart.ts"), "shr.js", true, true);
15
+ html = (0, injectCode_1.injectCode)(html, code, "tkeron_simple_hot_restart");
16
+ }
17
+ if (await (0, fileExist_1.fileExists)(tsFile)) {
18
+ const tsCode = await (0, bundleTs_1.bundleTs)(tsFile, outTsFile, minify);
19
+ await (0, promises_1.unlink)(outTsFile);
20
+ if (tsCode.trim() !== "")
21
+ html = (0, injectCode_1.injectCode)(html, tsCode, scriptId);
22
+ }
23
+ await (0, promises_1.mkdir)(outHtmlDir, { recursive: true });
24
+ await (0, promises_1.writeFile)(outHtmlFile, html, { encoding: "utf-8" });
25
+ return html;
26
+ };
27
+ exports.buildFront = buildFront;
@@ -0,0 +1,13 @@
1
+ import { Loader } from "esbuild";
2
+ export declare const buildLoaders: {
3
+ ".jpg": Loader;
4
+ ".png": Loader;
5
+ ".gif": Loader;
6
+ ".ico": Loader;
7
+ ".webp": Loader;
8
+ ".svg": Loader;
9
+ ".js": Loader;
10
+ ".css": Loader;
11
+ ".html": Loader;
12
+ };
13
+ export declare const getExtModules: () => string;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getExtModules = exports.buildLoaders = void 0;
4
+ exports.buildLoaders = {
5
+ ".jpg": "file",
6
+ ".png": "file",
7
+ ".gif": "file",
8
+ ".ico": "file",
9
+ ".webp": "file",
10
+ ".svg": "file",
11
+ ".js": "file",
12
+ ".css": "text",
13
+ ".html": "text",
14
+ };
15
+ const getExtModules = () => {
16
+ let content = "";
17
+ const exts = Object.keys(exports.buildLoaders).sort();
18
+ for (const ext of exts) {
19
+ content += `declare module '*${ext}';\n`;
20
+ }
21
+ return content;
22
+ };
23
+ exports.getExtModules = getExtModules;
@@ -0,0 +1 @@
1
+ export declare const bundleTs: (file: string, outfile: string, minify?: boolean, deleteOutfile?: boolean) => Promise<string>;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bundleTs = void 0;
4
+ const path_1 = require("path");
5
+ const fileExist_1 = require("./fileExist");
6
+ const esbuild_1 = require("esbuild");
7
+ const buildLoaders_1 = require("./buildLoaders");
8
+ const promises_1 = require("fs/promises");
9
+ const bundleTs = async (file, outfile, minify = true, deleteOutfile = false) => {
10
+ if (!file)
11
+ throw "file must be defined";
12
+ if (!outfile)
13
+ throw "outfile must be defined";
14
+ file = (0, path_1.normalize)(file);
15
+ const exist = await (0, fileExist_1.fileExists)(file);
16
+ if (!exist)
17
+ throw `file ${file} doesn't exist`;
18
+ const minifySyntax = minify;
19
+ const minifyWhitespace = minify;
20
+ const buildResult = await (0, esbuild_1.build)({
21
+ entryPoints: [file],
22
+ outfile,
23
+ bundle: true,
24
+ minifySyntax,
25
+ minifyWhitespace,
26
+ loader: buildLoaders_1.buildLoaders,
27
+ });
28
+ if (buildResult.errors.length)
29
+ throw buildResult.errors;
30
+ const tsResult = await (0, promises_1.readFile)(outfile, { encoding: "utf-8" });
31
+ if (deleteOutfile)
32
+ await (0, promises_1.unlink)(outfile);
33
+ return tsResult;
34
+ };
35
+ exports.bundleTs = bundleTs;
package/dist/cicd.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};
package/dist/cicd.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fs_1 = require("fs");
4
+ const path_1 = require("path");
5
+ const libFiles_ts_1 = require("./libFiles.ts");
6
+ for (const file of libFiles_ts_1.libFiles) {
7
+ (0, fs_1.copyFileSync)((0, path_1.join)("src", file), (0, path_1.join)("distFiles", file));
8
+ }
@@ -0,0 +1 @@
1
+ export declare const cmdBuild: (sourceDir?: string, outputDir?: string) => Promise<void>;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cmdBuild = void 0;
4
+ const build_1 = require("./build");
5
+ const cmdBuild = (sourceDir, outputDir) => (0, build_1.build)({
6
+ sourceDir, outputDir,
7
+ hotRestart: false,
8
+ ignoreConsoleLogs: true,
9
+ ignoreErrors: true
10
+ });
11
+ exports.cmdBuild = cmdBuild;
@@ -0,0 +1,7 @@
1
+ /// <reference types="node" />
2
+ import { Server } from "http";
3
+ export declare const dev: (sourceDir: string, outputDir: string, port?: number, addr?: string) => Promise<{
4
+ closeWatcher: () => void;
5
+ closeServer: () => Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>;
6
+ }>;
7
+ export declare const cmdDev: (sourceDir: string, outputDir: string, port?: number, addr?: string) => Promise<void>;
package/dist/cmdDev.js ADDED
@@ -0,0 +1,63 @@
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.cmdDev = exports.dev = void 0;
7
+ const express_1 = __importDefault(require("express"));
8
+ const node_watch_1 = __importDefault(require("node-watch"));
9
+ const stream_1 = require("stream");
10
+ const build_1 = require("./build");
11
+ const fileExist_1 = require("./fileExist");
12
+ const getOptions_1 = require("./getOptions");
13
+ const dev = async (sourceDir, outputDir, port = 5000, addr = "127.0.0.1") => {
14
+ const opts = (0, getOptions_1.getOptions)({ outputDir, sourceDir });
15
+ sourceDir = opts.sourceDir;
16
+ outputDir = opts.outputDir;
17
+ if (!(await (0, fileExist_1.fileExists)(sourceDir)))
18
+ throw `source directory doesn't exist`;
19
+ await (0, build_1.build)({ sourceDir, outputDir, hotRestart: true });
20
+ let building = false;
21
+ let rebuild = false;
22
+ const events = new stream_1.EventEmitter();
23
+ const watcher = (0, node_watch_1.default)(sourceDir, { recursive: true }, async (_event, _) => {
24
+ if (building) {
25
+ rebuild = true;
26
+ return;
27
+ }
28
+ building = true;
29
+ await (0, build_1.build)({ sourceDir, outputDir, hotRestart: true });
30
+ if (rebuild)
31
+ await (0, build_1.build)({ sourceDir, outputDir, hotRestart: true });
32
+ events.emit("built");
33
+ building = false;
34
+ });
35
+ const app = (0, express_1.default)();
36
+ let firstRequest = true;
37
+ app.get("/compdate.txt", (_request, reply) => {
38
+ if (firstRequest) {
39
+ firstRequest = false;
40
+ reply.send({ reload: true });
41
+ return;
42
+ }
43
+ const lastListener = () => reply.send({ reload: true });
44
+ events.once("built", lastListener);
45
+ });
46
+ app.use(express_1.default.static(outputDir));
47
+ let server;
48
+ try {
49
+ server = app.listen(port, addr, () => console["log"](`linstening on ${addr}:${port}`));
50
+ }
51
+ catch (_) {
52
+ console["log"]("error starting local dev server", _);
53
+ }
54
+ return {
55
+ closeWatcher: () => watcher.close(),
56
+ closeServer: () => server.close(),
57
+ };
58
+ };
59
+ exports.dev = dev;
60
+ const cmdDev = async (sourceDir, outputDir, port = 5000, addr = "127.0.0.1") => {
61
+ await (0, exports.dev)(sourceDir, outputDir, port, addr);
62
+ };
63
+ exports.cmdDev = cmdDev;
@@ -0,0 +1 @@
1
+ export declare const cmdGenerate: (item: string, path: string) => Promise<void>;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cmdGenerate = void 0;
4
+ const colorette_1 = require("colorette");
5
+ const promises_1 = require("fs/promises");
6
+ const path_1 = require("path");
7
+ const generateItems_1 = require("./generateItems");
8
+ const getOptions_1 = require("./getOptions");
9
+ const cmdGenerate = async (item, path) => {
10
+ const { sourceDir } = (0, getOptions_1.getOptions)();
11
+ const name = (0, path_1.basename)(path);
12
+ if (!generateItems_1.validItems.includes(item)) {
13
+ console["log"]((0, colorette_1.red)(`item "${item}" does not exist`));
14
+ return;
15
+ }
16
+ if (item === "component" || item === "c") {
17
+ const { css, ts } = (0, generateItems_1.componentItem)(name);
18
+ if (path.slice(0, 2) !== "./")
19
+ path = (0, path_1.join)("comps", path);
20
+ const tsFilePath = (0, path_1.join)(sourceDir, path, `${name}.ts`);
21
+ const cssFilePath = (0, path_1.join)(sourceDir, path, `${name}.css`);
22
+ const tsDir = (0, path_1.dirname)(tsFilePath);
23
+ await (0, promises_1.mkdir)(tsDir, { recursive: true });
24
+ await (0, promises_1.writeFile)(tsFilePath, ts, { encoding: "utf-8" });
25
+ await (0, promises_1.writeFile)(cssFilePath, css, { encoding: "utf-8" });
26
+ }
27
+ if (item === "page" || item === "p") {
28
+ const { css, ts, back, html } = (0, generateItems_1.pageItem)(name);
29
+ const tsFilePath = (0, path_1.join)(sourceDir, `${path}.page.ts`);
30
+ const cssFilePath = (0, path_1.join)(sourceDir, `${path}.page.css`);
31
+ const htmlFilePath = (0, path_1.join)(sourceDir, `${path}.page.html`);
32
+ const backFilePath = (0, path_1.join)(sourceDir, `${path}.back.ts`);
33
+ const tsDir = (0, path_1.dirname)(tsFilePath);
34
+ await (0, promises_1.mkdir)(tsDir, { recursive: true });
35
+ await (0, promises_1.writeFile)(tsFilePath, ts, { encoding: "utf-8" });
36
+ await (0, promises_1.writeFile)(cssFilePath, css, { encoding: "utf-8" });
37
+ await (0, promises_1.writeFile)(htmlFilePath, html, { encoding: "utf-8" });
38
+ await (0, promises_1.writeFile)(backFilePath, back, { encoding: "utf-8" });
39
+ }
40
+ };
41
+ exports.cmdGenerate = cmdGenerate;
@@ -0,0 +1 @@
1
+ export declare const cmdInit: (sourceDir?: string, outputDir?: string) => Promise<void>;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cmdInit = void 0;
4
+ const promises_1 = require("fs/promises");
5
+ const path_1 = require("path");
6
+ const buildLoaders_1 = require("./buildLoaders");
7
+ const copyDir_1 = require("./copyDir");
8
+ const createModFile_1 = require("./createModFile");
9
+ const createTsConfigFile_1 = require("./createTsConfigFile");
10
+ const fileExist_1 = require("./fileExist");
11
+ const getOptions_1 = require("./getOptions");
12
+ const libFiles_ts_1 = require("./libFiles.ts");
13
+ const cmdInit = async (sourceDir, outputDir) => {
14
+ const options = (0, getOptions_1.getOptions)({ sourceDir, outputDir });
15
+ sourceDir = options.sourceDir;
16
+ await (0, promises_1.writeFile)("tkeron.json", JSON.stringify(options, null, 4));
17
+ await (0, createTsConfigFile_1.createTsConfigFile)();
18
+ if (!await (0, fileExist_1.fileExists)(sourceDir))
19
+ await (0, promises_1.mkdir)(sourceDir, { recursive: true });
20
+ const tklibs = (0, path_1.join)(sourceDir, "tklibs");
21
+ if (!await (0, fileExist_1.fileExists)(tklibs))
22
+ await (0, promises_1.mkdir)(tklibs, { recursive: true });
23
+ for (const file of libFiles_ts_1.libFiles) {
24
+ const dest = (0, path_1.join)(tklibs, file);
25
+ const src = (0, path_1.join)(__dirname, "..", "distFiles", file);
26
+ await (0, promises_1.copyFile)(src, dest);
27
+ }
28
+ await (0, createModFile_1.createModFile)(sourceDir);
29
+ const extModules = (0, buildLoaders_1.getExtModules)();
30
+ const extModName = (0, path_1.join)(tklibs, "extensions.d.ts");
31
+ await (0, promises_1.writeFile)(extModName, extModules, { encoding: "utf-8" });
32
+ const rxjsSrc = (0, path_1.join)(__dirname, "..", "node_modules", "rxjs", "src");
33
+ const rxjsDest = (0, path_1.join)(tklibs, "rxjs");
34
+ await (0, copyDir_1.copyDir)(rxjsSrc, rxjsDest);
35
+ };
36
+ exports.cmdInit = cmdInit;
@@ -0,0 +1 @@
1
+ export declare const copyDir: (sourceDir: string, outputDir: string) => Promise<void>;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.copyDir = void 0;
4
+ const promises_1 = require("fs/promises");
5
+ const path_1 = require("path");
6
+ const fileExist_1 = require("./fileExist");
7
+ const getFilesRecursive_1 = require("./getFilesRecursive");
8
+ const copyDir = async (sourceDir, outputDir) => {
9
+ for (const file of (0, getFilesRecursive_1.getFilesRecursive)(sourceDir, { useDirectoryBase: true })) {
10
+ const sourcePath = (0, path_1.join)(sourceDir, file);
11
+ const outPath = (0, path_1.join)(outputDir, file);
12
+ const dir = (0, path_1.dirname)(outPath);
13
+ if (!await (0, fileExist_1.fileExists)(dir))
14
+ await (0, promises_1.mkdir)(dir, { recursive: true });
15
+ await (0, promises_1.copyFile)(sourcePath, outPath);
16
+ }
17
+ };
18
+ exports.copyDir = copyDir;
@@ -0,0 +1 @@
1
+ export declare const createModFile: (sourceDir: string) => Promise<void>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createModFile = void 0;
4
+ const promises_1 = require("fs/promises");
5
+ const path_1 = require("path");
6
+ const libFiles_ts_1 = require("./libFiles.ts");
7
+ const createModFile = async (sourceDir) => {
8
+ let modFile = "";
9
+ const modFilePath = (0, path_1.join)(sourceDir, "tklibs", "mod.ts");
10
+ for (const file of libFiles_ts_1.libFiles)
11
+ modFile += `export * from "./${file.replace(/\.ts$/, "")}";\n`;
12
+ await (0, promises_1.writeFile)(modFilePath, modFile, { encoding: "utf-8" });
13
+ };
14
+ exports.createModFile = createModFile;
@@ -0,0 +1 @@
1
+ export declare const createTsConfigFile: () => Promise<void>;