hollware 0.10.0 → 0.11.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/dist/{d1-CK4nF7p5.mjs → d1-BGChD8_u.mjs} +1 -1
- package/dist/{deploy-4tusYOMV.mjs → deploy-8_Nvbr3b.mjs} +3 -3
- package/dist/{doctor-DiKAktVd.mjs → doctor-BT_bTF1M.mjs} +2 -2
- package/dist/index.mjs +6 -6
- package/dist/{init-CBZPzLBs.mjs → init-cS_QgC4n.mjs} +51 -10
- package/dist/{invite-Ck-aqpN8.mjs → invite-BvW1xuxU.mjs} +3 -3
- package/dist/migrate-BleH6hXz.mjs +1 -0
- package/dist/{migrate-BBfF-mkE.mjs → migrate-BqdgcoRJ.mjs} +1 -1
- package/dist/{public-url-NLPRzxCN.mjs → public-url-B2BXf_pj.mjs} +2 -2
- package/dist/token-B0hS__kw.mjs +1 -0
- package/dist/{token-CLQpD4ed.mjs → token-CVPHV1K-.mjs} +6 -6
- package/package.json +2 -2
- package/dist/migrate-CRFTlOVG.mjs +0 -1
- package/dist/token-BasKoAEC.mjs +0 -1
|
@@ -155,7 +155,7 @@ function sitesQuery() {
|
|
|
155
155
|
/** The row of a new token. */
|
|
156
156
|
function insertToken(token) {
|
|
157
157
|
const kind = token.kind === void 0 ? ["", ""] : [", kind", `, ${quote(token.kind)}`];
|
|
158
|
-
return `INSERT INTO tokens (id, site_id, user_id, label, hash, scopes, expires_at, created_at, updated_at${kind[0]}) VALUES (${quote(token.id)}, ${quote(token.site)}, ${quote(token.userId)}, ${quote(token.label)}, ${quote(token.hash)}, ${quote(JSON.stringify(token.scopes))}, ${quote(token.expiresAt)}, ${quote(token.now)}, ${quote(token.now)}${kind[1]});`;
|
|
158
|
+
return `INSERT INTO tokens (id, site_id, user_id, label, hash, scopes, expires_at, created_at, updated_at${kind[0]}) VALUES (${quote(token.id)}, ${quote(token.site)}, ${quote(token.userId)}, ${quote(token.label)}, ${quote(token.hash)}, ${quote(JSON.stringify(token.scopes))}, ${token.expiresAt === null ? "NULL" : quote(token.expiresAt)}, ${quote(token.now)}, ${quote(token.now)}${kind[1]});`;
|
|
159
159
|
}
|
|
160
160
|
/** The row of the site: with a definition, given only to a site that has none yet. */
|
|
161
161
|
function siteRow(site, now, structure) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { r as CliError } from "./format-BpRYEsGB.mjs";
|
|
2
2
|
import { n as failureReason, r as stripAnsi } from "./wrangler-BLIfwbcu.mjs";
|
|
3
3
|
import { t as parseFlags } from "./args-CljWh-kZ.mjs";
|
|
4
|
-
import { f as ownerQuery, i as resolveDatabase, r as query } from "./d1-
|
|
5
|
-
import { t as publicUrlOf } from "./public-url-
|
|
6
|
-
import { i as migrate } from "./migrate-
|
|
4
|
+
import { f as ownerQuery, i as resolveDatabase, r as query } from "./d1-BGChD8_u.mjs";
|
|
5
|
+
import { t as publicUrlOf } from "./public-url-B2BXf_pj.mjs";
|
|
6
|
+
import { i as migrate } from "./migrate-BqdgcoRJ.mjs";
|
|
7
7
|
import { existsSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
8
8
|
import { join } from "node:path";
|
|
9
9
|
//#region src/commands/deploy.ts
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { r as CliError } from "./format-BpRYEsGB.mjs";
|
|
2
2
|
import { n as failureReason } from "./wrangler-BLIfwbcu.mjs";
|
|
3
3
|
import { t as parseFlags } from "./args-CljWh-kZ.mjs";
|
|
4
|
-
import { S as parseJsonc, f as ownerQuery, r as query, t as chooseTarget } from "./d1-
|
|
5
|
-
import { a as parsePendingMigrations } from "./migrate-
|
|
4
|
+
import { S as parseJsonc, f as ownerQuery, r as query, t as chooseTarget } from "./d1-BGChD8_u.mjs";
|
|
5
|
+
import { a as parsePendingMigrations } from "./migrate-BqdgcoRJ.mjs";
|
|
6
6
|
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
7
7
|
import { join } from "node:path";
|
|
8
8
|
//#region src/commands/doctor.ts
|
package/dist/index.mjs
CHANGED
|
@@ -102,12 +102,12 @@ async function main(argv, io) {
|
|
|
102
102
|
}
|
|
103
103
|
async function run(command, args, io) {
|
|
104
104
|
switch (command) {
|
|
105
|
-
case "init": return (await import("./init-
|
|
106
|
-
case "migrate": return (await import("./migrate-
|
|
107
|
-
case "deploy": return (await import("./deploy-
|
|
108
|
-
case "doctor": return (await import("./doctor-
|
|
109
|
-
case "token": return (await import("./token-
|
|
110
|
-
case "invite": return (await import("./invite-
|
|
105
|
+
case "init": return (await import("./init-cS_QgC4n.mjs")).init(args, io);
|
|
106
|
+
case "migrate": return (await import("./migrate-BleH6hXz.mjs")).migrate(args, io);
|
|
107
|
+
case "deploy": return (await import("./deploy-8_Nvbr3b.mjs")).deploy(args, io);
|
|
108
|
+
case "doctor": return (await import("./doctor-BT_bTF1M.mjs")).doctor(args, io);
|
|
109
|
+
case "token": return (await import("./token-B0hS__kw.mjs")).token(args, io);
|
|
110
|
+
case "invite": return (await import("./invite-BvW1xuxU.mjs")).invite(args, io);
|
|
111
111
|
case "export": return (await import("./export-DprcsjU_.mjs")).exportContent(args, io);
|
|
112
112
|
default: return (await import("./import-JNLtBmyD.mjs")).importContent(args, io);
|
|
113
113
|
}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { i as UsageError, r as CliError } from "./format-BpRYEsGB.mjs";
|
|
2
2
|
import { t as parseFlags } from "./args-CljWh-kZ.mjs";
|
|
3
|
-
import { _ as parseSiteKey, a as runFile, c as insertInvitation, f as ownerQuery, h as parseOwnerName, i as resolveDatabase, n as describeDatabase, o as anotherSiteScript, r as query, s as initScript, t as chooseTarget } from "./d1-
|
|
4
|
-
import { n as setupLink, t as publicUrlOf } from "./public-url-
|
|
3
|
+
import { _ as parseSiteKey, a as runFile, c as insertInvitation, f as ownerQuery, h as parseOwnerName, i as resolveDatabase, n as describeDatabase, o as anotherSiteScript, r as query, s as initScript, t as chooseTarget } from "./d1-BGChD8_u.mjs";
|
|
4
|
+
import { n as setupLink, t as publicUrlOf } from "./public-url-B2BXf_pj.mjs";
|
|
5
5
|
import { i as newPersonalToken, n as newId, r as newInvitationSecret, t as inDays } from "./entropy-5uxirwFD.mjs";
|
|
6
6
|
import { existsSync, rmSync, writeFileSync } from "node:fs";
|
|
7
7
|
import { join } from "node:path";
|
|
8
|
-
import { PERSONAL_TOKEN_TTL_DAYS, PRESETS, SCOPES, hashPersonalToken, sitePreset } from "@hollware/core";
|
|
8
|
+
import { AUDIT_RETENTION_MAX_DAYS, AUDIT_RETENTION_MIN_DAYS, PERSONAL_TOKEN_TTL_DAYS, PRESETS, SCOPES, hashPersonalToken, sitePreset } from "@hollware/core";
|
|
9
9
|
//#region src/commands/init.ts
|
|
10
10
|
const INIT_USAGE = [
|
|
11
11
|
"Usage: hollware init --site <key> [--preset <blog | docs | empty>] [--locales <list>]",
|
|
12
12
|
" [--local | --remote] [--owner-name <name>] [--database <name>] [--url <url>]",
|
|
13
|
+
" [--ip-addresses <off | hashed>] [--audit-retention-days <n>]",
|
|
13
14
|
"",
|
|
14
15
|
"Creates a site, its owner and the owner's first personal token in the project's D1 database,",
|
|
15
16
|
"in one step, and prints the token once, with a link to set up the passkey of the admin (valid",
|
|
@@ -30,6 +31,11 @@ const INIT_USAGE = [
|
|
|
30
31
|
" --owner-name <name> The name of the owner",
|
|
31
32
|
" --database <name> The D1 database, by name or binding (default: the binding \"DB\" of wrangler.jsonc)",
|
|
32
33
|
" --url <url> The public URL of Hollware, for the link (default: HOLLWARE_PUBLIC_URL of wrangler.jsonc)",
|
|
34
|
+
" --ip-addresses <off | hashed>",
|
|
35
|
+
" Whether the activity log keeps a keyed hash of the address of each request",
|
|
36
|
+
" (default: off, nothing of it): an address is personal data",
|
|
37
|
+
" --audit-retention-days <n>",
|
|
38
|
+
" The days each line of the activity log is kept, 30 to 3650 (default: forever)",
|
|
33
39
|
" --help Show this help"
|
|
34
40
|
].join("\n");
|
|
35
41
|
/** The label of the token `init` creates. */
|
|
@@ -47,6 +53,8 @@ async function init(argv, io) {
|
|
|
47
53
|
locales: { type: "string" },
|
|
48
54
|
database: { type: "string" },
|
|
49
55
|
url: { type: "string" },
|
|
56
|
+
"ip-addresses": { type: "string" },
|
|
57
|
+
"audit-retention-days": { type: "string" },
|
|
50
58
|
help: { type: "boolean" }
|
|
51
59
|
}
|
|
52
60
|
});
|
|
@@ -56,7 +64,8 @@ async function init(argv, io) {
|
|
|
56
64
|
}
|
|
57
65
|
if (values.site === void 0) throw new UsageError("--site is required: name the site, such as --site my-site.");
|
|
58
66
|
const site = parseSiteKey(values.site);
|
|
59
|
-
const
|
|
67
|
+
const audit = auditOf(values["ip-addresses"], values["audit-retention-days"]);
|
|
68
|
+
const definition = initialDefinition(io.cwd, values.preset, values.locales, audit);
|
|
60
69
|
const ownerName = values["owner-name"] === void 0 ? void 0 : parseOwnerName(values["owner-name"]);
|
|
61
70
|
const target = chooseTarget(values);
|
|
62
71
|
const database = resolveDatabase(io.cwd, values.database);
|
|
@@ -73,7 +82,8 @@ async function init(argv, io) {
|
|
|
73
82
|
ownerId: first["id"],
|
|
74
83
|
database,
|
|
75
84
|
target,
|
|
76
|
-
definition
|
|
85
|
+
definition,
|
|
86
|
+
audit
|
|
77
87
|
});
|
|
78
88
|
const now = io.now();
|
|
79
89
|
const timestamp = now.toISOString();
|
|
@@ -145,7 +155,8 @@ async function init(argv, io) {
|
|
|
145
155
|
" Save the token in a file only you can read, then import content:",
|
|
146
156
|
" hollware import <directory> --url <your Hollware URL> --token-file <file>",
|
|
147
157
|
" An MCP client sends it as the header \"Authorization: Bearer <token>\" to <your Hollware URL>/mcp.",
|
|
148
|
-
" More tokens: hollware token create --label <text>"
|
|
158
|
+
" More tokens: hollware token create --label <text>",
|
|
159
|
+
...definition === null ? [] : ["", activityNote(audit)]
|
|
149
160
|
].join("\n"));
|
|
150
161
|
return 0;
|
|
151
162
|
}
|
|
@@ -202,7 +213,8 @@ async function addSite(io, where) {
|
|
|
202
213
|
"",
|
|
203
214
|
secret,
|
|
204
215
|
"",
|
|
205
|
-
"The owner signs in to the admin as before, with the same passkey, and switches to the site."
|
|
216
|
+
"The owner signs in to the admin as before, with the same passkey, and switches to the site.",
|
|
217
|
+
...definition === null ? [] : ["", activityNote(where.audit)]
|
|
206
218
|
].join("\n"));
|
|
207
219
|
return 0;
|
|
208
220
|
}
|
|
@@ -212,9 +224,9 @@ const LOCALE = /^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/;
|
|
|
212
224
|
* The first definition of the site (ADR-033), from `--preset` and `--locales`; `null` for a
|
|
213
225
|
* project with a hollware.config.ts, whose Worker moves it into the database on its first request.
|
|
214
226
|
*/
|
|
215
|
-
function initialDefinition(cwd, preset, locales) {
|
|
227
|
+
function initialDefinition(cwd, preset, locales, audit = DEFAULT_AUDIT_CHOICE) {
|
|
216
228
|
if (existsSync(join(cwd, "hollware.config.ts"))) {
|
|
217
|
-
if (preset !== void 0 || locales !== void 0) throw new UsageError("this project has a hollware.config.ts, which the Worker moves into the database: leave out --preset and --
|
|
229
|
+
if (preset !== void 0 || locales !== void 0 || audit.given) throw new UsageError("this project has a hollware.config.ts, which the Worker moves into the database: leave out --preset, --locales, --ip-addresses and --audit-retention-days, or delete the config first.");
|
|
218
230
|
return null;
|
|
219
231
|
}
|
|
220
232
|
const chosen = preset ?? "blog";
|
|
@@ -222,7 +234,36 @@ function initialDefinition(cwd, preset, locales) {
|
|
|
222
234
|
const list = (locales ?? "en").split(",").map((locale) => locale.trim()).filter((locale) => locale !== "");
|
|
223
235
|
const bad = list.find((locale) => !LOCALE.test(locale));
|
|
224
236
|
if (list.length === 0 || bad !== void 0) throw new UsageError(`--locales is a comma-separated list of locales, such as en,es; "${bad ?? ""}" is not one.`);
|
|
225
|
-
return
|
|
237
|
+
return {
|
|
238
|
+
...sitePreset(chosen, list, list[0] ?? "en"),
|
|
239
|
+
audit: {
|
|
240
|
+
ipAddresses: audit.ipAddresses,
|
|
241
|
+
retentionDays: audit.retentionDays
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
const DEFAULT_AUDIT_CHOICE = {
|
|
246
|
+
ipAddresses: "off",
|
|
247
|
+
retentionDays: null,
|
|
248
|
+
given: false
|
|
249
|
+
};
|
|
250
|
+
/** `--ip-addresses` and `--audit-retention-days`, checked; the defaults when both are left out. */
|
|
251
|
+
function auditOf(addresses, days) {
|
|
252
|
+
if (addresses !== void 0 && addresses !== "off" && addresses !== "hashed") throw new UsageError(`--ip-addresses is off or hashed, not "${addresses}".`);
|
|
253
|
+
let retentionDays = null;
|
|
254
|
+
if (days !== void 0) {
|
|
255
|
+
retentionDays = /^\d+$/.test(days) ? Number(days) : NaN;
|
|
256
|
+
if (!Number.isInteger(retentionDays) || retentionDays < AUDIT_RETENTION_MIN_DAYS || retentionDays > AUDIT_RETENTION_MAX_DAYS) throw new UsageError(`--audit-retention-days is a whole number from ${AUDIT_RETENTION_MIN_DAYS} to ${AUDIT_RETENTION_MAX_DAYS}, not "${days}". Leave it out to keep every line.`);
|
|
257
|
+
}
|
|
258
|
+
return {
|
|
259
|
+
ipAddresses: addresses === "hashed" ? "hashed" : "off",
|
|
260
|
+
retentionDays,
|
|
261
|
+
given: addresses !== void 0 || days !== void 0
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
/** What `init` says of the activity log of the new site, and where its owner changes it. */
|
|
265
|
+
function activityNote(audit) {
|
|
266
|
+
return `The activity log of the site ${audit.ipAddresses === "hashed" ? "keeps a keyed hash of the address of each request" : "keeps no address"} and ${audit.retentionDays === null ? "keeps every line" : `keeps each line ${audit.retentionDays} days`}; an owner changes that in the admin (Site, Activity log).`;
|
|
226
267
|
}
|
|
227
268
|
//#endregion
|
|
228
269
|
export { init };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { i as UsageError, r as CliError } from "./format-BpRYEsGB.mjs";
|
|
2
2
|
import { t as parseFlags } from "./args-CljWh-kZ.mjs";
|
|
3
|
-
import { _ as parseSiteKey, c as insertInvitation, d as ownerOfSiteQuery, i as resolveDatabase, p as parseExpiresInDays, r as query, t as chooseTarget, x as sitesQuery } from "./d1-
|
|
4
|
-
import { n as setupLink, t as publicUrlOf } from "./public-url-
|
|
3
|
+
import { _ as parseSiteKey, c as insertInvitation, d as ownerOfSiteQuery, i as resolveDatabase, p as parseExpiresInDays, r as query, t as chooseTarget, x as sitesQuery } from "./d1-BGChD8_u.mjs";
|
|
4
|
+
import { n as setupLink, t as publicUrlOf } from "./public-url-B2BXf_pj.mjs";
|
|
5
5
|
import { n as newId, r as newInvitationSecret, t as inDays } from "./entropy-5uxirwFD.mjs";
|
|
6
|
-
import { o as WHERE_OPTIONS, s as chooseSite } from "./token-
|
|
6
|
+
import { o as WHERE_OPTIONS, s as chooseSite } from "./token-CVPHV1K-.mjs";
|
|
7
7
|
import { hashPersonalToken } from "@hollware/core";
|
|
8
8
|
//#region src/commands/invite.ts
|
|
9
9
|
const INVITE_USAGE = [
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { i as migrate } from "./migrate-BqdgcoRJ.mjs";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as CliError } from "./format-BpRYEsGB.mjs";
|
|
2
2
|
import { n as failureReason, r as stripAnsi } from "./wrangler-BLIfwbcu.mjs";
|
|
3
3
|
import { t as parseFlags } from "./args-CljWh-kZ.mjs";
|
|
4
|
-
import { i as resolveDatabase, n as describeDatabase, t as chooseTarget } from "./d1-
|
|
4
|
+
import { i as resolveDatabase, n as describeDatabase, t as chooseTarget } from "./d1-BGChD8_u.mjs";
|
|
5
5
|
import { existsSync, mkdirSync, statSync } from "node:fs";
|
|
6
6
|
import { dirname, join } from "node:path";
|
|
7
7
|
//#region src/commands/migrate.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as UsageError } from "./format-BpRYEsGB.mjs";
|
|
2
|
-
import { S as parseJsonc } from "./d1-
|
|
2
|
+
import { S as parseJsonc } from "./d1-BGChD8_u.mjs";
|
|
3
3
|
import { existsSync, readFileSync } from "node:fs";
|
|
4
4
|
import { join } from "node:path";
|
|
5
5
|
//#region src/public-url.ts
|
|
@@ -26,7 +26,7 @@ function publicUrlOf(cwd, flag) {
|
|
|
26
26
|
}
|
|
27
27
|
/** The link that lets a person set up a passkey with an invitation. */
|
|
28
28
|
function setupLink(url, secret) {
|
|
29
|
-
return `${url ?? "<your Hollware URL>"}/setup
|
|
29
|
+
return `${url ?? "<your Hollware URL>"}/setup#invitation=${secret}`;
|
|
30
30
|
}
|
|
31
31
|
//#endregion
|
|
32
32
|
export { setupLink as n, publicUrlOf as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { c as token } from "./token-CVPHV1K-.mjs";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { i as UsageError, n as table, r as CliError, t as printable } from "./format-BpRYEsGB.mjs";
|
|
2
2
|
import { t as parseFlags } from "./args-CljWh-kZ.mjs";
|
|
3
|
-
import { _ as parseSiteKey, b as sitesAndOwnerQuery, g as parseScopes, i as resolveDatabase, l as insertToken, m as parseLabel, p as parseExpiresInDays, r as query, t as chooseTarget, u as listTokens, v as parseTokenId, x as sitesQuery, y as revokeToken } from "./d1-
|
|
3
|
+
import { _ as parseSiteKey, b as sitesAndOwnerQuery, g as parseScopes, i as resolveDatabase, l as insertToken, m as parseLabel, p as parseExpiresInDays, r as query, t as chooseTarget, u as listTokens, v as parseTokenId, x as sitesQuery, y as revokeToken } from "./d1-BGChD8_u.mjs";
|
|
4
4
|
import { a as newReadToken, i as newPersonalToken, n as newId, t as inDays } from "./entropy-5uxirwFD.mjs";
|
|
5
|
-
import {
|
|
5
|
+
import { hashPersonalToken } from "@hollware/core";
|
|
6
6
|
//#region src/commands/token.ts
|
|
7
7
|
const WHERE_FLAGS = [
|
|
8
8
|
" --site <key> The site (default: the only site of the database)",
|
|
@@ -34,7 +34,7 @@ const TOKEN_CREATE_USAGE = [
|
|
|
34
34
|
" --read A read token: content:read, published content, the read API only",
|
|
35
35
|
" --scopes <list> Comma-separated: content:read, content:write, content:publish, schema:admin",
|
|
36
36
|
" (default: content:read,content:write)",
|
|
37
|
-
|
|
37
|
+
" --expires-in-days <n> Days until it expires, 1 to 365; without it, the token never expires",
|
|
38
38
|
...WHERE_FLAGS
|
|
39
39
|
].join("\n");
|
|
40
40
|
const TOKEN_LIST_USAGE = [
|
|
@@ -97,7 +97,7 @@ async function createToken(argv, io) {
|
|
|
97
97
|
const label = parseLabel(values.label);
|
|
98
98
|
const siteFlag = values.site === void 0 ? void 0 : parseSiteKey(values.site);
|
|
99
99
|
const scopes = read ? ["content:read"] : values.scopes === void 0 ? DEFAULT_SCOPES : parseScopes(values.scopes);
|
|
100
|
-
const days = values["expires-in-days"] === void 0 ?
|
|
100
|
+
const days = values["expires-in-days"] === void 0 ? null : parseExpiresInDays(values["expires-in-days"]);
|
|
101
101
|
const target = chooseTarget(values);
|
|
102
102
|
const database = resolveDatabase(io.cwd, values.database);
|
|
103
103
|
const [siteRows = [], ownerRows = []] = await query(io.wrangler, database, target, sitesAndOwnerQuery());
|
|
@@ -107,7 +107,7 @@ async function createToken(argv, io) {
|
|
|
107
107
|
const now = io.now();
|
|
108
108
|
const id = newId(io, "token");
|
|
109
109
|
const secret = read ? newReadToken(io) : newPersonalToken(io);
|
|
110
|
-
const expiresAt = inDays(now, days);
|
|
110
|
+
const expiresAt = days === null ? null : inDays(now, days);
|
|
111
111
|
await query(io.wrangler, database, target, insertToken({
|
|
112
112
|
...read ? { kind: "read" } : {},
|
|
113
113
|
id,
|
|
@@ -124,7 +124,7 @@ async function createToken(argv, io) {
|
|
|
124
124
|
"",
|
|
125
125
|
`Label ${label}`,
|
|
126
126
|
`Scopes ${scopes.join(" ")}`,
|
|
127
|
-
`Expires ${expiresAt} (in ${days} ${days === 1 ? "day" : "days"})`,
|
|
127
|
+
days === null || expiresAt === null ? "Expires never (revoke it with hollware token revoke)" : `Expires ${expiresAt} (in ${days} ${days === 1 ? "day" : "days"})`,
|
|
128
128
|
"",
|
|
129
129
|
"The token. It is shown only once: Hollware keeps just its hash.",
|
|
130
130
|
"",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hollware",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "The Hollware CLI: init, migrate, token, import and export.",
|
|
5
5
|
"homepage": "https://hollware.com",
|
|
6
6
|
"bugs": {
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"provenance": true
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@hollware/core": "0.
|
|
34
|
+
"@hollware/core": "0.11.0",
|
|
35
35
|
"@modelcontextprotocol/client": "2.3.1",
|
|
36
36
|
"zod": "4.6.7"
|
|
37
37
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { i as migrate } from "./migrate-BBfF-mkE.mjs";
|
package/dist/token-BasKoAEC.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { c as token } from "./token-CLQpD4ed.mjs";
|