@autter/runtime-cli 1.0.0 → 1.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/README.md +97 -19
- package/dist/{build-BXFh_jbP.d.cts → build-BqjqqeLg.d.cts} +35 -9
- package/dist/{build-BXFh_jbP.d.ts → build-BqjqqeLg.d.ts} +35 -9
- package/dist/chunk-KIQRQY3X.js +1044 -0
- package/dist/{chunk-GGHHEUPQ.js → chunk-SIL3WZZ3.js} +26 -8
- package/dist/cli.js +2394 -154
- package/dist/index.cjs +817 -60
- package/dist/index.d.cts +111 -2
- package/dist/index.d.ts +111 -2
- package/dist/index.js +261 -2
- package/dist/next.cjs +645 -104
- package/dist/next.d.cts +3 -2
- package/dist/next.d.ts +3 -2
- package/dist/next.js +27 -8
- package/dist/vite.cjs +622 -95
- package/dist/vite.d.cts +3 -2
- package/dist/vite.d.ts +3 -2
- package/dist/vite.js +32 -6
- package/dist/webpack.cjs +615 -95
- package/dist/webpack.d.cts +11 -4
- package/dist/webpack.d.ts +11 -4
- package/dist/webpack.js +2 -2
- package/package.json +6 -1
- package/dist/chunk-SIRFO2QU.js +0 -524
package/README.md
CHANGED
|
@@ -5,24 +5,85 @@ content-addressed **debug id** and uploads its **source map** to the ingester,
|
|
|
5
5
|
so minified browser frames resolve to your original source, even when the
|
|
6
6
|
release your SDK reports doesn't match the upload.
|
|
7
7
|
|
|
8
|
+
- `autter-runtime sourcemaps setup` wires it into a project; `verify` checks a build
|
|
8
9
|
- `autter-runtime sourcemaps inject <dir>` / `upload <dir>` CLI
|
|
9
10
|
- Vite/Rollup plugin: `@autter/runtime-cli/vite`
|
|
10
11
|
- webpack 5 plugin: `@autter/runtime-cli/webpack`
|
|
11
12
|
- Next.js wrapper: `withAutterSourceMaps` from `@autter/runtime-cli/next`
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
[docs/SOURCE-MAPS.md](../../docs/SOURCE-MAPS.md).
|
|
14
|
+
Bundlers are optional peer dependencies. Debug ids need ingester 1.6.0+ and
|
|
15
|
+
`@autter/runtime-browser` 1.6.0+ (older ingesters still match `.js` maps by
|
|
16
|
+
release + path). Full guide: [docs/SOURCE-MAPS.md](../../docs/SOURCE-MAPS.md).
|
|
17
17
|
|
|
18
|
-
##
|
|
18
|
+
## Quick start (people and coding agents)
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
-
|
|
21
|
+
npx @autter/runtime-cli@latest sourcemaps setup # in the app's directory
|
|
22
|
+
npm run build # with AUTTER_RUNTIME_KEY set
|
|
23
|
+
npx autter-runtime sourcemaps verify dist # before deploying
|
|
22
24
|
```
|
|
23
25
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
**`setup [dir]`** is non-interactive and safe to re-run. It detects the build
|
|
27
|
+
tool (Vite and the frameworks built on it: SvelteKit, Nuxt, Astro, Remix,
|
|
28
|
+
React Router, Solid, Qwik; Next.js; webpack and Vue CLI; Rollup; Create React
|
|
29
|
+
App; Angular CLI; Parcel; esbuild), the package manager, the CI (GitHub
|
|
30
|
+
Actions, Vercel, Netlify, Cloudflare Pages, GitLab CI), the output directory,
|
|
31
|
+
existing source map settings, the installed browser SDK, and whether
|
|
32
|
+
`initAutterBrowser` gets a `release`. Then it:
|
|
33
|
+
|
|
34
|
+
- adds `@autter/runtime-cli` to `devDependencies` and prints the install
|
|
35
|
+
command (`--install` runs it);
|
|
36
|
+
- adds the Vite/Rollup or webpack plugin, or wraps the Next.js config in
|
|
37
|
+
`withAutterSourceMaps` (outermost), when the config has a shape it can edit
|
|
38
|
+
safely: `export default defineConfig({...})`, `module.exports = {...}`, a
|
|
39
|
+
config variable, a function returning an object, `withX(nextConfig)`
|
|
40
|
+
wrappers. It parses the file (JavaScript or TypeScript) and changes only
|
|
41
|
+
what it adds; anything else becomes a `manual` action with the exact snippet;
|
|
42
|
+
- for builds without a plugin (CRA, Angular, Parcel, esbuild), adds a
|
|
43
|
+
`postbuild` step (appended to `build` for pnpm, Yarn 2+ and Bun, which skip
|
|
44
|
+
`postbuild`) that runs `inject`, then `upload --delete-after-upload
|
|
45
|
+
--best-effort`, and turns on hidden maps where the tool can
|
|
46
|
+
(`GENERATE_SOURCEMAP=true`, Angular `"sourceMap": { "scripts": true, "hidden": true }`);
|
|
47
|
+
- reports, never edits, app code: a missing `release` gets a `manual` action
|
|
48
|
+
showing how to pass the commit SHA through the tool's public env or define
|
|
49
|
+
mechanism;
|
|
50
|
+
- never writes a key. It says where to store `AUTTER_RUNTIME_KEY` for each CI
|
|
51
|
+
it found, with commands that read the value from a prompt or stdin, never
|
|
52
|
+
from argv: `gh secret set AUTTER_RUNTIME_KEY --repo <owner/repo>`,
|
|
53
|
+
`vercel env add AUTTER_RUNTIME_KEY production`, `netlify env:set …
|
|
54
|
+
"$(cat)"`, and dashboard notes for Cloudflare Pages and GitLab.
|
|
55
|
+
|
|
56
|
+
`--dry-run` writes nothing; `--json` prints `{ detected, actions: [{ type:
|
|
57
|
+
"edit"|"add-dependency"|"add-script"|"manual"|"set-secret", file?,
|
|
58
|
+
description, snippet?, command? }], secret: { name, key, where }, next }`.
|
|
59
|
+
Exit codes: `0` everything applied, `2` manual actions remain, `1` error.
|
|
60
|
+
|
|
61
|
+
**`verify <dir>`** checks a production build before deploy: every JS bundle
|
|
62
|
+
has a debug id (the comment and the registration snippet), no `.map` file is
|
|
63
|
+
left and no `sourceMappingURL` points at a missing map (both deploy risks),
|
|
64
|
+
and, when `AUTTER_RUNTIME_KEY` is set, every bundle's map is on the ingester
|
|
65
|
+
(`/v1/sourcemaps/check` by debug id, ingester 1.7.0+). Without a key the
|
|
66
|
+
local checks still run and the upload is reported as unverified. Files copied
|
|
67
|
+
unchanged from `public/`, Next.js build manifests and polyfills, and service workers are
|
|
68
|
+
skipped; `--ignore <glob>` skips more. `--allow-maps` reports leftover maps
|
|
69
|
+
without failing. `--json` for machines; exit `1` on any failure, with the
|
|
70
|
+
reason per file.
|
|
71
|
+
|
|
72
|
+
## Keys
|
|
73
|
+
|
|
74
|
+
Set `AUTTER_RUNTIME_KEY` where your build runs. The recommended key for CI is
|
|
75
|
+
an **upload-only key** (`autter_rtu_…`): it can upload and check source maps
|
|
76
|
+
and nothing else, so a leaked CI secret can't send telemetry. The full server
|
|
77
|
+
key (`autter_rt_…`) also works. A publishable client key (`autter_rtc_…`) is
|
|
78
|
+
refused. Upload keys need ingester 1.7.0+. Without a key, the plugins turn no
|
|
79
|
+
source maps on and change nothing, and `upload --best-effort` uploads nothing
|
|
80
|
+
and exits 0.
|
|
81
|
+
|
|
82
|
+
## By hand
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
npm install -D @autter/runtime-cli
|
|
86
|
+
```
|
|
26
87
|
|
|
27
88
|
## Vite / Rollup
|
|
28
89
|
|
|
@@ -50,8 +111,10 @@ export default withAutterSourceMaps({ reactStrictMode: true });
|
|
|
50
111
|
```
|
|
51
112
|
|
|
52
113
|
All three turn on hidden source maps when you haven't configured maps, inject
|
|
53
|
-
debug ids after the build, upload when a key is present, and delete the
|
|
54
|
-
they created
|
|
114
|
+
debug ids after the build, upload when a key is present, and then delete the
|
|
115
|
+
maps they created whether or not the upload succeeded (a rejected upload, an
|
|
116
|
+
unreachable ingester, a dry run), printing one line that says why; without a
|
|
117
|
+
key they turn none on. Maps you configured yourself are left alone. Options (all optional): `release`, `urlPrefix`,
|
|
55
118
|
`endpoint`, `key`, `upload: false`, `deleteAfterUpload`, `dryRun`,
|
|
56
119
|
`concurrency`, `failOnError` (default `false`: a failed upload is logged and
|
|
57
120
|
never fails the build), `silent`.
|
|
@@ -65,28 +128,43 @@ npx autter-runtime sourcemaps upload dist --dry-run
|
|
|
65
128
|
```
|
|
66
129
|
|
|
67
130
|
```
|
|
68
|
-
autter-runtime sourcemaps
|
|
131
|
+
autter-runtime sourcemaps setup [dir] [--dry-run] [--install] [--json]
|
|
132
|
+
autter-runtime sourcemaps verify <dir> [--endpoint <url>] [--url-prefix <prefix>]
|
|
133
|
+
[--ignore <glob>]... [--allow-maps] [--json]
|
|
134
|
+
autter-runtime sourcemaps inject <dir> [--dry-run] [--json]
|
|
69
135
|
autter-runtime sourcemaps upload <dir> [--release <r>] [--url-prefix <prefix>]
|
|
70
|
-
[--endpoint <url>] [--concurrency <n>] [--delete-after-upload]
|
|
136
|
+
[--endpoint <url>] [--concurrency <n>] [--delete-after-upload]
|
|
137
|
+
[--best-effort] [--dry-run] [--json]
|
|
71
138
|
```
|
|
72
139
|
|
|
73
140
|
- **inject** writes `//# debugId=<id>`, a one-line snippet that registers
|
|
74
141
|
`globalThis._autterDebugIds[new Error().stack] = "<id>"`, and `"debugId"` in
|
|
75
142
|
the `.map`, for each `.js`/`.mjs`/`.cjs` with a map. The id is derived from
|
|
76
143
|
sha256 of the bundle bytes; running it again changes nothing.
|
|
77
|
-
- **upload** posts each map (without `sourcesContent
|
|
78
|
-
`<endpoint>/v1/sourcemaps`, in parallel, skipping maps the ingester
|
|
79
|
-
has.
|
|
80
|
-
|
|
144
|
+
- **upload** posts each map (without `sourcesContent`, gzipped, up to 32 MB)
|
|
145
|
+
to `<endpoint>/v1/sourcemaps`, in parallel, skipping maps the ingester
|
|
146
|
+
already has. Each map carries the bundle's function scopes (`x_autter_scopes`),
|
|
147
|
+
parsed from the file as served, so frames are named after the function they
|
|
148
|
+
are in rather than their call site; a bundle that does not parse is uploaded
|
|
149
|
+
without them, with a warning. Release: `--release`, else `GITHUB_SHA`,
|
|
150
|
+
`VERCEL_GIT_COMMIT_SHA`, `CF_PAGES_COMMIT_SHA`, `GIT_SHA`, then
|
|
151
|
+
`git rev-parse HEAD`.
|
|
152
|
+
- **upload --best-effort** is for build scripts that also run locally and in
|
|
153
|
+
fork PRs: without a key, or when the upload fails, it says so and exits 0;
|
|
154
|
+
with `--delete-after-upload`, every `.map` under `<dir>` is then deleted
|
|
155
|
+
anyway, so the output is the same with or without a key and never ships
|
|
156
|
+
maps.
|
|
81
157
|
|
|
82
158
|
Exit codes: `0` ok, `1` some maps failed, `2` no key / no release / key
|
|
83
|
-
rejected, `64` usage error.
|
|
159
|
+
rejected, `64` usage error (`--best-effort`: always `0`). `setup` and `verify`
|
|
160
|
+
have their own, above.
|
|
84
161
|
|
|
85
162
|
## Programmatic API
|
|
86
163
|
|
|
87
164
|
```ts
|
|
88
|
-
import { injectDir, uploadDir } from "@autter/runtime-cli";
|
|
165
|
+
import { injectDir, uploadDir, verifyDir } from "@autter/runtime-cli";
|
|
89
166
|
|
|
90
167
|
await injectDir("dist");
|
|
91
|
-
const summary = await uploadDir("dist", { urlPrefix: "/", release: process.env.GIT_SHA });
|
|
168
|
+
const summary = await uploadDir("dist", { urlPrefix: "/", release: process.env.GIT_SHA, deleteAfterUpload: true });
|
|
169
|
+
const check = await verifyDir("dist"); // check.ok, check.failures, check.upload.status
|
|
92
170
|
```
|
|
@@ -69,8 +69,17 @@ declare function injectBundle(bundle: BundleWithMap, options?: InjectOptions): P
|
|
|
69
69
|
declare function injectDir(dir: string, options?: InjectOptions): Promise<InjectResult[]>;
|
|
70
70
|
|
|
71
71
|
declare const DEFAULT_ENDPOINT = "https://otlp.autter.dev";
|
|
72
|
-
/**
|
|
72
|
+
/** Largest map the ingester stores: characters of JSON without
|
|
73
|
+
* `sourcesContent` (otlp-ingester's SOURCE_MAP_MAX_CHARS). */
|
|
74
|
+
declare const MAX_MAP_CHARS: number;
|
|
75
|
+
/** The ingester's `/v1/sourcemaps` body limit, counted after the gzip body
|
|
76
|
+
* is inflated: the map plus room for the rest of the request. */
|
|
73
77
|
declare const MAX_UPLOAD_BYTES: number;
|
|
78
|
+
/** Keys `upload` accepts, and the one it refuses before sending anything. */
|
|
79
|
+
declare const UPLOAD_KEY_PREFIX = "autter_rtu_";
|
|
80
|
+
declare const SERVER_KEY_PREFIX = "autter_rt_";
|
|
81
|
+
declare const CLIENT_KEY_PREFIX = "autter_rtc_";
|
|
82
|
+
declare const KEY_ADVICE: string;
|
|
74
83
|
interface UploadOptions {
|
|
75
84
|
/** Only these bundles (absolute, or relative to the directory). */
|
|
76
85
|
files?: string[];
|
|
@@ -82,7 +91,8 @@ interface UploadOptions {
|
|
|
82
91
|
/** Ingester base URL. Default: $AUTTER_ENDPOINT, $AUTTER_RUNTIME_ENDPOINT,
|
|
83
92
|
* $OTEL_EXPORTER_OTLP_ENDPOINT, else https://otlp.autter.dev. */
|
|
84
93
|
endpoint?: string;
|
|
85
|
-
/**
|
|
94
|
+
/** Upload key (`autter_rtu_…`, recommended for CI) or server key
|
|
95
|
+
* (`autter_rt_…`). Default: $AUTTER_RUNTIME_KEY. */
|
|
86
96
|
key?: string;
|
|
87
97
|
/** List what would be uploaded; no network, no key needed. */
|
|
88
98
|
dryRun?: boolean;
|
|
@@ -145,13 +155,18 @@ interface AutterSourceMapsOptions {
|
|
|
145
155
|
/** Ingester base URL. Default: $AUTTER_ENDPOINT, $AUTTER_RUNTIME_ENDPOINT,
|
|
146
156
|
* $OTEL_EXPORTER_OTLP_ENDPOINT, else https://otlp.autter.dev. */
|
|
147
157
|
endpoint?: string;
|
|
148
|
-
/**
|
|
149
|
-
*
|
|
158
|
+
/** Upload-only key (`autter_rtu_…`, recommended for CI) or server key
|
|
159
|
+
* (`autter_rt_…`). Default: $AUTTER_RUNTIME_KEY. Without one (and
|
|
160
|
+
* without `upload: false` or `dryRun`), the plugin generates no source
|
|
161
|
+
* maps it would have to delete again: the build is left as it was. */
|
|
150
162
|
key?: string;
|
|
151
|
-
/** Set false to inject debug ids only (upload later with the CLI).
|
|
163
|
+
/** Set false to inject debug ids only (upload later with the CLI). Maps
|
|
164
|
+
* the plugin generated are then kept for that upload: don't deploy them. */
|
|
152
165
|
upload?: boolean;
|
|
153
|
-
/**
|
|
154
|
-
*
|
|
166
|
+
/** Maps the plugin generated itself are always deleted after the upload
|
|
167
|
+
* step, uploaded or not, so they are never deployed; set false to keep
|
|
168
|
+
* them (you must then keep them out of the deploy). Maps you configured
|
|
169
|
+
* yourself are deleted only when this is true, and only once uploaded. */
|
|
155
170
|
deleteAfterUpload?: boolean;
|
|
156
171
|
/** Log what would be uploaded without sending anything. */
|
|
157
172
|
dryRun?: boolean;
|
|
@@ -166,13 +181,19 @@ interface AutterSourceMapsOptions {
|
|
|
166
181
|
interface BuildOutputResult {
|
|
167
182
|
injected: InjectResult[];
|
|
168
183
|
upload: UploadSummary | null;
|
|
184
|
+
/** Maps the plugin generated and deleted (paths relative to the directory). */
|
|
185
|
+
removedMaps: string[];
|
|
169
186
|
}
|
|
170
187
|
/** Human-readable lines for an upload summary (CLI and plugins). */
|
|
171
188
|
declare function formatUploadSummary(summary: UploadSummary): string[];
|
|
172
189
|
/**
|
|
173
190
|
* What every bundler integration does after a build: inject debug ids into
|
|
174
191
|
* the emitted bundles, then upload their maps when a key is present.
|
|
175
|
-
* Failures are logged, and thrown only with `failOnError`.
|
|
192
|
+
* Failures are logged, and thrown only with `failOnError`. When the
|
|
193
|
+
* integration turned source maps on itself (`ownMaps`), every map it made
|
|
194
|
+
* is deleted afterwards whatever happened to the upload (no key, a failed
|
|
195
|
+
* or partial upload, an unreachable ingester, a dry run), with the
|
|
196
|
+
* sourceMappingURL comments that name them, so none is deployed.
|
|
176
197
|
*/
|
|
177
198
|
declare function processBuildOutput(input: {
|
|
178
199
|
dir: string;
|
|
@@ -182,6 +203,11 @@ declare function processBuildOutput(input: {
|
|
|
182
203
|
/** Default for `deleteAfterUpload` (true when the plugin enabled maps). */
|
|
183
204
|
deleteAfterUpload: boolean;
|
|
184
205
|
stripSourceMappingUrl?: boolean;
|
|
206
|
+
/** The integration turned source maps on itself: none may be deployed. */
|
|
207
|
+
ownMaps?: boolean;
|
|
208
|
+
/** Map files the build emitted (absolute), when the bundler lists them;
|
|
209
|
+
* the maps of `files` (or of every bundle under `dir`) are added. */
|
|
210
|
+
maps?: string[];
|
|
185
211
|
}): Promise<BuildOutputResult>;
|
|
186
212
|
|
|
187
|
-
export { type AutterSourceMapsOptions as A, BUNDLE_RE as B, DEFAULT_ENDPOINT as D, FatalUploadError as F, type InjectOptions as I,
|
|
213
|
+
export { type AutterSourceMapsOptions as A, BUNDLE_RE as B, CLIENT_KEY_PREFIX as C, DEFAULT_ENDPOINT as D, FatalUploadError as F, type InjectOptions as I, KEY_ADVICE as K, MAX_MAP_CHARS as M, SERVER_KEY_PREFIX as S, UPLOAD_KEY_PREFIX as U, type BuildOutputResult as a, type BundleWithMap as b, type InjectResult as c, MAX_UPLOAD_BYTES as d, SNIPPET_LINE_KEY as e, type UploadItem as f, type UploadOptions as g, type UploadSummary as h, findBundles as i, formatUploadSummary as j, injectBundle as k, injectDir as l, mapPathFor as m, resolveEndpoint as n, shiftMappings as o, processBuildOutput as p, snippetLine as q, readSourceMappingUrl as r, servedFilename as s, storedMapJson as t, stripSourceMappingUrl as u, uploadDir as v };
|
|
@@ -69,8 +69,17 @@ declare function injectBundle(bundle: BundleWithMap, options?: InjectOptions): P
|
|
|
69
69
|
declare function injectDir(dir: string, options?: InjectOptions): Promise<InjectResult[]>;
|
|
70
70
|
|
|
71
71
|
declare const DEFAULT_ENDPOINT = "https://otlp.autter.dev";
|
|
72
|
-
/**
|
|
72
|
+
/** Largest map the ingester stores: characters of JSON without
|
|
73
|
+
* `sourcesContent` (otlp-ingester's SOURCE_MAP_MAX_CHARS). */
|
|
74
|
+
declare const MAX_MAP_CHARS: number;
|
|
75
|
+
/** The ingester's `/v1/sourcemaps` body limit, counted after the gzip body
|
|
76
|
+
* is inflated: the map plus room for the rest of the request. */
|
|
73
77
|
declare const MAX_UPLOAD_BYTES: number;
|
|
78
|
+
/** Keys `upload` accepts, and the one it refuses before sending anything. */
|
|
79
|
+
declare const UPLOAD_KEY_PREFIX = "autter_rtu_";
|
|
80
|
+
declare const SERVER_KEY_PREFIX = "autter_rt_";
|
|
81
|
+
declare const CLIENT_KEY_PREFIX = "autter_rtc_";
|
|
82
|
+
declare const KEY_ADVICE: string;
|
|
74
83
|
interface UploadOptions {
|
|
75
84
|
/** Only these bundles (absolute, or relative to the directory). */
|
|
76
85
|
files?: string[];
|
|
@@ -82,7 +91,8 @@ interface UploadOptions {
|
|
|
82
91
|
/** Ingester base URL. Default: $AUTTER_ENDPOINT, $AUTTER_RUNTIME_ENDPOINT,
|
|
83
92
|
* $OTEL_EXPORTER_OTLP_ENDPOINT, else https://otlp.autter.dev. */
|
|
84
93
|
endpoint?: string;
|
|
85
|
-
/**
|
|
94
|
+
/** Upload key (`autter_rtu_…`, recommended for CI) or server key
|
|
95
|
+
* (`autter_rt_…`). Default: $AUTTER_RUNTIME_KEY. */
|
|
86
96
|
key?: string;
|
|
87
97
|
/** List what would be uploaded; no network, no key needed. */
|
|
88
98
|
dryRun?: boolean;
|
|
@@ -145,13 +155,18 @@ interface AutterSourceMapsOptions {
|
|
|
145
155
|
/** Ingester base URL. Default: $AUTTER_ENDPOINT, $AUTTER_RUNTIME_ENDPOINT,
|
|
146
156
|
* $OTEL_EXPORTER_OTLP_ENDPOINT, else https://otlp.autter.dev. */
|
|
147
157
|
endpoint?: string;
|
|
148
|
-
/**
|
|
149
|
-
*
|
|
158
|
+
/** Upload-only key (`autter_rtu_…`, recommended for CI) or server key
|
|
159
|
+
* (`autter_rt_…`). Default: $AUTTER_RUNTIME_KEY. Without one (and
|
|
160
|
+
* without `upload: false` or `dryRun`), the plugin generates no source
|
|
161
|
+
* maps it would have to delete again: the build is left as it was. */
|
|
150
162
|
key?: string;
|
|
151
|
-
/** Set false to inject debug ids only (upload later with the CLI).
|
|
163
|
+
/** Set false to inject debug ids only (upload later with the CLI). Maps
|
|
164
|
+
* the plugin generated are then kept for that upload: don't deploy them. */
|
|
152
165
|
upload?: boolean;
|
|
153
|
-
/**
|
|
154
|
-
*
|
|
166
|
+
/** Maps the plugin generated itself are always deleted after the upload
|
|
167
|
+
* step, uploaded or not, so they are never deployed; set false to keep
|
|
168
|
+
* them (you must then keep them out of the deploy). Maps you configured
|
|
169
|
+
* yourself are deleted only when this is true, and only once uploaded. */
|
|
155
170
|
deleteAfterUpload?: boolean;
|
|
156
171
|
/** Log what would be uploaded without sending anything. */
|
|
157
172
|
dryRun?: boolean;
|
|
@@ -166,13 +181,19 @@ interface AutterSourceMapsOptions {
|
|
|
166
181
|
interface BuildOutputResult {
|
|
167
182
|
injected: InjectResult[];
|
|
168
183
|
upload: UploadSummary | null;
|
|
184
|
+
/** Maps the plugin generated and deleted (paths relative to the directory). */
|
|
185
|
+
removedMaps: string[];
|
|
169
186
|
}
|
|
170
187
|
/** Human-readable lines for an upload summary (CLI and plugins). */
|
|
171
188
|
declare function formatUploadSummary(summary: UploadSummary): string[];
|
|
172
189
|
/**
|
|
173
190
|
* What every bundler integration does after a build: inject debug ids into
|
|
174
191
|
* the emitted bundles, then upload their maps when a key is present.
|
|
175
|
-
* Failures are logged, and thrown only with `failOnError`.
|
|
192
|
+
* Failures are logged, and thrown only with `failOnError`. When the
|
|
193
|
+
* integration turned source maps on itself (`ownMaps`), every map it made
|
|
194
|
+
* is deleted afterwards whatever happened to the upload (no key, a failed
|
|
195
|
+
* or partial upload, an unreachable ingester, a dry run), with the
|
|
196
|
+
* sourceMappingURL comments that name them, so none is deployed.
|
|
176
197
|
*/
|
|
177
198
|
declare function processBuildOutput(input: {
|
|
178
199
|
dir: string;
|
|
@@ -182,6 +203,11 @@ declare function processBuildOutput(input: {
|
|
|
182
203
|
/** Default for `deleteAfterUpload` (true when the plugin enabled maps). */
|
|
183
204
|
deleteAfterUpload: boolean;
|
|
184
205
|
stripSourceMappingUrl?: boolean;
|
|
206
|
+
/** The integration turned source maps on itself: none may be deployed. */
|
|
207
|
+
ownMaps?: boolean;
|
|
208
|
+
/** Map files the build emitted (absolute), when the bundler lists them;
|
|
209
|
+
* the maps of `files` (or of every bundle under `dir`) are added. */
|
|
210
|
+
maps?: string[];
|
|
185
211
|
}): Promise<BuildOutputResult>;
|
|
186
212
|
|
|
187
|
-
export { type AutterSourceMapsOptions as A, BUNDLE_RE as B, DEFAULT_ENDPOINT as D, FatalUploadError as F, type InjectOptions as I,
|
|
213
|
+
export { type AutterSourceMapsOptions as A, BUNDLE_RE as B, CLIENT_KEY_PREFIX as C, DEFAULT_ENDPOINT as D, FatalUploadError as F, type InjectOptions as I, KEY_ADVICE as K, MAX_MAP_CHARS as M, SERVER_KEY_PREFIX as S, UPLOAD_KEY_PREFIX as U, type BuildOutputResult as a, type BundleWithMap as b, type InjectResult as c, MAX_UPLOAD_BYTES as d, SNIPPET_LINE_KEY as e, type UploadItem as f, type UploadOptions as g, type UploadSummary as h, findBundles as i, formatUploadSummary as j, injectBundle as k, injectDir as l, mapPathFor as m, resolveEndpoint as n, shiftMappings as o, processBuildOutput as p, snippetLine as q, readSourceMappingUrl as r, servedFilename as s, storedMapJson as t, stripSourceMappingUrl as u, uploadDir as v };
|