@knpkv/alchemy-console 0.0.0-stage → 0.2.0
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/LICENSE +21 -0
- package/README.md +185 -2
- package/dist/api.d.ts +126 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +62 -0
- package/dist/api.js.map +1 -0
- package/dist/client/bootstrap.js +2834 -0
- package/dist/discovery.d.ts +12 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +39 -0
- package/dist/discovery.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/files.d.ts +9 -0
- package/dist/internal/files.d.ts.map +1 -0
- package/dist/internal/files.js +34 -0
- package/dist/internal/files.js.map +1 -0
- package/dist/local-state.d.ts +8 -0
- package/dist/local-state.d.ts.map +1 -0
- package/dist/local-state.js +53 -0
- package/dist/local-state.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +39 -0
- package/dist/main.js.map +1 -0
- package/dist/profiles.d.ts +24 -0
- package/dist/profiles.d.ts.map +1 -0
- package/dist/profiles.js +82 -0
- package/dist/profiles.js.map +1 -0
- package/dist/s3-live.d.ts +13 -0
- package/dist/s3-live.d.ts.map +1 -0
- package/dist/s3-live.js +112 -0
- package/dist/s3-live.js.map +1 -0
- package/dist/s3-reader.d.ts +46 -0
- package/dist/s3-reader.d.ts.map +1 -0
- package/dist/s3-reader.js +10 -0
- package/dist/s3-reader.js.map +1 -0
- package/dist/s3-state.d.ts +21 -0
- package/dist/s3-state.d.ts.map +1 -0
- package/dist/s3-state.js +129 -0
- package/dist/s3-state.js.map +1 -0
- package/dist/schema.d.ts +43 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +27 -0
- package/dist/schema.js.map +1 -0
- package/dist/server/Bootstrap.d.ts +4 -0
- package/dist/server/Bootstrap.d.ts.map +1 -0
- package/dist/server/Bootstrap.js +12 -0
- package/dist/server/Bootstrap.js.map +1 -0
- package/dist/server/Catalog.d.ts +27 -0
- package/dist/server/Catalog.d.ts.map +1 -0
- package/dist/server/Catalog.js +83 -0
- package/dist/server/Catalog.js.map +1 -0
- package/dist/server/Config.d.ts +17 -0
- package/dist/server/Config.d.ts.map +1 -0
- package/dist/server/Config.js +23 -0
- package/dist/server/Config.js.map +1 -0
- package/dist/server/ControlSocket.d.ts +19 -0
- package/dist/server/ControlSocket.d.ts.map +1 -0
- package/dist/server/ControlSocket.js +147 -0
- package/dist/server/ControlSocket.js.map +1 -0
- package/dist/server/HttpApplication.d.ts +7 -0
- package/dist/server/HttpApplication.d.ts.map +1 -0
- package/dist/server/HttpApplication.js +46 -0
- package/dist/server/HttpApplication.js.map +1 -0
- package/dist/server/Launch.d.ts +7 -0
- package/dist/server/Launch.d.ts.map +1 -0
- package/dist/server/Launch.js +17 -0
- package/dist/server/Launch.js.map +1 -0
- package/dist/server/OwnerSession.d.ts +9 -0
- package/dist/server/OwnerSession.d.ts.map +1 -0
- package/dist/server/OwnerSession.js +27 -0
- package/dist/server/OwnerSession.js.map +1 -0
- package/dist/server/Server.d.ts +6 -0
- package/dist/server/Server.d.ts.map +1 -0
- package/dist/server/Server.js +22 -0
- package/dist/server/Server.js.map +1 -0
- package/dist/server/Sources.d.ts +12 -0
- package/dist/server/Sources.d.ts.map +1 -0
- package/dist/server/Sources.js +118 -0
- package/dist/server/Sources.js.map +1 -0
- package/dist/sso-credentials.d.ts +17 -0
- package/dist/sso-credentials.d.ts.map +1 -0
- package/dist/sso-credentials.js +43 -0
- package/dist/sso-credentials.js.map +1 -0
- package/dist/state.d.ts +15 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +45 -0
- package/dist/state.js.map +1 -0
- package/dist/version.d.ts +5 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +61 -0
- package/dist/version.js.map +1 -0
- package/package.json +60 -3
package/dist/state.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Effect, Predicate, Schema } from "effect";
|
|
2
|
+
import { ResourceSummary, StateReadError } from "./schema.js";
|
|
3
|
+
const ResourceRow = Schema.Struct({
|
|
4
|
+
kind: Schema.optionalKey(Schema.Literal("resource")),
|
|
5
|
+
fqn: Schema.NonEmptyString,
|
|
6
|
+
logicalId: Schema.NonEmptyString,
|
|
7
|
+
resourceType: Schema.NonEmptyString,
|
|
8
|
+
status: ResourceSummary.fields.status
|
|
9
|
+
});
|
|
10
|
+
const ActionRow = Schema.Struct({
|
|
11
|
+
kind: Schema.Literal("action"),
|
|
12
|
+
fqn: Schema.NonEmptyString,
|
|
13
|
+
logicalId: Schema.NonEmptyString,
|
|
14
|
+
actionType: Schema.NonEmptyString,
|
|
15
|
+
status: Schema.Literals(["running", "ran"])
|
|
16
|
+
});
|
|
17
|
+
const metadataKeys = ["kind", "fqn", "logicalId", "resourceType", "actionType", "status"];
|
|
18
|
+
/** Discard properties and outputs entirely. Mask marker objects in metadata, including their siblings. */
|
|
19
|
+
const metadata = (value) => {
|
|
20
|
+
if (Object.hasOwn(value, "__redacted__"))
|
|
21
|
+
return null;
|
|
22
|
+
return Object.fromEntries(Object.entries(value).filter(([key]) => metadataKeys.includes(key)).map(([key, field]) => {
|
|
23
|
+
return [key, Predicate.isObject(field) && Object.hasOwn(field, "__redacted__") ? "<redacted>" : field];
|
|
24
|
+
}));
|
|
25
|
+
};
|
|
26
|
+
/** Decode persisted beta.74/beta.77 JSON into metadata; action rows are validated and excluded. */
|
|
27
|
+
export const decodeResource = Effect.fn("AlchemyConsole.decodeResource")(function* (text) {
|
|
28
|
+
const json = yield* Schema.decodeUnknownEffect(Schema.fromJsonString(Schema.JsonObject))(text).pipe(Effect.mapError(() => new StateReadError({ reason: "invalid-state" })));
|
|
29
|
+
const row = yield* Schema.decodeUnknownEffect(Schema.Union([ResourceRow, ActionRow]))(metadata(json)).pipe(Effect.mapError(() => new StateReadError({ reason: "invalid-state" })));
|
|
30
|
+
if (row.kind === "action")
|
|
31
|
+
return null;
|
|
32
|
+
const slash = row.fqn.lastIndexOf("/");
|
|
33
|
+
return ResourceSummary.make({
|
|
34
|
+
fqn: row.fqn,
|
|
35
|
+
logicalId: row.logicalId,
|
|
36
|
+
resourceType: row.resourceType,
|
|
37
|
+
status: row.status,
|
|
38
|
+
parent: slash === -1 ? null : row.fqn.slice(0, slash),
|
|
39
|
+
providerId: null,
|
|
40
|
+
account: null,
|
|
41
|
+
region: null,
|
|
42
|
+
consoleUrl: null
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Effect, FileSystem, Path } from "effect";
|
|
2
|
+
import { StateReadError } from "./schema.js";
|
|
3
|
+
/** Read the nearest pnpm or Bun text lockfile within an explicit server-private search root. */
|
|
4
|
+
export declare const readAlchemyVersion: (projectDirectory: string, searchRoot: string) => Effect.Effect<string | null, StateReadError, FileSystem.FileSystem | Path.Path>;
|
|
5
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAU,MAAM,QAAQ,CAAA;AAIzD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AA4C5C,gGAAgG;AAChG,eAAO,MAAM,kBAAkB,mIAqB7B,CAAA"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Effect, FileSystem, Path, Schema } from "effect";
|
|
2
|
+
import { parse as parseJsonc } from "jsonc-parser";
|
|
3
|
+
import { parse as parseYaml } from "yaml";
|
|
4
|
+
import { exists, readText, withinRoot } from "./internal/files.js";
|
|
5
|
+
import { StateReadError } from "./schema.js";
|
|
6
|
+
const Dependency = Schema.Struct({ version: Schema.String });
|
|
7
|
+
const Importer = Schema.Struct({
|
|
8
|
+
dependencies: Schema.optionalKey(Schema.Record(Schema.String, Dependency)),
|
|
9
|
+
devDependencies: Schema.optionalKey(Schema.Record(Schema.String, Dependency))
|
|
10
|
+
});
|
|
11
|
+
const PnpmLock = Schema.Struct({ importers: Schema.Record(Schema.String, Importer) });
|
|
12
|
+
const BunLock = Schema.Struct({ packages: Schema.Record(Schema.String, Schema.Array(Schema.Unknown)) });
|
|
13
|
+
const exactVersion = /^(?:alchemy@)?(\d+\.\d+\.\d+(?:-[\w.-]+)?)(?:\(.*\))?$/u;
|
|
14
|
+
const decodeVersion = (resolved) => resolved === undefined ? null : exactVersion.exec(resolved)?.[1] ?? null;
|
|
15
|
+
const pnpmVersion = Effect.fn("AlchemyConsole.pnpmVersion")(function* (text, importer) {
|
|
16
|
+
const raw = yield* Effect.try({
|
|
17
|
+
try: () => parseYaml(text, { maxAliasCount: 0 }),
|
|
18
|
+
catch: () => new StateReadError({ reason: "invalid-lockfile" })
|
|
19
|
+
});
|
|
20
|
+
const lock = yield* Schema.decodeUnknownEffect(PnpmLock)(raw).pipe(Effect.mapError(() => new StateReadError({ reason: "invalid-lockfile" })));
|
|
21
|
+
const entry = lock.importers[importer];
|
|
22
|
+
return decodeVersion(entry?.dependencies?.alchemy?.version ?? entry?.devDependencies?.alchemy?.version);
|
|
23
|
+
});
|
|
24
|
+
const bunVersion = Effect.fn("AlchemyConsole.bunVersion")(function* (text) {
|
|
25
|
+
const errors = [];
|
|
26
|
+
const raw = yield* Effect.try({
|
|
27
|
+
try: () => parseJsonc(text, errors, { allowTrailingComma: true }),
|
|
28
|
+
catch: () => new StateReadError({ reason: "invalid-lockfile" })
|
|
29
|
+
});
|
|
30
|
+
if (errors.length > 0)
|
|
31
|
+
return yield* new StateReadError({ reason: "invalid-lockfile" });
|
|
32
|
+
const lock = yield* Schema.decodeUnknownEffect(BunLock)(raw).pipe(Effect.mapError(() => new StateReadError({ reason: "invalid-lockfile" })));
|
|
33
|
+
const resolved = lock.packages.alchemy?.[0];
|
|
34
|
+
if (resolved === undefined)
|
|
35
|
+
return null;
|
|
36
|
+
const version = yield* Schema.decodeUnknownEffect(Schema.String)(resolved).pipe(Effect.mapError(() => new StateReadError({ reason: "invalid-lockfile" })));
|
|
37
|
+
return decodeVersion(version);
|
|
38
|
+
});
|
|
39
|
+
/** Read the nearest pnpm or Bun text lockfile within an explicit server-private search root. */
|
|
40
|
+
export const readAlchemyVersion = Effect.fn("AlchemyConsole.readAlchemyVersion")(function* (projectDirectory, searchRoot) {
|
|
41
|
+
const fs = yield* FileSystem.FileSystem;
|
|
42
|
+
const path = yield* Path.Path;
|
|
43
|
+
const root = yield* fs.realPath(searchRoot).pipe(Effect.mapError(() => new StateReadError({ reason: "io" })));
|
|
44
|
+
const project = yield* withinRoot(root, projectDirectory);
|
|
45
|
+
let directory = project;
|
|
46
|
+
while (true) {
|
|
47
|
+
for (const name of ["pnpm-lock.yaml", "bun.lock"]) {
|
|
48
|
+
const candidate = path.join(directory, name);
|
|
49
|
+
if (!(yield* exists(candidate)))
|
|
50
|
+
continue;
|
|
51
|
+
const file = yield* withinRoot(root, candidate);
|
|
52
|
+
const text = yield* readText(file);
|
|
53
|
+
const importer = path.relative(directory, project).split(path.sep).join("/") || ".";
|
|
54
|
+
return yield* name === "bun.lock" ? bunVersion(text) : pnpmVersion(text, importer);
|
|
55
|
+
}
|
|
56
|
+
if (directory === root)
|
|
57
|
+
return null;
|
|
58
|
+
directory = path.dirname(directory);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACzD,OAAO,EAAE,KAAK,IAAI,UAAU,EAAmB,MAAM,cAAc,CAAA;AACnE,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;AAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1E,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAC9E,CAAC,CAAA;AACF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAA;AACrF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;AACvG,MAAM,YAAY,GAAG,yDAAyD,CAAA;AAE9E,MAAM,aAAa,GAAG,CAAC,QAA4B,EAAiB,EAAE,CACpE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;AAE1E,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,4BAA4B,CAAC,CAAC,QAAQ,CAAC,EAAC,IAAY,EAAE,QAAgB;IAClG,MAAM,GAAG,GAAY,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACrC,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;QAChD,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;KAChE,CAAC,CAAA;IACF,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAChE,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAC1E,CAAA;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IACtC,OAAO,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AACzG,CAAC,CAAC,CAAA;AAEF,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,2BAA2B,CAAC,CAAC,QAAQ,CAAC,EAAC,IAAY;IAC9E,MAAM,MAAM,GAAsB,EAAE,CAAA;IACpC,MAAM,GAAG,GAAY,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACrC,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;QACjE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;KAChE,CAAC,CAAA;IACF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAA;IACvF,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAC/D,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAC1E,CAAA;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;IAC3C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC7E,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAC1E,CAAA;IACD,OAAO,aAAa,CAAC,OAAO,CAAC,CAAA;AAC/B,CAAC,CAAC,CAAA;AAEF,gGAAgG;AAChG,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,mCAAmC,CAAC,CAAC,QAAQ,CAAC,EACxF,gBAAwB,EACxB,UAAkB;IAElB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IACvC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAC7G,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;IACzD,IAAI,SAAS,GAAG,OAAO,CAAA;IACvB,OAAO,IAAI,EAAE,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YAC5C,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAAE,SAAQ;YACzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;YAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAA;YACnF,OAAO,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACpF,CAAC;QACD,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QACnC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACrC,CAAC;AACH,CAAC,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,63 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knpkv/alchemy-console",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Read-only discovery and state readers for local Alchemy stacks",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/knpkv/npm.git",
|
|
9
|
+
"directory": "packages/alchemy-console"
|
|
10
|
+
},
|
|
11
|
+
"type": "module",
|
|
12
|
+
"sideEffects": false,
|
|
13
|
+
"main": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"bin": {
|
|
16
|
+
"alchemy-console": "./dist/main.js"
|
|
17
|
+
},
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"import": "./dist/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./api": {
|
|
24
|
+
"types": "./dist/api.d.ts",
|
|
25
|
+
"import": "./dist/api.js"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"dist",
|
|
30
|
+
"README.md"
|
|
31
|
+
],
|
|
32
|
+
"publishConfig": {
|
|
33
|
+
"access": "public"
|
|
34
|
+
},
|
|
35
|
+
"peerDependencies": {
|
|
36
|
+
"effect": "4.0.0"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@effect/vitest": "4.0.0",
|
|
40
|
+
"@playwright/test": "1.63.0",
|
|
41
|
+
"@types/node": "^26.6.4",
|
|
42
|
+
"effect": "4.0.0",
|
|
43
|
+
"typescript": "npm:@typescript/typescript6@^6.0.2",
|
|
44
|
+
"vitest": "^5.0.3",
|
|
45
|
+
"vite": "^8.3.2"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"@aws-sdk/credential-provider-sso": "^3.973.16",
|
|
49
|
+
"@effect/platform-node": "4.0.0",
|
|
50
|
+
"@distilled.cloud/aws": "^1.0.0-rc.13",
|
|
51
|
+
"jsonc-parser": "^3.3.1",
|
|
52
|
+
"yaml": "^2.9.1",
|
|
53
|
+
"@knpkv/bounded-io": "^0.2.0",
|
|
54
|
+
"@knpkv/browser-pairing": "^0.5.0"
|
|
55
|
+
},
|
|
56
|
+
"scripts": {
|
|
57
|
+
"build": "tsc -b tsconfig.build.json --force && vite build",
|
|
58
|
+
"check": "tsc -b tsconfig.json && tsc -p test/tsconfig.json --noEmit",
|
|
59
|
+
"lint": "eslint src test",
|
|
60
|
+
"test": "vitest run",
|
|
61
|
+
"test:browser": "pnpm --filter '@knpkv/alchemy-console^...' build && pnpm build && playwright test"
|
|
62
|
+
}
|
|
6
63
|
}
|