@akanjs/cli 2.1.0-rc.10 → 2.1.0-rc.11
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/incrementalBuilder.proc.js +33 -3
- package/index.js +64 -13
- package/package.json +2 -2
|
@@ -486,7 +486,18 @@ var DEFAULT_OPTIMIZE_IMPORTS = [
|
|
|
486
486
|
var WORKSPACE_BARREL_FACETS = ["ui", "webkit", "common", "client", "server"];
|
|
487
487
|
var SSR_RUNTIME_PACKAGES = ["react", "react-dom", "react-server-dom-webpack"];
|
|
488
488
|
var NATIVE_RUNTIME_PACKAGES = ["sharp"];
|
|
489
|
-
var
|
|
489
|
+
var DEFAULT_BACKEND_RUNTIME_PACKAGES = ["croner"];
|
|
490
|
+
var DATABASE_MODE_RUNTIME_PACKAGES = {
|
|
491
|
+
single: [],
|
|
492
|
+
multiple: ["@libsql/client", "bullmq", "ioredis", "protobufjs"],
|
|
493
|
+
cluster: ["bullmq", "ioredis", "postgres", "protobufjs"]
|
|
494
|
+
};
|
|
495
|
+
var AKAN_RUNTIME_PACKAGES = new Set([
|
|
496
|
+
...SSR_RUNTIME_PACKAGES,
|
|
497
|
+
...NATIVE_RUNTIME_PACKAGES,
|
|
498
|
+
...DEFAULT_BACKEND_RUNTIME_PACKAGES,
|
|
499
|
+
...Object.values(DATABASE_MODE_RUNTIME_PACKAGES).flat()
|
|
500
|
+
]);
|
|
490
501
|
var DEFAULT_AKAN_IMAGE_CONFIG = {
|
|
491
502
|
deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
|
|
492
503
|
imageSizes: [32, 48, 64, 96, 128, 256, 384],
|
|
@@ -695,13 +706,22 @@ CMD [${command.map((c) => `"${c}"`).join(",")}]`;
|
|
|
695
706
|
if (AKAN_RUNTIME_PACKAGES.has(lib))
|
|
696
707
|
return akanPackageJson.dependencies?.[lib] ?? akanPackageJson.peerDependencies?.[lib];
|
|
697
708
|
}
|
|
709
|
+
#getProductionRuntimePackages() {
|
|
710
|
+
return [
|
|
711
|
+
...this.externalLibs,
|
|
712
|
+
...SSR_RUNTIME_PACKAGES,
|
|
713
|
+
...NATIVE_RUNTIME_PACKAGES,
|
|
714
|
+
...DEFAULT_BACKEND_RUNTIME_PACKAGES,
|
|
715
|
+
...DATABASE_MODE_RUNTIME_PACKAGES[this.defaultDatabaseMode]
|
|
716
|
+
];
|
|
717
|
+
}
|
|
698
718
|
getProductionPackageJson(data = {}) {
|
|
699
719
|
return {
|
|
700
720
|
name: this.app.name,
|
|
701
721
|
description: this.app.name,
|
|
702
722
|
version: "1.0.0",
|
|
703
723
|
main: "./main.js",
|
|
704
|
-
dependencies: Object.fromEntries([...new Set(
|
|
724
|
+
dependencies: Object.fromEntries([...new Set(this.#getProductionRuntimePackages())].map((lib) => {
|
|
705
725
|
const version = this.#resolveProductionDependencyVersion(lib);
|
|
706
726
|
if (!version)
|
|
707
727
|
throw new Error(`Dependency ${lib} not found in package.json`);
|
|
@@ -7173,6 +7193,14 @@ var SSR_RENDER_EXTERNALS = [
|
|
|
7173
7193
|
"react-server-dom-webpack/client.node",
|
|
7174
7194
|
"react-server-dom-webpack/client.browser"
|
|
7175
7195
|
];
|
|
7196
|
+
var AKAN_OPTIONAL_BACKEND_EXTERNALS = [
|
|
7197
|
+
"@libsql/client",
|
|
7198
|
+
"bullmq",
|
|
7199
|
+
"croner",
|
|
7200
|
+
"ioredis",
|
|
7201
|
+
"postgres",
|
|
7202
|
+
"protobufjs"
|
|
7203
|
+
];
|
|
7176
7204
|
|
|
7177
7205
|
class ApplicationBuildRunner {
|
|
7178
7206
|
#app;
|
|
@@ -7241,7 +7269,9 @@ class ApplicationBuildRunner {
|
|
|
7241
7269
|
}
|
|
7242
7270
|
async#buildBackend() {
|
|
7243
7271
|
const akanConfig2 = await this.#app.getConfig();
|
|
7244
|
-
const backendExternals = [
|
|
7272
|
+
const backendExternals = [
|
|
7273
|
+
...new Set([...akanConfig2.externalLibs, ...SSR_RENDER_EXTERNALS, ...AKAN_OPTIONAL_BACKEND_EXTERNALS])
|
|
7274
|
+
];
|
|
7245
7275
|
const backendEntryPoints = [`${this.#app.cwdPath}/main.ts`, `${this.#app.cwdPath}/server.ts`];
|
|
7246
7276
|
for (const entrypoint of backendEntryPoints) {
|
|
7247
7277
|
if (!await Bun.file(entrypoint).exists())
|
package/index.js
CHANGED
|
@@ -484,7 +484,18 @@ var DEFAULT_OPTIMIZE_IMPORTS = [
|
|
|
484
484
|
var WORKSPACE_BARREL_FACETS = ["ui", "webkit", "common", "client", "server"];
|
|
485
485
|
var SSR_RUNTIME_PACKAGES = ["react", "react-dom", "react-server-dom-webpack"];
|
|
486
486
|
var NATIVE_RUNTIME_PACKAGES = ["sharp"];
|
|
487
|
-
var
|
|
487
|
+
var DEFAULT_BACKEND_RUNTIME_PACKAGES = ["croner"];
|
|
488
|
+
var DATABASE_MODE_RUNTIME_PACKAGES = {
|
|
489
|
+
single: [],
|
|
490
|
+
multiple: ["@libsql/client", "bullmq", "ioredis", "protobufjs"],
|
|
491
|
+
cluster: ["bullmq", "ioredis", "postgres", "protobufjs"]
|
|
492
|
+
};
|
|
493
|
+
var AKAN_RUNTIME_PACKAGES = new Set([
|
|
494
|
+
...SSR_RUNTIME_PACKAGES,
|
|
495
|
+
...NATIVE_RUNTIME_PACKAGES,
|
|
496
|
+
...DEFAULT_BACKEND_RUNTIME_PACKAGES,
|
|
497
|
+
...Object.values(DATABASE_MODE_RUNTIME_PACKAGES).flat()
|
|
498
|
+
]);
|
|
488
499
|
var DEFAULT_AKAN_IMAGE_CONFIG = {
|
|
489
500
|
deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
|
|
490
501
|
imageSizes: [32, 48, 64, 96, 128, 256, 384],
|
|
@@ -693,13 +704,22 @@ CMD [${command.map((c) => `"${c}"`).join(",")}]`;
|
|
|
693
704
|
if (AKAN_RUNTIME_PACKAGES.has(lib))
|
|
694
705
|
return akanPackageJson.dependencies?.[lib] ?? akanPackageJson.peerDependencies?.[lib];
|
|
695
706
|
}
|
|
707
|
+
#getProductionRuntimePackages() {
|
|
708
|
+
return [
|
|
709
|
+
...this.externalLibs,
|
|
710
|
+
...SSR_RUNTIME_PACKAGES,
|
|
711
|
+
...NATIVE_RUNTIME_PACKAGES,
|
|
712
|
+
...DEFAULT_BACKEND_RUNTIME_PACKAGES,
|
|
713
|
+
...DATABASE_MODE_RUNTIME_PACKAGES[this.defaultDatabaseMode]
|
|
714
|
+
];
|
|
715
|
+
}
|
|
696
716
|
getProductionPackageJson(data = {}) {
|
|
697
717
|
return {
|
|
698
718
|
name: this.app.name,
|
|
699
719
|
description: this.app.name,
|
|
700
720
|
version: "1.0.0",
|
|
701
721
|
main: "./main.js",
|
|
702
|
-
dependencies: Object.fromEntries([...new Set(
|
|
722
|
+
dependencies: Object.fromEntries([...new Set(this.#getProductionRuntimePackages())].map((lib) => {
|
|
703
723
|
const version = this.#resolveProductionDependencyVersion(lib);
|
|
704
724
|
if (!version)
|
|
705
725
|
throw new Error(`Dependency ${lib} not found in package.json`);
|
|
@@ -7171,6 +7191,14 @@ var SSR_RENDER_EXTERNALS = [
|
|
|
7171
7191
|
"react-server-dom-webpack/client.node",
|
|
7172
7192
|
"react-server-dom-webpack/client.browser"
|
|
7173
7193
|
];
|
|
7194
|
+
var AKAN_OPTIONAL_BACKEND_EXTERNALS = [
|
|
7195
|
+
"@libsql/client",
|
|
7196
|
+
"bullmq",
|
|
7197
|
+
"croner",
|
|
7198
|
+
"ioredis",
|
|
7199
|
+
"postgres",
|
|
7200
|
+
"protobufjs"
|
|
7201
|
+
];
|
|
7174
7202
|
|
|
7175
7203
|
class ApplicationBuildRunner {
|
|
7176
7204
|
#app;
|
|
@@ -7239,7 +7267,9 @@ class ApplicationBuildRunner {
|
|
|
7239
7267
|
}
|
|
7240
7268
|
async#buildBackend() {
|
|
7241
7269
|
const akanConfig2 = await this.#app.getConfig();
|
|
7242
|
-
const backendExternals = [
|
|
7270
|
+
const backendExternals = [
|
|
7271
|
+
...new Set([...akanConfig2.externalLibs, ...SSR_RENDER_EXTERNALS, ...AKAN_OPTIONAL_BACKEND_EXTERNALS])
|
|
7272
|
+
];
|
|
7243
7273
|
const backendEntryPoints = [`${this.#app.cwdPath}/main.ts`, `${this.#app.cwdPath}/server.ts`];
|
|
7244
7274
|
for (const entrypoint of backendEntryPoints) {
|
|
7245
7275
|
if (!await Bun.file(entrypoint).exists())
|
|
@@ -10262,11 +10292,14 @@ import chalk7 from "chalk";
|
|
|
10262
10292
|
import * as QRcode from "qrcode";
|
|
10263
10293
|
|
|
10264
10294
|
// pkgs/@akanjs/cli/npmRegistry.ts
|
|
10265
|
-
|
|
10266
|
-
|
|
10295
|
+
var defaultNpmRegistry = "https://registry.npmjs.org";
|
|
10296
|
+
var getNpmRegistryUrl = (registryUrl = process.env.AKAN_NPM_REGISTRY ?? defaultNpmRegistry) => registryUrl.replace(/\/+$/, "");
|
|
10297
|
+
async function getLatestPackageVersion(packageName, tag = "latest", registryUrl) {
|
|
10298
|
+
const registry = getNpmRegistryUrl(registryUrl);
|
|
10299
|
+
const url = `${registry}/${encodeURIComponent(packageName).replace(/^%40/, "@")}`;
|
|
10267
10300
|
const res = await fetch(url);
|
|
10268
10301
|
if (!res.ok)
|
|
10269
|
-
throw new Error(`Failed to fetch ${packageName} metadata from
|
|
10302
|
+
throw new Error(`Failed to fetch ${packageName} metadata from ${registry}`);
|
|
10270
10303
|
const metadata = await res.json();
|
|
10271
10304
|
const version = metadata["dist-tags"]?.[tag];
|
|
10272
10305
|
if (!version)
|
|
@@ -11632,20 +11665,29 @@ var defaultWorkspacePeerDependencies = new Set([
|
|
|
11632
11665
|
]);
|
|
11633
11666
|
|
|
11634
11667
|
class WorkspaceRunner extends runner("workspace") {
|
|
11635
|
-
async createWorkspace(repoName, appName, {
|
|
11668
|
+
async createWorkspace(repoName, appName, {
|
|
11669
|
+
dirname: dirname3 = ".",
|
|
11670
|
+
init = true,
|
|
11671
|
+
akanVersion,
|
|
11672
|
+
registryUrl
|
|
11673
|
+
}) {
|
|
11636
11674
|
const cwdPath = process.cwd();
|
|
11637
11675
|
const workspaceRoot = path38.join(cwdPath, dirname3, repoName);
|
|
11676
|
+
const normalizedRegistryUrl = registryUrl ? getNpmRegistryUrl(registryUrl) : undefined;
|
|
11638
11677
|
const workspace = WorkspaceExecutor.fromRoot({ workspaceRoot, repoName });
|
|
11639
11678
|
const templateSpinner = workspace.spinning(`Creating workspace template files in ${dirname3}/${repoName}...`);
|
|
11640
11679
|
const [latestBiomeVersion, latestTypesBunVersion] = await Promise.all([
|
|
11641
|
-
getLatestPackageVersion("@biomejs/biome"),
|
|
11642
|
-
getLatestPackageVersion("@types/bun")
|
|
11680
|
+
getLatestPackageVersion("@biomejs/biome", "latest", normalizedRegistryUrl),
|
|
11681
|
+
getLatestPackageVersion("@types/bun", "latest", normalizedRegistryUrl)
|
|
11643
11682
|
]);
|
|
11644
11683
|
await workspace.applyTemplate({
|
|
11645
11684
|
basePath: ".",
|
|
11646
11685
|
template: "workspaceRoot",
|
|
11647
11686
|
dict: { repoName, appName, serveDomain: "localhost" }
|
|
11648
11687
|
});
|
|
11688
|
+
if (normalizedRegistryUrl)
|
|
11689
|
+
await workspace.writeFile(".npmrc", `registry=${normalizedRegistryUrl}/
|
|
11690
|
+
`);
|
|
11649
11691
|
templateSpinner.succeed(`Workspace files created in ${dirname3}/${repoName}`);
|
|
11650
11692
|
const [rootPackageJson, peerDependencies] = await Promise.all([
|
|
11651
11693
|
workspace.getPackageJson(),
|
|
@@ -11750,12 +11792,18 @@ class WorkspaceScript extends script("workspace", [
|
|
|
11750
11792
|
LibraryScript,
|
|
11751
11793
|
PackageScript
|
|
11752
11794
|
]) {
|
|
11753
|
-
async createWorkspace(repoName, appName, {
|
|
11795
|
+
async createWorkspace(repoName, appName, {
|
|
11796
|
+
dirname: dirname3 = ".",
|
|
11797
|
+
installLibs = false,
|
|
11798
|
+
init = true,
|
|
11799
|
+
registryUrl
|
|
11800
|
+
}) {
|
|
11754
11801
|
const akanVersion = await this.packageScript.version(null, { log: false });
|
|
11755
11802
|
const workspace = await this.workspaceRunner.createWorkspace(repoName, appName, {
|
|
11756
11803
|
dirname: dirname3,
|
|
11757
11804
|
init,
|
|
11758
|
-
akanVersion
|
|
11805
|
+
akanVersion,
|
|
11806
|
+
registryUrl
|
|
11759
11807
|
});
|
|
11760
11808
|
if (installLibs) {
|
|
11761
11809
|
await this.libraryScript.installLibrary(workspace, "util");
|
|
@@ -11828,9 +11876,12 @@ class WorkspaceCommand extends command("workspace", [WorkspaceScript], ({ public
|
|
|
11828
11876
|
}).option("init", Boolean, {
|
|
11829
11877
|
desc: "Do you want to initialize the workspace? (Recommended)",
|
|
11830
11878
|
default: true
|
|
11831
|
-
}).
|
|
11879
|
+
}).option("registry", String, {
|
|
11880
|
+
desc: "npm registry URL for installing Akan packages",
|
|
11881
|
+
default: process.env.AKAN_NPM_REGISTRY
|
|
11882
|
+
}).exec(async function(workspaceName, app, dir, libs, init, registry) {
|
|
11832
11883
|
const appName = app || "app";
|
|
11833
|
-
await this.workspaceScript.createWorkspace(workspaceName.toLowerCase().replace(/ /g, "-"), appName.toLowerCase().replace(/ /g, "-"), { dirname: dir, installLibs: libs, init });
|
|
11884
|
+
await this.workspaceScript.createWorkspace(workspaceName.toLowerCase().replace(/ /g, "-"), appName.toLowerCase().replace(/ /g, "-"), { dirname: dir, installLibs: libs, init, registryUrl: registry });
|
|
11834
11885
|
}),
|
|
11835
11886
|
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) {
|
|
11836
11887
|
await this.workspaceScript.lint(exec2, workspace, { fix });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@akanjs/cli",
|
|
3
|
-
"version": "2.1.0-rc.
|
|
3
|
+
"version": "2.1.0-rc.11",
|
|
4
4
|
"sourceType": "module",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"@langchain/deepseek": "^1.0.26",
|
|
35
35
|
"@langchain/openai": "^1.4.6",
|
|
36
36
|
"@trapezedev/project": "^7.1.4",
|
|
37
|
-
"akanjs": "2.1.0-rc.
|
|
37
|
+
"akanjs": "2.1.0-rc.10",
|
|
38
38
|
"chalk": "^5.6.2",
|
|
39
39
|
"commander": "^14.0.3",
|
|
40
40
|
"daisyui": "^5.5.20",
|