@nextclaw/app-runtime 0.9.12 → 0.9.14
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/README.md +2 -2
- package/dist/{main.js → app/main.js} +2 -2
- package/dist/app/main.js.map +1 -0
- package/dist/{commands → controllers}/create.controller.d.ts +2 -2
- package/dist/controllers/create.controller.d.ts.map +1 -0
- package/dist/{commands → controllers}/create.controller.js +2 -2
- package/dist/controllers/create.controller.js.map +1 -0
- package/dist/{commands → controllers}/dev.controller.js +1 -1
- package/dist/controllers/dev.controller.js.map +1 -0
- package/dist/{commands → controllers}/grant.controller.d.ts +3 -3
- package/dist/controllers/grant.controller.d.ts.map +1 -0
- package/dist/{commands → controllers}/grant.controller.js +2 -2
- package/dist/controllers/grant.controller.js.map +1 -0
- package/dist/{commands → controllers}/info.controller.d.ts +2 -2
- package/dist/controllers/info.controller.d.ts.map +1 -0
- package/dist/{commands → controllers}/info.controller.js +2 -2
- package/dist/controllers/info.controller.js.map +1 -0
- package/dist/{commands → controllers}/inspect.controller.js +8 -2
- package/dist/controllers/inspect.controller.js.map +1 -0
- package/dist/{commands → controllers}/install.controller.d.ts +2 -2
- package/dist/controllers/install.controller.d.ts.map +1 -0
- package/dist/{commands → controllers}/install.controller.js +2 -2
- package/dist/controllers/install.controller.js.map +1 -0
- package/dist/{commands → controllers}/list.controller.d.ts +2 -2
- package/dist/controllers/list.controller.d.ts.map +1 -0
- package/dist/{commands → controllers}/list.controller.js +2 -2
- package/dist/controllers/list.controller.js.map +1 -0
- package/dist/controllers/pack.controller.d.ts +19 -0
- package/dist/controllers/pack.controller.d.ts.map +1 -0
- package/dist/{commands → controllers}/pack.controller.js +8 -4
- package/dist/controllers/pack.controller.js.map +1 -0
- package/dist/{commands → controllers}/permissions.controller.d.ts +2 -2
- package/dist/controllers/permissions.controller.d.ts.map +1 -0
- package/dist/{commands → controllers}/permissions.controller.js +2 -2
- package/dist/controllers/permissions.controller.js.map +1 -0
- package/dist/{commands → controllers}/publish.controller.d.ts +3 -3
- package/dist/controllers/publish.controller.d.ts.map +1 -0
- package/dist/{commands → controllers}/publish.controller.js +2 -2
- package/dist/controllers/publish.controller.js.map +1 -0
- package/dist/{commands → controllers}/registry.controller.d.ts +2 -2
- package/dist/controllers/registry.controller.d.ts.map +1 -0
- package/dist/{commands → controllers}/registry.controller.js +2 -2
- package/dist/controllers/registry.controller.js.map +1 -0
- package/dist/{commands → controllers}/revoke.controller.d.ts +2 -2
- package/dist/controllers/revoke.controller.d.ts.map +1 -0
- package/dist/{commands → controllers}/revoke.controller.js +2 -2
- package/dist/controllers/revoke.controller.js.map +1 -0
- package/dist/{commands → controllers}/run.controller.js +8 -6
- package/dist/controllers/run.controller.js.map +1 -0
- package/dist/{commands → controllers}/uninstall.controller.d.ts +2 -2
- package/dist/controllers/uninstall.controller.d.ts.map +1 -0
- package/dist/{commands → controllers}/uninstall.controller.js +2 -2
- package/dist/controllers/uninstall.controller.js.map +1 -0
- package/dist/{commands → controllers}/update.controller.d.ts +2 -2
- package/dist/controllers/update.controller.d.ts.map +1 -0
- package/dist/{commands → controllers}/update.controller.js +2 -2
- package/dist/controllers/update.controller.js.map +1 -0
- package/dist/{commands → controllers}/validate-publish.controller.d.ts +3 -3
- package/dist/controllers/validate-publish.controller.d.ts.map +1 -0
- package/dist/{commands → controllers}/validate-publish.controller.js +9 -5
- package/dist/controllers/validate-publish.controller.js.map +1 -0
- package/dist/index.d.ts +51 -51
- package/dist/index.js +46 -45
- package/dist/package.js +1 -1
- package/dist/{runtime → services}/app-build.service.d.ts +2 -2
- package/dist/services/app-build.service.d.ts.map +1 -0
- package/dist/{runtime → services}/app-build.service.js +4 -2
- package/dist/services/app-build.service.js.map +1 -0
- package/dist/{bundle → services}/app-bundle.service.d.ts +18 -6
- package/dist/services/app-bundle.service.d.ts.map +1 -0
- package/dist/services/app-bundle.service.js +305 -0
- package/dist/services/app-bundle.service.js.map +1 -0
- package/dist/{permissions → services}/app-grant.service.d.ts +4 -4
- package/dist/services/app-grant.service.d.ts.map +1 -0
- package/dist/{permissions → services}/app-grant.service.js +7 -4
- package/dist/services/app-grant.service.js.map +1 -0
- package/dist/{paths → services}/app-home.service.d.ts +1 -1
- package/dist/services/app-home.service.d.ts.map +1 -0
- package/dist/{paths → services}/app-home.service.js +1 -1
- package/dist/services/app-home.service.js.map +1 -0
- package/dist/{host → services}/app-host.service.d.ts +2 -2
- package/dist/services/app-host.service.d.ts.map +1 -0
- package/dist/{host → services}/app-host.service.js +3 -3
- package/dist/services/app-host.service.js.map +1 -0
- package/dist/services/app-install-source.service.js +72 -0
- package/dist/services/app-install-source.service.js.map +1 -0
- package/dist/{install → services}/app-installation.service.d.ts +15 -14
- package/dist/services/app-installation.service.d.ts.map +1 -0
- package/dist/services/app-installation.service.js +332 -0
- package/dist/services/app-installation.service.js.map +1 -0
- package/dist/services/app-instance.service.d.ts +34 -0
- package/dist/services/app-instance.service.d.ts.map +1 -0
- package/dist/{host → services}/app-instance.service.js +4 -4
- package/dist/services/app-instance.service.js.map +1 -0
- package/dist/{manifest → services}/app-manifest.service.d.ts +12 -2
- package/dist/services/app-manifest.service.d.ts.map +1 -0
- package/dist/services/app-manifest.service.js +271 -0
- package/dist/services/app-manifest.service.js.map +1 -0
- package/dist/{publish → services}/app-marketplace-client.service.d.ts +2 -2
- package/dist/services/app-marketplace-client.service.d.ts.map +1 -0
- package/dist/{publish → services}/app-marketplace-client.service.js +2 -2
- package/dist/services/app-marketplace-client.service.js.map +1 -0
- package/dist/{publish → services}/app-marketplace-metadata.service.d.ts +3 -3
- package/dist/services/app-marketplace-metadata.service.d.ts.map +1 -0
- package/dist/{publish → services}/app-marketplace-metadata.service.js +1 -1
- package/dist/services/app-marketplace-metadata.service.js.map +1 -0
- package/dist/{permissions → services}/app-permissions.service.d.ts +3 -3
- package/dist/services/app-permissions.service.d.ts.map +1 -0
- package/dist/{permissions → services}/app-permissions.service.js +4 -1
- package/dist/services/app-permissions.service.js.map +1 -0
- package/dist/{publish → services}/app-publish-validation.service.d.ts +9 -7
- package/dist/services/app-publish-validation.service.d.ts.map +1 -0
- package/dist/{publish → services}/app-publish-validation.service.js +14 -10
- package/dist/services/app-publish-validation.service.js.map +1 -0
- package/dist/{publish → services}/app-publish.service.d.ts +5 -5
- package/dist/services/app-publish.service.d.ts.map +1 -0
- package/dist/{publish → services}/app-publish.service.js +6 -6
- package/dist/services/app-publish.service.js.map +1 -0
- package/dist/{registry → services}/app-registry-config.service.d.ts +3 -3
- package/dist/{registry → services}/app-registry-config.service.d.ts.map +1 -1
- package/dist/{registry → services}/app-registry-config.service.js +3 -3
- package/dist/services/app-registry-config.service.js.map +1 -0
- package/dist/{registry → services}/app-registry.service.d.ts +18 -5
- package/dist/services/app-registry.service.d.ts.map +1 -0
- package/dist/services/app-registry.service.js +210 -0
- package/dist/services/app-registry.service.js.map +1 -0
- package/dist/{registry → services}/app-remote-registry-client.service.d.ts +6 -2
- package/dist/services/app-remote-registry-client.service.d.ts.map +1 -0
- package/dist/{registry → services}/app-remote-registry-client.service.js +54 -8
- package/dist/services/app-remote-registry-client.service.js.map +1 -0
- package/dist/{cli → services}/app-runtime-cli.service.d.ts +1 -1
- package/dist/services/app-runtime-cli.service.d.ts.map +1 -0
- package/dist/{cli → services}/app-runtime-cli.service.js +19 -19
- package/dist/services/app-runtime-cli.service.js.map +1 -0
- package/dist/{cli → services}/app-runtime-options.service.d.ts +6 -6
- package/dist/services/app-runtime-options.service.d.ts.map +1 -0
- package/dist/{cli → services}/app-runtime-options.service.js +3 -9
- package/dist/services/app-runtime-options.service.js.map +1 -0
- package/dist/{runtime → services}/app-runtime-toolchain.service.d.ts +1 -1
- package/dist/services/app-runtime-toolchain.service.d.ts.map +1 -0
- package/dist/{runtime → services}/app-runtime-toolchain.service.js +1 -1
- package/dist/services/app-runtime-toolchain.service.js.map +1 -0
- package/dist/{scaffold → services}/app-scaffold.service.d.ts +1 -1
- package/dist/{scaffold → services}/app-scaffold.service.d.ts.map +1 -1
- package/dist/{scaffold → services}/app-scaffold.service.js +1 -1
- package/dist/{scaffold → services}/app-scaffold.service.js.map +1 -1
- package/dist/{scaffold → services}/app-ts-http-lite-scaffold-template.service.d.ts +1 -1
- package/dist/{scaffold → services}/app-ts-http-lite-scaffold-template.service.d.ts.map +1 -1
- package/dist/{scaffold → services}/app-ts-http-lite-scaffold-template.service.js +1 -1
- package/dist/{scaffold → services}/app-ts-http-lite-scaffold-template.service.js.map +1 -1
- package/dist/{scaffold → services}/app-ts-http-scaffold-template.service.d.ts +1 -1
- package/dist/{scaffold → services}/app-ts-http-scaffold-template.service.d.ts.map +1 -1
- package/dist/{scaffold → services}/app-ts-http-scaffold-template.service.js +1 -1
- package/dist/{scaffold → services}/app-ts-http-scaffold-template.service.js.map +1 -1
- package/dist/{bridge → services}/host-bridge.service.d.ts +2 -2
- package/dist/services/host-bridge.service.d.ts.map +1 -0
- package/dist/{bridge → services}/host-bridge.service.js +1 -1
- package/dist/services/host-bridge.service.js.map +1 -0
- package/dist/services/main-runner.service.d.ts +9 -0
- package/dist/services/main-runner.service.d.ts.map +1 -0
- package/dist/services/main-runner.service.js +6 -0
- package/dist/services/main-runner.service.js.map +1 -0
- package/dist/{publish → services}/platform-auth-state.service.d.ts +1 -1
- package/dist/services/platform-auth-state.service.d.ts.map +1 -0
- package/dist/{publish → services}/platform-auth-state.service.js +1 -1
- package/dist/services/platform-auth-state.service.js.map +1 -0
- package/dist/{ui → services}/ui-server.service.d.ts +3 -3
- package/dist/services/ui-server.service.d.ts.map +1 -0
- package/dist/{ui → services}/ui-server.service.js +1 -1
- package/dist/services/ui-server.service.js.map +1 -0
- package/dist/{runtime → services}/wasm-main-runner.service.d.ts +3 -3
- package/dist/services/wasm-main-runner.service.d.ts.map +1 -0
- package/dist/{runtime → services}/wasm-main-runner.service.js +2 -2
- package/dist/services/wasm-main-runner.service.js.map +1 -0
- package/dist/{sidecar → services}/wasm-sidecar-client.service.d.ts +1 -1
- package/dist/services/wasm-sidecar-client.service.d.ts.map +1 -0
- package/dist/{sidecar → services}/wasm-sidecar-client.service.js +1 -1
- package/dist/services/wasm-sidecar-client.service.js.map +1 -0
- package/dist/{runtime → services}/wasmtime-wasi-http-component.service.d.ts +1 -1
- package/dist/services/wasmtime-wasi-http-component.service.d.ts.map +1 -0
- package/dist/{runtime → services}/wasmtime-wasi-http-component.service.js +1 -1
- package/dist/services/wasmtime-wasi-http-component.service.js.map +1 -0
- package/dist/{bundle → types}/app-bundle.types.d.ts +1 -1
- package/dist/types/app-bundle.types.d.ts.map +1 -0
- package/dist/{install → types}/app-installation.types.d.ts +27 -7
- package/dist/types/app-installation.types.d.ts.map +1 -0
- package/dist/types/app-manifest.types.d.ts +119 -0
- package/dist/types/app-manifest.types.d.ts.map +1 -0
- package/dist/types/app-manifest.types.js +11 -0
- package/dist/types/app-manifest.types.js.map +1 -0
- package/dist/{permissions → types}/app-permissions.types.d.ts +2 -2
- package/dist/types/app-permissions.types.d.ts.map +1 -0
- package/dist/{publish → types}/app-publish.types.d.ts +4 -4
- package/dist/types/app-publish.types.d.ts.map +1 -0
- package/dist/{publish → types}/app-publish.types.js +1 -1
- package/dist/types/app-publish.types.js.map +1 -0
- package/dist/{registry → types}/app-registry.types.d.ts +8 -4
- package/dist/types/app-registry.types.d.ts.map +1 -0
- package/dist/{registry → types}/app-remote-registry.types.d.ts +3 -3
- package/dist/types/app-remote-registry.types.d.ts.map +1 -0
- package/dist/{registry → types}/app-remote-registry.types.js +1 -1
- package/dist/types/app-remote-registry.types.js.map +1 -0
- package/dist/{runtime → types}/main-runner.types.d.ts +3 -3
- package/dist/types/main-runner.types.d.ts.map +1 -0
- package/package.json +10 -3
- package/dist/bridge/host-bridge.service.d.ts.map +0 -1
- package/dist/bridge/host-bridge.service.js.map +0 -1
- package/dist/bundle/app-bundle.service.d.ts.map +0 -1
- package/dist/bundle/app-bundle.service.js +0 -196
- package/dist/bundle/app-bundle.service.js.map +0 -1
- package/dist/bundle/app-bundle.types.d.ts.map +0 -1
- package/dist/cli/app-runtime-cli.service.d.ts.map +0 -1
- package/dist/cli/app-runtime-cli.service.js.map +0 -1
- package/dist/cli/app-runtime-options.service.d.ts.map +0 -1
- package/dist/cli/app-runtime-options.service.js.map +0 -1
- package/dist/commands/create.controller.d.ts.map +0 -1
- package/dist/commands/create.controller.js.map +0 -1
- package/dist/commands/dev.controller.js.map +0 -1
- package/dist/commands/grant.controller.d.ts.map +0 -1
- package/dist/commands/grant.controller.js.map +0 -1
- package/dist/commands/info.controller.d.ts.map +0 -1
- package/dist/commands/info.controller.js.map +0 -1
- package/dist/commands/inspect.controller.js.map +0 -1
- package/dist/commands/install.controller.d.ts.map +0 -1
- package/dist/commands/install.controller.js.map +0 -1
- package/dist/commands/list.controller.d.ts.map +0 -1
- package/dist/commands/list.controller.js.map +0 -1
- package/dist/commands/pack.controller.d.ts +0 -17
- package/dist/commands/pack.controller.d.ts.map +0 -1
- package/dist/commands/pack.controller.js.map +0 -1
- package/dist/commands/permissions.controller.d.ts.map +0 -1
- package/dist/commands/permissions.controller.js.map +0 -1
- package/dist/commands/publish.controller.d.ts.map +0 -1
- package/dist/commands/publish.controller.js.map +0 -1
- package/dist/commands/registry.controller.d.ts.map +0 -1
- package/dist/commands/registry.controller.js.map +0 -1
- package/dist/commands/revoke.controller.d.ts.map +0 -1
- package/dist/commands/revoke.controller.js.map +0 -1
- package/dist/commands/run.controller.js.map +0 -1
- package/dist/commands/uninstall.controller.d.ts.map +0 -1
- package/dist/commands/uninstall.controller.js.map +0 -1
- package/dist/commands/update.controller.d.ts.map +0 -1
- package/dist/commands/update.controller.js.map +0 -1
- package/dist/commands/validate-publish.controller.d.ts.map +0 -1
- package/dist/commands/validate-publish.controller.js.map +0 -1
- package/dist/host/app-host.service.d.ts.map +0 -1
- package/dist/host/app-host.service.js.map +0 -1
- package/dist/host/app-instance.service.d.ts +0 -34
- package/dist/host/app-instance.service.d.ts.map +0 -1
- package/dist/host/app-instance.service.js.map +0 -1
- package/dist/install/app-installation.service.d.ts.map +0 -1
- package/dist/install/app-installation.service.js +0 -276
- package/dist/install/app-installation.service.js.map +0 -1
- package/dist/install/app-installation.types.d.ts.map +0 -1
- package/dist/main.js.map +0 -1
- package/dist/manifest/app-manifest.service.d.ts.map +0 -1
- package/dist/manifest/app-manifest.service.js +0 -147
- package/dist/manifest/app-manifest.service.js.map +0 -1
- package/dist/manifest/app-manifest.types.d.ts +0 -68
- package/dist/manifest/app-manifest.types.d.ts.map +0 -1
- package/dist/paths/app-home.service.d.ts.map +0 -1
- package/dist/paths/app-home.service.js.map +0 -1
- package/dist/permissions/app-grant.service.d.ts.map +0 -1
- package/dist/permissions/app-grant.service.js.map +0 -1
- package/dist/permissions/app-permissions.service.d.ts.map +0 -1
- package/dist/permissions/app-permissions.service.js.map +0 -1
- package/dist/permissions/app-permissions.types.d.ts.map +0 -1
- package/dist/publish/app-marketplace-client.service.d.ts.map +0 -1
- package/dist/publish/app-marketplace-client.service.js.map +0 -1
- package/dist/publish/app-marketplace-metadata.service.d.ts.map +0 -1
- package/dist/publish/app-marketplace-metadata.service.js.map +0 -1
- package/dist/publish/app-publish-validation.service.d.ts.map +0 -1
- package/dist/publish/app-publish-validation.service.js.map +0 -1
- package/dist/publish/app-publish.service.d.ts.map +0 -1
- package/dist/publish/app-publish.service.js.map +0 -1
- package/dist/publish/app-publish.types.d.ts.map +0 -1
- package/dist/publish/app-publish.types.js.map +0 -1
- package/dist/publish/platform-auth-state.service.d.ts.map +0 -1
- package/dist/publish/platform-auth-state.service.js.map +0 -1
- package/dist/registry/app-registry-config.service.js.map +0 -1
- package/dist/registry/app-registry.service.d.ts.map +0 -1
- package/dist/registry/app-registry.service.js +0 -118
- package/dist/registry/app-registry.service.js.map +0 -1
- package/dist/registry/app-registry.types.d.ts.map +0 -1
- package/dist/registry/app-remote-registry-client.service.d.ts.map +0 -1
- package/dist/registry/app-remote-registry-client.service.js.map +0 -1
- package/dist/registry/app-remote-registry.types.d.ts.map +0 -1
- package/dist/registry/app-remote-registry.types.js.map +0 -1
- package/dist/runtime/app-build.service.d.ts.map +0 -1
- package/dist/runtime/app-build.service.js.map +0 -1
- package/dist/runtime/app-runtime-toolchain.service.d.ts.map +0 -1
- package/dist/runtime/app-runtime-toolchain.service.js.map +0 -1
- package/dist/runtime/main-runner.service.d.ts +0 -9
- package/dist/runtime/main-runner.service.d.ts.map +0 -1
- package/dist/runtime/main-runner.service.js +0 -6
- package/dist/runtime/main-runner.service.js.map +0 -1
- package/dist/runtime/main-runner.types.d.ts.map +0 -1
- package/dist/runtime/wasm-main-runner.service.d.ts.map +0 -1
- package/dist/runtime/wasm-main-runner.service.js.map +0 -1
- package/dist/runtime/wasmtime-wasi-http-component.service.d.ts.map +0 -1
- package/dist/runtime/wasmtime-wasi-http-component.service.js.map +0 -1
- package/dist/sidecar/wasm-sidecar-client.service.d.ts.map +0 -1
- package/dist/sidecar/wasm-sidecar-client.service.js.map +0 -1
- package/dist/ui/ui-server.service.d.ts.map +0 -1
- package/dist/ui/ui-server.service.js.map +0 -1
- /package/dist/{main.d.ts → app/main.d.ts} +0 -0
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
import { AppManifestService } from "../manifest/app-manifest.service.js";
|
|
2
|
-
import { mkdir, readFile, readdir, rm, writeFile } from "node:fs/promises";
|
|
3
|
-
import { createHash } from "node:crypto";
|
|
4
|
-
import path from "node:path";
|
|
5
|
-
import { strToU8, unzipSync, zipSync } from "fflate";
|
|
6
|
-
//#region src/bundle/app-bundle.service.ts
|
|
7
|
-
var AppBundleService = class {
|
|
8
|
-
constructor(manifestService = new AppManifestService()) {
|
|
9
|
-
this.manifestService = manifestService;
|
|
10
|
-
}
|
|
11
|
-
packAppDirectory = async (params) => {
|
|
12
|
-
const { appDirectory, outputPath, mode: requestedMode } = params;
|
|
13
|
-
const bundle = await this.manifestService.load(appDirectory);
|
|
14
|
-
const mode = requestedMode ?? "bundle";
|
|
15
|
-
const { appFiles, filePaths } = mode === "source" ? await this.collectSourceFiles(bundle) : await this.collectRuntimeFiles(bundle);
|
|
16
|
-
const metadata = this.buildMetadata(bundle.manifest.id, bundle.manifest.name, bundle.manifest.version, mode);
|
|
17
|
-
const bundleJsonPath = ".napp/bundle.json";
|
|
18
|
-
const checksumsJsonPath = ".napp/checksums.json";
|
|
19
|
-
const bundleJsonBytes = strToU8(`${JSON.stringify(metadata, null, 2)}\n`);
|
|
20
|
-
const checksums = this.buildChecksums({
|
|
21
|
-
...appFiles,
|
|
22
|
-
[bundleJsonPath]: bundleJsonBytes
|
|
23
|
-
});
|
|
24
|
-
const checksumsJsonBytes = strToU8(`${JSON.stringify(checksums, null, 2)}\n`);
|
|
25
|
-
const archiveBytes = zipSync({
|
|
26
|
-
...appFiles,
|
|
27
|
-
[bundleJsonPath]: bundleJsonBytes,
|
|
28
|
-
[checksumsJsonPath]: checksumsJsonBytes
|
|
29
|
-
}, { level: 9 });
|
|
30
|
-
const resolvedOutputPath = outputPath ? path.resolve(outputPath) : path.join(path.dirname(bundle.appDirectory), `${this.normalizeBundleFileName(bundle.manifest.id)}-${bundle.manifest.version}.napp`);
|
|
31
|
-
await mkdir(path.dirname(resolvedOutputPath), { recursive: true });
|
|
32
|
-
await writeFile(resolvedOutputPath, Buffer.from(archiveBytes));
|
|
33
|
-
return {
|
|
34
|
-
bundlePath: resolvedOutputPath,
|
|
35
|
-
metadata,
|
|
36
|
-
sizeBytes: archiveBytes.byteLength,
|
|
37
|
-
filePaths
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
extractBundle = async (params) => {
|
|
41
|
-
const bundlePath = path.resolve(params.bundlePath);
|
|
42
|
-
const targetDirectory = path.resolve(params.targetDirectory);
|
|
43
|
-
await rm(targetDirectory, {
|
|
44
|
-
recursive: true,
|
|
45
|
-
force: true
|
|
46
|
-
});
|
|
47
|
-
await mkdir(targetDirectory, { recursive: true });
|
|
48
|
-
const archive = unzipSync(new Uint8Array(await readFile(bundlePath)));
|
|
49
|
-
const entryNames = Object.keys(archive).sort((left, right) => left.localeCompare(right));
|
|
50
|
-
for (const entryName of entryNames) {
|
|
51
|
-
const normalizedEntry = this.normalizeArchiveEntry(entryName);
|
|
52
|
-
const targetPath = path.join(targetDirectory, normalizedEntry);
|
|
53
|
-
await mkdir(path.dirname(targetPath), { recursive: true });
|
|
54
|
-
await writeFile(targetPath, Buffer.from(archive[entryName]));
|
|
55
|
-
}
|
|
56
|
-
const rawMetadata = await this.readJsonFile(path.join(targetDirectory, ".napp", "bundle.json"), "bundle metadata");
|
|
57
|
-
const metadata = this.normalizeMetadata(rawMetadata);
|
|
58
|
-
const checksums = await this.readJsonFile(path.join(targetDirectory, ".napp", "checksums.json"), "bundle checksums");
|
|
59
|
-
await this.verifyChecksums(targetDirectory, checksums);
|
|
60
|
-
await this.manifestService.load(targetDirectory);
|
|
61
|
-
return {
|
|
62
|
-
appDirectory: targetDirectory,
|
|
63
|
-
metadata,
|
|
64
|
-
checksums
|
|
65
|
-
};
|
|
66
|
-
};
|
|
67
|
-
collectRuntimeFiles = async (bundle) => {
|
|
68
|
-
const appDirectory = bundle.appDirectory;
|
|
69
|
-
const filePaths = new Set([path.relative(appDirectory, bundle.manifestPath), path.relative(appDirectory, bundle.mainEntryPath)]);
|
|
70
|
-
await this.collectDirectoryPaths(bundle.uiDirectoryPath, appDirectory, filePaths);
|
|
71
|
-
await this.collectDirectoryPaths(bundle.assetsDirectoryPath, appDirectory, filePaths);
|
|
72
|
-
if (bundle.iconPath) filePaths.add(path.relative(appDirectory, bundle.iconPath));
|
|
73
|
-
const sortedPaths = Array.from(filePaths).sort((left, right) => left.localeCompare(right));
|
|
74
|
-
const appFiles = {};
|
|
75
|
-
for (const relativePath of sortedPaths) appFiles[relativePath] = new Uint8Array(await readFile(path.join(appDirectory, relativePath)));
|
|
76
|
-
return {
|
|
77
|
-
appFiles,
|
|
78
|
-
filePaths: sortedPaths
|
|
79
|
-
};
|
|
80
|
-
};
|
|
81
|
-
collectSourceFiles = async (bundle) => {
|
|
82
|
-
const filePaths = /* @__PURE__ */ new Set();
|
|
83
|
-
await this.collectSourceDirectoryPaths(bundle.appDirectory, bundle.appDirectory, filePaths);
|
|
84
|
-
const sortedPaths = Array.from(filePaths).sort((left, right) => left.localeCompare(right));
|
|
85
|
-
const appFiles = {};
|
|
86
|
-
for (const relativePath of sortedPaths) {
|
|
87
|
-
if (bundle.manifest.main.kind === "wasi-http-component" && relativePath === bundle.manifest.main.entry) {
|
|
88
|
-
appFiles[relativePath] = SOURCE_WASM_PLACEHOLDER_BYTES;
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
|
-
appFiles[relativePath] = new Uint8Array(await readFile(path.join(bundle.appDirectory, relativePath)));
|
|
92
|
-
}
|
|
93
|
-
return {
|
|
94
|
-
appFiles,
|
|
95
|
-
filePaths: sortedPaths
|
|
96
|
-
};
|
|
97
|
-
};
|
|
98
|
-
collectDirectoryPaths = async (directoryPath, appDirectory, filePaths) => {
|
|
99
|
-
try {
|
|
100
|
-
const entries = await readdir(directoryPath, { withFileTypes: true });
|
|
101
|
-
for (const entry of entries) {
|
|
102
|
-
const entryPath = path.join(directoryPath, entry.name);
|
|
103
|
-
if (entry.isDirectory()) {
|
|
104
|
-
await this.collectDirectoryPaths(entryPath, appDirectory, filePaths);
|
|
105
|
-
continue;
|
|
106
|
-
}
|
|
107
|
-
if (!entry.isFile()) continue;
|
|
108
|
-
filePaths.add(path.relative(appDirectory, entryPath));
|
|
109
|
-
}
|
|
110
|
-
} catch {
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
collectSourceDirectoryPaths = async (directoryPath, appDirectory, filePaths) => {
|
|
115
|
-
try {
|
|
116
|
-
const entries = await readdir(directoryPath, { withFileTypes: true });
|
|
117
|
-
for (const entry of entries) {
|
|
118
|
-
const entryPath = path.join(directoryPath, entry.name);
|
|
119
|
-
const relativePath = path.relative(appDirectory, entryPath).replace(/\\/g, "/");
|
|
120
|
-
if (entry.isDirectory()) {
|
|
121
|
-
if (this.shouldExcludeSourcePath(relativePath)) continue;
|
|
122
|
-
await this.collectSourceDirectoryPaths(entryPath, appDirectory, filePaths);
|
|
123
|
-
continue;
|
|
124
|
-
}
|
|
125
|
-
if (!entry.isFile()) continue;
|
|
126
|
-
if (this.shouldExcludeSourcePath(relativePath)) continue;
|
|
127
|
-
filePaths.add(relativePath);
|
|
128
|
-
}
|
|
129
|
-
} catch {
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
shouldExcludeSourcePath = (relativePath) => {
|
|
134
|
-
return relativePath === ".napp" || relativePath.startsWith(".napp/") || relativePath === "main/node_modules" || relativePath.startsWith("main/node_modules/") || relativePath === "main/dist" || relativePath.startsWith("main/dist/") || relativePath === "main/generated" || relativePath.startsWith("main/generated/");
|
|
135
|
-
};
|
|
136
|
-
buildMetadata = (appId, name, version, distributionMode) => {
|
|
137
|
-
return {
|
|
138
|
-
bundleFormatVersion: 1,
|
|
139
|
-
distributionMode,
|
|
140
|
-
appId,
|
|
141
|
-
name,
|
|
142
|
-
version,
|
|
143
|
-
entryManifest: "manifest.json",
|
|
144
|
-
checksumsFile: ".napp/checksums.json"
|
|
145
|
-
};
|
|
146
|
-
};
|
|
147
|
-
normalizeMetadata = (rawMetadata) => {
|
|
148
|
-
return {
|
|
149
|
-
bundleFormatVersion: 1,
|
|
150
|
-
distributionMode: rawMetadata.distributionMode === "source" ? "source" : "bundle",
|
|
151
|
-
appId: String(rawMetadata.appId ?? ""),
|
|
152
|
-
name: String(rawMetadata.name ?? ""),
|
|
153
|
-
version: String(rawMetadata.version ?? ""),
|
|
154
|
-
entryManifest: "manifest.json",
|
|
155
|
-
checksumsFile: ".napp/checksums.json"
|
|
156
|
-
};
|
|
157
|
-
};
|
|
158
|
-
buildChecksums = (files) => {
|
|
159
|
-
const entries = Object.entries(files).sort(([left], [right]) => left.localeCompare(right));
|
|
160
|
-
return {
|
|
161
|
-
algorithm: "sha256",
|
|
162
|
-
files: Object.fromEntries(entries.map(([relativePath, fileBytes]) => [relativePath, this.computeSha256(fileBytes)]))
|
|
163
|
-
};
|
|
164
|
-
};
|
|
165
|
-
computeSha256 = (fileBytes) => {
|
|
166
|
-
return createHash("sha256").update(Buffer.from(fileBytes)).digest("hex");
|
|
167
|
-
};
|
|
168
|
-
normalizeBundleFileName = (appId) => {
|
|
169
|
-
return appId.replace(/[^a-zA-Z0-9._-]+/g, "-");
|
|
170
|
-
};
|
|
171
|
-
normalizeArchiveEntry = (entryName) => {
|
|
172
|
-
const normalized = entryName.replace(/\\/g, "/");
|
|
173
|
-
if (!normalized || normalized.startsWith("/") || normalized.includes("../")) throw new Error(`bundle 内包含非法路径:${entryName}`);
|
|
174
|
-
return normalized;
|
|
175
|
-
};
|
|
176
|
-
readJsonFile = async (filePath, label) => {
|
|
177
|
-
try {
|
|
178
|
-
return JSON.parse(await readFile(filePath, "utf-8"));
|
|
179
|
-
} catch (error) {
|
|
180
|
-
throw new Error(`无法读取 ${label}:${error instanceof Error ? error.message : String(error)}`);
|
|
181
|
-
}
|
|
182
|
-
};
|
|
183
|
-
verifyChecksums = async (appDirectory, checksums) => {
|
|
184
|
-
if (checksums.algorithm !== "sha256") throw new Error("当前只支持 sha256 checksums。");
|
|
185
|
-
const entries = Object.entries(checksums.files).sort(([left], [right]) => left.localeCompare(right));
|
|
186
|
-
for (const [relativePath, expectedHash] of entries) {
|
|
187
|
-
const fileBytes = new Uint8Array(await readFile(path.join(appDirectory, relativePath)));
|
|
188
|
-
if (this.computeSha256(fileBytes) !== expectedHash) throw new Error(`bundle checksum 校验失败:${relativePath}`);
|
|
189
|
-
}
|
|
190
|
-
};
|
|
191
|
-
};
|
|
192
|
-
const SOURCE_WASM_PLACEHOLDER_BYTES = Uint8Array.from(Buffer.from("AGFzbQEAAAABBwFgAn9/AX8DAgEABxMBD3N1bW1hcml6ZV9ub3RlcwAACg0BCwAgACABakHIAWoL", "base64"));
|
|
193
|
-
//#endregion
|
|
194
|
-
export { AppBundleService };
|
|
195
|
-
|
|
196
|
-
//# sourceMappingURL=app-bundle.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-bundle.service.js","names":[],"sources":["../../src/bundle/app-bundle.service.ts"],"sourcesContent":["import { mkdir, readFile, readdir, rm, writeFile } from \"node:fs/promises\";\nimport { createHash } from \"node:crypto\";\nimport path from \"node:path\";\nimport { unzipSync, zipSync, strToU8 } from \"fflate\";\nimport { AppManifestService } from \"../manifest/app-manifest.service.js\";\nimport type {\n AppBundleChecksums,\n AppBundleExtractResult,\n AppBundleMetadata,\n AppBundlePackResult,\n AppDistributionMode,\n} from \"./app-bundle.types.js\";\n\nexport class AppBundleService {\n constructor(\n private readonly manifestService: AppManifestService = new AppManifestService(),\n ) {}\n\n packAppDirectory = async (params: {\n appDirectory: string;\n outputPath?: string;\n mode?: AppDistributionMode;\n }): Promise<AppBundlePackResult> => {\n const { appDirectory, outputPath, mode: requestedMode } = params;\n const bundle = await this.manifestService.load(appDirectory);\n const mode = requestedMode ?? \"bundle\";\n const { appFiles, filePaths } =\n mode === \"source\"\n ? await this.collectSourceFiles(bundle)\n : await this.collectRuntimeFiles(bundle);\n const metadata = this.buildMetadata(\n bundle.manifest.id,\n bundle.manifest.name,\n bundle.manifest.version,\n mode,\n );\n const bundleJsonPath = \".napp/bundle.json\";\n const checksumsJsonPath = \".napp/checksums.json\";\n const bundleJsonBytes = strToU8(`${JSON.stringify(metadata, null, 2)}\\n`);\n const checksums = this.buildChecksums({\n ...appFiles,\n [bundleJsonPath]: bundleJsonBytes,\n });\n const checksumsJsonBytes = strToU8(`${JSON.stringify(checksums, null, 2)}\\n`);\n const archiveBytes = zipSync(\n {\n ...appFiles,\n [bundleJsonPath]: bundleJsonBytes,\n [checksumsJsonPath]: checksumsJsonBytes,\n },\n {\n level: 9,\n },\n );\n const resolvedOutputPath = outputPath\n ? path.resolve(outputPath)\n : path.join(\n path.dirname(bundle.appDirectory),\n `${this.normalizeBundleFileName(bundle.manifest.id)}-${bundle.manifest.version}.napp`,\n );\n await mkdir(path.dirname(resolvedOutputPath), { recursive: true });\n await writeFile(resolvedOutputPath, Buffer.from(archiveBytes));\n return {\n bundlePath: resolvedOutputPath,\n metadata,\n sizeBytes: archiveBytes.byteLength,\n filePaths,\n };\n };\n\n extractBundle = async (params: {\n bundlePath: string;\n targetDirectory: string;\n }): Promise<AppBundleExtractResult> => {\n const bundlePath = path.resolve(params.bundlePath);\n const targetDirectory = path.resolve(params.targetDirectory);\n await rm(targetDirectory, { recursive: true, force: true });\n await mkdir(targetDirectory, { recursive: true });\n const archive = unzipSync(new Uint8Array(await readFile(bundlePath)));\n const entryNames = Object.keys(archive).sort((left, right) => left.localeCompare(right));\n for (const entryName of entryNames) {\n const normalizedEntry = this.normalizeArchiveEntry(entryName);\n const targetPath = path.join(targetDirectory, normalizedEntry);\n await mkdir(path.dirname(targetPath), { recursive: true });\n await writeFile(targetPath, Buffer.from(archive[entryName]));\n }\n const rawMetadata = await this.readJsonFile<Partial<AppBundleMetadata>>(\n path.join(targetDirectory, \".napp\", \"bundle.json\"),\n \"bundle metadata\",\n );\n const metadata = this.normalizeMetadata(rawMetadata);\n const checksums = await this.readJsonFile<AppBundleChecksums>(\n path.join(targetDirectory, \".napp\", \"checksums.json\"),\n \"bundle checksums\",\n );\n await this.verifyChecksums(targetDirectory, checksums);\n await this.manifestService.load(targetDirectory);\n return {\n appDirectory: targetDirectory,\n metadata,\n checksums,\n };\n };\n\n private collectRuntimeFiles = async (\n bundle: AppBundleMetadataBundleSource,\n ): Promise<{\n appFiles: Record<string, Uint8Array>;\n filePaths: string[];\n }> => {\n const appDirectory = bundle.appDirectory;\n const filePaths = new Set<string>([\n path.relative(appDirectory, bundle.manifestPath),\n path.relative(appDirectory, bundle.mainEntryPath),\n ]);\n await this.collectDirectoryPaths(bundle.uiDirectoryPath, appDirectory, filePaths);\n await this.collectDirectoryPaths(bundle.assetsDirectoryPath, appDirectory, filePaths);\n if (bundle.iconPath) {\n filePaths.add(path.relative(appDirectory, bundle.iconPath));\n }\n const sortedPaths = Array.from(filePaths).sort((left, right) => left.localeCompare(right));\n const appFiles: Record<string, Uint8Array> = {};\n for (const relativePath of sortedPaths) {\n appFiles[relativePath] = new Uint8Array(await readFile(path.join(appDirectory, relativePath)));\n }\n return {\n appFiles,\n filePaths: sortedPaths,\n };\n };\n\n private collectSourceFiles = async (\n bundle: AppBundleMetadataBundleSource,\n ): Promise<{\n appFiles: Record<string, Uint8Array>;\n filePaths: string[];\n }> => {\n const filePaths = new Set<string>();\n await this.collectSourceDirectoryPaths(bundle.appDirectory, bundle.appDirectory, filePaths);\n const sortedPaths = Array.from(filePaths).sort((left, right) => left.localeCompare(right));\n const appFiles: Record<string, Uint8Array> = {};\n for (const relativePath of sortedPaths) {\n if (\n bundle.manifest.main.kind === \"wasi-http-component\" &&\n relativePath === bundle.manifest.main.entry\n ) {\n appFiles[relativePath] = SOURCE_WASM_PLACEHOLDER_BYTES;\n continue;\n }\n appFiles[relativePath] = new Uint8Array(await readFile(path.join(bundle.appDirectory, relativePath)));\n }\n return {\n appFiles,\n filePaths: sortedPaths,\n };\n };\n\n private collectDirectoryPaths = async (\n directoryPath: string,\n appDirectory: string,\n filePaths: Set<string>,\n ): Promise<void> => {\n try {\n const entries = await readdir(directoryPath, { withFileTypes: true });\n for (const entry of entries) {\n const entryPath = path.join(directoryPath, entry.name);\n if (entry.isDirectory()) {\n await this.collectDirectoryPaths(entryPath, appDirectory, filePaths);\n continue;\n }\n if (!entry.isFile()) {\n continue;\n }\n filePaths.add(path.relative(appDirectory, entryPath));\n }\n } catch {\n return;\n }\n };\n\n private collectSourceDirectoryPaths = async (\n directoryPath: string,\n appDirectory: string,\n filePaths: Set<string>,\n ): Promise<void> => {\n try {\n const entries = await readdir(directoryPath, { withFileTypes: true });\n for (const entry of entries) {\n const entryPath = path.join(directoryPath, entry.name);\n const relativePath = path.relative(appDirectory, entryPath).replace(/\\\\/g, \"/\");\n if (entry.isDirectory()) {\n if (this.shouldExcludeSourcePath(relativePath)) {\n continue;\n }\n await this.collectSourceDirectoryPaths(entryPath, appDirectory, filePaths);\n continue;\n }\n if (!entry.isFile()) {\n continue;\n }\n if (this.shouldExcludeSourcePath(relativePath)) {\n continue;\n }\n filePaths.add(relativePath);\n }\n } catch {\n return;\n }\n };\n\n private shouldExcludeSourcePath = (relativePath: string): boolean => {\n return (\n relativePath === \".napp\" ||\n relativePath.startsWith(\".napp/\") ||\n relativePath === \"main/node_modules\" ||\n relativePath.startsWith(\"main/node_modules/\") ||\n relativePath === \"main/dist\" ||\n relativePath.startsWith(\"main/dist/\") ||\n relativePath === \"main/generated\" ||\n relativePath.startsWith(\"main/generated/\")\n );\n };\n\n private buildMetadata = (\n appId: string,\n name: string,\n version: string,\n distributionMode: AppDistributionMode,\n ): AppBundleMetadata => {\n return {\n bundleFormatVersion: 1,\n distributionMode,\n appId,\n name,\n version,\n entryManifest: \"manifest.json\",\n checksumsFile: \".napp/checksums.json\",\n };\n };\n\n private normalizeMetadata = (rawMetadata: Partial<AppBundleMetadata>): AppBundleMetadata => {\n return {\n bundleFormatVersion: 1,\n distributionMode: rawMetadata.distributionMode === \"source\" ? \"source\" : \"bundle\",\n appId: String(rawMetadata.appId ?? \"\"),\n name: String(rawMetadata.name ?? \"\"),\n version: String(rawMetadata.version ?? \"\"),\n entryManifest: \"manifest.json\",\n checksumsFile: \".napp/checksums.json\",\n };\n };\n\n private buildChecksums = (\n files: Record<string, Uint8Array>,\n ): AppBundleChecksums => {\n const entries = Object.entries(files).sort(([left], [right]) => left.localeCompare(right));\n return {\n algorithm: \"sha256\",\n files: Object.fromEntries(\n entries.map(([relativePath, fileBytes]) => [relativePath, this.computeSha256(fileBytes)]),\n ),\n };\n };\n\n private computeSha256 = (fileBytes: Uint8Array): string => {\n return createHash(\"sha256\").update(Buffer.from(fileBytes)).digest(\"hex\");\n };\n\n private normalizeBundleFileName = (appId: string): string => {\n return appId.replace(/[^a-zA-Z0-9._-]+/g, \"-\");\n };\n\n private normalizeArchiveEntry = (entryName: string): string => {\n const normalized = entryName.replace(/\\\\/g, \"/\");\n if (!normalized || normalized.startsWith(\"/\") || normalized.includes(\"../\")) {\n throw new Error(`bundle 内包含非法路径:${entryName}`);\n }\n return normalized;\n };\n\n private readJsonFile = async <T>(filePath: string, label: string): Promise<T> => {\n try {\n return JSON.parse(await readFile(filePath, \"utf-8\")) as T;\n } catch (error) {\n throw new Error(\n `无法读取 ${label}:${error instanceof Error ? error.message : String(error)}`,\n );\n }\n };\n\n private verifyChecksums = async (\n appDirectory: string,\n checksums: AppBundleChecksums,\n ): Promise<void> => {\n if (checksums.algorithm !== \"sha256\") {\n throw new Error(\"当前只支持 sha256 checksums。\");\n }\n const entries = Object.entries(checksums.files).sort(([left], [right]) => left.localeCompare(right));\n for (const [relativePath, expectedHash] of entries) {\n const fileBytes = new Uint8Array(await readFile(path.join(appDirectory, relativePath)));\n const actualHash = this.computeSha256(fileBytes);\n if (actualHash !== expectedHash) {\n throw new Error(`bundle checksum 校验失败:${relativePath}`);\n }\n }\n };\n}\n\ntype AppBundleMetadataBundleSource = Awaited<ReturnType<AppManifestService[\"load\"]>>;\n\nconst SOURCE_WASM_PLACEHOLDER_BYTES = Uint8Array.from(\n Buffer.from(\n \"AGFzbQEAAAABBwFgAn9/AX8DAgEABxMBD3N1bW1hcml6ZV9ub3RlcwAACg0BCwAgACABakHIAWoL\",\n \"base64\",\n ),\n);\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-bundle.types.d.ts","names":[],"sources":["../../src/bundle/app-bundle.types.ts"],"mappings":";KAAY,mBAAA;AAAA,KAEA,iBAAA;EACV,mBAAA;EACA,gBAAA,EAAkB,mBAAA;EAClB,KAAA;EACA,IAAA;EACA,OAAA;EACA,aAAA;EACA,aAAA;AAAA;AAAA,KAGU,kBAAA;EACV,SAAA;EACA,KAAA,EAAO,MAAA;AAAA;AAAA,KAGG,mBAAA;EACV,UAAA;EACA,QAAA,EAAU,iBAAA;EACV,SAAA;EACA,SAAA;AAAA;AAAA,KAGU,sBAAA;EACV,YAAA;EACA,QAAA,EAAU,iBAAA;EACV,SAAA,EAAW,kBAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-runtime-cli.service.d.ts","names":[],"sources":["../../src/cli/app-runtime-cli.service.ts"],"mappings":";;;cAqBa,oBAAA;EAAA,iBAEQ,cAAA;cAAA,cAAA,GAAgB,wBAAA;EAGnC,GAAA,QAAgB,OAAA;EAAA,QAkBR,QAAA;EAAA,QA8DA,YAAA;EAAA,QAWA,aAAA;EAAA,QAUA,WAAA;EAAA,QAsBA,YAAA;EAAA,QAwBA,SAAA;EAAA,QAcA,SAAA;EAAA,QAcA,UAAA;EAAA,QAYA,aAAA;EAAA,QAcA,qBAAA;EAAA,QAYA,aAAA;EAAA,QAWA,YAAA;EAAA,QAYA,eAAA;EAAA,QAWA,UAAA;EAAA,QAQA,UAAA;EAAA,QAUA,cAAA;EAAA,QA8CA,iBAAA;EAAA,QAUA,WAAA;EAAA,QAWA,YAAA;EAAA,QAWA,UAAA;EAAA,QAwBA,KAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-runtime-cli.service.js","names":["packageJson.version"],"sources":["../../src/cli/app-runtime-cli.service.ts"],"sourcesContent":["import packageJson from \"../../package.json\" with { type: \"json\" };\nimport { CreateCommand } from \"../commands/create.controller.js\";\nimport { DevCommand } from \"../commands/dev.controller.js\";\nimport { GrantCommand } from \"../commands/grant.controller.js\";\nimport { InfoCommand } from \"../commands/info.controller.js\";\nimport { InspectCommand } from \"../commands/inspect.controller.js\";\nimport { InstallCommand } from \"../commands/install.controller.js\";\nimport { ListCommand } from \"../commands/list.controller.js\";\nimport { PackCommand } from \"../commands/pack.controller.js\";\nimport { PermissionsCommand } from \"../commands/permissions.controller.js\";\nimport { PublishCommand } from \"../commands/publish.controller.js\";\nimport { RegistryCommand } from \"../commands/registry.controller.js\";\nimport { RevokeCommand } from \"../commands/revoke.controller.js\";\nimport { RunCommand } from \"../commands/run.controller.js\";\nimport { UninstallCommand } from \"../commands/uninstall.controller.js\";\nimport { UpdateCommand } from \"../commands/update.controller.js\";\nimport { ValidatePublishCommand } from \"../commands/validate-publish.controller.js\";\nimport { AppBuildService } from \"../runtime/app-build.service.js\";\nimport { AppRuntimeToolchainService } from \"../runtime/app-runtime-toolchain.service.js\";\nimport { AppRuntimeOptionsService } from \"./app-runtime-options.service.js\";\n\nexport class AppRuntimeCliService {\n constructor(\n private readonly optionsService: AppRuntimeOptionsService = new AppRuntimeOptionsService(),\n ) {}\n\n run = async (): Promise<void> => {\n const args = process.argv.slice(2);\n const [command, ...restArgs] = args;\n if (command === \"--help\" || command === \"help\") {\n this.writeUsage();\n return;\n }\n if (command === \"--version\" || command === \"version\") {\n this.write(`${packageJson.version}\\n`);\n return;\n }\n if (!command) {\n this.writeUsage();\n process.exit(1);\n }\n await this.dispatch(command, restArgs);\n };\n\n private dispatch = async (command: string, restArgs: string[]): Promise<void> => {\n switch (command) {\n case \"create\":\n await this.handleCreate(restArgs);\n return;\n case \"inspect\":\n await this.handleInspect(restArgs);\n return;\n case \"build\":\n await this.handleBuild(restArgs);\n return;\n case \"doctor\":\n await this.handleDoctor(restArgs);\n return;\n case \"run\":\n await this.handleRun(restArgs);\n return;\n case \"dev\":\n await this.handleDev(restArgs);\n return;\n case \"pack\":\n await this.handlePack(restArgs);\n return;\n case \"publish\":\n await this.handlePublish(restArgs);\n return;\n case \"validate-publish\":\n await this.handleValidatePublish(restArgs);\n return;\n case \"install\":\n await this.handleInstall(restArgs);\n return;\n case \"update\":\n await this.handleUpdate(restArgs);\n return;\n case \"uninstall\":\n await this.handleUninstall(restArgs);\n return;\n case \"list\":\n await this.handleList(restArgs);\n return;\n case \"info\":\n await this.handleInfo(restArgs);\n return;\n case \"registry\":\n await this.handleRegistry(restArgs);\n return;\n case \"permissions\":\n await this.handlePermissions(restArgs);\n return;\n case \"grant\":\n await this.handleGrant(restArgs);\n return;\n case \"revoke\":\n await this.handleRevoke(restArgs);\n return;\n default:\n this.writeUsage();\n process.exit(1);\n }\n };\n\n private handleCreate = async (restArgs: string[]): Promise<void> => {\n const { target, optionArgs } = this.optionsService.readTarget(\"create\", restArgs);\n const options = this.optionsService.readCreateOptions(optionArgs);\n await new CreateCommand().run({\n appDirectory: target,\n template: options.template,\n json: options.json,\n write: this.write,\n });\n };\n\n private handleInspect = async (restArgs: string[]): Promise<void> => {\n const { target, optionArgs } = this.optionsService.readTarget(\"inspect\", restArgs);\n const options = this.optionsService.readJsonOnlyOptions(optionArgs);\n await new InspectCommand().run({\n appDirectory: target,\n json: options.json,\n write: this.write,\n });\n };\n\n private handleBuild = async (restArgs: string[]): Promise<void> => {\n const { target, optionArgs } = this.optionsService.readTarget(\"build\", restArgs);\n const options = this.optionsService.readBuildOptions(optionArgs);\n const result = await new AppBuildService().build({\n appDirectory: target,\n install: options.install,\n });\n if (options.json) {\n this.write(`${JSON.stringify({ ok: true, build: result }, null, 2)}\\n`);\n return;\n }\n if (!result.built) {\n this.write(`Build skipped: ${result.skippedReason ?? result.mainKind}\\n`);\n return;\n }\n this.write(`Built ${result.mainKind} app\\n`);\n this.write(`Main: ${result.mainEntryPath}\\n`);\n if (result.installedDependencies) {\n this.write(\"Dependencies: installed\\n\");\n }\n };\n\n private handleDoctor = async (restArgs: string[]): Promise<void> => {\n const options = this.optionsService.readJsonOnlyOptions(restArgs);\n const result = await new AppRuntimeToolchainService().doctor();\n if (options.json) {\n this.write(`${JSON.stringify({ ok: result.ok, doctor: result }, null, 2)}\\n`);\n if (!result.ok) {\n process.exitCode = 1;\n }\n return;\n }\n this.write(`NApp runtime doctor: ${result.ok ? \"ok\" : \"not ready\"}\\n`);\n for (const tool of result.tools) {\n this.write(\n `${tool.ok ? \"ok\" : \"missing\"} ${tool.name}${tool.version ? ` ${tool.version}` : \"\"}\\n`,\n );\n if (!tool.ok) {\n this.write(` ${tool.installHint}\\n`);\n }\n }\n if (!result.ok) {\n process.exitCode = 1;\n }\n };\n\n private handleRun = async (restArgs: string[]): Promise<void> => {\n const { target, optionArgs } = this.optionsService.readTarget(\"run\", restArgs);\n const options = this.optionsService.readRuntimeOptions(optionArgs);\n await new RunCommand().run({\n appReference: target,\n host: options.host,\n port: options.port,\n dataDirectory: options.dataDirectory,\n json: options.json,\n documentGrantMap: options.documentGrantMap,\n write: this.write,\n });\n };\n\n private handleDev = async (restArgs: string[]): Promise<void> => {\n const { target, optionArgs } = this.optionsService.readTarget(\"dev\", restArgs);\n const options = this.optionsService.readRuntimeOptions(optionArgs);\n await new DevCommand().run({\n appReference: target,\n host: options.host,\n port: options.port,\n dataDirectory: options.dataDirectory,\n json: options.json,\n documentGrantMap: options.documentGrantMap,\n write: this.write,\n });\n };\n\n private handlePack = async (restArgs: string[]): Promise<void> => {\n const { target, optionArgs } = this.optionsService.readTarget(\"pack\", restArgs);\n const options = this.optionsService.readPackOptions(optionArgs);\n await new PackCommand().run({\n appDirectory: target,\n outputPath: options.outputPath,\n mode: options.mode,\n json: options.json,\n write: this.write,\n });\n };\n\n private handlePublish = async (restArgs: string[]): Promise<void> => {\n const { target, optionArgs } = this.optionsService.readTarget(\"publish\", restArgs);\n const options = this.optionsService.readPublishOptions(optionArgs);\n await new PublishCommand().run({\n appDirectory: target,\n metadataPath: options.metadataPath,\n apiBaseUrl: options.apiBaseUrl,\n token: options.token,\n mode: options.mode,\n json: options.json,\n write: this.write,\n });\n };\n\n private handleValidatePublish = async (restArgs: string[]): Promise<void> => {\n const { target, optionArgs } = this.optionsService.readTarget(\"validate-publish\", restArgs);\n const options = this.optionsService.readPublishOptions(optionArgs);\n await new ValidatePublishCommand().run({\n appDirectory: target,\n metadataPath: options.metadataPath,\n mode: options.mode,\n json: options.json,\n write: this.write,\n });\n };\n\n private handleInstall = async (restArgs: string[]): Promise<void> => {\n const { target, optionArgs } = this.optionsService.readTarget(\"install\", restArgs);\n const options = this.optionsService.readInstallOptions(optionArgs);\n await new InstallCommand().run({\n appSource: target,\n registryUrl: options.registryUrl,\n json: options.json,\n write: this.write,\n });\n };\n\n private handleUpdate = async (restArgs: string[]): Promise<void> => {\n const { target, optionArgs } = this.optionsService.readTarget(\"update\", restArgs);\n const options = this.optionsService.readUpdateOptions(optionArgs);\n await new UpdateCommand().run({\n appId: target,\n version: options.version,\n registryUrl: options.registryUrl,\n json: options.json,\n write: this.write,\n });\n };\n\n private handleUninstall = async (restArgs: string[]): Promise<void> => {\n const { target, optionArgs } = this.optionsService.readTarget(\"uninstall\", restArgs);\n const options = this.optionsService.readUninstallOptions(optionArgs);\n await new UninstallCommand().run({\n appId: target,\n purgeData: options.purgeData,\n json: options.json,\n write: this.write,\n });\n };\n\n private handleList = async (restArgs: string[]): Promise<void> => {\n const options = this.optionsService.readJsonOnlyOptions(restArgs);\n await new ListCommand().run({\n json: options.json,\n write: this.write,\n });\n };\n\n private handleInfo = async (restArgs: string[]): Promise<void> => {\n const { target, optionArgs } = this.optionsService.readTarget(\"info\", restArgs);\n const options = this.optionsService.readJsonOnlyOptions(optionArgs);\n await new InfoCommand().run({\n appId: target,\n json: options.json,\n write: this.write,\n });\n };\n\n private handleRegistry = async (restArgs: string[]): Promise<void> => {\n const [actionOrUrl, ...optionArgs] = restArgs;\n if (!actionOrUrl || actionOrUrl === \"get\") {\n const options = this.optionsService.readJsonOnlyOptions(optionArgs);\n await new RegistryCommand().run({\n action: \"get\",\n json: options.json,\n write: this.write,\n });\n return;\n }\n if (actionOrUrl === \"--json\") {\n const options = this.optionsService.readJsonOnlyOptions([actionOrUrl, ...optionArgs]);\n await new RegistryCommand().run({\n action: \"get\",\n json: options.json,\n write: this.write,\n });\n return;\n }\n if (actionOrUrl === \"set\") {\n const { target, optionArgs: actionOptionArgs } = this.optionsService.readTarget(\n \"registry set\",\n optionArgs,\n );\n const options = this.optionsService.readJsonOnlyOptions(actionOptionArgs);\n await new RegistryCommand().run({\n action: \"set\",\n registryUrl: target,\n json: options.json,\n write: this.write,\n });\n return;\n }\n if (actionOrUrl === \"reset\") {\n const options = this.optionsService.readJsonOnlyOptions(optionArgs);\n await new RegistryCommand().run({\n action: \"reset\",\n json: options.json,\n write: this.write,\n });\n return;\n }\n throw new Error(`未知 registry 子命令:${actionOrUrl}`);\n };\n\n private handlePermissions = async (restArgs: string[]): Promise<void> => {\n const { target, optionArgs } = this.optionsService.readTarget(\"permissions\", restArgs);\n const options = this.optionsService.readJsonOnlyOptions(optionArgs);\n await new PermissionsCommand().run({\n appId: target,\n json: options.json,\n write: this.write,\n });\n };\n\n private handleGrant = async (restArgs: string[]): Promise<void> => {\n const { target, optionArgs } = this.optionsService.readTarget(\"grant\", restArgs);\n const options = this.optionsService.readGrantOptions(optionArgs);\n await new GrantCommand().run({\n appId: target,\n documentGrantMap: options.documentGrantMap,\n json: options.json,\n write: this.write,\n });\n };\n\n private handleRevoke = async (restArgs: string[]): Promise<void> => {\n const { target, optionArgs } = this.optionsService.readTarget(\"revoke\", restArgs);\n const options = this.optionsService.readRevokeOptions(optionArgs);\n await new RevokeCommand().run({\n appId: target,\n documentScopeIds: options.documentScopeIds,\n json: options.json,\n write: this.write,\n });\n };\n\n private writeUsage = (): void => {\n this.write(\"Usage: napp create <app-dir> [--template starter|ts-http|ts-http-lite] [--json]\\n\");\n this.write(\" napp inspect <app-dir> [--json]\\n\");\n this.write(\" napp build <app-dir> [--install] [--json]\\n\");\n this.write(\" napp doctor [--json]\\n\");\n this.write(\" napp <run|dev> <app-dir|app-id> [--host 127.0.0.1] [--port 3100] [--data /path] [--json] [--document scope=/path]\\n\");\n this.write(\" napp pack <app-dir> [--mode source|bundle] [--out bundle.napp] [--json]\\n\");\n this.write(\" napp publish <app-dir> [--mode source|bundle] [--meta marketplace.json] [--api-base <url>] [--token <token>] [--json]\\n\");\n this.write(\" napp validate-publish <app-dir> [--mode source|bundle] [--meta marketplace.json] [--json]\\n\");\n this.write(\" napp install <app-dir|bundle.napp|app-id[@version]> [--registry <url>] [--json]\\n\");\n this.write(\" napp update <app-id> [--version <version>] [--registry <url>] [--json]\\n\");\n this.write(\" napp uninstall <app-id> [--purge-data] [--json]\\n\");\n this.write(\" napp list [--json]\\n\");\n this.write(\" napp info <app-id> [--json]\\n\");\n this.write(\" napp registry [get] [--json]\\n\");\n this.write(\" napp registry set <url> [--json]\\n\");\n this.write(\" napp registry reset [--json]\\n\");\n this.write(\" napp permissions <app-id> [--json]\\n\");\n this.write(\" napp grant <app-id> --document scope=/path [--json]\\n\");\n this.write(\" napp revoke <app-id> --document scope [--json]\\n\");\n this.write(\" napp --help\\n\");\n this.write(\" napp --version\\n\");\n };\n\n private write = (text: string): void => {\n process.stdout.write(text);\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-runtime-options.service.d.ts","names":[],"sources":["../../src/cli/app-runtime-options.service.ts"],"mappings":";;;;;KAIY,iBAAA;EACV,IAAA;EACA,IAAA;EACA,aAAA;EACA,IAAA;EACA,gBAAA,EAAkB,mBAAA;AAAA;AAAA,KAGR,gBAAA;EACV,IAAA;EACA,QAAA,EAAU,mBAAA;AAAA;AAAA,KAGA,cAAA;EACV,IAAA;EACA,UAAA;EACA,IAAA,EAAM,mBAAA;AAAA;AAAA,KAGI,eAAA;EACV,IAAA;EACA,OAAA;AAAA;AAAA,KAGU,kBAAA;EACV,IAAA;AAAA;AAAA,KAGU,iBAAA;EACV,IAAA;EACA,WAAA;AAAA;AAAA,KAGU,gBAAA;EACV,IAAA;EACA,WAAA;EACA,OAAA;AAAA;AAAA,KAGU,mBAAA;EACV,IAAA;EACA,SAAA;AAAA;AAAA,KAGU,eAAA;EACV,IAAA;EACA,gBAAA,EAAkB,mBAAA;AAAA;AAAA,KAGR,gBAAA;EACV,IAAA;EACA,gBAAA;AAAA;AAAA,KAGU,iBAAA;EACV,IAAA;EACA,YAAA;EACA,UAAA;EACA,KAAA;EACA,IAAA,EAAM,mBAAA;AAAA;AAAA,cAGK,wBAAA;EACX,UAAA,GACE,OAAA,UACA,OAAA;IAEA,MAAA;IACA,UAAA;EAAA;EAYF,iBAAA,GAAqB,OAAA,eAAoB,gBAAA;EAAA,QA4BjC,kBAAA;EAOR,eAAA,GAAmB,OAAA,eAAoB,cAAA;EA8BvC,gBAAA,GAAoB,OAAA,eAAoB,eAAA;EAuBxC,mBAAA,GAAuB,OAAA,eAAoB,kBAAA;EAmB3C,kBAAA,GAAsB,OAAA,eAAoB,iBAAA;EAyB1C,iBAAA,GAAqB,OAAA,eAAoB,gBAAA;EA6BzC,oBAAA,GAAwB,OAAA,eAAoB,mBAAA;EAuB5C,kBAAA,GAAsB,OAAA,eAAoB,iBAAA;EAiD1C,gBAAA,GAAoB,OAAA,eAAoB,eAAA;EAgCxC,iBAAA,GAAqB,OAAA,eAAoB,gBAAA;EA+BzC,kBAAA,GAAsB,OAAA,eAAoB,iBAAA;EAAA,QAsClC,oBAAA;EAAA,QAOA,mBAAA;EAAA,QAgBA,mBAAA;EAAA,QAQA,kBAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-runtime-options.service.js","names":[],"sources":["../../src/cli/app-runtime-options.service.ts"],"sourcesContent":["import type { AppDocumentGrantMap } from \"../permissions/app-permissions.types.js\";\nimport type { AppDistributionMode } from \"../bundle/app-bundle.types.js\";\nimport type { AppScaffoldTemplate } from \"../scaffold/app-scaffold.service.js\";\n\nexport type RuntimeCliOptions = {\n host: string;\n port: number;\n dataDirectory?: string;\n json: boolean;\n documentGrantMap: AppDocumentGrantMap;\n};\n\nexport type CreateCliOptions = {\n json: boolean;\n template: AppScaffoldTemplate;\n};\n\nexport type PackCliOptions = {\n json: boolean;\n outputPath?: string;\n mode: AppDistributionMode;\n};\n\nexport type BuildCliOptions = {\n json: boolean;\n install: boolean;\n};\n\nexport type JsonOnlyCliOptions = {\n json: boolean;\n};\n\nexport type InstallCliOptions = {\n json: boolean;\n registryUrl?: string;\n};\n\nexport type UpdateCliOptions = {\n json: boolean;\n registryUrl?: string;\n version?: string;\n};\n\nexport type UninstallCliOptions = {\n json: boolean;\n purgeData: boolean;\n};\n\nexport type GrantCliOptions = {\n json: boolean;\n documentGrantMap: AppDocumentGrantMap;\n};\n\nexport type RevokeCliOptions = {\n json: boolean;\n documentScopeIds: string[];\n};\n\nexport type PublishCliOptions = {\n json: boolean;\n metadataPath?: string;\n apiBaseUrl?: string;\n token?: string;\n mode: AppDistributionMode;\n};\n\nexport class AppRuntimeOptionsService {\n readTarget = (\n command: string,\n rawArgs: string[],\n ): {\n target: string;\n optionArgs: string[];\n } => {\n const [target, ...optionArgs] = rawArgs;\n if (!target || target.startsWith(\"--\")) {\n throw new Error(`${command} 缺少目标参数。`);\n }\n return {\n target,\n optionArgs,\n };\n };\n\n readCreateOptions = (rawArgs: string[]): CreateCliOptions => {\n const options: CreateCliOptions = {\n json: false,\n template: \"starter\",\n };\n\n for (let index = 0; index < rawArgs.length; index += 1) {\n const current = rawArgs[index];\n if (!current?.startsWith(\"--\")) {\n throw new Error(`未知参数:${current}`);\n }\n const nextValue = rawArgs[index + 1];\n switch (current) {\n case \"--json\":\n options.json = true;\n break;\n case \"--template\":\n options.template = this.readCreateTemplate(this.requireOptionValue(current, nextValue));\n index += 1;\n break;\n default:\n throw new Error(`未知参数:${current}`);\n }\n }\n\n return options;\n };\n\n private readCreateTemplate = (rawTemplate: string): AppScaffoldTemplate => {\n if (rawTemplate === \"starter\" || rawTemplate === \"ts-http\" || rawTemplate === \"ts-http-lite\") {\n return rawTemplate;\n }\n throw new Error(\"--template 只支持 starter、ts-http 或 ts-http-lite。\");\n };\n\n readPackOptions = (rawArgs: string[]): PackCliOptions => {\n const options: PackCliOptions = {\n json: false,\n mode: \"source\",\n };\n for (let index = 0; index < rawArgs.length; index += 1) {\n const current = rawArgs[index];\n if (!current?.startsWith(\"--\")) {\n throw new Error(`未知参数:${current}`);\n }\n const nextValue = rawArgs[index + 1];\n switch (current) {\n case \"--json\":\n options.json = true;\n break;\n case \"--out\":\n options.outputPath = this.requireOptionValue(current, nextValue);\n index += 1;\n break;\n case \"--mode\":\n options.mode = this.readDistributionMode(this.requireOptionValue(current, nextValue));\n index += 1;\n break;\n default:\n throw new Error(`未知参数:${current}`);\n }\n }\n return options;\n };\n\n readBuildOptions = (rawArgs: string[]): BuildCliOptions => {\n const options: BuildCliOptions = {\n json: false,\n install: false,\n };\n for (const current of rawArgs) {\n if (!current?.startsWith(\"--\")) {\n throw new Error(`未知参数:${current}`);\n }\n switch (current) {\n case \"--json\":\n options.json = true;\n break;\n case \"--install\":\n options.install = true;\n break;\n default:\n throw new Error(`未知参数:${current}`);\n }\n }\n return options;\n };\n\n readJsonOnlyOptions = (rawArgs: string[]): JsonOnlyCliOptions => {\n const options: JsonOnlyCliOptions = {\n json: false,\n };\n for (const current of rawArgs) {\n if (!current?.startsWith(\"--\")) {\n throw new Error(`未知参数:${current}`);\n }\n switch (current) {\n case \"--json\":\n options.json = true;\n break;\n default:\n throw new Error(`未知参数:${current}`);\n }\n }\n return options;\n };\n\n readInstallOptions = (rawArgs: string[]): InstallCliOptions => {\n const options: InstallCliOptions = {\n json: false,\n };\n for (let index = 0; index < rawArgs.length; index += 1) {\n const current = rawArgs[index];\n if (!current?.startsWith(\"--\")) {\n throw new Error(`未知参数:${current}`);\n }\n const nextValue = rawArgs[index + 1];\n switch (current) {\n case \"--json\":\n options.json = true;\n break;\n case \"--registry\":\n options.registryUrl = this.requireOptionValue(current, nextValue);\n index += 1;\n break;\n default:\n throw new Error(`未知参数:${current}`);\n }\n }\n return options;\n };\n\n readUpdateOptions = (rawArgs: string[]): UpdateCliOptions => {\n const options: UpdateCliOptions = {\n json: false,\n };\n for (let index = 0; index < rawArgs.length; index += 1) {\n const current = rawArgs[index];\n if (!current?.startsWith(\"--\")) {\n throw new Error(`未知参数:${current}`);\n }\n const nextValue = rawArgs[index + 1];\n switch (current) {\n case \"--json\":\n options.json = true;\n break;\n case \"--registry\":\n options.registryUrl = this.requireOptionValue(current, nextValue);\n index += 1;\n break;\n case \"--version\":\n options.version = this.requireOptionValue(current, nextValue);\n index += 1;\n break;\n default:\n throw new Error(`未知参数:${current}`);\n }\n }\n return options;\n };\n\n readUninstallOptions = (rawArgs: string[]): UninstallCliOptions => {\n const options: UninstallCliOptions = {\n json: false,\n purgeData: false,\n };\n for (const current of rawArgs) {\n if (!current?.startsWith(\"--\")) {\n throw new Error(`未知参数:${current}`);\n }\n switch (current) {\n case \"--json\":\n options.json = true;\n break;\n case \"--purge-data\":\n options.purgeData = true;\n break;\n default:\n throw new Error(`未知参数:${current}`);\n }\n }\n return options;\n };\n\n readRuntimeOptions = (rawArgs: string[]): RuntimeCliOptions => {\n const options: RuntimeCliOptions = {\n host: \"127.0.0.1\",\n port: 3100,\n dataDirectory: undefined,\n json: false,\n documentGrantMap: {},\n };\n\n for (let index = 0; index < rawArgs.length; index += 1) {\n const current = rawArgs[index];\n if (!current?.startsWith(\"--\")) {\n throw new Error(`未知参数:${current}`);\n }\n const nextValue = rawArgs[index + 1];\n switch (current) {\n case \"--host\":\n options.host = this.requireOptionValue(current, nextValue);\n index += 1;\n break;\n case \"--port\":\n options.port = Number.parseInt(this.requireOptionValue(current, nextValue), 10);\n if (Number.isNaN(options.port) || options.port < 0) {\n throw new Error(\"--port 必须是非负整数。\");\n }\n index += 1;\n break;\n case \"--json\":\n options.json = true;\n break;\n case \"--data\":\n options.dataDirectory = this.requireOptionValue(current, nextValue);\n index += 1;\n break;\n case \"--document\":\n this.assignDocumentGrant(\n options.documentGrantMap,\n this.requireOptionValue(current, nextValue),\n );\n index += 1;\n break;\n default:\n throw new Error(`未知参数:${current}`);\n }\n }\n\n return options;\n };\n\n readGrantOptions = (rawArgs: string[]): GrantCliOptions => {\n const options: GrantCliOptions = {\n json: false,\n documentGrantMap: {},\n };\n for (let index = 0; index < rawArgs.length; index += 1) {\n const current = rawArgs[index];\n if (!current?.startsWith(\"--\")) {\n throw new Error(`未知参数:${current}`);\n }\n const nextValue = rawArgs[index + 1];\n switch (current) {\n case \"--json\":\n options.json = true;\n break;\n case \"--document\":\n this.assignDocumentGrant(\n options.documentGrantMap,\n this.requireOptionValue(current, nextValue),\n );\n index += 1;\n break;\n default:\n throw new Error(`未知参数:${current}`);\n }\n }\n if (Object.keys(options.documentGrantMap).length === 0) {\n throw new Error(\"grant 至少需要一个 --document scope=/path。\");\n }\n return options;\n };\n\n readRevokeOptions = (rawArgs: string[]): RevokeCliOptions => {\n const options: RevokeCliOptions = {\n json: false,\n documentScopeIds: [],\n };\n for (let index = 0; index < rawArgs.length; index += 1) {\n const current = rawArgs[index];\n if (!current?.startsWith(\"--\")) {\n throw new Error(`未知参数:${current}`);\n }\n const nextValue = rawArgs[index + 1];\n switch (current) {\n case \"--json\":\n options.json = true;\n break;\n case \"--document\":\n options.documentScopeIds.push(\n this.readDocumentScopeId(this.requireOptionValue(current, nextValue)),\n );\n index += 1;\n break;\n default:\n throw new Error(`未知参数:${current}`);\n }\n }\n if (options.documentScopeIds.length === 0) {\n throw new Error(\"revoke 至少需要一个 --document scope。\");\n }\n return options;\n };\n\n readPublishOptions = (rawArgs: string[]): PublishCliOptions => {\n const options: PublishCliOptions = {\n json: false,\n mode: \"source\",\n };\n for (let index = 0; index < rawArgs.length; index += 1) {\n const current = rawArgs[index];\n if (!current?.startsWith(\"--\")) {\n throw new Error(`未知参数:${current}`);\n }\n const nextValue = rawArgs[index + 1];\n switch (current) {\n case \"--json\":\n options.json = true;\n break;\n case \"--meta\":\n options.metadataPath = this.requireOptionValue(current, nextValue);\n index += 1;\n break;\n case \"--api-base\":\n options.apiBaseUrl = this.requireOptionValue(current, nextValue);\n index += 1;\n break;\n case \"--token\":\n options.token = this.requireOptionValue(current, nextValue);\n index += 1;\n break;\n case \"--mode\":\n options.mode = this.readDistributionMode(this.requireOptionValue(current, nextValue));\n index += 1;\n break;\n default:\n throw new Error(`未知参数:${current}`);\n }\n }\n return options;\n };\n\n private readDistributionMode = (rawMode: string): AppDistributionMode => {\n if (rawMode === \"source\" || rawMode === \"bundle\") {\n return rawMode;\n }\n throw new Error(\"--mode 只支持 source 或 bundle。\");\n };\n\n private assignDocumentGrant = (\n documentGrantMap: AppDocumentGrantMap,\n rawGrant: string,\n ): void => {\n const delimiterIndex = rawGrant.indexOf(\"=\");\n if (delimiterIndex < 1) {\n throw new Error(\"--document 必须使用 scopeId=/absolute/or/relative/path 格式。\");\n }\n const scopeId = rawGrant.slice(0, delimiterIndex).trim();\n const directoryPath = rawGrant.slice(delimiterIndex + 1).trim();\n if (!scopeId || !directoryPath) {\n throw new Error(\"--document 缺少 scopeId 或 path。\");\n }\n documentGrantMap[scopeId] = directoryPath;\n };\n\n private readDocumentScopeId = (scopeId: string): string => {\n const normalized = scopeId.trim();\n if (!normalized || normalized.includes(\"=\")) {\n throw new Error(\"--document 必须使用 scopeId 格式。\");\n }\n return normalized;\n };\n\n private requireOptionValue = (flag: string, nextValue: string | undefined): string => {\n if (!nextValue || nextValue.startsWith(\"--\")) {\n throw new Error(`${flag} 缺少值。`);\n }\n return nextValue;\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.controller.d.ts","names":[],"sources":["../../src/commands/create.controller.ts"],"mappings":";;;cAGa,aAAA;EAAA,iBAEQ,eAAA;cAAA,eAAA,GAAiB,kBAAA;EAGpC,GAAA,GAAa,MAAA;IACX,YAAA;IACA,QAAA,EAAU,mBAAA;IACV,IAAA;IACA,KAAA,GAAQ,IAAA;EAAA,MACN,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.controller.js","names":[],"sources":["../../src/commands/create.controller.ts"],"sourcesContent":["import { AppScaffoldService } from \"../scaffold/app-scaffold.service.js\";\nimport type { AppScaffoldTemplate } from \"../scaffold/app-scaffold.service.js\";\n\nexport class CreateCommand {\n constructor(\n private readonly scaffoldService: AppScaffoldService = new AppScaffoldService(),\n ) {}\n\n run = async (params: {\n appDirectory: string;\n template: AppScaffoldTemplate;\n json: boolean;\n write: (text: string) => void;\n }): Promise<void> => {\n const { appDirectory, template, json, write } = params;\n const result = await this.scaffoldService.scaffold(appDirectory, { template });\n if (json) {\n write(`${JSON.stringify({ ok: true, created: result }, null, 2)}\\n`);\n return;\n }\n write(`Created app scaffold at ${result.appDirectory}\\n`);\n write(`Template: ${result.template}\\n`);\n write(`Manifest: ${result.manifestPath}\\n`);\n write(\"Next: napp inspect <app-dir> && napp run <app-dir>\\n\");\n };\n}\n"],"mappings":";;AAGA,IAAa,gBAAb,MAA2B;CACzB,YACE,kBAAuD,IAAI,oBAAoB,EAC/E;AADiB,OAAA,kBAAA;;CAGnB,MAAM,OAAO,WAKQ;EACnB,MAAM,EAAE,cAAc,UAAU,MAAM,UAAU;EAChD,MAAM,SAAS,MAAM,KAAK,gBAAgB,SAAS,cAAc,EAAE,UAAU,CAAC;AAC9E,MAAI,MAAM;AACR,SAAM,GAAG,KAAK,UAAU;IAAE,IAAI;IAAM,SAAS;IAAQ,EAAE,MAAM,EAAE,CAAC,IAAI;AACpE;;AAEF,QAAM,2BAA2B,OAAO,aAAa,IAAI;AACzD,QAAM,aAAa,OAAO,SAAS,IAAI;AACvC,QAAM,aAAa,OAAO,aAAa,IAAI;AAC3C,QAAM,uDAAuD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev.controller.js","names":[],"sources":["../../src/commands/dev.controller.ts"],"sourcesContent":["import { RunCommand, type RunCommandInput } from \"./run.controller.js\";\n\nexport class DevCommand {\n constructor(private readonly runCommand: RunCommand = new RunCommand()) {}\n\n run = async (params: RunCommandInput): Promise<void> => {\n await this.runCommand.run(params);\n };\n}\n"],"mappings":";;AAEA,IAAa,aAAb,MAAwB;CACtB,YAAY,aAA0C,IAAI,YAAY,EAAE;AAA3C,OAAA,aAAA;;CAE7B,MAAM,OAAO,WAA2C;AACtD,QAAM,KAAK,WAAW,IAAI,OAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"grant.controller.d.ts","names":[],"sources":["../../src/commands/grant.controller.ts"],"mappings":";;;;cAGa,YAAA;EAAA,iBAEQ,YAAA;cAAA,YAAA,GAAc,eAAA;EAGjC,GAAA,GAAa,MAAA;IACX,KAAA;IACA,gBAAA,EAAkB,mBAAA;IAClB,IAAA;IACA,KAAA,GAAQ,IAAA;EAAA,MACN,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"grant.controller.js","names":[],"sources":["../../src/commands/grant.controller.ts"],"sourcesContent":["import { AppGrantService } from \"../permissions/app-grant.service.js\";\nimport type { AppDocumentGrantMap } from \"../permissions/app-permissions.types.js\";\n\nexport class GrantCommand {\n constructor(\n private readonly grantService: AppGrantService = new AppGrantService(),\n ) {}\n\n run = async (params: {\n appId: string;\n documentGrantMap: AppDocumentGrantMap;\n json: boolean;\n write: (text: string) => void;\n }): Promise<void> => {\n const { appId, documentGrantMap, json, write } = params;\n const results = await Promise.all(\n Object.entries(documentGrantMap).map(([scopeId, directoryPath]) =>\n this.grantService.grantDocumentScope({\n appId,\n scopeId,\n directoryPath,\n }),\n ),\n );\n if (json) {\n write(`${JSON.stringify({ ok: true, grants: results }, null, 2)}\\n`);\n return;\n }\n for (const result of results) {\n write(`Granted ${result.scopeId} -> ${result.grantedPath}\\n`);\n }\n };\n}\n"],"mappings":";;AAGA,IAAa,eAAb,MAA0B;CACxB,YACE,eAAiD,IAAI,iBAAiB,EACtE;AADiB,OAAA,eAAA;;CAGnB,MAAM,OAAO,WAKQ;EACnB,MAAM,EAAE,OAAO,kBAAkB,MAAM,UAAU;EACjD,MAAM,UAAU,MAAM,QAAQ,IAC5B,OAAO,QAAQ,iBAAiB,CAAC,KAAK,CAAC,SAAS,mBAC9C,KAAK,aAAa,mBAAmB;GACnC;GACA;GACA;GACD,CAAC,CACH,CACF;AACD,MAAI,MAAM;AACR,SAAM,GAAG,KAAK,UAAU;IAAE,IAAI;IAAM,QAAQ;IAAS,EAAE,MAAM,EAAE,CAAC,IAAI;AACpE;;AAEF,OAAK,MAAM,UAAU,QACnB,OAAM,WAAW,OAAO,QAAQ,MAAM,OAAO,YAAY,IAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"info.controller.d.ts","names":[],"sources":["../../src/commands/info.controller.ts"],"mappings":";;;cAEa,WAAA;EAAA,iBAEQ,mBAAA;cAAA,mBAAA,GAAqB,sBAAA;EAGxC,GAAA,GAAa,MAAA;IACX,KAAA;IACA,IAAA;IACA,KAAA,GAAQ,IAAA;EAAA,MACN,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"info.controller.js","names":[],"sources":["../../src/commands/info.controller.ts"],"sourcesContent":["import { AppInstallationService } from \"../install/app-installation.service.js\";\n\nexport class InfoCommand {\n constructor(\n private readonly installationService: AppInstallationService = new AppInstallationService(),\n ) {}\n\n run = async (params: {\n appId: string;\n json: boolean;\n write: (text: string) => void;\n }): Promise<void> => {\n const { appId, json, write } = params;\n const result = await this.installationService.info(appId);\n if (json) {\n write(`${JSON.stringify({ ok: true, app: result }, null, 2)}\\n`);\n return;\n }\n write(`App: ${result.name} (${result.appId})\\n`);\n write(`Active version: ${result.activeVersion}\\n`);\n write(`Data: ${result.dataDirectory}\\n`);\n write(`Installed versions: ${result.installedVersions.map((item) => item.version).join(\", \")}\\n`);\n const activeVersion = result.installedVersions.find(\n (item) => item.version === result.activeVersion,\n );\n if (activeVersion?.registryUrl) {\n write(`Registry: ${activeVersion.registryUrl}\\n`);\n }\n if (activeVersion?.publisher) {\n write(`Publisher: ${activeVersion.publisher.name} (${activeVersion.publisher.id})\\n`);\n }\n };\n}\n"],"mappings":";;AAEA,IAAa,cAAb,MAAyB;CACvB,YACE,sBAA+D,IAAI,wBAAwB,EAC3F;AADiB,OAAA,sBAAA;;CAGnB,MAAM,OAAO,WAIQ;EACnB,MAAM,EAAE,OAAO,MAAM,UAAU;EAC/B,MAAM,SAAS,MAAM,KAAK,oBAAoB,KAAK,MAAM;AACzD,MAAI,MAAM;AACR,SAAM,GAAG,KAAK,UAAU;IAAE,IAAI;IAAM,KAAK;IAAQ,EAAE,MAAM,EAAE,CAAC,IAAI;AAChE;;AAEF,QAAM,QAAQ,OAAO,KAAK,IAAI,OAAO,MAAM,KAAK;AAChD,QAAM,mBAAmB,OAAO,cAAc,IAAI;AAClD,QAAM,SAAS,OAAO,cAAc,IAAI;AACxC,QAAM,uBAAuB,OAAO,kBAAkB,KAAK,SAAS,KAAK,QAAQ,CAAC,KAAK,KAAK,CAAC,IAAI;EACjG,MAAM,gBAAgB,OAAO,kBAAkB,MAC5C,SAAS,KAAK,YAAY,OAAO,cACnC;AACD,MAAI,eAAe,YACjB,OAAM,aAAa,cAAc,YAAY,IAAI;AAEnD,MAAI,eAAe,UACjB,OAAM,cAAc,cAAc,UAAU,KAAK,IAAI,cAAc,UAAU,GAAG,KAAK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.controller.js","names":[],"sources":["../../src/commands/inspect.controller.ts"],"sourcesContent":["import { AppManifestService } from \"../manifest/app-manifest.service.js\";\n\nexport class InspectCommand {\n constructor(\n private readonly manifestService: AppManifestService = new AppManifestService(),\n ) {}\n\n run = async (params: {\n appDirectory: string;\n json: boolean;\n write: (text: string) => void;\n }): Promise<void> => {\n const { appDirectory, json, write } = params;\n const bundle = await this.manifestService.load(appDirectory);\n const summary = this.manifestService.summarize(bundle);\n if (json) {\n write(`${JSON.stringify({ ok: true, summary }, null, 2)}\\n`);\n return;\n }\n write(`App: ${summary.name} (${summary.id})\\n`);\n write(`Version: ${summary.version}\\n`);\n write(`Main Kind: ${summary.mainKind}\\n`);\n if (summary.action) {\n write(`Action: ${summary.action}\\n`);\n }\n write(`Main: ${summary.mainEntryPath}\\n`);\n write(`UI: ${summary.uiEntryPath}\\n`);\n };\n}\n"],"mappings":";;AAEA,IAAa,iBAAb,MAA4B;CAC1B,YACE,kBAAuD,IAAI,oBAAoB,EAC/E;AADiB,OAAA,kBAAA;;CAGnB,MAAM,OAAO,WAIQ;EACnB,MAAM,EAAE,cAAc,MAAM,UAAU;EACtC,MAAM,SAAS,MAAM,KAAK,gBAAgB,KAAK,aAAa;EAC5D,MAAM,UAAU,KAAK,gBAAgB,UAAU,OAAO;AACtD,MAAI,MAAM;AACR,SAAM,GAAG,KAAK,UAAU;IAAE,IAAI;IAAM;IAAS,EAAE,MAAM,EAAE,CAAC,IAAI;AAC5D;;AAEF,QAAM,QAAQ,QAAQ,KAAK,IAAI,QAAQ,GAAG,KAAK;AAC/C,QAAM,YAAY,QAAQ,QAAQ,IAAI;AACtC,QAAM,cAAc,QAAQ,SAAS,IAAI;AACzC,MAAI,QAAQ,OACV,OAAM,WAAW,QAAQ,OAAO,IAAI;AAEtC,QAAM,SAAS,QAAQ,cAAc,IAAI;AACzC,QAAM,OAAO,QAAQ,YAAY,IAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install.controller.d.ts","names":[],"sources":["../../src/commands/install.controller.ts"],"mappings":";;;cAEa,cAAA;EAAA,iBAEQ,mBAAA;cAAA,mBAAA,GAAqB,sBAAA;EAGxC,GAAA,GAAa,MAAA;IACX,SAAA;IACA,WAAA;IACA,IAAA;IACA,KAAA,GAAQ,IAAA;EAAA,MACN,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install.controller.js","names":[],"sources":["../../src/commands/install.controller.ts"],"sourcesContent":["import { AppInstallationService } from \"../install/app-installation.service.js\";\n\nexport class InstallCommand {\n constructor(\n private readonly installationService: AppInstallationService = new AppInstallationService(),\n ) {}\n\n run = async (params: {\n appSource: string;\n registryUrl?: string;\n json: boolean;\n write: (text: string) => void;\n }): Promise<void> => {\n const { appSource, registryUrl, json, write } = params;\n const result = await this.installationService.install(appSource, {\n registryUrl,\n });\n if (json) {\n write(`${JSON.stringify({ ok: true, installation: result }, null, 2)}\\n`);\n return;\n }\n write(`Installed ${result.name} (${result.appId}) ${result.version}\\n`);\n write(`Code: ${result.installDirectory}\\n`);\n write(`Data: ${result.dataDirectory}\\n`);\n if (result.registryUrl) {\n write(`Registry: ${result.registryUrl}\\n`);\n }\n };\n}\n"],"mappings":";;AAEA,IAAa,iBAAb,MAA4B;CAC1B,YACE,sBAA+D,IAAI,wBAAwB,EAC3F;AADiB,OAAA,sBAAA;;CAGnB,MAAM,OAAO,WAKQ;EACnB,MAAM,EAAE,WAAW,aAAa,MAAM,UAAU;EAChD,MAAM,SAAS,MAAM,KAAK,oBAAoB,QAAQ,WAAW,EAC/D,aACD,CAAC;AACF,MAAI,MAAM;AACR,SAAM,GAAG,KAAK,UAAU;IAAE,IAAI;IAAM,cAAc;IAAQ,EAAE,MAAM,EAAE,CAAC,IAAI;AACzE;;AAEF,QAAM,aAAa,OAAO,KAAK,IAAI,OAAO,MAAM,IAAI,OAAO,QAAQ,IAAI;AACvE,QAAM,SAAS,OAAO,iBAAiB,IAAI;AAC3C,QAAM,SAAS,OAAO,cAAc,IAAI;AACxC,MAAI,OAAO,YACT,OAAM,aAAa,OAAO,YAAY,IAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list.controller.d.ts","names":[],"sources":["../../src/commands/list.controller.ts"],"mappings":";;;cAEa,WAAA;EAAA,iBAEQ,mBAAA;cAAA,mBAAA,GAAqB,sBAAA;EAGxC,GAAA,GAAa,MAAA;IACX,IAAA;IACA,KAAA,GAAQ,IAAA;EAAA,MACN,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list.controller.js","names":[],"sources":["../../src/commands/list.controller.ts"],"sourcesContent":["import { AppInstallationService } from \"../install/app-installation.service.js\";\n\nexport class ListCommand {\n constructor(\n private readonly installationService: AppInstallationService = new AppInstallationService(),\n ) {}\n\n run = async (params: {\n json: boolean;\n write: (text: string) => void;\n }): Promise<void> => {\n const { json, write } = params;\n const result = await this.installationService.list();\n if (json) {\n write(`${JSON.stringify({ ok: true, apps: result }, null, 2)}\\n`);\n return;\n }\n if (result.length === 0) {\n write(\"No installed apps.\\n\");\n return;\n }\n for (const appItem of result) {\n write(`${appItem.appId} ${appItem.activeVersion} ${appItem.sourceKind} ${appItem.name}\\n`);\n }\n };\n}\n"],"mappings":";;AAEA,IAAa,cAAb,MAAyB;CACvB,YACE,sBAA+D,IAAI,wBAAwB,EAC3F;AADiB,OAAA,sBAAA;;CAGnB,MAAM,OAAO,WAGQ;EACnB,MAAM,EAAE,MAAM,UAAU;EACxB,MAAM,SAAS,MAAM,KAAK,oBAAoB,MAAM;AACpD,MAAI,MAAM;AACR,SAAM,GAAG,KAAK,UAAU;IAAE,IAAI;IAAM,MAAM;IAAQ,EAAE,MAAM,EAAE,CAAC,IAAI;AACjE;;AAEF,MAAI,OAAO,WAAW,GAAG;AACvB,SAAM,uBAAuB;AAC7B;;AAEF,OAAK,MAAM,WAAW,OACpB,OAAM,GAAG,QAAQ,MAAM,GAAG,QAAQ,cAAc,GAAG,QAAQ,WAAW,GAAG,QAAQ,KAAK,IAAI"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { AppBundleService } from "../bundle/app-bundle.service.js";
|
|
2
|
-
|
|
3
|
-
//#region src/commands/pack.controller.d.ts
|
|
4
|
-
declare class PackCommand {
|
|
5
|
-
private readonly bundleService;
|
|
6
|
-
constructor(bundleService?: AppBundleService);
|
|
7
|
-
run: (params: {
|
|
8
|
-
appDirectory: string;
|
|
9
|
-
outputPath?: string;
|
|
10
|
-
mode: "source" | "bundle";
|
|
11
|
-
json: boolean;
|
|
12
|
-
write: (text: string) => void;
|
|
13
|
-
}) => Promise<void>;
|
|
14
|
-
}
|
|
15
|
-
//#endregion
|
|
16
|
-
export { PackCommand };
|
|
17
|
-
//# sourceMappingURL=pack.controller.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pack.controller.d.ts","names":[],"sources":["../../src/commands/pack.controller.ts"],"mappings":";;;cAEa,WAAA;EAAA,iBAEQ,aAAA;cAAA,aAAA,GAAe,gBAAA;EAGlC,GAAA,GAAa,MAAA;IACX,YAAA;IACA,UAAA;IACA,IAAA;IACA,IAAA;IACA,KAAA,GAAQ,IAAA;EAAA,MACN,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pack.controller.js","names":[],"sources":["../../src/commands/pack.controller.ts"],"sourcesContent":["import { AppBundleService } from \"../bundle/app-bundle.service.js\";\n\nexport class PackCommand {\n constructor(\n private readonly bundleService: AppBundleService = new AppBundleService(),\n ) {}\n\n run = async (params: {\n appDirectory: string;\n outputPath?: string;\n mode: \"source\" | \"bundle\";\n json: boolean;\n write: (text: string) => void;\n }): Promise<void> => {\n const { appDirectory, outputPath, mode, json, write } = params;\n const result = await this.bundleService.packAppDirectory({\n appDirectory,\n outputPath,\n mode,\n });\n if (json) {\n write(`${JSON.stringify({ ok: true, bundle: result }, null, 2)}\\n`);\n return;\n }\n write(`Packed ${result.metadata.name} ${result.metadata.version} (${result.metadata.distributionMode})\\n`);\n write(`Bundle: ${result.bundlePath}\\n`);\n };\n}\n"],"mappings":";;AAEA,IAAa,cAAb,MAAyB;CACvB,YACE,gBAAmD,IAAI,kBAAkB,EACzE;AADiB,OAAA,gBAAA;;CAGnB,MAAM,OAAO,WAMQ;EACnB,MAAM,EAAE,cAAc,YAAY,MAAM,MAAM,UAAU;EACxD,MAAM,SAAS,MAAM,KAAK,cAAc,iBAAiB;GACvD;GACA;GACA;GACD,CAAC;AACF,MAAI,MAAM;AACR,SAAM,GAAG,KAAK,UAAU;IAAE,IAAI;IAAM,QAAQ;IAAQ,EAAE,MAAM,EAAE,CAAC,IAAI;AACnE;;AAEF,QAAM,UAAU,OAAO,SAAS,KAAK,GAAG,OAAO,SAAS,QAAQ,IAAI,OAAO,SAAS,iBAAiB,KAAK;AAC1G,QAAM,WAAW,OAAO,WAAW,IAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.controller.d.ts","names":[],"sources":["../../src/commands/permissions.controller.ts"],"mappings":";;;cAEa,kBAAA;EAAA,iBAEQ,YAAA;cAAA,YAAA,GAAc,eAAA;EAGjC,GAAA,GAAa,MAAA;IACX,KAAA;IACA,IAAA;IACA,KAAA,GAAQ,IAAA;EAAA,MACN,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.controller.js","names":[],"sources":["../../src/commands/permissions.controller.ts"],"sourcesContent":["import { AppGrantService } from \"../permissions/app-grant.service.js\";\n\nexport class PermissionsCommand {\n constructor(\n private readonly grantService: AppGrantService = new AppGrantService(),\n ) {}\n\n run = async (params: {\n appId: string;\n json: boolean;\n write: (text: string) => void;\n }): Promise<void> => {\n const { appId, json, write } = params;\n const result = await this.grantService.summarize(appId);\n if (json) {\n write(`${JSON.stringify({ ok: true, permissions: result }, null, 2)}\\n`);\n return;\n }\n write(`Permissions: ${result.name} (${result.appId}) ${result.activeVersion}\\n`);\n if (result.documentAccess.length === 0) {\n write(\"Document access: none\\n\");\n } else {\n for (const scope of result.documentAccess) {\n write(\n `Document ${scope.id} ${scope.mode} ${scope.granted ? scope.grantedPath : \"[missing]\"}\\n`,\n );\n }\n }\n write(\n `Allowed domains: ${result.allowedDomains.length > 0 ? result.allowedDomains.join(\", \") : \"none\"}\\n`,\n );\n write(`Storage: ${result.storage.enabled ? result.storage.namespace ?? \"enabled\" : \"disabled\"}\\n`);\n write(`Host bridge: ${result.capabilities.hostBridge ? \"enabled\" : \"disabled\"}\\n`);\n };\n}\n"],"mappings":";;AAEA,IAAa,qBAAb,MAAgC;CAC9B,YACE,eAAiD,IAAI,iBAAiB,EACtE;AADiB,OAAA,eAAA;;CAGnB,MAAM,OAAO,WAIQ;EACnB,MAAM,EAAE,OAAO,MAAM,UAAU;EAC/B,MAAM,SAAS,MAAM,KAAK,aAAa,UAAU,MAAM;AACvD,MAAI,MAAM;AACR,SAAM,GAAG,KAAK,UAAU;IAAE,IAAI;IAAM,aAAa;IAAQ,EAAE,MAAM,EAAE,CAAC,IAAI;AACxE;;AAEF,QAAM,gBAAgB,OAAO,KAAK,IAAI,OAAO,MAAM,IAAI,OAAO,cAAc,IAAI;AAChF,MAAI,OAAO,eAAe,WAAW,EACnC,OAAM,0BAA0B;MAEhC,MAAK,MAAM,SAAS,OAAO,eACzB,OACE,YAAY,MAAM,GAAG,GAAG,MAAM,KAAK,GAAG,MAAM,UAAU,MAAM,cAAc,YAAY,IACvF;AAGL,QACE,oBAAoB,OAAO,eAAe,SAAS,IAAI,OAAO,eAAe,KAAK,KAAK,GAAG,OAAO,IAClG;AACD,QAAM,YAAY,OAAO,QAAQ,UAAU,OAAO,QAAQ,aAAa,YAAY,WAAW,IAAI;AAClG,QAAM,gBAAgB,OAAO,aAAa,aAAa,YAAY,WAAW,IAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"publish.controller.d.ts","names":[],"sources":["../../src/commands/publish.controller.ts"],"mappings":";;;cAEa,cAAA;EAAA,iBAEQ,cAAA;cAAA,cAAA,GAAgB,iBAAA;EAGnC,GAAA,GAAa,MAAA;IACX,YAAA;IACA,YAAA;IACA,UAAA;IACA,KAAA;IACA,IAAA;IACA,IAAA;IACA,KAAA,GAAQ,IAAA;EAAA,MACN,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"publish.controller.js","names":[],"sources":["../../src/commands/publish.controller.ts"],"sourcesContent":["import { AppPublishService } from \"../publish/app-publish.service.js\";\n\nexport class PublishCommand {\n constructor(\n private readonly publishService: AppPublishService = new AppPublishService(),\n ) {}\n\n run = async (params: {\n appDirectory: string;\n metadataPath?: string;\n apiBaseUrl?: string;\n token?: string;\n mode: \"source\" | \"bundle\";\n json: boolean;\n write: (text: string) => void;\n }): Promise<void> => {\n const { appDirectory, metadataPath, apiBaseUrl, token, mode, json, write } = params;\n const result = await this.publishService.publish({\n appDirectory,\n metadataPath,\n apiBaseUrl,\n token,\n mode,\n });\n if (json) {\n write(`${JSON.stringify({ ok: true, publish: result }, null, 2)}\\n`);\n return;\n }\n write(\n `${result.created ? \"Published\" : \"Updated\"} ${result.item.name} (${result.item.appId}) ${result.item.latestVersion}\\n`,\n );\n write(`Distribution: ${result.distribution.path} (${result.distribution.mode})\\n`);\n if (result.item.webUrl) {\n write(`Details: ${result.item.webUrl}\\n`);\n }\n write(`Install: ${result.item.install.command}\\n`);\n };\n}\n"],"mappings":";;AAEA,IAAa,iBAAb,MAA4B;CAC1B,YACE,iBAAqD,IAAI,mBAAmB,EAC5E;AADiB,OAAA,iBAAA;;CAGnB,MAAM,OAAO,WAQQ;EACnB,MAAM,EAAE,cAAc,cAAc,YAAY,OAAO,MAAM,MAAM,UAAU;EAC7E,MAAM,SAAS,MAAM,KAAK,eAAe,QAAQ;GAC/C;GACA;GACA;GACA;GACA;GACD,CAAC;AACF,MAAI,MAAM;AACR,SAAM,GAAG,KAAK,UAAU;IAAE,IAAI;IAAM,SAAS;IAAQ,EAAE,MAAM,EAAE,CAAC,IAAI;AACpE;;AAEF,QACE,GAAG,OAAO,UAAU,cAAc,UAAU,GAAG,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,cAAc,IACrH;AACD,QAAM,iBAAiB,OAAO,aAAa,KAAK,IAAI,OAAO,aAAa,KAAK,KAAK;AAClF,MAAI,OAAO,KAAK,OACd,OAAM,YAAY,OAAO,KAAK,OAAO,IAAI;AAE3C,QAAM,YAAY,OAAO,KAAK,QAAQ,QAAQ,IAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.controller.d.ts","names":[],"sources":["../../src/commands/registry.controller.ts"],"mappings":";;;cAEa,eAAA;EAAA,iBAEQ,aAAA;cAAA,aAAA,GAAe,wBAAA;EAGlC,GAAA,GAAa,MAAA;IACX,MAAA;IACA,WAAA;IACA,IAAA;IACA,KAAA,GAAQ,IAAA;EAAA,MACN,OAAA;EAAA,QAiBI,kBAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.controller.js","names":[],"sources":["../../src/commands/registry.controller.ts"],"sourcesContent":["import { AppRegistryConfigService } from \"../registry/app-registry-config.service.js\";\n\nexport class RegistryCommand {\n constructor(\n private readonly configService: AppRegistryConfigService = new AppRegistryConfigService(),\n ) {}\n\n run = async (params: {\n action: \"get\" | \"set\" | \"reset\";\n registryUrl?: string;\n json: boolean;\n write: (text: string) => void;\n }): Promise<void> => {\n const { action, registryUrl, json, write } = params;\n const snapshot =\n action === \"set\"\n ? await this.configService.setRegistryUrl(this.requireRegistryUrl(registryUrl))\n : action === \"reset\"\n ? await this.configService.resetRegistryUrl()\n : await this.configService.getSnapshot();\n if (json) {\n write(`${JSON.stringify({ ok: true, registry: snapshot }, null, 2)}\\n`);\n return;\n }\n write(`Registry: ${snapshot.currentUrl}\\n`);\n write(`Source: ${snapshot.source}\\n`);\n write(`Default: ${snapshot.defaultUrl}\\n`);\n };\n\n private requireRegistryUrl = (registryUrl: string | undefined): string => {\n if (!registryUrl) {\n throw new Error(\"registry set 缺少 URL。\");\n }\n return registryUrl;\n };\n}\n"],"mappings":";;AAEA,IAAa,kBAAb,MAA6B;CAC3B,YACE,gBAA2D,IAAI,0BAA0B,EACzF;AADiB,OAAA,gBAAA;;CAGnB,MAAM,OAAO,WAKQ;EACnB,MAAM,EAAE,QAAQ,aAAa,MAAM,UAAU;EAC7C,MAAM,WACJ,WAAW,QACP,MAAM,KAAK,cAAc,eAAe,KAAK,mBAAmB,YAAY,CAAC,GAC7E,WAAW,UACT,MAAM,KAAK,cAAc,kBAAkB,GAC3C,MAAM,KAAK,cAAc,aAAa;AAC9C,MAAI,MAAM;AACR,SAAM,GAAG,KAAK,UAAU;IAAE,IAAI;IAAM,UAAU;IAAU,EAAE,MAAM,EAAE,CAAC,IAAI;AACvE;;AAEF,QAAM,aAAa,SAAS,WAAW,IAAI;AAC3C,QAAM,WAAW,SAAS,OAAO,IAAI;AACrC,QAAM,YAAY,SAAS,WAAW,IAAI;;CAG5C,sBAA8B,gBAA4C;AACxE,MAAI,CAAC,YACH,OAAM,IAAI,MAAM,uBAAuB;AAEzC,SAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"revoke.controller.d.ts","names":[],"sources":["../../src/commands/revoke.controller.ts"],"mappings":";;;cAEa,aAAA;EAAA,iBAEQ,YAAA;cAAA,YAAA,GAAc,eAAA;EAGjC,GAAA,GAAa,MAAA;IACX,KAAA;IACA,gBAAA;IACA,IAAA;IACA,KAAA,GAAQ,IAAA;EAAA,MACN,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"revoke.controller.js","names":[],"sources":["../../src/commands/revoke.controller.ts"],"sourcesContent":["import { AppGrantService } from \"../permissions/app-grant.service.js\";\n\nexport class RevokeCommand {\n constructor(\n private readonly grantService: AppGrantService = new AppGrantService(),\n ) {}\n\n run = async (params: {\n appId: string;\n documentScopeIds: string[];\n json: boolean;\n write: (text: string) => void;\n }): Promise<void> => {\n const { appId, documentScopeIds, json, write } = params;\n const results = await Promise.all(\n documentScopeIds.map((scopeId) =>\n this.grantService.revokeDocumentScope({\n appId,\n scopeId,\n }),\n ),\n );\n if (json) {\n write(`${JSON.stringify({ ok: true, revocations: results }, null, 2)}\\n`);\n return;\n }\n for (const result of results) {\n write(`Revoked ${result.scopeId}: ${result.removed ? \"yes\" : \"no\"}\\n`);\n }\n };\n}\n"],"mappings":";;AAEA,IAAa,gBAAb,MAA2B;CACzB,YACE,eAAiD,IAAI,iBAAiB,EACtE;AADiB,OAAA,eAAA;;CAGnB,MAAM,OAAO,WAKQ;EACnB,MAAM,EAAE,OAAO,kBAAkB,MAAM,UAAU;EACjD,MAAM,UAAU,MAAM,QAAQ,IAC5B,iBAAiB,KAAK,YACpB,KAAK,aAAa,oBAAoB;GACpC;GACA;GACD,CAAC,CACH,CACF;AACD,MAAI,MAAM;AACR,SAAM,GAAG,KAAK,UAAU;IAAE,IAAI;IAAM,aAAa;IAAS,EAAE,MAAM,EAAE,CAAC,IAAI;AACzE;;AAEF,OAAK,MAAM,UAAU,QACnB,OAAM,WAAW,OAAO,QAAQ,IAAI,OAAO,UAAU,QAAQ,KAAK,IAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.controller.js","names":[],"sources":["../../src/commands/run.controller.ts"],"sourcesContent":["import { AppHostService } from \"../host/app-host.service.js\";\nimport { AppInstanceService } from \"../host/app-instance.service.js\";\nimport { AppInstallationService } from \"../install/app-installation.service.js\";\nimport { AppManifestService } from \"../manifest/app-manifest.service.js\";\nimport type { AppDocumentGrantMap } from \"../permissions/app-permissions.types.js\";\nimport { WasmtimeWasiHttpComponentService } from \"../runtime/wasmtime-wasi-http-component.service.js\";\n\nexport type RunCommandInput = {\n appReference: string;\n host: string;\n port: number;\n dataDirectory?: string;\n json: boolean;\n documentGrantMap: AppDocumentGrantMap;\n write: (text: string) => void;\n};\n\nexport class RunCommand {\n constructor(\n private readonly manifestService: AppManifestService = new AppManifestService(),\n private readonly installationService: AppInstallationService = new AppInstallationService(),\n ) {}\n\n run = async (params: RunCommandInput): Promise<void> => {\n const { appReference, host, port, dataDirectory, json, documentGrantMap, write } = params;\n const launch = await this.installationService.resolveLaunch(appReference, documentGrantMap);\n const bundle = await this.manifestService.load(launch.appDirectory);\n const appInstance = new AppInstanceService(bundle);\n await appInstance.initialize(launch.documentGrantMap, {\n appId: launch.appId,\n });\n await this.installationService.persistGrants(launch.appId, launch.documentGrantMap);\n const wasiHttpComponentService =\n bundle.manifest.main.kind === \"wasi-http-component\"\n ? new WasmtimeWasiHttpComponentService()\n : undefined;\n const effectiveDataDirectory = dataDirectory ?? launch.dataDirectory;\n if (wasiHttpComponentService) {\n if (!effectiveDataDirectory) {\n throw new Error(\"wasi-http-component 应用需要通过 --data /path 指定后端数据目录。\");\n }\n await wasiHttpComponentService.start({\n wasmPath: bundle.mainEntryPath,\n dataDirectory: effectiveDataDirectory,\n });\n }\n const appHost = new AppHostService(appInstance, wasiHttpComponentService);\n let hostHandle: Awaited<ReturnType<AppHostService[\"start\"]>>;\n try {\n hostHandle = await appHost.start({\n host,\n port,\n });\n } catch (error) {\n await wasiHttpComponentService?.stop();\n throw error;\n }\n\n const shutdown = async (): Promise<void> => {\n await appHost.stop();\n await wasiHttpComponentService?.stop();\n process.exit(0);\n };\n\n process.once(\"SIGINT\", () => {\n void shutdown();\n });\n process.once(\"SIGTERM\", () => {\n void shutdown();\n });\n\n if (json) {\n write(\n `${JSON.stringify(\n {\n ok: true,\n host: hostHandle,\n app: {\n appId: launch.appId ?? bundle.manifest.id,\n appDirectory: launch.appDirectory,\n dataDirectory: effectiveDataDirectory,\n },\n },\n null,\n 2,\n )}\\n`,\n );\n return;\n }\n\n write(`[napp] ${bundle.manifest.name} listening on ${hostHandle.url}\\n`);\n };\n}\n"],"mappings":";;;;;;AAiBA,IAAa,aAAb,MAAwB;CACtB,YACE,kBAAuD,IAAI,oBAAoB,EAC/E,sBAA+D,IAAI,wBAAwB,EAC3F;AAFiB,OAAA,kBAAA;AACA,OAAA,sBAAA;;CAGnB,MAAM,OAAO,WAA2C;EACtD,MAAM,EAAE,cAAc,MAAM,MAAM,eAAe,MAAM,kBAAkB,UAAU;EACnF,MAAM,SAAS,MAAM,KAAK,oBAAoB,cAAc,cAAc,iBAAiB;EAC3F,MAAM,SAAS,MAAM,KAAK,gBAAgB,KAAK,OAAO,aAAa;EACnE,MAAM,cAAc,IAAI,mBAAmB,OAAO;AAClD,QAAM,YAAY,WAAW,OAAO,kBAAkB,EACpD,OAAO,OAAO,OACf,CAAC;AACF,QAAM,KAAK,oBAAoB,cAAc,OAAO,OAAO,OAAO,iBAAiB;EACnF,MAAM,2BACJ,OAAO,SAAS,KAAK,SAAS,wBAC1B,IAAI,kCAAkC,GACtC,KAAA;EACN,MAAM,yBAAyB,iBAAiB,OAAO;AACvD,MAAI,0BAA0B;AAC5B,OAAI,CAAC,uBACH,OAAM,IAAI,MAAM,oDAAoD;AAEtE,SAAM,yBAAyB,MAAM;IACnC,UAAU,OAAO;IACjB,eAAe;IAChB,CAAC;;EAEJ,MAAM,UAAU,IAAI,eAAe,aAAa,yBAAyB;EACzE,IAAI;AACJ,MAAI;AACF,gBAAa,MAAM,QAAQ,MAAM;IAC/B;IACA;IACD,CAAC;WACK,OAAO;AACd,SAAM,0BAA0B,MAAM;AACtC,SAAM;;EAGR,MAAM,WAAW,YAA2B;AAC1C,SAAM,QAAQ,MAAM;AACpB,SAAM,0BAA0B,MAAM;AACtC,WAAQ,KAAK,EAAE;;AAGjB,UAAQ,KAAK,gBAAgB;AACtB,aAAU;IACf;AACF,UAAQ,KAAK,iBAAiB;AACvB,aAAU;IACf;AAEF,MAAI,MAAM;AACR,SACE,GAAG,KAAK,UACN;IACE,IAAI;IACJ,MAAM;IACN,KAAK;KACH,OAAO,OAAO,SAAS,OAAO,SAAS;KACvC,cAAc,OAAO;KACrB,eAAe;KAChB;IACF,EACD,MACA,EACD,CAAC,IACH;AACD;;AAGF,QAAM,UAAU,OAAO,SAAS,KAAK,gBAAgB,WAAW,IAAI,IAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.controller.d.ts","names":[],"sources":["../../src/commands/uninstall.controller.ts"],"mappings":";;;cAEa,gBAAA;EAAA,iBAEQ,mBAAA;cAAA,mBAAA,GAAqB,sBAAA;EAGxC,GAAA,GAAa,MAAA;IACX,KAAA;IACA,SAAA;IACA,IAAA;IACA,KAAA,GAAQ,IAAA;EAAA,MACN,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.controller.js","names":[],"sources":["../../src/commands/uninstall.controller.ts"],"sourcesContent":["import { AppInstallationService } from \"../install/app-installation.service.js\";\n\nexport class UninstallCommand {\n constructor(\n private readonly installationService: AppInstallationService = new AppInstallationService(),\n ) {}\n\n run = async (params: {\n appId: string;\n purgeData: boolean;\n json: boolean;\n write: (text: string) => void;\n }): Promise<void> => {\n const { appId, purgeData, json, write } = params;\n const result = await this.installationService.uninstall(appId, purgeData);\n if (json) {\n write(`${JSON.stringify({ ok: true, uninstall: result }, null, 2)}\\n`);\n return;\n }\n write(`Uninstalled ${result.appId}\\n`);\n write(`Versions: ${result.removedVersions.join(\", \")}\\n`);\n write(`Data removed: ${result.dataRemoved ? \"yes\" : \"no\"}\\n`);\n };\n}\n"],"mappings":";;AAEA,IAAa,mBAAb,MAA8B;CAC5B,YACE,sBAA+D,IAAI,wBAAwB,EAC3F;AADiB,OAAA,sBAAA;;CAGnB,MAAM,OAAO,WAKQ;EACnB,MAAM,EAAE,OAAO,WAAW,MAAM,UAAU;EAC1C,MAAM,SAAS,MAAM,KAAK,oBAAoB,UAAU,OAAO,UAAU;AACzE,MAAI,MAAM;AACR,SAAM,GAAG,KAAK,UAAU;IAAE,IAAI;IAAM,WAAW;IAAQ,EAAE,MAAM,EAAE,CAAC,IAAI;AACtE;;AAEF,QAAM,eAAe,OAAO,MAAM,IAAI;AACtC,QAAM,aAAa,OAAO,gBAAgB,KAAK,KAAK,CAAC,IAAI;AACzD,QAAM,iBAAiB,OAAO,cAAc,QAAQ,KAAK,IAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.controller.d.ts","names":[],"sources":["../../src/commands/update.controller.ts"],"mappings":";;;cAEa,aAAA;EAAA,iBAEQ,mBAAA;cAAA,mBAAA,GAAqB,sBAAA;EAGxC,GAAA,GAAa,MAAA;IACX,KAAA;IACA,OAAA;IACA,WAAA;IACA,IAAA;IACA,KAAA,GAAQ,IAAA;EAAA,MACN,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.controller.js","names":[],"sources":["../../src/commands/update.controller.ts"],"sourcesContent":["import { AppInstallationService } from \"../install/app-installation.service.js\";\n\nexport class UpdateCommand {\n constructor(\n private readonly installationService: AppInstallationService = new AppInstallationService(),\n ) {}\n\n run = async (params: {\n appId: string;\n version?: string;\n registryUrl?: string;\n json: boolean;\n write: (text: string) => void;\n }): Promise<void> => {\n const { appId, version, registryUrl, json, write } = params;\n const result = await this.installationService.update(appId, {\n version,\n registryUrl,\n });\n if (json) {\n write(`${JSON.stringify({ ok: true, update: result }, null, 2)}\\n`);\n return;\n }\n if (!result.updated) {\n write(`Already up to date: ${result.appId} ${result.version}\\n`);\n return;\n }\n write(`Updated ${result.name} (${result.appId}) ${result.previousVersion} -> ${result.version}\\n`);\n write(`Code: ${result.installDirectory}\\n`);\n };\n}\n"],"mappings":";;AAEA,IAAa,gBAAb,MAA2B;CACzB,YACE,sBAA+D,IAAI,wBAAwB,EAC3F;AADiB,OAAA,sBAAA;;CAGnB,MAAM,OAAO,WAMQ;EACnB,MAAM,EAAE,OAAO,SAAS,aAAa,MAAM,UAAU;EACrD,MAAM,SAAS,MAAM,KAAK,oBAAoB,OAAO,OAAO;GAC1D;GACA;GACD,CAAC;AACF,MAAI,MAAM;AACR,SAAM,GAAG,KAAK,UAAU;IAAE,IAAI;IAAM,QAAQ;IAAQ,EAAE,MAAM,EAAE,CAAC,IAAI;AACnE;;AAEF,MAAI,CAAC,OAAO,SAAS;AACnB,SAAM,uBAAuB,OAAO,MAAM,GAAG,OAAO,QAAQ,IAAI;AAChE;;AAEF,QAAM,WAAW,OAAO,KAAK,IAAI,OAAO,MAAM,IAAI,OAAO,gBAAgB,MAAM,OAAO,QAAQ,IAAI;AAClG,QAAM,SAAS,OAAO,iBAAiB,IAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate-publish.controller.d.ts","names":[],"sources":["../../src/commands/validate-publish.controller.ts"],"mappings":";;;cAEa,sBAAA;EAAA,iBAEQ,iBAAA;cAAA,iBAAA,GAAmB,2BAAA;EAGtC,GAAA,GAAa,MAAA;IACX,YAAA;IACA,YAAA;IACA,IAAA;IACA,IAAA;IACA,KAAA,GAAQ,IAAA;EAAA,MACN,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate-publish.controller.js","names":[],"sources":["../../src/commands/validate-publish.controller.ts"],"sourcesContent":["import { AppPublishValidationService } from \"../publish/app-publish-validation.service.js\";\n\nexport class ValidatePublishCommand {\n constructor(\n private readonly validationService: AppPublishValidationService = new AppPublishValidationService(),\n ) {}\n\n run = async (params: {\n appDirectory: string;\n metadataPath?: string;\n mode: \"source\" | \"bundle\";\n json: boolean;\n write: (text: string) => void;\n }): Promise<void> => {\n const { appDirectory, metadataPath, mode, json, write } = params;\n const result = await this.validationService.validate({\n appDirectory,\n metadataPath,\n mode,\n });\n if (json) {\n write(`${JSON.stringify({ ok: true, validation: result }, null, 2)}\\n`);\n return;\n }\n write(`Publish validation ok for ${result.appId}@${result.version}\\n`);\n write(`Distribution mode: ${result.distributionMode}\\n`);\n write(`Main kind: ${result.mainKind}\\n`);\n write(`Main: ${result.mainEntryPath}\\n`);\n write(`Metadata: ${result.metadataPath}\\n`);\n write(`Bundle size: ${result.bundleSizeBytes} bytes\\n`);\n write(`Main entry size: ${result.mainEntrySizeBytes} bytes\\n`);\n write(`Bundle files (${result.bundleFilePaths.length}): ${result.bundleFilePaths.join(\", \")}\\n`);\n if (result.warnings.length > 0) {\n for (const warning of result.warnings) {\n write(`Warning [${warning.code}]: ${warning.message}\\n`);\n }\n }\n };\n}\n"],"mappings":";;AAEA,IAAa,yBAAb,MAAoC;CAClC,YACE,oBAAkE,IAAI,6BAA6B,EACnG;AADiB,OAAA,oBAAA;;CAGnB,MAAM,OAAO,WAMQ;EACnB,MAAM,EAAE,cAAc,cAAc,MAAM,MAAM,UAAU;EAC1D,MAAM,SAAS,MAAM,KAAK,kBAAkB,SAAS;GACnD;GACA;GACA;GACD,CAAC;AACF,MAAI,MAAM;AACR,SAAM,GAAG,KAAK,UAAU;IAAE,IAAI;IAAM,YAAY;IAAQ,EAAE,MAAM,EAAE,CAAC,IAAI;AACvE;;AAEF,QAAM,6BAA6B,OAAO,MAAM,GAAG,OAAO,QAAQ,IAAI;AACtE,QAAM,sBAAsB,OAAO,iBAAiB,IAAI;AACxD,QAAM,cAAc,OAAO,SAAS,IAAI;AACxC,QAAM,SAAS,OAAO,cAAc,IAAI;AACxC,QAAM,aAAa,OAAO,aAAa,IAAI;AAC3C,QAAM,gBAAgB,OAAO,gBAAgB,UAAU;AACvD,QAAM,oBAAoB,OAAO,mBAAmB,UAAU;AAC9D,QAAM,iBAAiB,OAAO,gBAAgB,OAAO,KAAK,OAAO,gBAAgB,KAAK,KAAK,CAAC,IAAI;AAChG,MAAI,OAAO,SAAS,SAAS,EAC3B,MAAK,MAAM,WAAW,OAAO,SAC3B,OAAM,YAAY,QAAQ,KAAK,KAAK,QAAQ,QAAQ,IAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-host.service.d.ts","names":[],"sources":["../../src/host/app-host.service.ts"],"mappings":";;;;KAMY,mBAAA;EACV,IAAA;EACA,IAAA;AAAA;AAAA,KAGU,aAAA;EACV,KAAA;EACA,GAAA;EACA,IAAA;EACA,IAAA;AAAA;AAAA,cAGW,cAAA;EAAA,iBAMQ,WAAA;EAAA,iBACA,wBAAA;EAAA,QANX,MAAA;EAAA,iBACS,YAAA;EAAA,iBACA,QAAA;cAGE,WAAA,EAAa,kBAAA,EACb,wBAAA,GAA2B,gCAAA;EAM9C,KAAA,GAAe,OAAA,EAAS,mBAAA,KAAsB,OAAA,CAAQ,aAAA;EA2BtD,IAAA,QAAiB,OAAA;EAAA,QAgBT,aAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-host.service.js","names":[],"sources":["../../src/host/app-host.service.ts"],"sourcesContent":["import { createServer, type IncomingMessage, type Server, type ServerResponse } from \"node:http\";\nimport { HostBridgeServer } from \"../bridge/host-bridge.service.js\";\nimport type { AppInstanceService } from \"./app-instance.service.js\";\nimport { UiServerService } from \"../ui/ui-server.service.js\";\nimport type { WasmtimeWasiHttpComponentService } from \"../runtime/wasmtime-wasi-http-component.service.js\";\n\nexport type AppHostStartOptions = {\n host: string;\n port: number;\n};\n\nexport type AppHostHandle = {\n appId: string;\n url: string;\n host: string;\n port: number;\n};\n\nexport class AppHostService {\n private server?: Server;\n private readonly bridgeServer: HostBridgeServer;\n private readonly uiServer: UiServerService;\n\n constructor(\n private readonly appInstance: AppInstanceService,\n private readonly wasiHttpComponentService?: WasmtimeWasiHttpComponentService,\n ) {\n this.bridgeServer = new HostBridgeServer(appInstance);\n this.uiServer = new UiServerService(appInstance.bundle);\n }\n\n start = async (options: AppHostStartOptions): Promise<AppHostHandle> => {\n if (this.server) {\n throw new Error(\"应用宿主已经启动。\");\n }\n const server = createServer((request, response) => {\n void this.handleRequest(request, response);\n });\n this.server = server;\n await new Promise<void>((resolve, reject) => {\n server.once(\"error\", reject);\n server.listen(options.port, options.host, () => {\n server.off(\"error\", reject);\n resolve();\n });\n });\n const address = server.address();\n if (!address || typeof address === \"string\") {\n throw new Error(\"无法获取应用宿主监听地址。\");\n }\n return {\n appId: this.appInstance.bundle.manifest.id,\n url: `http://${address.address}:${address.port}`,\n host: address.address,\n port: address.port,\n };\n };\n\n stop = async (): Promise<void> => {\n if (!this.server) {\n return;\n }\n await new Promise<void>((resolve, reject) => {\n this.server?.close((error) => {\n if (error) {\n reject(error);\n return;\n }\n resolve();\n });\n });\n this.server = undefined;\n };\n\n private handleRequest = async (\n request: IncomingMessage,\n response: ServerResponse,\n ): Promise<void> => {\n try {\n if (this.wasiHttpComponentService) {\n const backendHandled = await this.wasiHttpComponentService.handleRequest(request, response);\n if (backendHandled) {\n return;\n }\n }\n const bridgeHandled = await this.bridgeServer.handle(request, response);\n if (bridgeHandled) {\n return;\n }\n await this.uiServer.handle(request, response);\n } catch (error) {\n response.writeHead(500, {\n \"content-type\": \"application/json; charset=utf-8\",\n });\n response.end(\n JSON.stringify(\n {\n ok: false,\n error: {\n code: \"APP_HOST_ERROR\",\n message: error instanceof Error ? error.message : String(error),\n },\n },\n null,\n 2,\n ),\n );\n }\n };\n}\n"],"mappings":";;;;AAkBA,IAAa,iBAAb,MAA4B;CAC1B;CACA;CACA;CAEA,YACE,aACA,0BACA;AAFiB,OAAA,cAAA;AACA,OAAA,2BAAA;AAEjB,OAAK,eAAe,IAAI,iBAAiB,YAAY;AACrD,OAAK,WAAW,IAAI,gBAAgB,YAAY,OAAO;;CAGzD,QAAQ,OAAO,YAAyD;AACtE,MAAI,KAAK,OACP,OAAM,IAAI,MAAM,YAAY;EAE9B,MAAM,SAAS,cAAc,SAAS,aAAa;AAC5C,QAAK,cAAc,SAAS,SAAS;IAC1C;AACF,OAAK,SAAS;AACd,QAAM,IAAI,SAAe,SAAS,WAAW;AAC3C,UAAO,KAAK,SAAS,OAAO;AAC5B,UAAO,OAAO,QAAQ,MAAM,QAAQ,YAAY;AAC9C,WAAO,IAAI,SAAS,OAAO;AAC3B,aAAS;KACT;IACF;EACF,MAAM,UAAU,OAAO,SAAS;AAChC,MAAI,CAAC,WAAW,OAAO,YAAY,SACjC,OAAM,IAAI,MAAM,gBAAgB;AAElC,SAAO;GACL,OAAO,KAAK,YAAY,OAAO,SAAS;GACxC,KAAK,UAAU,QAAQ,QAAQ,GAAG,QAAQ;GAC1C,MAAM,QAAQ;GACd,MAAM,QAAQ;GACf;;CAGH,OAAO,YAA2B;AAChC,MAAI,CAAC,KAAK,OACR;AAEF,QAAM,IAAI,SAAe,SAAS,WAAW;AAC3C,QAAK,QAAQ,OAAO,UAAU;AAC5B,QAAI,OAAO;AACT,YAAO,MAAM;AACb;;AAEF,aAAS;KACT;IACF;AACF,OAAK,SAAS,KAAA;;CAGhB,gBAAwB,OACtB,SACA,aACkB;AAClB,MAAI;AACF,OAAI,KAAK;QACgB,MAAM,KAAK,yBAAyB,cAAc,SAAS,SAAS,CAEzF;;AAIJ,OADsB,MAAM,KAAK,aAAa,OAAO,SAAS,SAAS,CAErE;AAEF,SAAM,KAAK,SAAS,OAAO,SAAS,SAAS;WACtC,OAAO;AACd,YAAS,UAAU,KAAK,EACtB,gBAAgB,mCACjB,CAAC;AACF,YAAS,IACP,KAAK,UACH;IACE,IAAI;IACJ,OAAO;KACL,MAAM;KACN,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;KAChE;IACF,EACD,MACA,EACD,CACF"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { AppManifestBundle, AppManifestSummary } from "../manifest/app-manifest.types.js";
|
|
2
|
-
import { AppManifestService } from "../manifest/app-manifest.service.js";
|
|
3
|
-
import { AppDocumentGrantMap, AppPermissionSummary } from "../permissions/app-permissions.types.js";
|
|
4
|
-
import { AppPermissionsService } from "../permissions/app-permissions.service.js";
|
|
5
|
-
import { MainRunResult, WasmDocumentSummaryInput } from "../runtime/main-runner.types.js";
|
|
6
|
-
import { WasmMainRunnerService } from "../runtime/wasm-main-runner.service.js";
|
|
7
|
-
|
|
8
|
-
//#region src/host/app-instance.service.d.ts
|
|
9
|
-
type AppRunResult = {
|
|
10
|
-
action: string;
|
|
11
|
-
input: WasmDocumentSummaryInput;
|
|
12
|
-
output: MainRunResult;
|
|
13
|
-
observedAt: string;
|
|
14
|
-
};
|
|
15
|
-
declare class AppInstanceService {
|
|
16
|
-
readonly bundle: AppManifestBundle;
|
|
17
|
-
private readonly permissionsService;
|
|
18
|
-
private readonly mainRunner;
|
|
19
|
-
private readonly manifestService;
|
|
20
|
-
private permissions?;
|
|
21
|
-
constructor(bundle: AppManifestBundle, permissionsService?: AppPermissionsService, mainRunner?: WasmMainRunnerService, manifestService?: AppManifestService);
|
|
22
|
-
initialize: (documentGrantMap: AppDocumentGrantMap, context?: {
|
|
23
|
-
appId?: string;
|
|
24
|
-
}) => Promise<void>;
|
|
25
|
-
summarizeManifest: () => AppManifestSummary;
|
|
26
|
-
summarizePermissions: () => AppPermissionSummary;
|
|
27
|
-
runAction: (action?: string) => Promise<AppRunResult>;
|
|
28
|
-
private collectDocumentSummaryInput;
|
|
29
|
-
private collectDirectorySummary;
|
|
30
|
-
private getPermissions;
|
|
31
|
-
}
|
|
32
|
-
//#endregion
|
|
33
|
-
export { AppInstanceService, AppRunResult };
|
|
34
|
-
//# sourceMappingURL=app-instance.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-instance.service.d.ts","names":[],"sources":["../../src/host/app-instance.service.ts"],"mappings":";;;;;;;;KAaY,YAAA;EACV,MAAA;EACA,KAAA,EAAO,wBAAA;EACP,MAAA,EAAQ,aAAA;EACR,UAAA;AAAA;AAAA,cAGW,kBAAA;EAAA,SAIA,MAAA,EAAQ,iBAAA;EAAA,iBACA,kBAAA;EAAA,iBACA,UAAA;EAAA,iBACA,eAAA;EAAA,QANX,WAAA;cAGG,MAAA,EAAQ,iBAAA,EACA,kBAAA,GAAoB,qBAAA,EACpB,UAAA,GAAY,qBAAA,EACZ,eAAA,GAAiB,kBAAA;EAGpC,UAAA,GACE,gBAAA,EAAkB,mBAAA,EAClB,OAAA;IACE,KAAA;EAAA,MAED,OAAA;EAQH,iBAAA,QARU,kBAAA;EAYV,oBAAA,QAA2B,oBAAA;EAI3B,SAAA,GAAmB,MAAA,cAAkB,OAAA,CAAQ,YAAA;EAAA,QAuBrC,2BAAA;EAAA,QAiBA,uBAAA;EAAA,QA6BA,cAAA;AAAA"}
|