stitchkit 0.80.1 → 0.82.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/CHANGELOG.md +6552 -0
- package/README.md +4 -0
- package/dist/agent-runtime/provider-failure.d.ts.map +1 -1
- package/dist/agent-runtime-coding-tools.js +1 -1
- package/dist/agent-runtime-harness.js +7 -5
- package/dist/agent-runtime.js +15 -19
- package/dist/application/notification-outbox.d.ts +80 -0
- package/dist/application/notification-outbox.d.ts.map +1 -0
- package/dist/application/process-lifecycle.d.ts +166 -0
- package/dist/application/process-lifecycle.d.ts.map +1 -0
- package/dist/application/state-store.d.ts +18 -0
- package/dist/application/state-store.d.ts.map +1 -0
- package/dist/application.d.ts +3 -0
- package/dist/application.d.ts.map +1 -1
- package/dist/application.js +568 -11
- package/dist/browser/http.d.ts +14 -0
- package/dist/browser/http.d.ts.map +1 -1
- package/dist/browser/resumable.d.ts +6 -0
- package/dist/browser/resumable.d.ts.map +1 -1
- package/dist/cli.js +9 -7
- package/dist/contract/define.d.ts +27 -4
- package/dist/contract/define.d.ts.map +1 -1
- package/dist/contract/errors-factory.d.ts +22 -3
- package/dist/contract/errors-factory.d.ts.map +1 -1
- package/dist/contract/index.d.ts +2 -2
- package/dist/contract/index.d.ts.map +1 -1
- package/dist/contract/index.js +1 -1
- package/dist/geo/index.d.ts +4 -0
- package/dist/geo/index.d.ts.map +1 -0
- package/dist/geo/maxmind.d.ts +4 -0
- package/dist/geo/maxmind.d.ts.map +1 -0
- package/dist/geo/resolver.d.ts +9 -0
- package/dist/geo/resolver.d.ts.map +1 -0
- package/dist/geo/types.d.ts +59 -0
- package/dist/geo/types.d.ts.map +1 -0
- package/dist/geo.d.ts +3 -0
- package/dist/geo.d.ts.map +1 -0
- package/dist/geo.js +245 -0
- package/dist/{index-9s6z8vgf.js → index-1dd82z59.js} +1 -1
- package/dist/{index-vwp69871.js → index-27487ay5.js} +4 -4
- package/dist/{index-7ag81v2f.js → index-27gm3d6g.js} +10 -321
- package/dist/{index-y01f4223.js → index-2bxcmqkb.js} +127 -43
- package/dist/{index-dxesg10d.js → index-3ds42w1w.js} +3 -3
- package/dist/index-3xwxfj4z.js +334 -0
- package/dist/{index-egaabxkz.js → index-5z8tezpx.js} +2 -2
- package/dist/{index-fxz0v7vg.js → index-7evdsyez.js} +1 -83
- package/dist/{index-xcetq6j3.js → index-90d7h2cr.js} +32 -13
- package/dist/{index-t0z5p5w6.js → index-apn8repm.js} +1 -1
- package/dist/{index-758zx2ha.js → index-dggwnnjv.js} +2 -2
- package/dist/{index-dwf1f2ap.js → index-f9mb610r.js} +1 -62
- package/dist/{index-5mtc969c.js → index-fwbkp2jn.js} +1 -1
- package/dist/index-p13mwz16.js +16 -0
- package/dist/{index-m9kzax52.js → index-p18f59zy.js} +21 -5
- package/dist/{index-hb5pf3s4.js → index-qmgs7y68.js} +1 -1
- package/dist/{index-2rwwmr7v.js → index-s4ckmrac.js} +1 -1
- package/dist/{index-h4pj6fta.js → index-s8cnx02s.js} +8 -5
- package/dist/{index-k9ay6v6d.js → index-vchzar7e.js} +74 -23
- package/dist/index-vsbzgd7b.js +84 -0
- package/dist/{index-dxjjv399.js → index-xbppf54a.js} +95 -15
- package/dist/index-y91ry9h2.js +4 -0
- package/dist/index-zcgf3gqf.js +83 -0
- package/dist/index.js +17 -13
- package/dist/internal/error-message.d.ts +3 -0
- package/dist/internal/error-message.d.ts.map +1 -0
- package/dist/internal/media-type.d.ts +8 -0
- package/dist/internal/media-type.d.ts.map +1 -0
- package/dist/internal/route-pattern.d.ts +21 -0
- package/dist/internal/route-pattern.d.ts.map +1 -1
- package/dist/internal/upgrade-plan.d.ts +18 -0
- package/dist/internal/upgrade-plan.d.ts.map +1 -0
- package/dist/node.js +9 -6
- package/dist/observability/audit.d.ts +28 -1
- package/dist/observability/audit.d.ts.map +1 -1
- package/dist/observability/bounded-logger.d.ts +20 -0
- package/dist/observability/bounded-logger.d.ts.map +1 -0
- package/dist/observability/context.d.ts +12 -3
- package/dist/observability/context.d.ts.map +1 -1
- package/dist/observability/index.d.ts +3 -2
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +138 -8
- package/dist/observability/sanitize.d.ts +17 -0
- package/dist/observability/sanitize.d.ts.map +1 -1
- package/dist/primitives.js +1 -1
- package/dist/react/query-client.d.ts +33 -0
- package/dist/react/query-client.d.ts.map +1 -0
- package/dist/react.d.ts +1 -0
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +83 -1
- package/dist/realtime/registry.d.ts +93 -0
- package/dist/realtime/registry.d.ts.map +1 -0
- package/dist/release/header.d.ts +9 -0
- package/dist/release/header.d.ts.map +1 -0
- package/dist/release/marker.d.ts +39 -0
- package/dist/release/marker.d.ts.map +1 -0
- package/dist/release/socket.d.ts +57 -0
- package/dist/release/socket.d.ts.map +1 -0
- package/dist/release/watcher.d.ts +66 -0
- package/dist/release/watcher.d.ts.map +1 -0
- package/dist/release.d.ts +15 -0
- package/dist/release.d.ts.map +1 -0
- package/dist/release.js +196 -0
- package/dist/remote.js +12 -7
- package/dist/server/context.d.ts +2 -1
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/create.d.ts.map +1 -1
- package/dist/server/error-hook.d.ts +17 -16
- package/dist/server/error-hook.d.ts.map +1 -1
- package/dist/server/file-state-store.d.ts +23 -0
- package/dist/server/file-state-store.d.ts.map +1 -0
- package/dist/server/implement.d.ts.map +1 -1
- package/dist/server/index.d.ts +5 -2
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +469 -11
- package/dist/server/middleware/cookies.d.ts +33 -1
- package/dist/server/middleware/cookies.d.ts.map +1 -1
- package/dist/server/middleware/cors.d.ts +16 -1
- package/dist/server/middleware/cors.d.ts.map +1 -1
- package/dist/server/openapi.d.ts.map +1 -1
- package/dist/server/release-signal.d.ts +35 -0
- package/dist/server/release-signal.d.ts.map +1 -0
- package/dist/server/router.d.ts.map +1 -1
- package/dist/server/types.d.ts +26 -2
- package/dist/server/types.d.ts.map +1 -1
- package/dist/testing/surface-manifest.d.ts.map +1 -1
- package/dist/testing.js +7 -4
- package/dist/tool-invoker.js +8 -6
- package/dist/tools/download-core.d.ts.map +1 -1
- package/dist/tools/remote.d.ts.map +1 -1
- package/dist/tools/view-file.d.ts.map +1 -1
- package/dist/tools.js +20 -16
- package/dist/tracking/attribution.d.ts +51 -0
- package/dist/tracking/attribution.d.ts.map +1 -0
- package/dist/tracking/beacon.d.ts +14 -0
- package/dist/tracking/beacon.d.ts.map +1 -0
- package/dist/tracking/clicks.d.ts +46 -0
- package/dist/tracking/clicks.d.ts.map +1 -0
- package/dist/tracking/client.d.ts +121 -0
- package/dist/tracking/client.d.ts.map +1 -0
- package/dist/tracking/contract.d.ts +57 -0
- package/dist/tracking/contract.d.ts.map +1 -0
- package/dist/tracking/delivery.d.ts +24 -0
- package/dist/tracking/delivery.d.ts.map +1 -0
- package/dist/tracking/host.d.ts +43 -0
- package/dist/tracking/host.d.ts.map +1 -0
- package/dist/tracking/once-per-page.d.ts +17 -0
- package/dist/tracking/once-per-page.d.ts.map +1 -0
- package/dist/tracking/outbox-storage-indexeddb.d.ts +12 -0
- package/dist/tracking/outbox-storage-indexeddb.d.ts.map +1 -0
- package/dist/tracking/outbox-storage-memory.d.ts +12 -0
- package/dist/tracking/outbox-storage-memory.d.ts.map +1 -0
- package/dist/tracking/outbox.d.ts +98 -0
- package/dist/tracking/outbox.d.ts.map +1 -0
- package/dist/tracking/schemas.d.ts +183 -0
- package/dist/tracking/schemas.d.ts.map +1 -0
- package/dist/tracking/scroll.d.ts +22 -0
- package/dist/tracking/scroll.d.ts.map +1 -0
- package/dist/tracking/sequence-reserve.d.ts +34 -0
- package/dist/tracking/sequence-reserve.d.ts.map +1 -0
- package/dist/tracking/server/active-interval.d.ts +26 -0
- package/dist/tracking/server/active-interval.d.ts.map +1 -0
- package/dist/tracking/server/bot.d.ts +9 -0
- package/dist/tracking/server/bot.d.ts.map +1 -0
- package/dist/tracking/server/disposition.d.ts +55 -0
- package/dist/tracking/server/disposition.d.ts.map +1 -0
- package/dist/tracking/server/hash.d.ts +13 -0
- package/dist/tracking/server/hash.d.ts.map +1 -0
- package/dist/tracking/server/presence.d.ts +27 -0
- package/dist/tracking/server/presence.d.ts.map +1 -0
- package/dist/tracking/server/visit-lease.d.ts +92 -0
- package/dist/tracking/server/visit-lease.d.ts.map +1 -0
- package/dist/tracking/visible-time.d.ts +38 -0
- package/dist/tracking/visible-time.d.ts.map +1 -0
- package/dist/tracking-server.d.ts +15 -0
- package/dist/tracking-server.d.ts.map +1 -0
- package/dist/tracking-server.js +173 -0
- package/dist/tracking.d.ts +24 -0
- package/dist/tracking.d.ts.map +1 -0
- package/dist/tracking.js +1091 -0
- package/dist/upgrade-cli.d.ts +27 -0
- package/dist/upgrade-cli.d.ts.map +1 -0
- package/dist/upgrade-cli.js +177 -0
- package/llms-full.txt +1001 -29
- package/llms.txt +4 -0
- package/package.json +30 -5
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
export interface UpgradeCliResult {
|
|
3
|
+
/** What to write to stdout. */
|
|
4
|
+
readonly output: string;
|
|
5
|
+
/** Process exit code — 0 when the plan (or "nothing to do") was produced. */
|
|
6
|
+
readonly code: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The whole command as a function of its arguments and the filesystem, so the
|
|
10
|
+
* gate can exercise the paths that matter — a project with no stitchkit
|
|
11
|
+
* installed, a range that runs backwards, a changelog the package did not ship.
|
|
12
|
+
*/
|
|
13
|
+
export declare function runUpgradeCli(argv: readonly string[]): UpgradeCliResult;
|
|
14
|
+
/**
|
|
15
|
+
* Was this file executed as a program, rather than imported?
|
|
16
|
+
*
|
|
17
|
+
* Through the real install path that is a **symlink** question, not a string
|
|
18
|
+
* one: npm and bun link `node_modules/.bin/stitchkit` at the built file, Node
|
|
19
|
+
* keeps the link in `argv[1]` and resolves `import.meta.url` to its target. A
|
|
20
|
+
* direct comparison of the two is therefore false for every consumer, and the
|
|
21
|
+
* binary becomes a silent no-op — exit 0, no output, nothing to notice — while
|
|
22
|
+
* running the same file in place works perfectly. Both arguments are passed in
|
|
23
|
+
* so this is decidable without launching a process: under Bun `argv[1]` is
|
|
24
|
+
* already resolved, so a spawned symlink proves nothing about Node.
|
|
25
|
+
*/
|
|
26
|
+
export declare function isDirectInvocation(invoked: string | undefined, self: string): boolean;
|
|
27
|
+
//# sourceMappingURL=upgrade-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-cli.d.ts","sourceRoot":"","sources":["../src/upgrade-cli.ts"],"names":[],"mappings":";AA4DA,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,gBAAgB,CAqCvE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CASrF"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/upgrade-cli.ts
|
|
4
|
+
import { readFileSync, realpathSync } from "node:fs";
|
|
5
|
+
import { dirname, join, resolve } from "node:path";
|
|
6
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
7
|
+
|
|
8
|
+
// src/internal/upgrade-plan.ts
|
|
9
|
+
function semverParts(version) {
|
|
10
|
+
const match = /^(\d+)\.(\d+)\.(\d+)$/.exec(version);
|
|
11
|
+
if (!match)
|
|
12
|
+
throw new Error(`Expected an exact semver, received "${version}"`);
|
|
13
|
+
const [, major, minor, patch] = match;
|
|
14
|
+
if (major === undefined || minor === undefined || patch === undefined) {
|
|
15
|
+
throw new Error(`Expected an exact semver, received "${version}"`);
|
|
16
|
+
}
|
|
17
|
+
return [Number(major), Number(minor), Number(patch)];
|
|
18
|
+
}
|
|
19
|
+
function compareSemver(left, right) {
|
|
20
|
+
const a = semverParts(left);
|
|
21
|
+
const b = semverParts(right);
|
|
22
|
+
for (const index of [0, 1, 2]) {
|
|
23
|
+
const difference = a[index] - b[index];
|
|
24
|
+
if (difference !== 0)
|
|
25
|
+
return difference;
|
|
26
|
+
}
|
|
27
|
+
return 0;
|
|
28
|
+
}
|
|
29
|
+
function planUpgrade(changelog, from, to) {
|
|
30
|
+
semverParts(from);
|
|
31
|
+
semverParts(to);
|
|
32
|
+
if (compareSemver(from, to) >= 0) {
|
|
33
|
+
throw new Error(`Upgrade range must increase: ${from} → ${to}`);
|
|
34
|
+
}
|
|
35
|
+
const releases = [...changelog.matchAll(/^## \[(\d+\.\d+\.\d+)\].*$/gm)];
|
|
36
|
+
const changes = [];
|
|
37
|
+
for (const [index, release] of releases.entries()) {
|
|
38
|
+
const version = release[1];
|
|
39
|
+
if (version === undefined)
|
|
40
|
+
continue;
|
|
41
|
+
if (compareSemver(version, from) <= 0 || compareSemver(version, to) > 0)
|
|
42
|
+
continue;
|
|
43
|
+
const bodyStart = (release.index ?? 0) + release[0].length;
|
|
44
|
+
const bodyEnd = releases[index + 1]?.index ?? changelog.length;
|
|
45
|
+
const body = changelog.slice(bodyStart, bodyEnd);
|
|
46
|
+
const breakingHeader = /^### ⚠️ Breaking changes\s*$/m.exec(body);
|
|
47
|
+
if (!breakingHeader)
|
|
48
|
+
continue;
|
|
49
|
+
const breakingStart = (breakingHeader.index ?? 0) + breakingHeader[0].length;
|
|
50
|
+
const afterHeader = body.slice(breakingStart);
|
|
51
|
+
const nextSection = /^### /m.exec(afterHeader);
|
|
52
|
+
const markdown = afterHeader.slice(0, nextSection?.index ?? afterHeader.length).trim();
|
|
53
|
+
const who = /^\*\*Who must act:\*\*\s*([\s\S]*?)(?=\n\s*\n|\n[-*] )/m.exec(markdown);
|
|
54
|
+
changes.push({
|
|
55
|
+
version,
|
|
56
|
+
whoMustAct: who?.[1]?.replace(/\s+/g, " ").trim() ?? "Not declared in this legacy changelog section.",
|
|
57
|
+
markdown
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
return changes.sort((left, right) => compareSemver(left.version, right.version));
|
|
61
|
+
}
|
|
62
|
+
function renderUpgradePlan(changes, from, to) {
|
|
63
|
+
const header = `# Stitchkit upgrade ${from} → ${to}`;
|
|
64
|
+
if (changes.length === 0)
|
|
65
|
+
return `${header}
|
|
66
|
+
|
|
67
|
+
No breaking sections in this range.
|
|
68
|
+
`;
|
|
69
|
+
return `${header}
|
|
70
|
+
|
|
71
|
+
${changes.map((change) => `## ${change.version}
|
|
72
|
+
|
|
73
|
+
**Who must act:** ${change.whoMustAct}
|
|
74
|
+
|
|
75
|
+
${change.markdown.replace(/^\*\*Who must act:\*\*[\s\S]*?(?=\n\s*\n|\n[-*] )/m, "").trim()}`).join(`
|
|
76
|
+
|
|
77
|
+
`)}
|
|
78
|
+
`;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// src/upgrade-cli.ts
|
|
82
|
+
var USAGE = `stitchkit upgrade — print every breaking change between the installed version and this one
|
|
83
|
+
|
|
84
|
+
bunx stitchkit@latest upgrade in a project that depends on stitchkit
|
|
85
|
+
npx stitchkit@latest upgrade
|
|
86
|
+
|
|
87
|
+
Options
|
|
88
|
+
--from <version> installed version (default: the stitchkit in ./node_modules)
|
|
89
|
+
--to <version> target version (default: the version of this package)
|
|
90
|
+
--cwd <dir> project to read the installed version from (default: .)
|
|
91
|
+
--changelog <path> changelog to plan from (default: the one in this package)
|
|
92
|
+
`;
|
|
93
|
+
function option(argv, name) {
|
|
94
|
+
const index = argv.indexOf(`--${name}`);
|
|
95
|
+
if (index < 0)
|
|
96
|
+
return;
|
|
97
|
+
const value = argv[index + 1];
|
|
98
|
+
if (value === undefined || value.startsWith("--")) {
|
|
99
|
+
throw new Error(`--${name} needs a value`);
|
|
100
|
+
}
|
|
101
|
+
return value;
|
|
102
|
+
}
|
|
103
|
+
function packageRoot() {
|
|
104
|
+
return resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
|
105
|
+
}
|
|
106
|
+
function versionOf(packageJsonPath) {
|
|
107
|
+
let text;
|
|
108
|
+
try {
|
|
109
|
+
text = readFileSync(packageJsonPath, "utf8");
|
|
110
|
+
} catch {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const parsed = JSON.parse(text);
|
|
114
|
+
if (typeof parsed !== "object" || parsed === null || !("version" in parsed))
|
|
115
|
+
return;
|
|
116
|
+
const { version } = parsed;
|
|
117
|
+
return typeof version === "string" ? version : undefined;
|
|
118
|
+
}
|
|
119
|
+
function runUpgradeCli(argv) {
|
|
120
|
+
if (argv.includes("--help") || argv.includes("-h") || argv.length === 0) {
|
|
121
|
+
return { output: USAGE, code: 0 };
|
|
122
|
+
}
|
|
123
|
+
const [command] = argv;
|
|
124
|
+
if (command !== "upgrade") {
|
|
125
|
+
return { output: `Unknown command "${command}".
|
|
126
|
+
|
|
127
|
+
${USAGE}`, code: 1 };
|
|
128
|
+
}
|
|
129
|
+
const root = packageRoot();
|
|
130
|
+
const to = option(argv, "to") ?? versionOf(join(root, "package.json"));
|
|
131
|
+
if (to === undefined) {
|
|
132
|
+
throw new Error(`Cannot read the version of the stitchkit at ${root}`);
|
|
133
|
+
}
|
|
134
|
+
const cwd = resolve(option(argv, "cwd") ?? process.cwd());
|
|
135
|
+
const from = option(argv, "from") ?? versionOf(join(cwd, "node_modules", "stitchkit", "package.json"));
|
|
136
|
+
if (from === undefined) {
|
|
137
|
+
throw new Error(`No stitchkit found in ${join(cwd, "node_modules")} — run this in the project that depends on it, or pass --from <installed version>`);
|
|
138
|
+
}
|
|
139
|
+
if (from === to) {
|
|
140
|
+
return { output: `Already on ${to}. Nothing to upgrade.
|
|
141
|
+
`, code: 0 };
|
|
142
|
+
}
|
|
143
|
+
const changelogPath = option(argv, "changelog") ?? join(root, "CHANGELOG.md");
|
|
144
|
+
let changelog;
|
|
145
|
+
try {
|
|
146
|
+
changelog = readFileSync(changelogPath, "utf8");
|
|
147
|
+
} catch {
|
|
148
|
+
throw new Error(`Cannot read the changelog at ${changelogPath}`);
|
|
149
|
+
}
|
|
150
|
+
return { output: renderUpgradePlan(planUpgrade(changelog, from, to), from, to), code: 0 };
|
|
151
|
+
}
|
|
152
|
+
function isDirectInvocation(invoked, self) {
|
|
153
|
+
if (invoked === undefined)
|
|
154
|
+
return false;
|
|
155
|
+
if (invoked === self || pathToFileURL(invoked).href === pathToFileURL(self).href)
|
|
156
|
+
return true;
|
|
157
|
+
try {
|
|
158
|
+
return realpathSync(invoked) === realpathSync(self);
|
|
159
|
+
} catch {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (isDirectInvocation(process.argv[1], fileURLToPath(import.meta.url))) {
|
|
164
|
+
try {
|
|
165
|
+
const { output, code } = runUpgradeCli(process.argv.slice(2));
|
|
166
|
+
process.stdout.write(output);
|
|
167
|
+
process.exit(code);
|
|
168
|
+
} catch (error) {
|
|
169
|
+
process.stderr.write(`${error instanceof Error ? error.message : String(error)}
|
|
170
|
+
`);
|
|
171
|
+
process.exit(1);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
export {
|
|
175
|
+
runUpgradeCli,
|
|
176
|
+
isDirectInvocation
|
|
177
|
+
};
|