akanjs 2.0.0-beta.1 → 2.0.0-beta.3

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/cli/index.js CHANGED
@@ -9949,10 +9949,12 @@ class ApplicationCommand extends command("application", [ApplicationScript], ({
9949
9949
  var {$: $2 } = globalThis.Bun;
9950
9950
 
9951
9951
  class PackageRunner extends runner("package") {
9952
- async version(workspace) {
9952
+ async version({ log = true } = {}) {
9953
9953
  const pkgJson = await FileSys.readJson("package.json");
9954
9954
  const version = pkgJson.version;
9955
- Logger.rawLog(`${pkgJson.name}@${version}`);
9955
+ if (log)
9956
+ Logger.rawLog(`${pkgJson.name}@${version}`);
9957
+ return version;
9956
9958
  }
9957
9959
  async createPackage(workspace, pkgName) {
9958
9960
  await workspace.applyTemplate({ basePath: `pkgs/${pkgName}`, template: "pkgRoot", dict: { pkgName } });
@@ -9971,15 +9973,22 @@ class PackageRunner extends runner("package") {
9971
9973
  await pkg.dist.mkdir(pkg.dist.cwdPath);
9972
9974
  const scanner = await TypeScriptDependencyScanner.from(pkg);
9973
9975
  const { npmDeps, npmDevDeps, missingDeps } = await scanner.getPackageBuildDependencies(pkg.name);
9974
- if (missingDeps.length > 0)
9975
- throw new Error(`Missing dependency versions in root package.json: ${missingDeps.join(", ")}`);
9976
- await pkg.updatePackageJsonDependencies(npmDeps, npmDevDeps);
9976
+ const packageRuntimeDependencies = { akanjs: ["daisyui"] };
9977
+ const forcedRuntimeDeps = packageRuntimeDependencies[pkg.name] ?? [];
9978
+ const packageRuntimeDeps = [...new Set([...npmDeps, ...forcedRuntimeDeps])];
9979
+ const rootPackageJson = await pkg.workspace.getPackageJson();
9980
+ const rootDeps = { ...rootPackageJson.dependencies, ...rootPackageJson.devDependencies };
9981
+ const missingForcedDeps = forcedRuntimeDeps.filter((dep) => !rootDeps[dep]);
9982
+ const allMissingDeps = [...new Set([...missingDeps, ...missingForcedDeps])].sort();
9983
+ if (allMissingDeps.length > 0)
9984
+ throw new Error(`Missing dependency versions in root package.json: ${allMissingDeps.join(", ")}`);
9985
+ await pkg.updatePackageJsonDependencies(packageRuntimeDeps, npmDevDeps);
9977
9986
  const hasBuildFile = await Bun.file(`${pkg.cwdPath}/build.ts`).exists();
9978
9987
  if (hasBuildFile) {
9979
9988
  await pkg.workspace.spawn(process.execPath, [`${pkg.cwdPath}/build.ts`], { env: process.env, stdio: "inherit" });
9980
9989
  } else {
9981
9990
  await $2`cp -r ${pkg.cwdPath}/. ${pkg.dist.cwdPath}`;
9982
- await Promise.all([pkg.generateDistPackageJson(npmDeps, npmDevDeps), pkg.generateTsconfigJson()]);
9991
+ await Promise.all([pkg.generateDistPackageJson(packageRuntimeDeps, npmDevDeps), pkg.generateTsconfigJson()]);
9983
9992
  }
9984
9993
  }
9985
9994
  async updateWorskpaceRootPackageJson(workspace, rootPackageJson) {
@@ -9996,8 +10005,8 @@ class PackageRunner extends runner("package") {
9996
10005
  }
9997
10006
 
9998
10007
  class PackageScript extends script("package", [PackageRunner]) {
9999
- async version(workspace) {
10000
- await this.packageRunner.version(workspace);
10008
+ async version({ log = true } = {}) {
10009
+ return await this.packageRunner.version({ log });
10001
10010
  }
10002
10011
  async createPackage(workspace, pkgName) {
10003
10012
  const spinner2 = workspace.spinning(`Creating package in pkgs/${pkgName}...`);
@@ -11043,8 +11052,8 @@ class ModuleCommand extends command("module", [ModuleScript], ({ public: target
11043
11052
  }
11044
11053
 
11045
11054
  class PackageCommand extends command("package", [PackageScript], ({ public: target }) => ({
11046
- version: target({ desc: "Show version information for all packages" }).with(Workspace).exec(async function(workspace) {
11047
- await this.packageScript.version(workspace);
11055
+ version: target({ desc: "Show version information for all packages" }).exec(async function() {
11056
+ await this.packageScript.version();
11048
11057
  }),
11049
11058
  createPackage: target({ desc: "Create a new package in pkgs/akanjs/" }).option("name", String, { desc: "name of package" }).with(Workspace).exec(async function(name, workspace) {
11050
11059
  await this.packageScript.createPackage(workspace, name.toLowerCase().replace(/ /g, "-"));
@@ -11252,13 +11261,8 @@ class ScalarCommand extends command("scalar", [ScalarScript], ({ public: target
11252
11261
  import path37 from "path";
11253
11262
 
11254
11263
  import path36 from "path";
11255
- import latestVersion2 from "latest-version";
11256
-
11257
11264
  class WorkspaceRunner extends runner("workspace") {
11258
- async#resolveAkanVersion(tag) {
11259
- return /^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/.test(tag) ? tag : await latestVersion2("akanjs", { version: tag });
11260
- }
11261
- async createWorkspace(repoName, appName, { dirname: dirname3 = ".", tag = "latest", init = true }) {
11265
+ async createWorkspace(repoName, appName, { dirname: dirname3 = ".", init = true, akanVersion }) {
11262
11266
  const cwdPath = process.cwd();
11263
11267
  const workspaceRoot = path36.join(cwdPath, dirname3, repoName);
11264
11268
  const workspace = WorkspaceExecutor.fromRoot({ workspaceRoot, repoName });
@@ -11270,7 +11274,6 @@ class WorkspaceRunner extends runner("workspace") {
11270
11274
  });
11271
11275
  templateSpinner.succeed(`Workspace files created in ${dirname3}/${repoName}`);
11272
11276
  const rootPackageJson = await workspace.getPackageJson();
11273
- const akanVersion = await this.#resolveAkanVersion(tag);
11274
11277
  const packageJson = {
11275
11278
  ...rootPackageJson,
11276
11279
  dependencies: {
@@ -11299,14 +11302,19 @@ class WorkspaceRunner extends runner("workspace") {
11299
11302
  }
11300
11303
  }
11301
11304
 
11302
- class WorkspaceScript extends script("workspace", [WorkspaceRunner, ApplicationScript, LibraryScript]) {
11303
- async createWorkspace(repoName, appName, {
11304
- dirname: dirname3 = ".",
11305
- installLibs = false,
11306
- tag = "latest",
11307
- init = true
11308
- }) {
11309
- const workspace = await this.workspaceRunner.createWorkspace(repoName, appName, { dirname: dirname3, tag, init });
11305
+ class WorkspaceScript extends script("workspace", [
11306
+ WorkspaceRunner,
11307
+ ApplicationScript,
11308
+ LibraryScript,
11309
+ PackageScript
11310
+ ]) {
11311
+ async createWorkspace(repoName, appName, { dirname: dirname3 = ".", installLibs = false, init = true }) {
11312
+ const akanVersion = await this.packageScript.version({ log: false });
11313
+ const workspace = await this.workspaceRunner.createWorkspace(repoName, appName, {
11314
+ dirname: dirname3,
11315
+ init,
11316
+ akanVersion
11317
+ });
11310
11318
  if (installLibs) {
11311
11319
  await this.libraryScript.installLibrary(workspace, "util");
11312
11320
  await this.libraryScript.installLibrary(workspace, "shared");
@@ -11374,15 +11382,12 @@ class WorkspaceCommand extends command("workspace", [WorkspaceScript], ({ public
11374
11382
  value: true
11375
11383
  }
11376
11384
  ]
11377
- }).option("tag", String, {
11378
- desc: "tag of the update",
11379
- default: "latest"
11380
11385
  }).option("init", Boolean, {
11381
11386
  desc: "Do you want to initialize the workspace? (Recommended)",
11382
11387
  default: true
11383
- }).exec(async function(workspaceName, app, dir, libs, tag, init) {
11388
+ }).exec(async function(workspaceName, app, dir, libs, init) {
11384
11389
  const appName = app || "app";
11385
- await this.workspaceScript.createWorkspace(workspaceName.toLowerCase().replace(/ /g, "-"), appName.toLowerCase().replace(/ /g, "-"), { dirname: dir, installLibs: libs, tag, init });
11390
+ await this.workspaceScript.createWorkspace(workspaceName.toLowerCase().replace(/ /g, "-"), appName.toLowerCase().replace(/ /g, "-"), { dirname: dir, installLibs: libs, init });
11386
11391
  }),
11387
11392
  lint: target({ desc: "Lint and fix code in a specific app/lib/pkg" }).with(Exec).option("fix", Boolean, { default: true }).with(Workspace).exec(async function(exec2, fix, workspace) {
11388
11393
  await this.workspaceScript.lint(exec2, workspace, { fix });
@@ -3,11 +3,9 @@ import { command, Pkg, Workspace } from "akanjs/devkit";
3
3
  import { PackageScript } from "./package.script";
4
4
 
5
5
  export class PackageCommand extends command("package", [PackageScript], ({ public: target }) => ({
6
- version: target({ desc: "Show version information for all packages" })
7
- .with(Workspace)
8
- .exec(async function (workspace) {
9
- await this.packageScript.version(workspace);
10
- }),
6
+ version: target({ desc: "Show version information for all packages" }).exec(async function () {
7
+ await this.packageScript.version();
8
+ }),
11
9
  createPackage: target({ desc: "Create a new package in pkgs/akanjs/" })
12
10
  .option("name", String, { desc: "name of package" })
13
11
  .with(Workspace)
@@ -10,10 +10,11 @@ import {
10
10
  import { $ } from "bun";
11
11
 
12
12
  export class PackageRunner extends runner("package") {
13
- async version(workspace: Workspace) {
13
+ async version({ log = true }: { log?: boolean } = {}) {
14
14
  const pkgJson = await FileSys.readJson<PackageJson>("package.json");
15
15
  const version = pkgJson.version;
16
- Logger.rawLog(`${pkgJson.name}@${version}`);
16
+ if (log) Logger.rawLog(`${pkgJson.name}@${version}`);
17
+ return version;
17
18
  }
18
19
  async createPackage(workspace: Workspace, pkgName: string) {
19
20
  await workspace.applyTemplate({ basePath: `pkgs/${pkgName}`, template: "pkgRoot", dict: { pkgName } });
@@ -32,17 +33,24 @@ export class PackageRunner extends runner("package") {
32
33
  await pkg.dist.mkdir(pkg.dist.cwdPath);
33
34
  const scanner = await TypeScriptDependencyScanner.from(pkg);
34
35
  const { npmDeps, npmDevDeps, missingDeps } = await scanner.getPackageBuildDependencies(pkg.name);
35
- if (missingDeps.length > 0)
36
- throw new Error(`Missing dependency versions in root package.json: ${missingDeps.join(", ")}`);
36
+ const packageRuntimeDependencies: Record<string, string[]> = { akanjs: ["daisyui"] };
37
+ const forcedRuntimeDeps = packageRuntimeDependencies[pkg.name] ?? [];
38
+ const packageRuntimeDeps = [...new Set([...npmDeps, ...forcedRuntimeDeps])];
39
+ const rootPackageJson = await pkg.workspace.getPackageJson();
40
+ const rootDeps = { ...rootPackageJson.dependencies, ...rootPackageJson.devDependencies };
41
+ const missingForcedDeps = forcedRuntimeDeps.filter((dep) => !rootDeps[dep]);
42
+ const allMissingDeps = [...new Set([...missingDeps, ...missingForcedDeps])].sort();
43
+ if (allMissingDeps.length > 0)
44
+ throw new Error(`Missing dependency versions in root package.json: ${allMissingDeps.join(", ")}`);
37
45
 
38
- await pkg.updatePackageJsonDependencies(npmDeps, npmDevDeps);
46
+ await pkg.updatePackageJsonDependencies(packageRuntimeDeps, npmDevDeps);
39
47
 
40
48
  const hasBuildFile = await Bun.file(`${pkg.cwdPath}/build.ts`).exists();
41
49
  if (hasBuildFile) {
42
50
  await pkg.workspace.spawn(process.execPath, [`${pkg.cwdPath}/build.ts`], { env: process.env, stdio: "inherit" });
43
51
  } else {
44
52
  await $`cp -r ${pkg.cwdPath}/. ${pkg.dist.cwdPath}`;
45
- await Promise.all([pkg.generateDistPackageJson(npmDeps, npmDevDeps), pkg.generateTsconfigJson()]);
53
+ await Promise.all([pkg.generateDistPackageJson(packageRuntimeDeps, npmDevDeps), pkg.generateTsconfigJson()]);
46
54
  }
47
55
  }
48
56
 
@@ -3,8 +3,8 @@ import { type Pkg, script, type Workspace } from "akanjs/devkit";
3
3
  import { PackageRunner } from "./package.runner";
4
4
 
5
5
  export class PackageScript extends script("package", [PackageRunner]) {
6
- async version(workspace: Workspace) {
7
- await this.packageRunner.version(workspace);
6
+ async version({ log = true }: { log?: boolean } = {}) {
7
+ return await this.packageRunner.version({ log });
8
8
  }
9
9
  async createPackage(workspace: Workspace, pkgName: string) {
10
10
  const spinner = workspace.spinning(`Creating package in pkgs/${pkgName}...`);
@@ -22,20 +22,16 @@ export class WorkspaceCommand extends command("workspace", [WorkspaceScript], ({
22
22
  },
23
23
  ],
24
24
  })
25
- .option("tag", String, {
26
- desc: "tag of the update",
27
- default: "latest",
28
- })
29
25
  .option("init", Boolean, {
30
26
  desc: "Do you want to initialize the workspace? (Recommended)",
31
27
  default: true,
32
28
  })
33
- .exec(async function (workspaceName, app, dir, libs, tag, init) {
29
+ .exec(async function (workspaceName, app, dir, libs, init) {
34
30
  const appName = app || "app";
35
31
  await this.workspaceScript.createWorkspace(
36
32
  workspaceName.toLowerCase().replace(/ /g, "-"),
37
33
  appName.toLowerCase().replace(/ /g, "-"),
38
- { dirname: dir, installLibs: libs, tag, init },
34
+ { dirname: dir, installLibs: libs, init },
39
35
  );
40
36
  }),
41
37
  lint: target({ desc: "Lint and fix code in a specific app/lib/pkg" })
@@ -1,16 +1,11 @@
1
1
  import path from "node:path";
2
2
  import { type Exec, type PackageJson, runner, type Workspace, WorkspaceExecutor } from "akanjs/devkit";
3
- import latestVersion from "latest-version";
4
3
 
5
4
  export class WorkspaceRunner extends runner("workspace") {
6
- async #resolveAkanVersion(tag: string) {
7
- return /^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/.test(tag) ? tag : await latestVersion("akanjs", { version: tag });
8
- }
9
-
10
5
  async createWorkspace(
11
6
  repoName: string,
12
7
  appName: string,
13
- { dirname = ".", tag = "latest", init = true }: { dirname?: string; tag?: string; init?: boolean },
8
+ { dirname = ".", init = true, akanVersion }: { dirname?: string; init?: boolean; akanVersion: string },
14
9
  ) {
15
10
  const cwdPath = process.cwd();
16
11
  const workspaceRoot = path.join(cwdPath, dirname, repoName);
@@ -25,7 +20,6 @@ export class WorkspaceRunner extends runner("workspace") {
25
20
  templateSpinner.succeed(`Workspace files created in ${dirname}/${repoName}`);
26
21
 
27
22
  const rootPackageJson = await workspace.getPackageJson();
28
- const akanVersion = await this.#resolveAkanVersion(tag);
29
23
  const packageJson: PackageJson = {
30
24
  ...rootPackageJson,
31
25
  dependencies: {
@@ -4,20 +4,26 @@ import { AppExecutor, type Exec, LibExecutor, PkgExecutor, script, type Workspac
4
4
 
5
5
  import { ApplicationScript } from "../application/application.script";
6
6
  import { LibraryScript } from "../library/library.script";
7
+ import { PackageScript } from "../package/package.script";
7
8
  import { WorkspaceRunner } from "./workspace.runner";
8
9
 
9
- export class WorkspaceScript extends script("workspace", [WorkspaceRunner, ApplicationScript, LibraryScript]) {
10
+ export class WorkspaceScript extends script("workspace", [
11
+ WorkspaceRunner,
12
+ ApplicationScript,
13
+ LibraryScript,
14
+ PackageScript,
15
+ ]) {
10
16
  async createWorkspace(
11
17
  repoName: string,
12
18
  appName: string,
13
- {
14
- dirname = ".",
15
- installLibs = false,
16
- tag = "latest",
17
- init = true,
18
- }: { dirname?: string; installLibs?: boolean; tag?: string; init?: boolean },
19
+ { dirname = ".", installLibs = false, init = true }: { dirname?: string; installLibs?: boolean; init?: boolean },
19
20
  ) {
20
- const workspace = await this.workspaceRunner.createWorkspace(repoName, appName, { dirname, tag, init });
21
+ const akanVersion = await this.packageScript.version({ log: false });
22
+ const workspace = await this.workspaceRunner.createWorkspace(repoName, appName, {
23
+ dirname,
24
+ init,
25
+ akanVersion,
26
+ });
21
27
  if (installLibs) {
22
28
  await this.libraryScript.installLibrary(workspace, "util");
23
29
  await this.libraryScript.installLibrary(workspace, "shared");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "akanjs",
3
- "version": "2.0.0-beta.1",
3
+ "version": "2.0.0-beta.3",
4
4
  "sourceType": "module",
5
5
  "type": "module",
6
6
  "bin": {
@@ -153,6 +153,7 @@
153
153
  "compare-versions": "^6.1.1",
154
154
  "cordova-plugin-purchase": "^13.16.0",
155
155
  "croner": "^10.0.1",
156
+ "daisyui": "^5.5.20",
156
157
  "dataloader": "^2.2.3",
157
158
  "dayjs": "^1.11.20",
158
159
  "file-saver": "^2.0.5",