create-microact-app 1.0.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.
Files changed (213) hide show
  1. package/index.js +95 -0
  2. package/package.json +21 -0
  3. package/templates/vanilla/.github/workflows/deploy.yml +38 -0
  4. package/templates/vanilla/index.html +13 -0
  5. package/templates/vanilla/node_modules/.package-lock.json +207 -0
  6. package/templates/vanilla/node_modules/@esbuild/darwin-x64/README.md +3 -0
  7. package/templates/vanilla/node_modules/@esbuild/darwin-x64/bin/esbuild +0 -0
  8. package/templates/vanilla/node_modules/@esbuild/darwin-x64/package.json +17 -0
  9. package/templates/vanilla/node_modules/@monygroupcorp/microact/README.md +154 -0
  10. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.cjs.js +1749 -0
  11. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.cjs.js.map +1 -0
  12. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.esm.js +1743 -0
  13. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.esm.js.map +1 -0
  14. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.umd.js +2 -0
  15. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.umd.js.map +1 -0
  16. package/templates/vanilla/node_modules/@monygroupcorp/microact/example/index.html +13 -0
  17. package/templates/vanilla/node_modules/@monygroupcorp/microact/example/index.js +63 -0
  18. package/templates/vanilla/node_modules/@monygroupcorp/microact/package.json +38 -0
  19. package/templates/vanilla/node_modules/@monygroupcorp/microact/rollup.config.cjs +30 -0
  20. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/Component.js +831 -0
  21. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/DOMUpdater.js +320 -0
  22. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/EventBus.js +123 -0
  23. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/Router.js +253 -0
  24. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/UpdateScheduler.js +218 -0
  25. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/index.js +6 -0
  26. package/templates/vanilla/node_modules/esbuild/LICENSE.md +21 -0
  27. package/templates/vanilla/node_modules/esbuild/README.md +3 -0
  28. package/templates/vanilla/node_modules/esbuild/bin/esbuild +0 -0
  29. package/templates/vanilla/node_modules/esbuild/install.js +287 -0
  30. package/templates/vanilla/node_modules/esbuild/lib/main.d.ts +660 -0
  31. package/templates/vanilla/node_modules/esbuild/lib/main.js +2393 -0
  32. package/templates/vanilla/node_modules/esbuild/package.json +42 -0
  33. package/templates/vanilla/node_modules/nanoid/LICENSE +20 -0
  34. package/templates/vanilla/node_modules/nanoid/README.md +39 -0
  35. package/templates/vanilla/node_modules/nanoid/async/index.browser.cjs +69 -0
  36. package/templates/vanilla/node_modules/nanoid/async/index.browser.js +34 -0
  37. package/templates/vanilla/node_modules/nanoid/async/index.cjs +71 -0
  38. package/templates/vanilla/node_modules/nanoid/async/index.d.ts +56 -0
  39. package/templates/vanilla/node_modules/nanoid/async/index.js +35 -0
  40. package/templates/vanilla/node_modules/nanoid/async/index.native.js +26 -0
  41. package/templates/vanilla/node_modules/nanoid/async/package.json +12 -0
  42. package/templates/vanilla/node_modules/nanoid/bin/nanoid.cjs +55 -0
  43. package/templates/vanilla/node_modules/nanoid/index.browser.cjs +72 -0
  44. package/templates/vanilla/node_modules/nanoid/index.browser.js +34 -0
  45. package/templates/vanilla/node_modules/nanoid/index.cjs +85 -0
  46. package/templates/vanilla/node_modules/nanoid/index.d.cts +91 -0
  47. package/templates/vanilla/node_modules/nanoid/index.d.ts +91 -0
  48. package/templates/vanilla/node_modules/nanoid/index.js +45 -0
  49. package/templates/vanilla/node_modules/nanoid/nanoid.js +1 -0
  50. package/templates/vanilla/node_modules/nanoid/non-secure/index.cjs +34 -0
  51. package/templates/vanilla/node_modules/nanoid/non-secure/index.d.ts +33 -0
  52. package/templates/vanilla/node_modules/nanoid/non-secure/index.js +21 -0
  53. package/templates/vanilla/node_modules/nanoid/non-secure/package.json +6 -0
  54. package/templates/vanilla/node_modules/nanoid/package.json +89 -0
  55. package/templates/vanilla/node_modules/nanoid/url-alphabet/index.cjs +7 -0
  56. package/templates/vanilla/node_modules/nanoid/url-alphabet/index.js +3 -0
  57. package/templates/vanilla/node_modules/nanoid/url-alphabet/package.json +6 -0
  58. package/templates/vanilla/node_modules/picocolors/LICENSE +15 -0
  59. package/templates/vanilla/node_modules/picocolors/README.md +21 -0
  60. package/templates/vanilla/node_modules/picocolors/package.json +25 -0
  61. package/templates/vanilla/node_modules/picocolors/picocolors.browser.js +4 -0
  62. package/templates/vanilla/node_modules/picocolors/picocolors.d.ts +5 -0
  63. package/templates/vanilla/node_modules/picocolors/picocolors.js +75 -0
  64. package/templates/vanilla/node_modules/picocolors/types.d.ts +51 -0
  65. package/templates/vanilla/node_modules/postcss/LICENSE +20 -0
  66. package/templates/vanilla/node_modules/postcss/README.md +29 -0
  67. package/templates/vanilla/node_modules/postcss/lib/at-rule.d.ts +140 -0
  68. package/templates/vanilla/node_modules/postcss/lib/at-rule.js +25 -0
  69. package/templates/vanilla/node_modules/postcss/lib/comment.d.ts +68 -0
  70. package/templates/vanilla/node_modules/postcss/lib/comment.js +13 -0
  71. package/templates/vanilla/node_modules/postcss/lib/container.d.ts +483 -0
  72. package/templates/vanilla/node_modules/postcss/lib/container.js +447 -0
  73. package/templates/vanilla/node_modules/postcss/lib/css-syntax-error.d.ts +248 -0
  74. package/templates/vanilla/node_modules/postcss/lib/css-syntax-error.js +133 -0
  75. package/templates/vanilla/node_modules/postcss/lib/declaration.d.ts +151 -0
  76. package/templates/vanilla/node_modules/postcss/lib/declaration.js +24 -0
  77. package/templates/vanilla/node_modules/postcss/lib/document.d.ts +69 -0
  78. package/templates/vanilla/node_modules/postcss/lib/document.js +33 -0
  79. package/templates/vanilla/node_modules/postcss/lib/fromJSON.d.ts +9 -0
  80. package/templates/vanilla/node_modules/postcss/lib/fromJSON.js +54 -0
  81. package/templates/vanilla/node_modules/postcss/lib/input.d.ts +227 -0
  82. package/templates/vanilla/node_modules/postcss/lib/input.js +265 -0
  83. package/templates/vanilla/node_modules/postcss/lib/lazy-result.d.ts +190 -0
  84. package/templates/vanilla/node_modules/postcss/lib/lazy-result.js +550 -0
  85. package/templates/vanilla/node_modules/postcss/lib/list.d.ts +60 -0
  86. package/templates/vanilla/node_modules/postcss/lib/list.js +58 -0
  87. package/templates/vanilla/node_modules/postcss/lib/map-generator.js +368 -0
  88. package/templates/vanilla/node_modules/postcss/lib/no-work-result.d.ts +46 -0
  89. package/templates/vanilla/node_modules/postcss/lib/no-work-result.js +138 -0
  90. package/templates/vanilla/node_modules/postcss/lib/node.d.ts +556 -0
  91. package/templates/vanilla/node_modules/postcss/lib/node.js +449 -0
  92. package/templates/vanilla/node_modules/postcss/lib/parse.d.ts +9 -0
  93. package/templates/vanilla/node_modules/postcss/lib/parse.js +42 -0
  94. package/templates/vanilla/node_modules/postcss/lib/parser.js +611 -0
  95. package/templates/vanilla/node_modules/postcss/lib/postcss.d.mts +69 -0
  96. package/templates/vanilla/node_modules/postcss/lib/postcss.d.ts +458 -0
  97. package/templates/vanilla/node_modules/postcss/lib/postcss.js +101 -0
  98. package/templates/vanilla/node_modules/postcss/lib/postcss.mjs +30 -0
  99. package/templates/vanilla/node_modules/postcss/lib/previous-map.d.ts +81 -0
  100. package/templates/vanilla/node_modules/postcss/lib/previous-map.js +144 -0
  101. package/templates/vanilla/node_modules/postcss/lib/processor.d.ts +115 -0
  102. package/templates/vanilla/node_modules/postcss/lib/processor.js +67 -0
  103. package/templates/vanilla/node_modules/postcss/lib/result.d.ts +205 -0
  104. package/templates/vanilla/node_modules/postcss/lib/result.js +42 -0
  105. package/templates/vanilla/node_modules/postcss/lib/root.d.ts +87 -0
  106. package/templates/vanilla/node_modules/postcss/lib/root.js +61 -0
  107. package/templates/vanilla/node_modules/postcss/lib/rule.d.ts +126 -0
  108. package/templates/vanilla/node_modules/postcss/lib/rule.js +27 -0
  109. package/templates/vanilla/node_modules/postcss/lib/stringifier.d.ts +46 -0
  110. package/templates/vanilla/node_modules/postcss/lib/stringifier.js +353 -0
  111. package/templates/vanilla/node_modules/postcss/lib/stringify.d.ts +9 -0
  112. package/templates/vanilla/node_modules/postcss/lib/stringify.js +11 -0
  113. package/templates/vanilla/node_modules/postcss/lib/symbols.js +5 -0
  114. package/templates/vanilla/node_modules/postcss/lib/terminal-highlight.js +70 -0
  115. package/templates/vanilla/node_modules/postcss/lib/tokenize.js +266 -0
  116. package/templates/vanilla/node_modules/postcss/lib/warn-once.js +13 -0
  117. package/templates/vanilla/node_modules/postcss/lib/warning.d.ts +147 -0
  118. package/templates/vanilla/node_modules/postcss/lib/warning.js +37 -0
  119. package/templates/vanilla/node_modules/postcss/package.json +88 -0
  120. package/templates/vanilla/node_modules/rollup/LICENSE.md +695 -0
  121. package/templates/vanilla/node_modules/rollup/README.md +125 -0
  122. package/templates/vanilla/node_modules/rollup/dist/bin/rollup +1715 -0
  123. package/templates/vanilla/node_modules/rollup/dist/es/getLogFilter.js +64 -0
  124. package/templates/vanilla/node_modules/rollup/dist/es/package.json +1 -0
  125. package/templates/vanilla/node_modules/rollup/dist/es/rollup.js +17 -0
  126. package/templates/vanilla/node_modules/rollup/dist/es/shared/node-entry.js +27273 -0
  127. package/templates/vanilla/node_modules/rollup/dist/es/shared/watch.js +4857 -0
  128. package/templates/vanilla/node_modules/rollup/dist/getLogFilter.d.ts +5 -0
  129. package/templates/vanilla/node_modules/rollup/dist/getLogFilter.js +69 -0
  130. package/templates/vanilla/node_modules/rollup/dist/loadConfigFile.d.ts +20 -0
  131. package/templates/vanilla/node_modules/rollup/dist/loadConfigFile.js +29 -0
  132. package/templates/vanilla/node_modules/rollup/dist/rollup.d.ts +1012 -0
  133. package/templates/vanilla/node_modules/rollup/dist/rollup.js +31 -0
  134. package/templates/vanilla/node_modules/rollup/dist/shared/fsevents-importer.js +37 -0
  135. package/templates/vanilla/node_modules/rollup/dist/shared/index.js +4571 -0
  136. package/templates/vanilla/node_modules/rollup/dist/shared/loadConfigFile.js +546 -0
  137. package/templates/vanilla/node_modules/rollup/dist/shared/rollup.js +27351 -0
  138. package/templates/vanilla/node_modules/rollup/dist/shared/watch-cli.js +561 -0
  139. package/templates/vanilla/node_modules/rollup/dist/shared/watch-proxy.js +87 -0
  140. package/templates/vanilla/node_modules/rollup/dist/shared/watch.js +316 -0
  141. package/templates/vanilla/node_modules/rollup/package.json +181 -0
  142. package/templates/vanilla/node_modules/source-map-js/LICENSE +28 -0
  143. package/templates/vanilla/node_modules/source-map-js/README.md +765 -0
  144. package/templates/vanilla/node_modules/source-map-js/lib/array-set.js +121 -0
  145. package/templates/vanilla/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  146. package/templates/vanilla/node_modules/source-map-js/lib/base64.js +67 -0
  147. package/templates/vanilla/node_modules/source-map-js/lib/binary-search.js +111 -0
  148. package/templates/vanilla/node_modules/source-map-js/lib/mapping-list.js +79 -0
  149. package/templates/vanilla/node_modules/source-map-js/lib/quick-sort.js +132 -0
  150. package/templates/vanilla/node_modules/source-map-js/lib/source-map-consumer.d.ts +1 -0
  151. package/templates/vanilla/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  152. package/templates/vanilla/node_modules/source-map-js/lib/source-map-generator.d.ts +1 -0
  153. package/templates/vanilla/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  154. package/templates/vanilla/node_modules/source-map-js/lib/source-node.d.ts +1 -0
  155. package/templates/vanilla/node_modules/source-map-js/lib/source-node.js +413 -0
  156. package/templates/vanilla/node_modules/source-map-js/lib/util.js +594 -0
  157. package/templates/vanilla/node_modules/source-map-js/package.json +71 -0
  158. package/templates/vanilla/node_modules/source-map-js/source-map.d.ts +104 -0
  159. package/templates/vanilla/node_modules/source-map-js/source-map.js +8 -0
  160. package/templates/vanilla/node_modules/vite/LICENSE.md +3396 -0
  161. package/templates/vanilla/node_modules/vite/README.md +20 -0
  162. package/templates/vanilla/node_modules/vite/bin/openChrome.applescript +95 -0
  163. package/templates/vanilla/node_modules/vite/bin/vite.js +61 -0
  164. package/templates/vanilla/node_modules/vite/client.d.ts +281 -0
  165. package/templates/vanilla/node_modules/vite/dist/client/client.mjs +725 -0
  166. package/templates/vanilla/node_modules/vite/dist/client/client.mjs.map +1 -0
  167. package/templates/vanilla/node_modules/vite/dist/client/env.mjs +30 -0
  168. package/templates/vanilla/node_modules/vite/dist/client/env.mjs.map +1 -0
  169. package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-7ec6f216.js +914 -0
  170. package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-827b23df.js +66713 -0
  171. package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-c423598f.js +561 -0
  172. package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-f0c7dae0.js +7930 -0
  173. package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-f1e8587f.js +7646 -0
  174. package/templates/vanilla/node_modules/vite/dist/node/cli.js +929 -0
  175. package/templates/vanilla/node_modules/vite/dist/node/constants.js +130 -0
  176. package/templates/vanilla/node_modules/vite/dist/node/index.d.ts +3548 -0
  177. package/templates/vanilla/node_modules/vite/dist/node/index.js +158 -0
  178. package/templates/vanilla/node_modules/vite/dist/node-cjs/publicUtils.cjs +4555 -0
  179. package/templates/vanilla/node_modules/vite/index.cjs +34 -0
  180. package/templates/vanilla/node_modules/vite/package.json +173 -0
  181. package/templates/vanilla/node_modules/vite/types/customEvent.d.ts +35 -0
  182. package/templates/vanilla/node_modules/vite/types/hmrPayload.d.ts +61 -0
  183. package/templates/vanilla/node_modules/vite/types/hot.d.ts +32 -0
  184. package/templates/vanilla/node_modules/vite/types/importGlob.d.ts +97 -0
  185. package/templates/vanilla/node_modules/vite/types/importMeta.d.ts +26 -0
  186. package/templates/vanilla/node_modules/vite/types/metadata.d.ts +10 -0
  187. package/templates/vanilla/node_modules/vite/types/package.json +4 -0
  188. package/templates/vanilla/package-lock.json +589 -0
  189. package/templates/vanilla/package.json +17 -0
  190. package/templates/vanilla/src/components/App.js +60 -0
  191. package/templates/vanilla/src/components/Card.js +21 -0
  192. package/templates/vanilla/src/components/Hero.js +15 -0
  193. package/templates/vanilla/src/components/InteractiveDemo.js +59 -0
  194. package/templates/vanilla/src/main.js +9 -0
  195. package/templates/vanilla/src/style/main.css +172 -0
  196. package/templates/vanilla/vite.config.js +8 -0
  197. package/templates/web3/.env.example +15 -0
  198. package/templates/web3/.github/workflows/deploy.yml +38 -0
  199. package/templates/web3/README.md +33 -0
  200. package/templates/web3/contracts/foundry.toml +11 -0
  201. package/templates/web3/contracts/script/Deploy.s.sol +13 -0
  202. package/templates/web3/contracts/src/Counter.sol +21 -0
  203. package/templates/web3/index.html +13 -0
  204. package/templates/web3/package.json +25 -0
  205. package/templates/web3/scripts/chain-start.mjs +305 -0
  206. package/templates/web3/scripts/chain-stop.mjs +34 -0
  207. package/templates/web3/scripts/deploy.mjs +155 -0
  208. package/templates/web3/scripts/setup.mjs +42 -0
  209. package/templates/web3/src/components/App.js +49 -0
  210. package/templates/web3/src/components/CounterCard.js +111 -0
  211. package/templates/web3/src/main.js +54 -0
  212. package/templates/web3/src/style/main.css +345 -0
  213. package/templates/web3/vite.config.js +29 -0
package/index.js ADDED
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env node
2
+
3
+ import path from 'path';
4
+ import fs from 'fs';
5
+ import { fileURLToPath } from 'url';
6
+
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = path.dirname(__filename);
9
+
10
+ function copyDir(src, dest) {
11
+ fs.mkdirSync(dest, { recursive: true });
12
+ let entries = fs.readdirSync(src, { withFileTypes: true });
13
+
14
+ for (let entry of entries) {
15
+ let srcPath = path.join(src, entry.name);
16
+ let destPath = path.join(dest, entry.name);
17
+
18
+ entry.isDirectory() ? copyDir(srcPath, destPath) : fs.copyFileSync(srcPath, destPath);
19
+ }
20
+ }
21
+
22
+ function main() {
23
+ const argv = process.argv.slice(2);
24
+ let projectName = 'my-microact-app';
25
+ let templateName = 'vanilla';
26
+
27
+ // Basic argument parsing for project name and --template flag
28
+ for (let i = 0; i < argv.length; i++) {
29
+ if (argv[i].startsWith('--template=')) {
30
+ templateName = argv[i].split('=')[1];
31
+ } else if (argv[i] === '--template' && argv[i + 1]) {
32
+ templateName = argv[i + 1];
33
+ i++; // Skip next arg
34
+ } else if (!argv[i].startsWith('-')) {
35
+ projectName = argv[i];
36
+ }
37
+ }
38
+
39
+ const root = path.join(process.cwd(), projectName);
40
+ const templateDir = path.join(__dirname, 'templates', templateName);
41
+
42
+ if (!fs.existsSync(templateDir)) {
43
+ console.error(`Error: Template "${templateName}" not found.`);
44
+ process.exit(1);
45
+ }
46
+
47
+ console.log(`Creating a new Microact app in ${root}...`);
48
+
49
+ copyDir(templateDir, root);
50
+
51
+ // Post-copy modifications: replace <repo-name> in vite.config.js and package.json
52
+ const viteConfigPath = path.join(root, 'vite.config.js');
53
+ if (fs.existsSync(viteConfigPath)) {
54
+ let content = fs.readFileSync(viteConfigPath, 'utf8');
55
+ // Simple placeholder for now, user will need to update this
56
+ content = content.replace('/<repo-name>/', `/${projectName}/`);
57
+ fs.writeFileSync(viteConfigPath, content);
58
+ }
59
+
60
+ const packageJsonPath = path.join(root, 'package.json');
61
+ if (fs.existsSync(packageJsonPath)) {
62
+ let content = fs.readFileSync(packageJsonPath, 'utf8');
63
+ content = content.replace('"name": "my-app"', `"name": "${projectName}"`);
64
+ fs.writeFileSync(packageJsonPath, content, 'utf8');
65
+ }
66
+
67
+ // --- Start of new logic ---
68
+ // Check if we're in the monorepo for local development
69
+ const isLocalDev = fs.existsSync(path.join(__dirname, '../microact'));
70
+
71
+ if (isLocalDev) {
72
+ console.log('Local development mode detected. Adjusting dependencies...');
73
+ const appPackageJsonPath = path.join(root, 'package.json');
74
+ if (fs.existsSync(appPackageJsonPath)) {
75
+ const appPkg = JSON.parse(fs.readFileSync(appPackageJsonPath, 'utf8'));
76
+
77
+ if (appPkg.dependencies['@monygroupcorp/microact']) {
78
+ appPkg.dependencies['@monygroupcorp/microact'] = 'file:../microact';
79
+ }
80
+ if (appPkg.dependencies['@monygroupcorp/micro-web3']) {
81
+ appPkg.dependencies['@monygroupcorp/micro-web3'] = 'file:../micro-web3';
82
+ }
83
+
84
+ fs.writeFileSync(appPackageJsonPath, JSON.stringify(appPkg, null, 2));
85
+ }
86
+ }
87
+ // --- End of new logic ---
88
+
89
+ console.log('\nDone. Now run:');
90
+ console.log(` cd ${projectName}`);
91
+ console.log(' npm install');
92
+ console.log(' npm run dev');
93
+ }
94
+
95
+ main();
package/package.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "create-microact-app",
3
+ "version": "1.0.1",
4
+ "type": "module",
5
+ "description": "A CLI tool to scaffold Microact and Micro-Web3 applications.",
6
+ "main": "index.js",
7
+ "bin": {
8
+ "create-microact-app": "./index.js"
9
+ },
10
+ "scripts": {
11
+ "test": "echo \"Error: no test specified\" && exit 1"
12
+ },
13
+ "keywords": [
14
+ "microact",
15
+ "micro-web3",
16
+ "scaffolding",
17
+ "vite"
18
+ ],
19
+ "author": "Monygroup Corp",
20
+ "license": "ISC"
21
+ }
@@ -0,0 +1,38 @@
1
+ name: Deploy to GitHub Pages
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ jobs:
9
+ build-and-deploy:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - name: Checkout
14
+ uses: actions/checkout@v3
15
+
16
+ - name: Setup Node.js
17
+ uses: actions/setup-node@v3
18
+ with:
19
+ node-version: '18'
20
+ cache: 'npm'
21
+
22
+ - name: Install dependencies
23
+ run: npm install
24
+
25
+ - name: Build
26
+ run: npm run build
27
+
28
+ - name: Deploy
29
+ uses: peaceiris/actions-gh-pages@v3
30
+ with:
31
+ github_token: ${{ secrets.GITHUB_TOKEN }}
32
+ publish_dir: ./dist
33
+ # This is important for single-page applications that use client-side routing
34
+ # This ensures that all requests are routed to index.html
35
+ # enabling proper routing after refresh or direct URL access
36
+ keep_files: false # Ensure existing files are overwritten
37
+ force_orphan: true # Create a fresh gh-pages branch each time
38
+ enable_jekyll: false # Disable Jekyll processing
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>Vite + Microact</title>
8
+ </head>
9
+ <body>
10
+ <div id="app"></div>
11
+ <script type="module" src="/src/main.js"></script>
12
+ </body>
13
+ </html>
@@ -0,0 +1,207 @@
1
+ {
2
+ "name": "my-app",
3
+ "version": "0.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "node_modules/@esbuild/darwin-x64": {
8
+ "version": "0.18.20",
9
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
10
+ "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
11
+ "cpu": [
12
+ "x64"
13
+ ],
14
+ "dev": true,
15
+ "license": "MIT",
16
+ "optional": true,
17
+ "os": [
18
+ "darwin"
19
+ ],
20
+ "engines": {
21
+ "node": ">=12"
22
+ }
23
+ },
24
+ "node_modules/@monygroupcorp/microact": {
25
+ "version": "0.1.1",
26
+ "resolved": "https://registry.npmjs.org/@monygroupcorp/microact/-/microact-0.1.1.tgz",
27
+ "integrity": "sha512-DaA02WzBEMiznRPvf/j+Oakp64N3A1ZqyVUN6SYZgBl10M570AAcfHFgQOTg/23K8bwn6Hk4GHY9DTuGYbWo9g==",
28
+ "license": "MIT"
29
+ },
30
+ "node_modules/esbuild": {
31
+ "version": "0.18.20",
32
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
33
+ "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
34
+ "dev": true,
35
+ "hasInstallScript": true,
36
+ "license": "MIT",
37
+ "bin": {
38
+ "esbuild": "bin/esbuild"
39
+ },
40
+ "engines": {
41
+ "node": ">=12"
42
+ },
43
+ "optionalDependencies": {
44
+ "@esbuild/android-arm": "0.18.20",
45
+ "@esbuild/android-arm64": "0.18.20",
46
+ "@esbuild/android-x64": "0.18.20",
47
+ "@esbuild/darwin-arm64": "0.18.20",
48
+ "@esbuild/darwin-x64": "0.18.20",
49
+ "@esbuild/freebsd-arm64": "0.18.20",
50
+ "@esbuild/freebsd-x64": "0.18.20",
51
+ "@esbuild/linux-arm": "0.18.20",
52
+ "@esbuild/linux-arm64": "0.18.20",
53
+ "@esbuild/linux-ia32": "0.18.20",
54
+ "@esbuild/linux-loong64": "0.18.20",
55
+ "@esbuild/linux-mips64el": "0.18.20",
56
+ "@esbuild/linux-ppc64": "0.18.20",
57
+ "@esbuild/linux-riscv64": "0.18.20",
58
+ "@esbuild/linux-s390x": "0.18.20",
59
+ "@esbuild/linux-x64": "0.18.20",
60
+ "@esbuild/netbsd-x64": "0.18.20",
61
+ "@esbuild/openbsd-x64": "0.18.20",
62
+ "@esbuild/sunos-x64": "0.18.20",
63
+ "@esbuild/win32-arm64": "0.18.20",
64
+ "@esbuild/win32-ia32": "0.18.20",
65
+ "@esbuild/win32-x64": "0.18.20"
66
+ }
67
+ },
68
+ "node_modules/nanoid": {
69
+ "version": "3.3.11",
70
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
71
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
72
+ "dev": true,
73
+ "funding": [
74
+ {
75
+ "type": "github",
76
+ "url": "https://github.com/sponsors/ai"
77
+ }
78
+ ],
79
+ "license": "MIT",
80
+ "bin": {
81
+ "nanoid": "bin/nanoid.cjs"
82
+ },
83
+ "engines": {
84
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
85
+ }
86
+ },
87
+ "node_modules/picocolors": {
88
+ "version": "1.1.1",
89
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
90
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
91
+ "dev": true,
92
+ "license": "ISC"
93
+ },
94
+ "node_modules/postcss": {
95
+ "version": "8.5.6",
96
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
97
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
98
+ "dev": true,
99
+ "funding": [
100
+ {
101
+ "type": "opencollective",
102
+ "url": "https://opencollective.com/postcss/"
103
+ },
104
+ {
105
+ "type": "tidelift",
106
+ "url": "https://tidelift.com/funding/github/npm/postcss"
107
+ },
108
+ {
109
+ "type": "github",
110
+ "url": "https://github.com/sponsors/ai"
111
+ }
112
+ ],
113
+ "license": "MIT",
114
+ "dependencies": {
115
+ "nanoid": "^3.3.11",
116
+ "picocolors": "^1.1.1",
117
+ "source-map-js": "^1.2.1"
118
+ },
119
+ "engines": {
120
+ "node": "^10 || ^12 || >=14"
121
+ }
122
+ },
123
+ "node_modules/rollup": {
124
+ "version": "3.29.5",
125
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz",
126
+ "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==",
127
+ "dev": true,
128
+ "license": "MIT",
129
+ "bin": {
130
+ "rollup": "dist/bin/rollup"
131
+ },
132
+ "engines": {
133
+ "node": ">=14.18.0",
134
+ "npm": ">=8.0.0"
135
+ },
136
+ "optionalDependencies": {
137
+ "fsevents": "~2.3.2"
138
+ }
139
+ },
140
+ "node_modules/source-map-js": {
141
+ "version": "1.2.1",
142
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
143
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
144
+ "dev": true,
145
+ "license": "BSD-3-Clause",
146
+ "engines": {
147
+ "node": ">=0.10.0"
148
+ }
149
+ },
150
+ "node_modules/vite": {
151
+ "version": "4.5.14",
152
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.14.tgz",
153
+ "integrity": "sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==",
154
+ "dev": true,
155
+ "license": "MIT",
156
+ "dependencies": {
157
+ "esbuild": "^0.18.10",
158
+ "postcss": "^8.4.27",
159
+ "rollup": "^3.27.1"
160
+ },
161
+ "bin": {
162
+ "vite": "bin/vite.js"
163
+ },
164
+ "engines": {
165
+ "node": "^14.18.0 || >=16.0.0"
166
+ },
167
+ "funding": {
168
+ "url": "https://github.com/vitejs/vite?sponsor=1"
169
+ },
170
+ "optionalDependencies": {
171
+ "fsevents": "~2.3.2"
172
+ },
173
+ "peerDependencies": {
174
+ "@types/node": ">= 14",
175
+ "less": "*",
176
+ "lightningcss": "^1.21.0",
177
+ "sass": "*",
178
+ "stylus": "*",
179
+ "sugarss": "*",
180
+ "terser": "^5.4.0"
181
+ },
182
+ "peerDependenciesMeta": {
183
+ "@types/node": {
184
+ "optional": true
185
+ },
186
+ "less": {
187
+ "optional": true
188
+ },
189
+ "lightningcss": {
190
+ "optional": true
191
+ },
192
+ "sass": {
193
+ "optional": true
194
+ },
195
+ "stylus": {
196
+ "optional": true
197
+ },
198
+ "sugarss": {
199
+ "optional": true
200
+ },
201
+ "terser": {
202
+ "optional": true
203
+ }
204
+ }
205
+ }
206
+ }
207
+ }
@@ -0,0 +1,3 @@
1
+ # esbuild
2
+
3
+ This is the macOS 64-bit binary for esbuild, a JavaScript bundler and minifier. See https://github.com/evanw/esbuild for details.
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@esbuild/darwin-x64",
3
+ "version": "0.18.20",
4
+ "description": "The macOS 64-bit binary for esbuild, a JavaScript bundler.",
5
+ "repository": "https://github.com/evanw/esbuild",
6
+ "license": "MIT",
7
+ "preferUnplugged": true,
8
+ "engines": {
9
+ "node": ">=12"
10
+ },
11
+ "os": [
12
+ "darwin"
13
+ ],
14
+ "cpu": [
15
+ "x64"
16
+ ]
17
+ }
@@ -0,0 +1,154 @@
1
+ # microact
2
+
3
+ A lean, minimal React-like framework for building fast and efficient client-side web applications. `microact` focuses on providing core component functionality, state management, and a flexible rendering system without the heavy overhead of larger frameworks.
4
+
5
+ ## Features
6
+
7
+ * **Component-Based:** Build UIs using familiar class-based components with lifecycle methods.
8
+ * **Reactive State:** Simple `this.state` and `this.setState` for managing component-local state.
9
+ * **Granular DOM Updates:** Efficient DOM manipulation to minimize re-renders and optimize performance.
10
+ * **Event Handling:** Declarative event binding for clean and maintainable UI logic.
11
+ * **Context API:** Built-in context system for prop drilling avoidance and global state propagation.
12
+ * **Pluggable Stores:** Designed to integrate seamlessly with external state management solutions.
13
+ * **Small Footprint:** Optimized for client-side execution in statically hosted environments.
14
+
15
+ ## Installation
16
+
17
+ Install `microact` using npm:
18
+
19
+ ```bash
20
+ npm install microact
21
+ ```
22
+
23
+ ## Usage
24
+
25
+ ### 1. Create a Component
26
+
27
+ Create a class that extends `Component` and implements a `render()` method:
28
+
29
+ ```javascript
30
+ // myComponent.js
31
+ import { Component } from 'microact';
32
+
33
+ class MyComponent extends Component {
34
+ constructor(element) {
35
+ super(element);
36
+ this.state = {
37
+ count: 0,
38
+ message: 'Hello, microact!'
39
+ };
40
+ }
41
+
42
+ // Lifecycle method: Called after component is mounted to the DOM
43
+ onMount() {
44
+ console.log('MyComponent mounted!');
45
+ }
46
+
47
+ // Define DOM events
48
+ events() {
49
+ return {
50
+ 'click button': 'incrementCount',
51
+ };
52
+ }
53
+
54
+ incrementCount() {
55
+ this.setState({ count: this.state.count + 1 });
56
+ }
57
+
58
+ // Render method returns an HTML string
59
+ render() {
60
+ return `
61
+ <div>
62
+ <h1>${this.state.message}</h1>
63
+ <p>Count: ${this.state.count}</p>
64
+ <button>Click me!</button>
65
+ </div>
66
+ `;
67
+ }
68
+ }
69
+
70
+ export default MyComponent;
71
+ ```
72
+
73
+ ### 2. Mount Your Component
74
+
75
+ In your main application file, import and mount your component to a DOM element:
76
+
77
+ ```javascript
78
+ // index.js
79
+ import MyComponent from './myComponent.js';
80
+
81
+ const appRoot = document.getElementById('app-root');
82
+ const myComponent = new MyComponent(appRoot);
83
+ myComponent.mount(appRoot);
84
+ ```
85
+
86
+ ### 3. Basic HTML Structure
87
+
88
+ Your HTML file should have a root element for your application:
89
+
90
+ ```html
91
+ <!DOCTYPE html>
92
+ <html lang="en">
93
+ <head>
94
+ <meta charset="UTF-8">
95
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
96
+ <title>Microact App</title>
97
+ </head>
98
+ <body>
99
+ <div id="app-root"></div>
100
+ <script type="module" src="index.js"></script>
101
+ </body>
102
+ </html>
103
+ ```
104
+
105
+ ## API Reference
106
+
107
+ ### `Component` Class
108
+
109
+ * `constructor(rootElement)`: Initializes the component.
110
+ * `setState(newState)`: Updates component state and triggers a re-render if `shouldUpdate` returns `true`.
111
+ * `mount(element)`: Mounts the component to the given DOM element.
112
+ * `unmount()`: Removes the component from the DOM and cleans up resources.
113
+ * `render()`: **(Must be implemented by subclasses)** Returns the HTML string representation of the component.
114
+ * `template()`: Optional. If `render()` is not overridden, it defaults to calling `this.template()`.
115
+ * `onMount()`: Lifecycle hook called after mounting.
116
+ * `onUnmount()`: Lifecycle hook called before unmounting.
117
+ * `onStateUpdate(oldState, newState)`: Lifecycle hook called after state update and before rendering.
118
+ * `events()`: Returns an object mapping event selectors to handler methods (e.g., `{ 'click button': 'handleClick' }`).
119
+ * `registerCleanup(cleanupFn)`: Registers a function to be called on `unmount`.
120
+ * `setTimeout(callback, delay)`: Wrapper for `setTimeout` with automatic cleanup.
121
+ * `setInterval(callback, delay)`: Wrapper for `setInterval` with automatic cleanup.
122
+ * `subscribe(eventName, callback)`: Subscribes to an `EventBus` event with automatic cleanup.
123
+ * `subscribeOnce(eventName, callback)`: Subscribes to an `EventBus` event once with automatic cleanup.
124
+ * `useStore(store, selector, onUpdate)`: Hook to subscribe to external store state changes.
125
+ * `provideContext(key, value)`: Provides a context value to child components.
126
+ * `getContext(key)`: Retrieves a context value from the component tree.
127
+
128
+ ### `EventBus`
129
+
130
+ A simple global event bus for inter-component communication. Access via `import { eventBus } from 'microact';`
131
+
132
+ * `eventBus.on(eventName, callback)`: Subscribe to an event.
133
+ * `eventBus.off(eventName, callback)`: Unsubscribe from an event.
134
+ * `eventBus.emit(eventName, data)`: Emit an event.
135
+ * `eventBus.once(eventName, callback)`: Subscribe to an event once.
136
+
137
+ ## Development
138
+
139
+ To build the project:
140
+
141
+ ```bash
142
+ npm install
143
+ npm run build
144
+ ```
145
+
146
+ The build output will be in the `dist/` directory.
147
+
148
+ ## Contributing
149
+
150
+ Contributions are welcome! Please open an issue or submit a pull request.
151
+
152
+ ## License
153
+
154
+ This project is licensed under the MIT License.