akanjs 2.0.5 → 2.0.7

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 (81) hide show
  1. package/README.ko.md +1 -1
  2. package/README.md +1 -1
  3. package/cli/application/application.command.ts +4 -1
  4. package/cli/application/application.runner.ts +6 -8
  5. package/cli/build.ts +3 -1
  6. package/cli/cloud/cloud.runner.ts +7 -8
  7. package/cli/index.js +288 -115
  8. package/cli/library/library.runner.ts +2 -2
  9. package/cli/module/module.runner.ts +2 -2
  10. package/cli/npmRegistry.ts +13 -0
  11. package/cli/openBrowser.ts +15 -0
  12. package/cli/pluralizeName.ts +5 -0
  13. package/cli/scalar/scalar.prompt.ts +2 -2
  14. package/cli/scalar/scalar.runner.ts +2 -2
  15. package/cli/semver.ts +18 -0
  16. package/cli/templates/lib/sig.ts +2 -2
  17. package/cli/workspace/workspace.runner.ts +3 -3
  18. package/client/cookie.ts +10 -15
  19. package/common/index.ts +1 -0
  20. package/common/jwtDecode.ts +17 -0
  21. package/constant/serialize.ts +1 -1
  22. package/devkit/akanApp/akanApp.host.ts +46 -9
  23. package/devkit/akanConfig/akanConfig.ts +2 -1
  24. package/devkit/capacitor.base.config.ts +18 -4
  25. package/devkit/capacitorApp.ts +118 -64
  26. package/devkit/incrementalBuilder/incrementalBuilder.host.ts +83 -9
  27. package/devkit/mobile/mobileTarget.ts +2 -1
  28. package/devkit/scanInfo.ts +1 -0
  29. package/document/dataLoader.ts +140 -6
  30. package/document/database.ts +1 -1
  31. package/package.json +7 -13
  32. package/server/akanApp.ts +250 -44
  33. package/server/di/diLifecycle.ts +1 -1
  34. package/server/processMetricsCollector.ts +79 -1
  35. package/server/proxy/localeWebProxy.ts +29 -12
  36. package/server/resolver/database.resolver.ts +82 -31
  37. package/server/resolver/signal.resolver.ts +67 -28
  38. package/service/ipcTypes.ts +5 -0
  39. package/service/predefinedAdaptor/database.adaptor.ts +95 -27
  40. package/service/predefinedAdaptor/solidSqlite.ts +7 -7
  41. package/service/predefinedAdaptor/storage.adaptor.ts +35 -9
  42. package/service/serviceModule.ts +1 -6
  43. package/signal/base.signal.ts +1 -1
  44. package/signal/index.ts +1 -0
  45. package/signal/middleware.ts +5 -1
  46. package/signal/signalContext.ts +85 -31
  47. package/signal/signalRegistry.ts +35 -10
  48. package/signal/trace.ts +279 -0
  49. package/types/cli/npmRegistry.d.ts +1 -0
  50. package/types/cli/openBrowser.d.ts +1 -0
  51. package/types/cli/pluralizeName.d.ts +1 -0
  52. package/types/cli/semver.d.ts +1 -0
  53. package/types/client/cookie.d.ts +6 -1
  54. package/types/common/index.d.ts +1 -0
  55. package/types/common/jwtDecode.d.ts +2 -0
  56. package/types/devkit/capacitorApp.d.ts +14 -5
  57. package/types/devkit/incrementalBuilder/incrementalBuilder.host.d.ts +9 -5
  58. package/types/document/dataLoader.d.ts +21 -2
  59. package/types/document/database.d.ts +1 -1
  60. package/types/server/processMetricsCollector.d.ts +2 -0
  61. package/types/service/ipcTypes.d.ts +5 -0
  62. package/types/service/predefinedAdaptor/database.adaptor.d.ts +26 -32
  63. package/types/service/predefinedAdaptor/solidSqlite.d.ts +3 -3
  64. package/types/service/predefinedAdaptor/storage.adaptor.d.ts +8 -2
  65. package/types/service/serviceModule.d.ts +1 -1
  66. package/types/signal/index.d.ts +1 -0
  67. package/types/signal/signalContext.d.ts +4 -1
  68. package/types/signal/signalRegistry.d.ts +25 -4
  69. package/types/signal/trace.d.ts +97 -0
  70. package/types/ui/Signal/style.d.ts +15 -0
  71. package/ui/Signal/Arg.tsx +22 -15
  72. package/ui/Signal/Doc.tsx +30 -24
  73. package/ui/Signal/Listener.tsx +15 -39
  74. package/ui/Signal/Message.tsx +32 -50
  75. package/ui/Signal/Object.tsx +16 -13
  76. package/ui/Signal/PubSub.tsx +29 -47
  77. package/ui/Signal/Response.tsx +7 -17
  78. package/ui/Signal/RestApi.tsx +41 -57
  79. package/ui/Signal/WebSocket.tsx +1 -1
  80. package/ui/Signal/style.ts +36 -0
  81. package/webkit/useCsrValues.ts +147 -37
package/README.ko.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Akan.js
2
2
 
3
- [English](./README.md) | [Docs](https://akanjs.com/docs) | [npm](https://www.npmjs.com/package/akanjs)
3
+ [English](https://unpkg.com/akanjs@latest/README.md) | [Docs](https://akanjs.com/docs) | [npm](https://www.npmjs.com/package/akanjs)
4
4
 
5
5
  **코드가 아니라, 비즈니스를 씁니다.**
6
6
  **Write the business, not the plumbing.**
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Akan.js
2
2
 
3
- [한국어](./README.ko.md) | [Docs](https://akanjs.com/docs) | [npm](https://www.npmjs.com/package/akanjs)
3
+ [한국어](https://unpkg.com/akanjs@latest/README.ko.md) | [Docs](https://akanjs.com/docs) | [npm](https://www.npmjs.com/package/akanjs)
4
4
 
5
5
  **Write the business, not the plumbing.**
6
6
 
@@ -94,7 +94,10 @@ export class ApplicationCommand extends command("application", [ApplicationScrip
94
94
  }),
95
95
  startIos: target({ short: true, desc: "Start iOS app in simulator or device" })
96
96
  .with(App)
97
- .option("target", String, { desc: "mobile target name or all" })
97
+ .option("target", String, {
98
+ ask: "Select mobile target",
99
+ enum: async ({ app }) => await getMobileTargetChoices(app),
100
+ })
98
101
  .option("env", String, {
99
102
  enum: ["local", "debug", "develop", "main"],
100
103
  desc: "backend environment",
@@ -25,8 +25,8 @@ import {
25
25
  type TypecheckOptions,
26
26
  type Workspace,
27
27
  } from "akanjs/devkit";
28
- import openBrowser from "open";
29
28
  import ora from "ora";
29
+ import { openBrowser } from "../openBrowser";
30
30
 
31
31
  export class ApplicationRunner extends runner("application") {
32
32
  async createApplication(appName: string, workspace: Workspace, libs: string[] = []) {
@@ -117,7 +117,7 @@ export class ApplicationRunner extends runner("application") {
117
117
  const targets = await resolveMobileTargets(app, target);
118
118
  await this.#buildMobileCsr(app, env);
119
119
  await this.#runMobileTargets(targets, async (mobileTarget) => {
120
- await new CapacitorApp(app, mobileTarget.config).buildIos({ regenerate });
120
+ await new CapacitorApp(app, mobileTarget.config).buildIos({ env, regenerate });
121
121
  });
122
122
  }
123
123
  async startIos(
@@ -152,7 +152,7 @@ export class ApplicationRunner extends runner("application") {
152
152
  const targets = await resolveMobileTargets(app, target);
153
153
  await this.#buildMobileCsr(app, env);
154
154
  for (const mobileTarget of targets) {
155
- await new CapacitorApp(app, mobileTarget.config).buildIos({ regenerate });
155
+ await new CapacitorApp(app, mobileTarget.config).buildIos({ env, regenerate });
156
156
  }
157
157
  }
158
158
 
@@ -163,7 +163,7 @@ export class ApplicationRunner extends runner("application") {
163
163
  const targets = await resolveMobileTargets(app, target);
164
164
  await this.#buildMobileCsr(app, env);
165
165
  await this.#runMobileTargets(targets, async (mobileTarget) => {
166
- await new CapacitorApp(app, mobileTarget.config).buildAndroid("apk", { regenerate });
166
+ await new CapacitorApp(app, mobileTarget.config).buildAndroid("apk", { env, regenerate });
167
167
  });
168
168
  }
169
169
 
@@ -201,11 +201,9 @@ export class ApplicationRunner extends runner("application") {
201
201
  const targets = await resolveMobileTargets(app, target);
202
202
  await this.#buildMobileCsr(app, env);
203
203
  for (const mobileTarget of targets) {
204
- await new CapacitorApp(app, mobileTarget.config).buildAndroid(assembleType, { regenerate });
204
+ await new CapacitorApp(app, mobileTarget.config).buildAndroid(assembleType, { env, regenerate });
205
205
  app.log(`Release Android ${app.name}/${mobileTarget.name} ${assembleType} Completed.`);
206
- app.log(
207
- `Path : ${app.cwdPath}/mobile/${mobileTarget.name}/android/app/build/outputs/${assembleType === "apk" ? "apk" : "bundle"}/release`,
208
- );
206
+ app.log(`Path : ${app.cwdPath}/android/app/build/outputs/${assembleType === "apk" ? "apk" : "bundle"}/release`);
209
207
  }
210
208
  }
211
209
 
package/cli/build.ts CHANGED
@@ -7,13 +7,15 @@ const OUT_DIR = process.env.DIST_DIR ?? `${WORKSPACE_ROOT}/dist/pkgs/akanjs`;
7
7
 
8
8
  const build = async () => {
9
9
  try {
10
+ const packageJson = await Bun.file(`${PACKAGE_DIR}/package.json`).json();
10
11
  await $`rm -rf ${OUT_DIR}/cli`;
11
12
  await Bun.build({
12
13
  entrypoints: [`${CLI_DIR}/index.ts`],
13
14
  splitting: false,
14
15
  target: "bun",
15
16
  outdir: `${OUT_DIR}/cli`,
16
- external: Object.keys((await Bun.file(`${PACKAGE_DIR}/package.json`).json()).dependencies ?? {}),
17
+ external: Object.keys({ ...packageJson.dependencies, ...packageJson.peerDependencies }),
18
+ plugins: [],
17
19
  });
18
20
  await $`cp -R ${CLI_DIR}/templates ${OUT_DIR}/cli/templates`;
19
21
  } catch (error) {
@@ -11,10 +11,9 @@ import {
11
11
  type Workspace,
12
12
  } from "akanjs/devkit";
13
13
  import chalk from "chalk";
14
- import latestVersion from "latest-version";
15
- import open from "open";
16
14
  import * as QRcode from "qrcode";
17
- import { v4 as uuidv4 } from "uuid";
15
+ import { getLatestPackageVersion } from "../npmRegistry";
16
+ import { openBrowser } from "../openBrowser";
18
17
 
19
18
  export class CloudRunner extends runner("cloud") {
20
19
  async login() {
@@ -24,7 +23,7 @@ export class CloudRunner extends runner("cloud") {
24
23
  Logger.rawLog(chalk.green(`\n✓ Already logged in akan cloud as ${self.nickname}\n`));
25
24
  return true;
26
25
  }
27
- const remoteId = uuidv4();
26
+ const remoteId = crypto.randomUUID();
28
27
  const signinUrl = `${akanCloudUrl}/signin?remoteId=${remoteId}`;
29
28
 
30
29
  Logger.rawLog(chalk.bold(`\n${chalk.green("➤")} Authentication Required`));
@@ -39,7 +38,7 @@ export class CloudRunner extends runner("cloud") {
39
38
  });
40
39
  });
41
40
  Logger.rawLog(qrcode);
42
- await open(signinUrl);
41
+ await openBrowser(signinUrl);
43
42
  Logger.rawLog(chalk.dim("Opening browser..."));
44
43
  } catch {
45
44
  Logger.rawLog(chalk.yellow("Could not open browser. Please visit the URL manually."));
@@ -96,13 +95,13 @@ export class CloudRunner extends runner("cloud") {
96
95
  const tag = isOfficialRelease ? "latest" : (patchVersion.split("-").at(1) ?? "dev");
97
96
  const getNextVersion = async (prefix: string, tag: string) => {
98
97
  try {
99
- const latestPublishedVersion = await latestVersion("akanjs", { version: tag });
98
+ const latestPublishedVersion = await getLatestPackageVersion("akanjs", tag);
100
99
  const latestPatch = latestPublishedVersion.startsWith(prefix)
101
100
  ? parseInt(latestPublishedVersion.split(".").at(-1) ?? "-1")
102
101
  : -1;
103
102
  const nextVersion = `${prefix}.${latestPatch + 1}`;
104
103
  return { nextVersion, latestPublishedVersion };
105
- } catch (e) {
104
+ } catch {
106
105
  return { nextVersion: `${prefix}.0`, latestPublishedVersion: null };
107
106
  }
108
107
  };
@@ -147,7 +146,7 @@ export class CloudRunner extends runner("cloud") {
147
146
  ]);
148
147
  }
149
148
  async #updateAkanPkgs(workspace: Workspace, tag: string = "latest") {
150
- const latestPublishedVersion = await latestVersion("akanjs", { version: tag });
149
+ const latestPublishedVersion = await getLatestPackageVersion("akanjs", tag);
151
150
  const rootPackageJson = await workspace.getPackageJson();
152
151
  if (!rootPackageJson.dependencies) throw new Error("No dependencies found in package.json");
153
152
  if (rootPackageJson.dependencies.akanjs) rootPackageJson.dependencies.akanjs = latestPublishedVersion;