@workflow/cli 5.0.0-beta.47 → 5.0.0-beta.48

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.
Files changed (49) hide show
  1. package/dist/commands/cancel.d.ts +10 -1
  2. package/dist/commands/cancel.d.ts.map +1 -1
  3. package/dist/commands/cancel.js +20 -7
  4. package/dist/commands/inspect-flag-forwarding.test.d.ts +2 -0
  5. package/dist/commands/inspect-flag-forwarding.test.d.ts.map +1 -0
  6. package/dist/commands/inspect-flag-forwarding.test.js +121 -0
  7. package/dist/commands/inspect-flag-scope.test.d.ts +2 -0
  8. package/dist/commands/inspect-flag-scope.test.d.ts.map +1 -0
  9. package/dist/commands/inspect-flag-scope.test.js +161 -0
  10. package/dist/commands/inspect.d.ts +13 -1
  11. package/dist/commands/inspect.d.ts.map +1 -1
  12. package/dist/commands/inspect.js +70 -10
  13. package/dist/commands/start.d.ts +1 -1
  14. package/dist/commands/web.d.ts +1 -1
  15. package/dist/lib/bulk-cancel.d.ts +15 -2
  16. package/dist/lib/bulk-cancel.d.ts.map +1 -1
  17. package/dist/lib/bulk-cancel.js +49 -18
  18. package/dist/lib/bulk-cancel.test.js +80 -8
  19. package/dist/lib/config/types.d.ts +6 -1
  20. package/dist/lib/config/types.d.ts.map +1 -1
  21. package/dist/lib/config/types.js +1 -1
  22. package/dist/lib/inspect/attribute-filter.d.ts +15 -0
  23. package/dist/lib/inspect/attribute-filter.d.ts.map +1 -0
  24. package/dist/lib/inspect/attribute-filter.js +51 -0
  25. package/dist/lib/inspect/attribute-filter.test.d.ts +2 -0
  26. package/dist/lib/inspect/attribute-filter.test.d.ts.map +1 -0
  27. package/dist/lib/inspect/attribute-filter.test.js +65 -0
  28. package/dist/lib/inspect/errors.d.ts +28 -0
  29. package/dist/lib/inspect/errors.d.ts.map +1 -1
  30. package/dist/lib/inspect/errors.js +59 -1
  31. package/dist/lib/inspect/errors.test.d.ts +2 -0
  32. package/dist/lib/inspect/errors.test.d.ts.map +1 -0
  33. package/dist/lib/inspect/errors.test.js +48 -0
  34. package/dist/lib/inspect/flag-bounds.d.ts +57 -0
  35. package/dist/lib/inspect/flag-bounds.d.ts.map +1 -0
  36. package/dist/lib/inspect/flag-bounds.js +112 -0
  37. package/dist/lib/inspect/flag-bounds.test.d.ts +2 -0
  38. package/dist/lib/inspect/flag-bounds.test.d.ts.map +1 -0
  39. package/dist/lib/inspect/flag-bounds.test.js +126 -0
  40. package/dist/lib/inspect/flags.d.ts +1 -1
  41. package/dist/lib/inspect/flags.d.ts.map +1 -1
  42. package/dist/lib/inspect/flags.js +5 -2
  43. package/dist/lib/inspect/hydration.d.ts.map +1 -1
  44. package/dist/lib/inspect/hydration.js +2 -1
  45. package/dist/lib/inspect/output.d.ts +10 -0
  46. package/dist/lib/inspect/output.d.ts.map +1 -1
  47. package/dist/lib/inspect/output.js +138 -24
  48. package/dist/lib/inspect/output.test.js +223 -2
  49. package/package.json +13 -13
@@ -0,0 +1,48 @@
1
+ import { afterEach, describe, expect, it, vi } from 'vitest';
2
+ import { logger } from '../config/log.js';
3
+ import { reportActionableApiError } from './errors.js';
4
+ const logged = () => vi.spyOn(logger, 'error').mockImplementation(() => undefined);
5
+ afterEach(() => {
6
+ vi.restoreAllMocks();
7
+ });
8
+ // The set three call sites depend on: handleApiError composes it, listSleeps
9
+ // uses it to decide what not to degrade past, and cancel has no fallback at
10
+ // all. A class dropped from here goes silent in all three.
11
+ describe('reportActionableApiError', () => {
12
+ it('reports an argument the World rejected locally', () => {
13
+ const error = Object.assign(new Error('runs.list: pagination.limit must be an integer between 1 and 100 (received 500)'), { code: 'INVALID_ARGUMENT', field: 'pagination.limit' });
14
+ const error_ = logged();
15
+ expect(reportActionableApiError(error)).toBe(true);
16
+ expect(error_.mock.calls.flat().join(' ')).toContain('between 1 and 100');
17
+ });
18
+ it('reports the plan gate with its upgrade message', () => {
19
+ const error = { status: 402, code: 'observability-upgrade-required' };
20
+ const error_ = logged();
21
+ expect(reportActionableApiError(error)).toBe(true);
22
+ expect(error_.mock.calls.flat().join(' ')).toContain('Observability Plus');
23
+ });
24
+ // Only meaningful against the Vercel backend, which is the one that answers
25
+ // 403 for a project the token cannot read.
26
+ it('reports a Vercel 403 only when that is the backend', () => {
27
+ const error = { status: 403 };
28
+ const error_ = logged();
29
+ expect(reportActionableApiError(error, 'vercel')).toBe(true);
30
+ expect(error_).toHaveBeenCalled();
31
+ error_.mockClear();
32
+ expect(reportActionableApiError(error, 'local')).toBe(false);
33
+ expect(error_).not.toHaveBeenCalled();
34
+ });
35
+ // Availability failures are what listSleeps degrades on, so they must not
36
+ // be claimed here.
37
+ it.each([
38
+ ['a transport failure', new Error('fetch failed')],
39
+ ['a server error', { status: 503 }],
40
+ ['a plain 400', { status: 400 }],
41
+ ['a non-object', 'nope'],
42
+ ])('leaves %s to the caller', (_label, error) => {
43
+ const error_ = logged();
44
+ expect(reportActionableApiError(error)).toBe(false);
45
+ expect(error_).not.toHaveBeenCalled();
46
+ });
47
+ });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luc3BlY3QvZXJyb3JzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV2RCxNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FDbEIsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFaEUsU0FBUyxDQUFDLEdBQUcsRUFBRTtJQUNiLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQztBQUVILDZFQUE2RTtBQUM3RSw0RUFBNEU7QUFDNUUsMkRBQTJEO0FBQzNELFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUU7SUFDeEMsRUFBRSxDQUFDLGdEQUFnRCxFQUFFLEdBQUcsRUFBRTtRQUN4RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUN6QixJQUFJLEtBQUssQ0FDUCxpRkFBaUYsQ0FDbEYsRUFDRCxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsQ0FDeEQsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBRXhCLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDNUUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsZ0RBQWdELEVBQUUsR0FBRyxFQUFFO1FBQ3hELE1BQU0sS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsZ0NBQWdDLEVBQUUsQ0FBQztRQUN0RSxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUV4QixNQUFNLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzdFLENBQUMsQ0FBQyxDQUFDO0lBRUgsNEVBQTRFO0lBQzVFLDJDQUEyQztJQUMzQyxFQUFFLENBQUMsb0RBQW9ELEVBQUUsR0FBRyxFQUFFO1FBQzVELE1BQU0sS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQzlCLE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBRXhCLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFbEMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBRUgsMEVBQTBFO0lBQzFFLG1CQUFtQjtJQUNuQixFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ04sQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNsRCxDQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ25DLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQztLQUN6QixDQUFDLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDOUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDeEIsTUFBTSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWZ0ZXJFYWNoLCBkZXNjcmliZSwgZXhwZWN0LCBpdCwgdmkgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vY29uZmlnL2xvZy5qcyc7XG5pbXBvcnQgeyByZXBvcnRBY3Rpb25hYmxlQXBpRXJyb3IgfSBmcm9tICcuL2Vycm9ycy5qcyc7XG5cbmNvbnN0IGxvZ2dlZCA9ICgpID0+XG4gIHZpLnNweU9uKGxvZ2dlciwgJ2Vycm9yJykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHVuZGVmaW5lZCk7XG5cbmFmdGVyRWFjaCgoKSA9PiB7XG4gIHZpLnJlc3RvcmVBbGxNb2NrcygpO1xufSk7XG5cbi8vIFRoZSBzZXQgdGhyZWUgY2FsbCBzaXRlcyBkZXBlbmQgb246IGhhbmRsZUFwaUVycm9yIGNvbXBvc2VzIGl0LCBsaXN0U2xlZXBzXG4vLyB1c2VzIGl0IHRvIGRlY2lkZSB3aGF0IG5vdCB0byBkZWdyYWRlIHBhc3QsIGFuZCBjYW5jZWwgaGFzIG5vIGZhbGxiYWNrIGF0XG4vLyBhbGwuIEEgY2xhc3MgZHJvcHBlZCBmcm9tIGhlcmUgZ29lcyBzaWxlbnQgaW4gYWxsIHRocmVlLlxuZGVzY3JpYmUoJ3JlcG9ydEFjdGlvbmFibGVBcGlFcnJvcicsICgpID0+IHtcbiAgaXQoJ3JlcG9ydHMgYW4gYXJndW1lbnQgdGhlIFdvcmxkIHJlamVjdGVkIGxvY2FsbHknLCAoKSA9PiB7XG4gICAgY29uc3QgZXJyb3IgPSBPYmplY3QuYXNzaWduKFxuICAgICAgbmV3IEVycm9yKFxuICAgICAgICAncnVucy5saXN0OiBwYWdpbmF0aW9uLmxpbWl0IG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDEwMCAocmVjZWl2ZWQgNTAwKSdcbiAgICAgICksXG4gICAgICB7IGNvZGU6ICdJTlZBTElEX0FSR1VNRU5UJywgZmllbGQ6ICdwYWdpbmF0aW9uLmxpbWl0JyB9XG4gICAgKTtcbiAgICBjb25zdCBlcnJvcl8gPSBsb2dnZWQoKTtcblxuICAgIGV4cGVjdChyZXBvcnRBY3Rpb25hYmxlQXBpRXJyb3IoZXJyb3IpKS50b0JlKHRydWUpO1xuICAgIGV4cGVjdChlcnJvcl8ubW9jay5jYWxscy5mbGF0KCkuam9pbignICcpKS50b0NvbnRhaW4oJ2JldHdlZW4gMSBhbmQgMTAwJyk7XG4gIH0pO1xuXG4gIGl0KCdyZXBvcnRzIHRoZSBwbGFuIGdhdGUgd2l0aCBpdHMgdXBncmFkZSBtZXNzYWdlJywgKCkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0geyBzdGF0dXM6IDQwMiwgY29kZTogJ29ic2VydmFiaWxpdHktdXBncmFkZS1yZXF1aXJlZCcgfTtcbiAgICBjb25zdCBlcnJvcl8gPSBsb2dnZWQoKTtcblxuICAgIGV4cGVjdChyZXBvcnRBY3Rpb25hYmxlQXBpRXJyb3IoZXJyb3IpKS50b0JlKHRydWUpO1xuICAgIGV4cGVjdChlcnJvcl8ubW9jay5jYWxscy5mbGF0KCkuam9pbignICcpKS50b0NvbnRhaW4oJ09ic2VydmFiaWxpdHkgUGx1cycpO1xuICB9KTtcblxuICAvLyBPbmx5IG1lYW5pbmdmdWwgYWdhaW5zdCB0aGUgVmVyY2VsIGJhY2tlbmQsIHdoaWNoIGlzIHRoZSBvbmUgdGhhdCBhbnN3ZXJzXG4gIC8vIDQwMyBmb3IgYSBwcm9qZWN0IHRoZSB0b2tlbiBjYW5ub3QgcmVhZC5cbiAgaXQoJ3JlcG9ydHMgYSBWZXJjZWwgNDAzIG9ubHkgd2hlbiB0aGF0IGlzIHRoZSBiYWNrZW5kJywgKCkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0geyBzdGF0dXM6IDQwMyB9O1xuICAgIGNvbnN0IGVycm9yXyA9IGxvZ2dlZCgpO1xuXG4gICAgZXhwZWN0KHJlcG9ydEFjdGlvbmFibGVBcGlFcnJvcihlcnJvciwgJ3ZlcmNlbCcpKS50b0JlKHRydWUpO1xuICAgIGV4cGVjdChlcnJvcl8pLnRvSGF2ZUJlZW5DYWxsZWQoKTtcblxuICAgIGVycm9yXy5tb2NrQ2xlYXIoKTtcbiAgICBleHBlY3QocmVwb3J0QWN0aW9uYWJsZUFwaUVycm9yKGVycm9yLCAnbG9jYWwnKSkudG9CZShmYWxzZSk7XG4gICAgZXhwZWN0KGVycm9yXykubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgfSk7XG5cbiAgLy8gQXZhaWxhYmlsaXR5IGZhaWx1cmVzIGFyZSB3aGF0IGxpc3RTbGVlcHMgZGVncmFkZXMgb24sIHNvIHRoZXkgbXVzdCBub3RcbiAgLy8gYmUgY2xhaW1lZCBoZXJlLlxuICBpdC5lYWNoKFtcbiAgICBbJ2EgdHJhbnNwb3J0IGZhaWx1cmUnLCBuZXcgRXJyb3IoJ2ZldGNoIGZhaWxlZCcpXSxcbiAgICBbJ2Egc2VydmVyIGVycm9yJywgeyBzdGF0dXM6IDUwMyB9XSxcbiAgICBbJ2EgcGxhaW4gNDAwJywgeyBzdGF0dXM6IDQwMCB9XSxcbiAgICBbJ2Egbm9uLW9iamVjdCcsICdub3BlJ10sXG4gIF0pKCdsZWF2ZXMgJXMgdG8gdGhlIGNhbGxlcicsIChfbGFiZWwsIGVycm9yKSA9PiB7XG4gICAgY29uc3QgZXJyb3JfID0gbG9nZ2VkKCk7XG4gICAgZXhwZWN0KHJlcG9ydEFjdGlvbmFibGVBcGlFcnJvcihlcnJvcikpLnRvQmUoZmFsc2UpO1xuICAgIGV4cGVjdChlcnJvcl8pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Validate `--limit`. Returns an error message, or `undefined` when the value
3
+ * is an integer within [1, {@link MAX_LIMIT}].
4
+ */
5
+ export declare function validateInspectLimit(limit: number): string | undefined;
6
+ /**
7
+ * Validate `--runId`. Returns an error message, or `undefined` when the value
8
+ * is a well-formed run id.
9
+ *
10
+ * Checked here so a mistyped id names the flag and costs no round trip.
11
+ * `@workflow/world-vercel` validates the same shape and remains the
12
+ * authority.
13
+ */
14
+ export declare function validateInspectRunId(runId: string): string | undefined;
15
+ /**
16
+ * Validate that `--attribute` was given to a listing that consumes it.
17
+ *
18
+ * Only the runs listing filters by attributes. Every other resource parses
19
+ * the flag and ignores it, which is the silent drop these bounds exist to
20
+ * prevent — the flag is cheap to type onto the wrong subcommand and the
21
+ * result looks like a successful, unfiltered answer.
22
+ *
23
+ * `resource` is the normalized resource and `hasId` marks a single-item
24
+ * lookup, which reads one run directly and has nothing to filter.
25
+ * `opensWebUi` marks `--url`/`--web`, which hand the request to the
26
+ * dashboard rather than filtering here. `withData` marks the payload-
27
+ * resolving path, which reads from storage and has no attribute index.
28
+ */
29
+ export declare function validateAttributeScope(resource: string, hasId: boolean, hasAttribute: boolean, opensWebUi?: boolean, withData?: boolean): string | undefined;
30
+ /** Flags {@link validateInspectFlags} checks, as `inspect` parsed them. */
31
+ export interface InspectFlagBounds {
32
+ /** Normalized resource, e.g. `run`, `steps` → `step`. */
33
+ resource: string;
34
+ /** True when the invocation names a single item (`inspect run <id>`). */
35
+ hasId: boolean;
36
+ limit?: number;
37
+ runId?: string;
38
+ /** Raw repeated `--attribute key=value` values. */
39
+ attribute?: string[];
40
+ /** True for `--url`, `--web`, or the `web` resource. */
41
+ opensWebUi: boolean;
42
+ withData?: boolean;
43
+ }
44
+ /**
45
+ * Check every bounded `inspect` flag and parse `--attribute`, returning
46
+ * either the first error to report or the parsed filters to pass on.
47
+ *
48
+ * One call, made before any backend setup: a mistyped flag should name
49
+ * itself rather than surface as a rejected argument from the read path, or —
50
+ * worse — be dropped and answered with a plausible unfiltered table.
51
+ */
52
+ export declare function validateInspectFlags(flags: InspectFlagBounds): {
53
+ error: string;
54
+ } | {
55
+ attributes: Record<string, string> | undefined;
56
+ };
57
+ //# sourceMappingURL=flag-bounds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flag-bounds.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/flag-bounds.ts"],"names":[],"mappings":"AA0BA;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKtE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKtE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,OAAO,EACrB,UAAU,UAAQ,EAClB,QAAQ,UAAQ,GACf,MAAM,GAAG,SAAS,CAsBpB;AAED,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,wDAAwD;IACxD,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,iBAAiB,GACvB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;CAAE,CAyBxE"}
@@ -0,0 +1,112 @@
1
+ import { parseAttributeFilters } from './attribute-filter.js';
2
+ /**
3
+ * Upper bound on `--limit`.
4
+ *
5
+ * 100 is the smallest cap any listing this flag reaches will accept: the
6
+ * cross-run analytics listings cap there, and so does the storage step
7
+ * listing that a run-scoped read falls back to. Allowing more meant
8
+ * `--limit 500` succeeded on some resources and failed on others — and on
9
+ * the same resource it depended on whether analytics had rows for that run.
10
+ *
11
+ * The failure was not uniform either. The cross-run listings reject it
12
+ * locally with a message naming the parameter; the run-scoped ones accept up
13
+ * to 1000 and then hit a storage fallback that caps at 100, so the same flag
14
+ * produced a clear error on one resource and an opaque backend 400 on
15
+ * another.
16
+ *
17
+ * Larger pages are still reachable by paging: the listings follow cursors,
18
+ * and `--interactive` walks them.
19
+ */
20
+ const MAX_LIMIT = 100;
21
+ /** `wrun_` plus a 26-character Crockford-Base32 ULID. */
22
+ const RUN_ID_PATTERN = /^wrun_[01234567][0123456789ABCDEFGHJKMNPQRSTVWXYZ]{25}$/;
23
+ /**
24
+ * Validate `--limit`. Returns an error message, or `undefined` when the value
25
+ * is an integer within [1, {@link MAX_LIMIT}].
26
+ */
27
+ export function validateInspectLimit(limit) {
28
+ if (!Number.isInteger(limit) || limit < 1 || limit > MAX_LIMIT) {
29
+ return `--limit must be an integer between 1 and ${MAX_LIMIT}.`;
30
+ }
31
+ return undefined;
32
+ }
33
+ /**
34
+ * Validate `--runId`. Returns an error message, or `undefined` when the value
35
+ * is a well-formed run id.
36
+ *
37
+ * Checked here so a mistyped id names the flag and costs no round trip.
38
+ * `@workflow/world-vercel` validates the same shape and remains the
39
+ * authority.
40
+ */
41
+ export function validateInspectRunId(runId) {
42
+ if (!RUN_ID_PATTERN.test(runId)) {
43
+ return `--runId must be a run id: 'wrun_' followed by a 26-character ULID. Received ${JSON.stringify(runId)}.`;
44
+ }
45
+ return undefined;
46
+ }
47
+ /**
48
+ * Validate that `--attribute` was given to a listing that consumes it.
49
+ *
50
+ * Only the runs listing filters by attributes. Every other resource parses
51
+ * the flag and ignores it, which is the silent drop these bounds exist to
52
+ * prevent — the flag is cheap to type onto the wrong subcommand and the
53
+ * result looks like a successful, unfiltered answer.
54
+ *
55
+ * `resource` is the normalized resource and `hasId` marks a single-item
56
+ * lookup, which reads one run directly and has nothing to filter.
57
+ * `opensWebUi` marks `--url`/`--web`, which hand the request to the
58
+ * dashboard rather than filtering here. `withData` marks the payload-
59
+ * resolving path, which reads from storage and has no attribute index.
60
+ */
61
+ export function validateAttributeScope(resource, hasId, hasAttribute, opensWebUi = false, withData = false) {
62
+ if (!hasAttribute)
63
+ return undefined;
64
+ // --withData reads payloads, which only storage carries, and storage has
65
+ // no attribute index. Warning and returning every row was the failure this
66
+ // guard exists to prevent, and unlike a backend without analytics it is a
67
+ // conflict between two flags the caller passed.
68
+ if (withData) {
69
+ return '--attribute cannot be combined with --withData, which reads payloads from storage; drop one.';
70
+ }
71
+ // --url and --web hand off to the dashboard, which takes no attribute
72
+ // filter, and both return before the filter is parsed — so the flag was
73
+ // accepted, never validated, and the view opened unfiltered.
74
+ if (opensWebUi) {
75
+ return '--attribute cannot be forwarded to the web UI; drop it, or drop --url/--web to filter here.';
76
+ }
77
+ if (resource === 'run' && hasId) {
78
+ return '--attribute filters run listings; `inspect run <id>` already names one run. Drop the flag or the ID.';
79
+ }
80
+ if (resource !== 'run') {
81
+ return `--attribute filters run listings only, not ${resource}. Use \`workflow inspect runs --attribute key=value\`.`;
82
+ }
83
+ return undefined;
84
+ }
85
+ /**
86
+ * Check every bounded `inspect` flag and parse `--attribute`, returning
87
+ * either the first error to report or the parsed filters to pass on.
88
+ *
89
+ * One call, made before any backend setup: a mistyped flag should name
90
+ * itself rather than surface as a rejected argument from the read path, or —
91
+ * worse — be dropped and answered with a plausible unfiltered table.
92
+ */
93
+ export function validateInspectFlags(flags) {
94
+ const error = (flags.limit !== undefined
95
+ ? validateInspectLimit(flags.limit)
96
+ : undefined) ??
97
+ (flags.runId !== undefined
98
+ ? validateInspectRunId(flags.runId)
99
+ : undefined) ??
100
+ validateAttributeScope(flags.resource, flags.hasId, Boolean(flags.attribute?.length), flags.opensWebUi, Boolean(flags.withData));
101
+ if (error)
102
+ return { error };
103
+ try {
104
+ return { attributes: parseAttributeFilters(flags.attribute) };
105
+ }
106
+ catch (parseError) {
107
+ return {
108
+ error: parseError instanceof Error ? parseError.message : String(parseError),
109
+ };
110
+ }
111
+ }
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZy1ib3VuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luc3BlY3QvZmxhZy1ib3VuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFOUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDO0FBRXRCLHlEQUF5RDtBQUN6RCxNQUFNLGNBQWMsR0FDbEIseURBQXlELENBQUM7QUFFNUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEtBQWE7SUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFDL0QsT0FBTyw0Q0FBNEMsU0FBUyxHQUFHLENBQUM7SUFDbEUsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEtBQWE7SUFDaEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoQyxPQUFPLCtFQUErRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFDakgsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxRQUFnQixFQUNoQixLQUFjLEVBQ2QsWUFBcUIsRUFDckIsVUFBVSxHQUFHLEtBQUssRUFDbEIsUUFBUSxHQUFHLEtBQUs7SUFFaEIsSUFBSSxDQUFDLFlBQVk7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNwQyx5RUFBeUU7SUFDekUsMkVBQTJFO0lBQzNFLDBFQUEwRTtJQUMxRSxnREFBZ0Q7SUFDaEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLE9BQU8sOEZBQThGLENBQUM7SUFDeEcsQ0FBQztJQUNELHNFQUFzRTtJQUN0RSx3RUFBd0U7SUFDeEUsNkRBQTZEO0lBQzdELElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixPQUFPLDZGQUE2RixDQUFDO0lBQ3ZHLENBQUM7SUFDRCxJQUFJLFFBQVEsS0FBSyxLQUFLLElBQUksS0FBSyxFQUFFLENBQUM7UUFDaEMsT0FBTyxzR0FBc0csQ0FBQztJQUNoSCxDQUFDO0lBQ0QsSUFBSSxRQUFRLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDdkIsT0FBTyw4Q0FBOEMsUUFBUSx3REFBd0QsQ0FBQztJQUN4SCxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQWlCRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxLQUF3QjtJQUV4QixNQUFNLEtBQUssR0FDVCxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUztRQUN4QixDQUFDLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNuQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2QsQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVM7WUFDeEIsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDbkMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLHNCQUFzQixDQUNwQixLQUFLLENBQUMsUUFBUSxFQUNkLEtBQUssQ0FBQyxLQUFLLEVBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLEVBQ2hDLEtBQUssQ0FBQyxVQUFVLEVBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQ3hCLENBQUM7SUFDSixJQUFJLEtBQUs7UUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFFNUIsSUFBSSxDQUFDO1FBQ0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUNoRSxDQUFDO0lBQUMsT0FBTyxVQUFVLEVBQUUsQ0FBQztRQUNwQixPQUFPO1lBQ0wsS0FBSyxFQUNILFVBQVUsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7U0FDeEUsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFyc2VBdHRyaWJ1dGVGaWx0ZXJzIH0gZnJvbSAnLi9hdHRyaWJ1dGUtZmlsdGVyLmpzJztcblxuLyoqXG4gKiBVcHBlciBib3VuZCBvbiBgLS1saW1pdGAuXG4gKlxuICogMTAwIGlzIHRoZSBzbWFsbGVzdCBjYXAgYW55IGxpc3RpbmcgdGhpcyBmbGFnIHJlYWNoZXMgd2lsbCBhY2NlcHQ6IHRoZVxuICogY3Jvc3MtcnVuIGFuYWx5dGljcyBsaXN0aW5ncyBjYXAgdGhlcmUsIGFuZCBzbyBkb2VzIHRoZSBzdG9yYWdlIHN0ZXBcbiAqIGxpc3RpbmcgdGhhdCBhIHJ1bi1zY29wZWQgcmVhZCBmYWxscyBiYWNrIHRvLiBBbGxvd2luZyBtb3JlIG1lYW50XG4gKiBgLS1saW1pdCA1MDBgIHN1Y2NlZWRlZCBvbiBzb21lIHJlc291cmNlcyBhbmQgZmFpbGVkIG9uIG90aGVycyDigJQgYW5kIG9uXG4gKiB0aGUgc2FtZSByZXNvdXJjZSBpdCBkZXBlbmRlZCBvbiB3aGV0aGVyIGFuYWx5dGljcyBoYWQgcm93cyBmb3IgdGhhdCBydW4uXG4gKlxuICogVGhlIGZhaWx1cmUgd2FzIG5vdCB1bmlmb3JtIGVpdGhlci4gVGhlIGNyb3NzLXJ1biBsaXN0aW5ncyByZWplY3QgaXRcbiAqIGxvY2FsbHkgd2l0aCBhIG1lc3NhZ2UgbmFtaW5nIHRoZSBwYXJhbWV0ZXI7IHRoZSBydW4tc2NvcGVkIG9uZXMgYWNjZXB0IHVwXG4gKiB0byAxMDAwIGFuZCB0aGVuIGhpdCBhIHN0b3JhZ2UgZmFsbGJhY2sgdGhhdCBjYXBzIGF0IDEwMCwgc28gdGhlIHNhbWUgZmxhZ1xuICogcHJvZHVjZWQgYSBjbGVhciBlcnJvciBvbiBvbmUgcmVzb3VyY2UgYW5kIGFuIG9wYXF1ZSBiYWNrZW5kIDQwMCBvblxuICogYW5vdGhlci5cbiAqXG4gKiBMYXJnZXIgcGFnZXMgYXJlIHN0aWxsIHJlYWNoYWJsZSBieSBwYWdpbmc6IHRoZSBsaXN0aW5ncyBmb2xsb3cgY3Vyc29ycyxcbiAqIGFuZCBgLS1pbnRlcmFjdGl2ZWAgd2Fsa3MgdGhlbS5cbiAqL1xuY29uc3QgTUFYX0xJTUlUID0gMTAwO1xuXG4vKiogYHdydW5fYCBwbHVzIGEgMjYtY2hhcmFjdGVyIENyb2NrZm9yZC1CYXNlMzIgVUxJRC4gKi9cbmNvbnN0IFJVTl9JRF9QQVRURVJOID1cbiAgL153cnVuX1swMTIzNDU2N11bMDEyMzQ1Njc4OUFCQ0RFRkdISktNTlBRUlNUVldYWVpdezI1fSQvO1xuXG4vKipcbiAqIFZhbGlkYXRlIGAtLWxpbWl0YC4gUmV0dXJucyBhbiBlcnJvciBtZXNzYWdlLCBvciBgdW5kZWZpbmVkYCB3aGVuIHRoZSB2YWx1ZVxuICogaXMgYW4gaW50ZWdlciB3aXRoaW4gWzEsIHtAbGluayBNQVhfTElNSVR9XS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlSW5zcGVjdExpbWl0KGxpbWl0OiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIU51bWJlci5pc0ludGVnZXIobGltaXQpIHx8IGxpbWl0IDwgMSB8fCBsaW1pdCA+IE1BWF9MSU1JVCkge1xuICAgIHJldHVybiBgLS1saW1pdCBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAke01BWF9MSU1JVH0uYDtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIGAtLXJ1bklkYC4gUmV0dXJucyBhbiBlcnJvciBtZXNzYWdlLCBvciBgdW5kZWZpbmVkYCB3aGVuIHRoZSB2YWx1ZVxuICogaXMgYSB3ZWxsLWZvcm1lZCBydW4gaWQuXG4gKlxuICogQ2hlY2tlZCBoZXJlIHNvIGEgbWlzdHlwZWQgaWQgbmFtZXMgdGhlIGZsYWcgYW5kIGNvc3RzIG5vIHJvdW5kIHRyaXAuXG4gKiBgQHdvcmtmbG93L3dvcmxkLXZlcmNlbGAgdmFsaWRhdGVzIHRoZSBzYW1lIHNoYXBlIGFuZCByZW1haW5zIHRoZVxuICogYXV0aG9yaXR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVJbnNwZWN0UnVuSWQocnVuSWQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghUlVOX0lEX1BBVFRFUk4udGVzdChydW5JZCkpIHtcbiAgICByZXR1cm4gYC0tcnVuSWQgbXVzdCBiZSBhIHJ1biBpZDogJ3dydW5fJyBmb2xsb3dlZCBieSBhIDI2LWNoYXJhY3RlciBVTElELiBSZWNlaXZlZCAke0pTT04uc3RyaW5naWZ5KHJ1bklkKX0uYDtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHRoYXQgYC0tYXR0cmlidXRlYCB3YXMgZ2l2ZW4gdG8gYSBsaXN0aW5nIHRoYXQgY29uc3VtZXMgaXQuXG4gKlxuICogT25seSB0aGUgcnVucyBsaXN0aW5nIGZpbHRlcnMgYnkgYXR0cmlidXRlcy4gRXZlcnkgb3RoZXIgcmVzb3VyY2UgcGFyc2VzXG4gKiB0aGUgZmxhZyBhbmQgaWdub3JlcyBpdCwgd2hpY2ggaXMgdGhlIHNpbGVudCBkcm9wIHRoZXNlIGJvdW5kcyBleGlzdCB0b1xuICogcHJldmVudCDigJQgdGhlIGZsYWcgaXMgY2hlYXAgdG8gdHlwZSBvbnRvIHRoZSB3cm9uZyBzdWJjb21tYW5kIGFuZCB0aGVcbiAqIHJlc3VsdCBsb29rcyBsaWtlIGEgc3VjY2Vzc2Z1bCwgdW5maWx0ZXJlZCBhbnN3ZXIuXG4gKlxuICogYHJlc291cmNlYCBpcyB0aGUgbm9ybWFsaXplZCByZXNvdXJjZSBhbmQgYGhhc0lkYCBtYXJrcyBhIHNpbmdsZS1pdGVtXG4gKiBsb29rdXAsIHdoaWNoIHJlYWRzIG9uZSBydW4gZGlyZWN0bHkgYW5kIGhhcyBub3RoaW5nIHRvIGZpbHRlci5cbiAqIGBvcGVuc1dlYlVpYCBtYXJrcyBgLS11cmxgL2AtLXdlYmAsIHdoaWNoIGhhbmQgdGhlIHJlcXVlc3QgdG8gdGhlXG4gKiBkYXNoYm9hcmQgcmF0aGVyIHRoYW4gZmlsdGVyaW5nIGhlcmUuIGB3aXRoRGF0YWAgbWFya3MgdGhlIHBheWxvYWQtXG4gKiByZXNvbHZpbmcgcGF0aCwgd2hpY2ggcmVhZHMgZnJvbSBzdG9yYWdlIGFuZCBoYXMgbm8gYXR0cmlidXRlIGluZGV4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVBdHRyaWJ1dGVTY29wZShcbiAgcmVzb3VyY2U6IHN0cmluZyxcbiAgaGFzSWQ6IGJvb2xlYW4sXG4gIGhhc0F0dHJpYnV0ZTogYm9vbGVhbixcbiAgb3BlbnNXZWJVaSA9IGZhbHNlLFxuICB3aXRoRGF0YSA9IGZhbHNlXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIWhhc0F0dHJpYnV0ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgLy8gLS13aXRoRGF0YSByZWFkcyBwYXlsb2Fkcywgd2hpY2ggb25seSBzdG9yYWdlIGNhcnJpZXMsIGFuZCBzdG9yYWdlIGhhc1xuICAvLyBubyBhdHRyaWJ1dGUgaW5kZXguIFdhcm5pbmcgYW5kIHJldHVybmluZyBldmVyeSByb3cgd2FzIHRoZSBmYWlsdXJlIHRoaXNcbiAgLy8gZ3VhcmQgZXhpc3RzIHRvIHByZXZlbnQsIGFuZCB1bmxpa2UgYSBiYWNrZW5kIHdpdGhvdXQgYW5hbHl0aWNzIGl0IGlzIGFcbiAgLy8gY29uZmxpY3QgYmV0d2VlbiB0d28gZmxhZ3MgdGhlIGNhbGxlciBwYXNzZWQuXG4gIGlmICh3aXRoRGF0YSkge1xuICAgIHJldHVybiAnLS1hdHRyaWJ1dGUgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggLS13aXRoRGF0YSwgd2hpY2ggcmVhZHMgcGF5bG9hZHMgZnJvbSBzdG9yYWdlOyBkcm9wIG9uZS4nO1xuICB9XG4gIC8vIC0tdXJsIGFuZCAtLXdlYiBoYW5kIG9mZiB0byB0aGUgZGFzaGJvYXJkLCB3aGljaCB0YWtlcyBubyBhdHRyaWJ1dGVcbiAgLy8gZmlsdGVyLCBhbmQgYm90aCByZXR1cm4gYmVmb3JlIHRoZSBmaWx0ZXIgaXMgcGFyc2VkIOKAlCBzbyB0aGUgZmxhZyB3YXNcbiAgLy8gYWNjZXB0ZWQsIG5ldmVyIHZhbGlkYXRlZCwgYW5kIHRoZSB2aWV3IG9wZW5lZCB1bmZpbHRlcmVkLlxuICBpZiAob3BlbnNXZWJVaSkge1xuICAgIHJldHVybiAnLS1hdHRyaWJ1dGUgY2Fubm90IGJlIGZvcndhcmRlZCB0byB0aGUgd2ViIFVJOyBkcm9wIGl0LCBvciBkcm9wIC0tdXJsLy0td2ViIHRvIGZpbHRlciBoZXJlLic7XG4gIH1cbiAgaWYgKHJlc291cmNlID09PSAncnVuJyAmJiBoYXNJZCkge1xuICAgIHJldHVybiAnLS1hdHRyaWJ1dGUgZmlsdGVycyBydW4gbGlzdGluZ3M7IGBpbnNwZWN0IHJ1biA8aWQ+YCBhbHJlYWR5IG5hbWVzIG9uZSBydW4uIERyb3AgdGhlIGZsYWcgb3IgdGhlIElELic7XG4gIH1cbiAgaWYgKHJlc291cmNlICE9PSAncnVuJykge1xuICAgIHJldHVybiBgLS1hdHRyaWJ1dGUgZmlsdGVycyBydW4gbGlzdGluZ3Mgb25seSwgbm90ICR7cmVzb3VyY2V9LiBVc2UgXFxgd29ya2Zsb3cgaW5zcGVjdCBydW5zIC0tYXR0cmlidXRlIGtleT12YWx1ZVxcYC5gO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiBGbGFncyB7QGxpbmsgdmFsaWRhdGVJbnNwZWN0RmxhZ3N9IGNoZWNrcywgYXMgYGluc3BlY3RgIHBhcnNlZCB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnNwZWN0RmxhZ0JvdW5kcyB7XG4gIC8qKiBOb3JtYWxpemVkIHJlc291cmNlLCBlLmcuIGBydW5gLCBgc3RlcHNgIOKGkiBgc3RlcGAuICovXG4gIHJlc291cmNlOiBzdHJpbmc7XG4gIC8qKiBUcnVlIHdoZW4gdGhlIGludm9jYXRpb24gbmFtZXMgYSBzaW5nbGUgaXRlbSAoYGluc3BlY3QgcnVuIDxpZD5gKS4gKi9cbiAgaGFzSWQ6IGJvb2xlYW47XG4gIGxpbWl0PzogbnVtYmVyO1xuICBydW5JZD86IHN0cmluZztcbiAgLyoqIFJhdyByZXBlYXRlZCBgLS1hdHRyaWJ1dGUga2V5PXZhbHVlYCB2YWx1ZXMuICovXG4gIGF0dHJpYnV0ZT86IHN0cmluZ1tdO1xuICAvKiogVHJ1ZSBmb3IgYC0tdXJsYCwgYC0td2ViYCwgb3IgdGhlIGB3ZWJgIHJlc291cmNlLiAqL1xuICBvcGVuc1dlYlVpOiBib29sZWFuO1xuICB3aXRoRGF0YT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ2hlY2sgZXZlcnkgYm91bmRlZCBgaW5zcGVjdGAgZmxhZyBhbmQgcGFyc2UgYC0tYXR0cmlidXRlYCwgcmV0dXJuaW5nXG4gKiBlaXRoZXIgdGhlIGZpcnN0IGVycm9yIHRvIHJlcG9ydCBvciB0aGUgcGFyc2VkIGZpbHRlcnMgdG8gcGFzcyBvbi5cbiAqXG4gKiBPbmUgY2FsbCwgbWFkZSBiZWZvcmUgYW55IGJhY2tlbmQgc2V0dXA6IGEgbWlzdHlwZWQgZmxhZyBzaG91bGQgbmFtZVxuICogaXRzZWxmIHJhdGhlciB0aGFuIHN1cmZhY2UgYXMgYSByZWplY3RlZCBhcmd1bWVudCBmcm9tIHRoZSByZWFkIHBhdGgsIG9yIOKAlFxuICogd29yc2Ug4oCUIGJlIGRyb3BwZWQgYW5kIGFuc3dlcmVkIHdpdGggYSBwbGF1c2libGUgdW5maWx0ZXJlZCB0YWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlSW5zcGVjdEZsYWdzKFxuICBmbGFnczogSW5zcGVjdEZsYWdCb3VuZHNcbik6IHsgZXJyb3I6IHN0cmluZyB9IHwgeyBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkIH0ge1xuICBjb25zdCBlcnJvciA9XG4gICAgKGZsYWdzLmxpbWl0ICE9PSB1bmRlZmluZWRcbiAgICAgID8gdmFsaWRhdGVJbnNwZWN0TGltaXQoZmxhZ3MubGltaXQpXG4gICAgICA6IHVuZGVmaW5lZCkgPz9cbiAgICAoZmxhZ3MucnVuSWQgIT09IHVuZGVmaW5lZFxuICAgICAgPyB2YWxpZGF0ZUluc3BlY3RSdW5JZChmbGFncy5ydW5JZClcbiAgICAgIDogdW5kZWZpbmVkKSA/P1xuICAgIHZhbGlkYXRlQXR0cmlidXRlU2NvcGUoXG4gICAgICBmbGFncy5yZXNvdXJjZSxcbiAgICAgIGZsYWdzLmhhc0lkLFxuICAgICAgQm9vbGVhbihmbGFncy5hdHRyaWJ1dGU/Lmxlbmd0aCksXG4gICAgICBmbGFncy5vcGVuc1dlYlVpLFxuICAgICAgQm9vbGVhbihmbGFncy53aXRoRGF0YSlcbiAgICApO1xuICBpZiAoZXJyb3IpIHJldHVybiB7IGVycm9yIH07XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4geyBhdHRyaWJ1dGVzOiBwYXJzZUF0dHJpYnV0ZUZpbHRlcnMoZmxhZ3MuYXR0cmlidXRlKSB9O1xuICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOlxuICAgICAgICBwYXJzZUVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBwYXJzZUVycm9yLm1lc3NhZ2UgOiBTdHJpbmcocGFyc2VFcnJvciksXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=flag-bounds.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flag-bounds.test.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/flag-bounds.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,126 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { validateAttributeScope, validateInspectFlags, validateInspectLimit, validateInspectRunId, } from './flag-bounds.js';
3
+ describe('validateInspectLimit', () => {
4
+ it.each([1, 20, 100])('accepts %s', (limit) => {
5
+ expect(validateInspectLimit(limit)).toBeUndefined();
6
+ });
7
+ // 101-1000 used to be accepted here and rejected downstream: the cross-run
8
+ // listings reject them locally, and the run-scoped ones take them as far as
9
+ // a storage fallback that caps at 100 and answers with an opaque 400.
10
+ it.each([
11
+ 0,
12
+ -1,
13
+ 101,
14
+ 500,
15
+ 1001,
16
+ 1.5,
17
+ Number.NaN,
18
+ Number.POSITIVE_INFINITY,
19
+ ])('rejects %s and names the flag', (limit) => {
20
+ expect(validateInspectLimit(limit)).toBe('--limit must be an integer between 1 and 100.');
21
+ });
22
+ });
23
+ describe('validateInspectRunId', () => {
24
+ it('accepts a well-formed run id', () => {
25
+ expect(validateInspectRunId('wrun_01K4BZQ5T2J8HXFM6WD3PNAVCE')).toBeUndefined();
26
+ });
27
+ // The backend accepts neither of these, so catching them here saves a round
28
+ // trip and names the flag.
29
+ it.each([
30
+ ['a lowercase body', 'wrun_01k4bzq5t2j8hxfm6wd3pnavce'],
31
+ ['a first character above 7', 'wrun_81K4BZQ5T2J8HXFM6WD3PNAVCE'],
32
+ ['a non-Crockford character', 'wrun_01K4BZQ5T2J8HXFM6WD3PNAVCI'],
33
+ ['the wrong prefix', 'step_01K4BZQ5T2J8HXFM6WD3PNAVCE'],
34
+ ['no prefix', '01K4BZQ5T2J8HXFM6WD3PNAVCE'],
35
+ ['a truncated body', 'wrun_01K4BZQ'],
36
+ ['nothing', ''],
37
+ ])('rejects %s', (_label, runId) => {
38
+ expect(validateInspectRunId(runId)).toContain('--runId must be a run id');
39
+ });
40
+ });
41
+ describe('validateAttributeScope', () => {
42
+ it('is undefined when the flag is absent, whatever the resource', () => {
43
+ for (const resource of ['run', 'step', 'event', 'attribute', 'web']) {
44
+ expect(validateAttributeScope(resource, false, false)).toBeUndefined();
45
+ expect(validateAttributeScope(resource, true, false)).toBeUndefined();
46
+ }
47
+ });
48
+ it('allows it on the runs listing', () => {
49
+ expect(validateAttributeScope('run', false, true)).toBeUndefined();
50
+ });
51
+ // Every one of these parsed the flag and ignored it before. `web` is not
52
+ // listed: the command always passes `opensWebUi` for it, so it is rejected
53
+ // by that arm instead and this one is unreachable for that value.
54
+ it.each([
55
+ 'step',
56
+ 'event',
57
+ 'hook',
58
+ 'sleep',
59
+ 'stream',
60
+ 'attribute',
61
+ ])('rejects it on %s', (resource) => {
62
+ expect(validateAttributeScope(resource, false, true)).toContain('--attribute filters run listings only');
63
+ });
64
+ // A single-run lookup already names its run, so there is nothing to filter.
65
+ it('rejects it alongside a run ID', () => {
66
+ expect(validateAttributeScope('run', true, true)).toContain('already names one run');
67
+ });
68
+ });
69
+ describe('validateAttributeScope with the web UI', () => {
70
+ // Both flags return before the filter is parsed or forwarded, so the view
71
+ // opened unfiltered and a malformed pair was never checked.
72
+ it.each([
73
+ true,
74
+ false,
75
+ ])('rejects --attribute when handing off to the web UI (hasId=%s)', (hasId) => {
76
+ expect(validateAttributeScope('run', hasId, true, true)).toContain('cannot be forwarded to the web UI');
77
+ });
78
+ it('still allows it for a local runs listing', () => {
79
+ expect(validateAttributeScope('run', false, true, false)).toBeUndefined();
80
+ });
81
+ it('says nothing when the flag is absent', () => {
82
+ expect(validateAttributeScope('run', false, false, true)).toBeUndefined();
83
+ });
84
+ });
85
+ // The command calls this once, before any backend setup. It composes the
86
+ // three checks above with the `--attribute` parse, so a malformed pair and an
87
+ // out-of-range limit reach the user the same way.
88
+ describe('validateInspectFlags', () => {
89
+ const base = { resource: 'run', hasId: false, opensWebUi: false };
90
+ it('returns the parsed filters when everything checks out', () => {
91
+ expect(validateInspectFlags({ ...base, attribute: ['tenant=acme'], limit: 50 })).toEqual({ attributes: { tenant: 'acme' } });
92
+ });
93
+ it('leaves attributes undefined when the flag was not given', () => {
94
+ expect(validateInspectFlags(base)).toEqual({ attributes: undefined });
95
+ });
96
+ it('reports a malformed pair rather than throwing', () => {
97
+ const result = validateInspectFlags({ ...base, attribute: ['tenant'] });
98
+ expect(result).toHaveProperty('error');
99
+ });
100
+ // Order matters: a bound that fails should be reported before the parse
101
+ // runs, so the message names the flag the caller can act on first.
102
+ it.each([
103
+ ['limit', { limit: 500 }, '--limit must be an integer'],
104
+ ['runId', { runId: 'nope' }, '--runId must be a run id'],
105
+ [
106
+ 'scope',
107
+ { resource: 'step', attribute: ['a=b'] },
108
+ '--attribute filters run listings only',
109
+ ],
110
+ [
111
+ 'withData',
112
+ { attribute: ['a=b'], withData: true },
113
+ 'cannot be combined with --withData',
114
+ ],
115
+ [
116
+ 'web UI',
117
+ { attribute: ['a=b'], opensWebUi: true },
118
+ 'cannot be forwarded to the web UI',
119
+ ],
120
+ ])('reports a bad %s', (_label, flags, expected) => {
121
+ const result = validateInspectFlags({ ...base, ...flags });
122
+ expect(result).toHaveProperty('error');
123
+ expect(result.error).toContain(expected);
124
+ });
125
+ });
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZy1ib3VuZHMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaW5zcGVjdC9mbGFnLWJvdW5kcy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsb0JBQW9CLEdBQ3JCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtJQUNwQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzVDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3RELENBQUMsQ0FBQyxDQUFDO0lBRUgsMkVBQTJFO0lBQzNFLDRFQUE0RTtJQUM1RSxzRUFBc0U7SUFDdEUsRUFBRSxDQUFDLElBQUksQ0FBQztRQUNOLENBQUM7UUFDRCxDQUFDLENBQUM7UUFDRixHQUFHO1FBQ0gsR0FBRztRQUNILElBQUk7UUFDSixHQUFHO1FBQ0gsTUFBTSxDQUFDLEdBQUc7UUFDVixNQUFNLENBQUMsaUJBQWlCO0tBQ3pCLENBQUMsQ0FBQywrQkFBK0IsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzVDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDdEMsK0NBQStDLENBQ2hELENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtJQUNwQyxFQUFFLENBQUMsOEJB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QUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSAndml0ZXN0JztcbmltcG9ydCB7XG4gIHZhbGlkYXRlQXR0cmlidXRlU2NvcGUsXG4gIHZhbGlkYXRlSW5zcGVjdEZsYWdzLFxuICB2YWxpZGF0ZUluc3BlY3RMaW1pdCxcbiAgdmFsaWRhdGVJbnNwZWN0UnVuSWQsXG59IGZyb20gJy4vZmxhZy1ib3VuZHMuanMnO1xuXG5kZXNjcmliZSgndmFsaWRhdGVJbnNwZWN0TGltaXQnLCAoKSA9PiB7XG4gIGl0LmVhY2goWzEsIDIwLCAxMDBdKSgnYWNjZXB0cyAlcycsIChsaW1pdCkgPT4ge1xuICAgIGV4cGVjdCh2YWxpZGF0ZUluc3BlY3RMaW1pdChsaW1pdCkpLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG5cbiAgLy8gMTAxLTEwMDAgdXNlZCB0byBiZSBhY2NlcHRlZCBoZXJlIGFuZCByZWplY3RlZCBkb3duc3RyZWFtOiB0aGUgY3Jvc3MtcnVuXG4gIC8vIGxpc3RpbmdzIHJlamVjdCB0aGVtIGxvY2FsbHksIGFuZCB0aGUgcnVuLXNjb3BlZCBvbmVzIHRha2UgdGhlbSBhcyBmYXIgYXNcbiAgLy8gYSBzdG9yYWdlIGZhbGxiYWNrIHRoYXQgY2FwcyBhdCAxMDAgYW5kIGFuc3dlcnMgd2l0aCBhbiBvcGFxdWUgNDAwLlxuICBpdC5lYWNoKFtcbiAgICAwLFxuICAgIC0xLFxuICAgIDEwMSxcbiAgICA1MDAsXG4gICAgMTAwMSxcbiAgICAxLjUsXG4gICAgTnVtYmVyLk5hTixcbiAgICBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXG4gIF0pKCdyZWplY3RzICVzIGFuZCBuYW1lcyB0aGUgZmxhZycsIChsaW1pdCkgPT4ge1xuICAgIGV4cGVjdCh2YWxpZGF0ZUluc3BlY3RMaW1pdChsaW1pdCkpLnRvQmUoXG4gICAgICAnLS1saW1pdCBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxMDAuJ1xuICAgICk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCd2YWxpZGF0ZUluc3BlY3RSdW5JZCcsICgpID0+IHtcbiAgaXQoJ2FjY2VwdHMgYSB3ZWxsLWZvcm1lZCBydW4gaWQnLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgdmFsaWRhdGVJbnNwZWN0UnVuSWQoJ3dydW5fMDFLNEJaUTVUMko4SFhGTTZXRDNQTkFWQ0UnKVxuICAgICkudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcblxuICAvLyBUaGUgYmFja2VuZCBhY2NlcHRzIG5laXRoZXIgb2YgdGhlc2UsIHNvIGNhdGNoaW5nIHRoZW0gaGVyZSBzYXZlcyBhIHJvdW5kXG4gIC8vIHRyaXAgYW5kIG5hbWVzIHRoZSBmbGFnLlxuICBpdC5lYWNoKFtcbiAgICBbJ2EgbG93ZXJjYXNlIGJvZHknLCAnd3J1bl8wMWs0YnpxNXQyajhoeGZtNndkM3BuYXZjZSddLFxuICAgIFsnYSBmaXJzdCBjaGFyYWN0ZXIgYWJvdmUgNycsICd3cnVuXzgxSzRCWlE1VDJKOEhYRk02V0QzUE5BVkNFJ10sXG4gICAgWydhIG5vbi1Dcm9ja2ZvcmQgY2hhcmFjdGVyJywgJ3dydW5fMDFLNEJaUTVUMko4SFhGTTZXRDNQTkFWQ0knXSxcbiAgICBbJ3RoZSB3cm9uZyBwcmVmaXgnLCAnc3RlcF8wMUs0QlpRNVQySjhIWEZNNldEM1BOQVZDRSddLFxuICAgIFsnbm8gcHJlZml4JywgJzAxSzRCWlE1VDJKOEhYRk02V0QzUE5BVkNFJ10sXG4gICAgWydhIHRydW5jYXRlZCBib2R5JywgJ3dydW5fMDFLNEJaUSddLFxuICAgIFsnbm90aGluZycsICcnXSxcbiAgXSkoJ3JlamVjdHMgJXMnLCAoX2xhYmVsLCBydW5JZCkgPT4ge1xuICAgIGV4cGVjdCh2YWxpZGF0ZUluc3BlY3RSdW5JZChydW5JZCkpLnRvQ29udGFpbignLS1ydW5JZCBtdXN0IGJlIGEgcnVuIGlkJyk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCd2YWxpZGF0ZUF0dHJpYnV0ZVNjb3BlJywgKCkgPT4ge1xuICBpdCgnaXMgdW5kZWZpbmVkIHdoZW4gdGhlIGZsYWcgaXMgYWJzZW50LCB3aGF0ZXZlciB0aGUgcmVzb3VyY2UnLCAoKSA9PiB7XG4gICAgZm9yIChjb25zdCByZXNvdXJjZSBvZiBbJ3J1bicsICdzdGVwJywgJ2V2ZW50JywgJ2F0dHJpYnV0ZScsICd3ZWInXSkge1xuICAgICAgZXhwZWN0KHZhbGlkYXRlQXR0cmlidXRlU2NvcGUocmVzb3VyY2UsIGZhbHNlLCBmYWxzZSkpLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGV4cGVjdCh2YWxpZGF0ZUF0dHJpYnV0ZVNjb3BlKHJlc291cmNlLCB0cnVlLCBmYWxzZSkpLnRvQmVVbmRlZmluZWQoKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdhbGxvd3MgaXQgb24gdGhlIHJ1bnMgbGlzdGluZycsICgpID0+IHtcbiAgICBleHBlY3QodmFsaWRhdGVBdHRyaWJ1dGVTY29wZSgncnVuJywgZmFsc2UsIHRydWUpKS50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xuXG4gIC8vIEV2ZXJ5IG9uZSBvZiB0aGVzZSBwYXJzZWQgdGhlIGZsYWcgYW5kIGlnbm9yZWQgaXQgYmVmb3JlLiBgd2ViYCBpcyBub3RcbiAgLy8gbGlzdGVkOiB0aGUgY29tbWFuZCBhbHdheXMgcGFzc2VzIGBvcGVuc1dlYlVpYCBmb3IgaXQsIHNvIGl0IGlzIHJlamVjdGVkXG4gIC8vIGJ5IHRoYXQgYXJtIGluc3RlYWQgYW5kIHRoaXMgb25lIGlzIHVucmVhY2hhYmxlIGZvciB0aGF0IHZhbHVlLlxuICBpdC5lYWNoKFtcbiAgICAnc3RlcCcsXG4gICAgJ2V2ZW50JyxcbiAgICAnaG9vaycsXG4gICAgJ3NsZWVwJyxcbiAgICAnc3RyZWFtJyxcbiAgICAnYXR0cmlidXRlJyxcbiAgXSkoJ3JlamVjdHMgaXQgb24gJXMnLCAocmVzb3VyY2UpID0+IHtcbiAgICBleHBlY3QodmFsaWRhdGVBdHRyaWJ1dGVTY29wZShyZXNvdXJjZSwgZmFsc2UsIHRydWUpKS50b0NvbnRhaW4oXG4gICAgICAnLS1hdHRyaWJ1dGUgZmlsdGVycyBydW4gbGlzdGluZ3Mgb25seSdcbiAgICApO1xuICB9KTtcblxuICAvLyBBIHNpbmdsZS1ydW4gbG9va3VwIGFscmVhZHkgbmFtZXMgaXRzIHJ1biwgc28gdGhlcmUgaXMgbm90aGluZyB0byBmaWx0ZXIuXG4gIGl0KCdyZWplY3RzIGl0IGFsb25nc2lkZSBhIHJ1biBJRCcsICgpID0+IHtcbiAgICBleHBlY3QodmFsaWRhdGVBdHRyaWJ1dGVTY29wZSgncnVuJywgdHJ1ZSwgdHJ1ZSkpLnRvQ29udGFpbihcbiAgICAgICdhbHJlYWR5IG5hbWVzIG9uZSBydW4nXG4gICAgKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3ZhbGlkYXRlQXR0cmlidXRlU2NvcGUgd2l0aCB0aGUgd2ViIFVJJywgKCkgPT4ge1xuICAvLyBCb3RoIGZsYWdzIHJldHVybiBiZWZvcmUgdGhlIGZpbHRlciBpcyBwYXJzZWQgb3IgZm9yd2FyZGVkLCBzbyB0aGUgdmlld1xuICAvLyBvcGVuZWQgdW5maWx0ZXJlZCBhbmQgYSBtYWxmb3JtZWQgcGFpciB3YXMgbmV2ZXIgY2hlY2tlZC5cbiAgaXQuZWFjaChbXG4gICAgdHJ1ZSxcbiAgICBmYWxzZSxcbiAgXSkoJ3JlamVjdHMgLS1hdHRyaWJ1dGUgd2hlbiBoYW5kaW5nIG9mZiB0byB0aGUgd2ViIFVJIChoYXNJZD0lcyknLCAoaGFzSWQpID0+IHtcbiAgICBleHBlY3QodmFsaWRhdGVBdHRyaWJ1dGVTY29wZSgncnVuJywgaGFzSWQsIHRydWUsIHRydWUpKS50b0NvbnRhaW4oXG4gICAgICAnY2Fubm90IGJlIGZvcndhcmRlZCB0byB0aGUgd2ViIFVJJ1xuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzdGlsbCBhbGxvd3MgaXQgZm9yIGEgbG9jYWwgcnVucyBsaXN0aW5nJywgKCkgPT4ge1xuICAgIGV4cGVjdCh2YWxpZGF0ZUF0dHJpYnV0ZVNjb3BlKCdydW4nLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpKS50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xuXG4gIGl0KCdzYXlzIG5vdGhpbmcgd2hlbiB0aGUgZmxhZyBpcyBhYnNlbnQnLCAoKSA9PiB7XG4gICAgZXhwZWN0KHZhbGlkYXRlQXR0cmlidXRlU2NvcGUoJ3J1bicsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkpLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG59KTtcblxuLy8gVGhlIGNvbW1hbmQgY2FsbHMgdGhpcyBvbmNlLCBiZWZvcmUgYW55IGJhY2tlbmQgc2V0dXAuIEl0IGNvbXBvc2VzIHRoZVxuLy8gdGhyZWUgY2hlY2tzIGFib3ZlIHdpdGggdGhlIGAtLWF0dHJpYnV0ZWAgcGFyc2UsIHNvIGEgbWFsZm9ybWVkIHBhaXIgYW5kIGFuXG4vLyBvdXQtb2YtcmFuZ2UgbGltaXQgcmVhY2ggdGhlIHVzZXIgdGhlIHNhbWUgd2F5LlxuZGVzY3JpYmUoJ3ZhbGlkYXRlSW5zcGVjdEZsYWdzJywgKCkgPT4ge1xuICBjb25zdCBiYXNlID0geyByZXNvdXJjZTogJ3J1bicsIGhhc0lkOiBmYWxzZSwgb3BlbnNXZWJVaTogZmFsc2UgfTtcblxuICBpdCgncmV0dXJucyB0aGUgcGFyc2VkIGZpbHRlcnMgd2hlbiBldmVyeXRoaW5nIGNoZWNrcyBvdXQnLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgdmFsaWRhdGVJbnNwZWN0RmxhZ3MoeyAuLi5iYXNlLCBhdHRyaWJ1dGU6IFsndGVuYW50PWFjbWUnXSwgbGltaXQ6IDUwIH0pXG4gICAgKS50b0VxdWFsKHsgYXR0cmlidXRlczogeyB0ZW5hbnQ6ICdhY21lJyB9IH0pO1xuICB9KTtcblxuICBpdCgnbGVhdmVzIGF0dHJpYnV0ZXMgdW5kZWZpbmVkIHdoZW4gdGhlIGZsYWcgd2FzIG5vdCBnaXZlbicsICgpID0+IHtcbiAgICBleHBlY3QodmFsaWRhdGVJbnNwZWN0RmxhZ3MoYmFzZSkpLnRvRXF1YWwoeyBhdHRyaWJ1dGVzOiB1bmRlZmluZWQgfSk7XG4gIH0pO1xuXG4gIGl0KCdyZXBvcnRzIGEgbWFsZm9ybWVkIHBhaXIgcmF0aGVyIHRoYW4gdGhyb3dpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVJbnNwZWN0RmxhZ3MoeyAuLi5iYXNlLCBhdHRyaWJ1dGU6IFsndGVuYW50J10gfSk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9IYXZlUHJvcGVydHkoJ2Vycm9yJyk7XG4gIH0pO1xuXG4gIC8vIE9yZGVyIG1hdHRlcnM6IGEgYm91bmQgdGhhdCBmYWlscyBzaG91bGQgYmUgcmVwb3J0ZWQgYmVmb3JlIHRoZSBwYXJzZVxuICAvLyBydW5zLCBzbyB0aGUgbWVzc2FnZSBuYW1lcyB0aGUgZmxhZyB0aGUgY2FsbGVyIGNhbiBhY3Qgb24gZmlyc3QuXG4gIGl0LmVhY2goW1xuICAgIFsnbGltaXQnLCB7IGxpbWl0OiA1MDAgfSwgJy0tbGltaXQgbXVzdCBiZSBhbiBpbnRlZ2VyJ10sXG4gICAgWydydW5JZCcsIHsgcnVuSWQ6ICdub3BlJyB9LCAnLS1ydW5JZCBtdXN0IGJlIGEgcnVuIGlkJ10sXG4gICAgW1xuICAgICAgJ3Njb3BlJyxcbiAgICAgIHsgcmVzb3VyY2U6ICdzdGVwJywgYXR0cmlidXRlOiBbJ2E9YiddIH0sXG4gICAgICAnLS1hdHRyaWJ1dGUgZmlsdGVycyBydW4gbGlzdGluZ3Mgb25seScsXG4gICAgXSxcbiAgICBbXG4gICAgICAnd2l0aERhdGEnLFxuICAgICAgeyBhdHRyaWJ1dGU6IFsnYT1iJ10sIHdpdGhEYXRhOiB0cnVlIH0sXG4gICAgICAnY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggLS13aXRoRGF0YScsXG4gICAgXSxcbiAgICBbXG4gICAgICAnd2ViIFVJJyxcbiAgICAgIHsgYXR0cmlidXRlOiBbJ2E9YiddLCBvcGVuc1dlYlVpOiB0cnVlIH0sXG4gICAgICAnY2Fubm90IGJlIGZvcndhcmRlZCB0byB0aGUgd2ViIFVJJyxcbiAgICBdLFxuICBdKSgncmVwb3J0cyBhIGJhZCAlcycsIChfbGFiZWwsIGZsYWdzLCBleHBlY3RlZCkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlSW5zcGVjdEZsYWdzKHsgLi4uYmFzZSwgLi4uZmxhZ3MgfSk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9IYXZlUHJvcGVydHkoJ2Vycm9yJyk7XG4gICAgZXhwZWN0KChyZXN1bHQgYXMgeyBlcnJvcjogc3RyaW5nIH0pLmVycm9yKS50b0NvbnRhaW4oZXhwZWN0ZWQpO1xuICB9KTtcbn0pO1xuIl19
@@ -12,7 +12,7 @@ export declare const cliFlags: {
12
12
  noBrowser: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
13
  localUi: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
14
  standalone: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
- sort: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
15
+ sort: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
16
  limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
17
17
  interactive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
18
  };
@@ -1 +1 @@
1
- {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/flags.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;CAyJpB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,OAAO;;CASnB,CAAC"}
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/flags.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;CA4JpB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,OAAO;;CASnB,CAAC"}
@@ -125,7 +125,10 @@ export const cliFlags = {
125
125
  description: 'sort order for list commands',
126
126
  required: false,
127
127
  options: ['asc', 'desc'],
128
- default: 'desc',
128
+ // No parser-level default: every time-ordered listing already falls back
129
+ // to `desc` itself, and a default here made the flag indistinguishable
130
+ // from an explicit one, so `inspect attributes` could not tell that it
131
+ // should leave the backend's alphabetical key order alone.
129
132
  helpGroup: 'Filtering',
130
133
  helpLabel: '--sort',
131
134
  helpValue: ['asc', 'desc'],
@@ -162,4 +165,4 @@ export const urlFlag = {
162
165
  helpLabel: '--url',
163
166
  }),
164
167
  };
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luc3BlY3QvZmxhZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUc7SUFDdEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDckIsV0FBVyxFQUFFLGdCQUFnQjtRQUM3QixRQUFRLEVBQUUsS0FBSztRQUNmLElBQUksRUFBRSxHQUFHO1FBQ1QsU0FBUyxFQUFFLFFBQVE7UUFDbkIsU0FBUyxFQUFFLGVBQWU7UUFDMUIsR0FBRyxFQUFFLE9BQU87UUFDWixPQUFPLEVBQUUsS0FBSztLQUNmLENBQUM7SUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNsQixXQUFXLEVBQUUsc0RBQXNEO1FBQ25FLFFBQVEsRUFBRSxLQUFLO1FBQ2YsSUFBSSxFQUFFLEdBQUc7UUFDVCxPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxZQUFZO0tBQ3hCLENBQUM7SUFDRixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNuQixXQUFXLEVBQUUscUNBQXFDO1FBQ2xELFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLEVBQUU7UUFDWCxTQUFTLEVBQUUsV0FBVztRQUN0QixTQUFTLEVBQUUsVUFBVTtRQUNyQixTQUFTLEVBQUUsUUFBUTtLQUNwQixDQUFDO0lBQ0YsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDcEIsV0FBVyxFQUFFLG9CQUFvQjtRQUNqQyxRQUFRLEVBQUUsS0FBSztRQUNmLElBQUksRUFBRSxHQUFHO1FBQ1QsT0FBTyxFQUFFLE9BQU87UUFDaEIsR0FBRyxFQUFFLHVCQUF1QjtRQUM1QixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVBQUUsZUFBZTtRQUMxQixTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixDQUFDO1FBQ3JELFdBQVcsRUFBRSxPQUFPO0tBQ3JCLENBQUM7SUFDRixTQUFTLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUN0QixXQUFXLEVBQ1QsbUpBQW1KO1FBQ3JKLFFBQVEsRUFBRSxLQUFLO1FBQ2YsSUFBSSxFQUFFLEdBQUc7UUFDVCxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDdEIsT0FBTyxFQUFFLEVBQUU7UUFDWCxHQUFHLEVBQUUsNEJBQTRCO1FBQ2pDLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxpQkFBaUI7UUFDNUIsU0FBUyxFQUFFLE9BQU87S0FDbkIsQ0FBQztJQUNGLE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3BCLFdBQVcsRUFDVCxrRUFBa0U7UUFDcEUsUUFBUSxFQUFFLEtBQUs7UUFDZixPQUFPLEVBQUUsRUFBRTtRQUNYLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN0QixHQUFHLEVBQUUseUJBQXlCO1FBQzlCLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxXQUFXO1FBQ3RCLFNBQVMsRUFBRSxTQUFTO0tBQ3JCLENBQUM7SUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNqQixXQUFXLEVBQ1QsK0RBQStEO1FBQ2pFLFFBQVEsRUFBRSxLQUFLO1FBQ2YsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3RCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsR0FBRyxFQUFFLHNCQUFzQjtRQUMzQixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVBQUUsTUFBTTtLQUNsQixDQUFDO0lBQ0YsR0FBRyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDaEIsV0FBVyxFQUFFLHFEQUFxRDtRQUNsRSxRQUFRLEVBQUUsS0FBSztRQUNmLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUM7UUFDbEMsT0FBTyxFQUFFLFlBQVk7UUFDckIsSUFBSSxFQUFFLEdBQUc7UUFDVCxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDdEIsR0FBRyxFQUFFLHFCQUFxQjtRQUMxQixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVBQUUsV0FBVztRQUN0QixTQUFTLEVBQUUsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDO1FBQ3BDLFdBQVcsRUFBRSxZQUFZO0tBQzFCLENBQUM7SUFDRixHQUFHLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNqQixXQUFXLEVBQUUsbURBQW1EO1FBQ2hFLFFBQVEsRUFBRSxLQUFLO1FBQ2YsSUFBSSxFQUFFLEdBQUc7UUFDVCxPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxXQUFXO0tBQ3ZCLENBQUM7SUFDRixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNyQixXQUFXLEVBQUUsdURBQXVEO1FBQ3BFLFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLElBQUk7UUFDYixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVBQUUsV0FBVztRQUN0QixTQUFTLEVBQUUsVUFBVTtRQUNyQixHQUFHLEVBQUUsbUJBQW1CO0tBQ3pCLENBQUM7SUFDRixTQUFTLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN2QixXQUFXLEVBQUUseURBQXlEO1FBQ3RFLFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLEtBQUs7UUFDZCxHQUFHLEVBQUUsK0JBQStCO1FBQ3BDLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxhQUFhO0tBQ3pCLENBQUM7SUFDRixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNyQixXQUFXLEVBQ1QsdUVBQXVFO1FBQ3pFLFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLEtBQUs7UUFDZCxHQUFHLEVBQUUsbUJBQW1CO1FBQ3hCLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxXQUFXO0tBQ3ZCLENBQUM7SUFDRixVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN4QixXQUFXLEVBQ1Qsd0dBQXdHO1FBQzFHLFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLEtBQUs7UUFDZCxHQUFHLEVBQUUsd0JBQXdCO1FBQzdCLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxjQUFjO0tBQzFCLENBQUM7SUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNqQixXQUFXLEVBQUUsOEJBQThCO1FBQzNDLFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztRQUN4QixPQUFPLEVBQUUsTUFBTTtRQUNmLFNBQVMsRUFBRSxXQUFXO1FBQ3RCLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7UUFDMUIsV0FBVyxFQUFFLE1BQU07S0FDcEIsQ0FBQztJQUNGLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ25CLFdBQVcsRUFBRSxvQ0FBb0M7UUFDakQsUUFBUSxFQUFFLEtBQUs7UUFDZixPQUFPLEVBQUUsRUFBRTtRQUNYLFNBQVMsRUFBRSxXQUFXO1FBQ3RCLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLFNBQVMsRUFBRSxRQUFRO0tBQ3BCLENBQUM7SUFDRixXQUFXLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN6QixXQUFXLEVBQUUsc0RBQXNEO1FBQ25FLFFBQVEsRUFBRSxLQUFLO1FBQ2YsSUFBSSxFQUFFLEdBQUc7UUFDVCxPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxtQkFBbUI7S0FDL0IsQ0FBQztDQUNILENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ3JCLEdBQUcsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ2pCLFdBQVcsRUFDVCwrRUFBK0U7UUFDakYsUUFBUSxFQUFFLEtBQUs7UUFDZixPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxPQUFPO0tBQ25CLENBQUM7Q0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tICdAb2NsaWYvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBjbGlGbGFncyA9IHtcbiAgdmVyYm9zZTogRmxhZ3MuYm9vbGVhbih7XG4gICAgZGVzY3JpcHRpb246ICdWZXJib3NlIG91dHB1dCcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGNoYXI6ICd2JyxcbiAgICBoZWxwR3JvdXA6ICdPdXRwdXQnLFxuICAgIGhlbHBMYWJlbDogJy12LCAtLXZlcmJvc2UnLFxuICAgIGVudjogJ0RFQlVHJyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSksXG4gIGpzb246IEZsYWdzLmJvb2xlYW4oe1xuICAgIGRlc2NyaXB0aW9uOiAnb3V0cHV0IEpTT04gaW5zdGVhZCBvZiBodW1hbi1yZWFkYWJsZSB0YWJsZXMvc3RyZWFtcycsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGNoYXI6ICdqJyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICBoZWxwR3JvdXA6ICdPdXRwdXQnLFxuICAgIGhlbHBMYWJlbDogJy1qLCAtLWpzb24nLFxuICB9KSxcbiAgY3Vyc29yOiBGbGFncy5zdHJpbmcoe1xuICAgIGRlc2NyaXB0aW9uOiAncGFnaW5hdGlvbiBjdXJzb3IgZm9yIGxpc3QgY29tbWFuZHMnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiAnJyxcbiAgICBoZWxwR3JvdXA6ICdGaWx0ZXJpbmcnLFxuICAgIGhlbHBMYWJlbDogJy0tY3Vyc29yJyxcbiAgICBoZWxwVmFsdWU6ICdDVVJTT1InLFxuICB9KSxcbiAgYmFja2VuZDogRmxhZ3Muc3RyaW5nKHtcbiAgICBkZXNjcmlwdGlvbjogJ2JhY2tlbmQgdG8gaW5zcGVjdCcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGNoYXI6ICdiJyxcbiAgICBkZWZhdWx0OiAnbG9jYWwnLFxuICAgIGVudjogJ1dPUktGTE9XX1RBUkdFVF9XT1JMRCcsXG4gICAgaGVscEdyb3VwOiAnVGFyZ2V0JyxcbiAgICBoZWxwTGFiZWw6ICctYiwgLS1iYWNrZW5kJyxcbiAgICBoZWxwVmFsdWU6IFsnbG9jYWwnLCAndmVyY2VsJywgJzx5b3VyLXBhY2thZ2UtbmFtZT4nXSxcbiAgICBkZWZhdWx0SGVscDogJ2xvY2FsJyxcbiAgfSksXG4gIGF1dGhUb2tlbjogRmxhZ3Muc3RyaW5nKHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdBdXRoZW50aWNhdGlvbiB0b2tlbiB0byBiZSBwYXNzZWQgdG8gdGhlIGJhY2tlbmQuIElmIG5vdCBwcm92aWRlZCBhbmQgdGhlIGJhY2tlbmQgaXMgdmVyY2VsLCB3aWxsIGZhbGwgYmFjayB0byB0aGUgdG9rZW4gZ2VuZXJhdGVkIGJ5IGB2YyBsb2dpbmAuJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgY2hhcjogJ2EnLFxuICAgIGRlcGVuZHNPbjogWydiYWNrZW5kJ10sXG4gICAgZGVmYXVsdDogJycsXG4gICAgZW52OiAnV09SS0ZMT1dfVkVSQ0VMX0FVVEhfVE9LRU4nLFxuICAgIGhlbHBHcm91cDogJ1RhcmdldCcsXG4gICAgaGVscExhYmVsOiAnLWEsIC0tYXV0aFRva2VuJyxcbiAgICBoZWxwVmFsdWU6ICdUT0tFTicsXG4gIH0pLFxuICBwcm9qZWN0OiBGbGFncy5zdHJpbmcoe1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0lmIGJhY2tlbmQgaXMgdmVyY2VsLCB0aGUgdmVyY2VsIHByb2plY3QgdG8gYXV0aGVudGljYXRlIGFnYWluc3QnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiAnJyxcbiAgICBkZXBlbmRzT246IFsnYmFja2VuZCddLFxuICAgIGVudjogJ1dPUktGTE9XX1ZFUkNFTF9QUk9KRUNUJyxcbiAgICBoZWxwR3JvdXA6ICdUYXJnZXQnLFxuICAgIGhlbHBMYWJlbDogJy0tcHJvamVjdCcsXG4gICAgaGVscFZhbHVlOiAnUFJPSkVDVCcsXG4gIH0pLFxuICB0ZWFtOiBGbGFncy5zdHJpbmcoe1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0lmIGJhY2tlbmQgaXMgdmVyY2VsLCB0aGUgdmVyY2VsIHRlYW0gdG8gYXV0aGVudGljYXRlIGFnYWluc3QnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXBlbmRzT246IFsnYmFja2VuZCddLFxuICAgIGRlZmF1bHQ6ICcnLFxuICAgIGVudjogJ1dPUktGTE9XX1ZFUkNFTF9URUFNJyxcbiAgICBoZWxwR3JvdXA6ICdUYXJnZXQnLFxuICAgIGhlbHBMYWJlbDogJy0tdGVhbScsXG4gICAgaGVscFZhbHVlOiAnVEVBTScsXG4gIH0pLFxuICBlbnY6IEZsYWdzLnN0cmluZyh7XG4gICAgZGVzY3JpcHRpb246ICdJZiBiYWNrZW5kIGlzIHZlcmNlbCwgdGhlIHZlcmNlbCBlbnZpcm9ubWVudCB0byB1c2UnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBvcHRpb25zOiBbJ3Byb2R1Y3Rpb24nLCAncHJldmlldyddLFxuICAgIGRlZmF1bHQ6ICdwcm9kdWN0aW9uJyxcbiAgICBjaGFyOiAnZScsXG4gICAgZGVwZW5kc09uOiBbJ2JhY2tlbmQnXSxcbiAgICBlbnY6ICdXT1JLRkxPV19WRVJDRUxfRU5WJyxcbiAgICBoZWxwR3JvdXA6ICdUYXJnZXQnLFxuICAgIGhlbHBMYWJlbDogJy1lLCAtLWVudicsXG4gICAgaGVscFZhbHVlOiBbJ3Byb2R1Y3Rpb24nLCAncHJldmlldyddLFxuICAgIGRlZmF1bHRIZWxwOiAncHJvZHVjdGlvbicsXG4gIH0pLFxuICB3ZWI6IEZsYWdzLmJvb2xlYW4oe1xuICAgIGRlc2NyaXB0aW9uOiAnT3BlbiB0aGUgd2ViIFVJIGluc3RlYWQgb2YgZGlzcGxheWluZyBpbiB0ZXJtaW5hbCcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGNoYXI6ICd3JyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICBoZWxwR3JvdXA6ICdPdXRwdXQnLFxuICAgIGhlbHBMYWJlbDogJy13LCAtLXdlYicsXG4gIH0pLFxuICB3ZWJQb3J0OiBGbGFncy5pbnRlZ2VyKHtcbiAgICBkZXNjcmlwdGlvbjogJ1BvcnQgdG8gdXNlIHdoZW4gbGF1bmNoaW5nIHRoZSB3ZWIgVUkgKGRlZmF1bHQ6IDM0NTYpJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogMzQ1NixcbiAgICBoZWxwR3JvdXA6ICdPdXRwdXQnLFxuICAgIGhlbHBMYWJlbDogJy0td2ViUG9ydCcsXG4gICAgaGVscFZhbHVlOiAnV0VCX1BPUlQnLFxuICAgIGVudjogJ1dPUktGTE9XX1dFQl9QT1JUJyxcbiAgfSksXG4gIG5vQnJvd3NlcjogRmxhZ3MuYm9vbGVhbih7XG4gICAgZGVzY3JpcHRpb246ICdEaXNhYmxlIGF1dG9tYXRpYyBicm93c2VyIG9wZW5pbmcgd2hlbiBsYXVuY2hpbmcgd2ViIFVJJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgZW52OiAnV09SS0ZMT1dfRElTQUJMRV9CUk9XU0VSX09QRU4nLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLS1ub0Jyb3dzZXInLFxuICB9KSxcbiAgbG9jYWxVaTogRmxhZ3MuYm9vbGVhbih7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVXNlIGxvY2FsIHdlYiBVSSBpbnN0ZWFkIG9mIFZlcmNlbCBkYXNoYm9hcmQgKHdoZW4gYmFja2VuZCBpcyB2ZXJjZWwpJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgZW52OiAnV09SS0ZMT1dfTE9DQUxfVUknLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLS1sb2NhbFVpJyxcbiAgfSksXG4gIHN0YW5kYWxvbmU6IEZsYWdzLmJvb2xlYW4oe1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0Fsd2F5cyBzdGFydCB0aGUgc3RhbmRhbG9uZSB3ZWIgVUksIGV2ZW4gaWYgYW4gZW1iZWRkZWQgZGFzaGJvYXJkIChlLmcuIC9fd29ya2Zsb3cpIGlzIGFscmVhZHkgcnVubmluZycsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIGVudjogJ1dPUktGTE9XX1NUQU5EQUxPTkVfVUknLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLS1zdGFuZGFsb25lJyxcbiAgfSksXG4gIHNvcnQ6IEZsYWdzLnN0cmluZyh7XG4gICAgZGVzY3JpcHRpb246ICdzb3J0IG9yZGVyIGZvciBsaXN0IGNvbW1hbmRzJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgb3B0aW9uczogWydhc2MnLCAnZGVzYyddLFxuICAgIGRlZmF1bHQ6ICdkZXNjJyxcbiAgICBoZWxwR3JvdXA6ICdGaWx0ZXJpbmcnLFxuICAgIGhlbHBMYWJlbDogJy0tc29ydCcsXG4gICAgaGVscFZhbHVlOiBbJ2FzYycsICdkZXNjJ10sXG4gICAgZGVmYXVsdEhlbHA6ICdkZXNjJyxcbiAgfSksXG4gIGxpbWl0OiBGbGFncy5pbnRlZ2VyKHtcbiAgICBkZXNjcmlwdGlvbjogJ251bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiAyMCxcbiAgICBoZWxwR3JvdXA6ICdGaWx0ZXJpbmcnLFxuICAgIGhlbHBMYWJlbDogJy0tbGltaXQnLFxuICAgIGhlbHBWYWx1ZTogJ05VTUJFUicsXG4gIH0pLFxuICBpbnRlcmFjdGl2ZTogRmxhZ3MuYm9vbGVhbih7XG4gICAgZGVzY3JpcHRpb246ICdFbmFibGUgaW50ZXJhY3RpdmUgcGFnaW5hdGlvbiB3aXRoIGtleWJvYXJkIGNvbnRyb2xzJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgY2hhcjogJ2knLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLWksIC0taW50ZXJhY3RpdmUnLFxuICB9KSxcbn07XG5cbi8qKlxuICogRmxhZyBmb3IgcHJpbnRpbmcgYSBzaGFyZWFibGUgZGVlcC1saW5rIFVSTCBpbnN0ZWFkIG9mIG9wZW5pbmcgdGhlIHdlYiBVSS5cbiAqIE9ubHkgcmVsZXZhbnQgdG8gY29tbWFuZHMgdGhhdCBjYW4gb3BlbiBhIGRhc2hib2FyZCAoYGluc3BlY3RgLCBgd2ViYCksIHNvIGl0XG4gKiBpcyBleHBvcnRlZCBzZXBhcmF0ZWx5IHJhdGhlciB0aGFuIGJ1bmRsZWQgaW50byBgY2xpRmxhZ3NgLlxuICovXG5leHBvcnQgY29uc3QgdXJsRmxhZyA9IHtcbiAgdXJsOiBGbGFncy5ib29sZWFuKHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdQcmludCB0aGUgZGVlcC1saW5rIFVSTCB0byB0aGUgcnVuL2Rhc2hib2FyZCBhbmQgZXhpdCAobm8gYnJvd3Nlciwgbm8gc2VydmVyKScsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLS11cmwnLFxuICB9KSxcbn07XG4iXX0=
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luc3BlY3QvZmxhZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUc7SUFDdEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDckIsV0FBVyxFQUFFLGdCQUFnQjtRQUM3QixRQUFRLEVBQUUsS0FBSztRQUNmLElBQUksRUFBRSxHQUFHO1FBQ1QsU0FBUyxFQUFFLFFBQVE7UUFDbkIsU0FBUyxFQUFFLGVBQWU7UUFDMUIsR0FBRyxFQUFFLE9BQU87UUFDWixPQUFPLEVBQUUsS0FBSztLQUNmLENBQUM7SUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNsQixXQUFXLEVBQUUsc0RBQXNEO1FBQ25FLFFBQVEsRUFBRSxLQUFLO1FBQ2YsSUFBSSxFQUFFLEdBQUc7UUFDVCxPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxZQUFZO0tBQ3hCLENBQUM7SUFDRixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNuQixXQUFXLEVBQUUscUNBQXFDO1FBQ2xELFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLEVBQUU7UUFDWCxTQUFTLEVBQUUsV0FBVztRQUN0QixTQUFTLEVBQUUsVUFBVTtRQUNyQixTQUFTLEVBQUUsUUFBUTtLQUNwQixDQUFDO0lBQ0YsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDcEIsV0FBVyxFQUFFLG9CQUFvQjtRQUNqQyxRQUFRLEVBQUUsS0FBSztRQUNmLElBQUksRUFBRSxHQUFHO1FBQ1QsT0FBTyxFQUFFLE9BQU87UUFDaEIsR0FBRyxFQUFFLHVCQUF1QjtRQUM1QixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVB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R0FBRyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDakIsV0FBVyxFQUNULCtFQUErRTtRQUNqRixRQUFRLEVBQUUsS0FBSztRQUNmLE9BQU8sRUFBRSxLQUFLO1FBQ2QsU0FBUyxFQUFFLFFBQVE7UUFDbkIsU0FBUyxFQUFFLE9BQU87S0FDbkIsQ0FBQztDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGFncyB9IGZyb20gJ0BvY2xpZi9jb3JlJztcblxuZXhwb3J0IGNvbnN0IGNsaUZsYWdzID0ge1xuICB2ZXJib3NlOiBGbGFncy5ib29sZWFuKHtcbiAgICBkZXNjcmlwdGlvbjogJ1ZlcmJvc2Ugb3V0cHV0JyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgY2hhcjogJ3YnLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLXYsIC0tdmVyYm9zZScsXG4gICAgZW52OiAnREVCVUcnLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9KSxcbiAganNvbjogRmxhZ3MuYm9vbGVhbih7XG4gICAgZGVzY3JpcHRpb246ICdvdXRwdXQgSlNPTiBpbnN0ZWFkIG9mIGh1bWFuLXJlYWRhYmxlIHRhYmxlcy9zdHJlYW1zJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgY2hhcjogJ2onLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLWosIC0tanNvbicsXG4gIH0pLFxuICBjdXJzb3I6IEZsYWdzLnN0cmluZyh7XG4gICAgZGVzY3JpcHRpb246ICdwYWdpbmF0aW9uIGN1cnNvciBmb3IgbGlzdCBjb21tYW5kcycsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6ICcnLFxuICAgIGhlbHBHcm91cDogJ0ZpbHRlcmluZycsXG4gICAgaGVscExhYmVsOiAnLS1jdXJzb3InLFxuICAgIGhlbHBWYWx1ZTogJ0NVUlNPUicsXG4gIH0pLFxuICBiYWNrZW5kOiBGbGFncy5zdHJpbmcoe1xuICAgIGRlc2NyaXB0aW9uOiAnYmFja2VuZCB0byBpbnNwZWN0JyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgY2hhcjogJ2InLFxuICAgIGRlZmF1bHQ6ICdsb2NhbCcsXG4gICAgZW52OiAnV09SS0ZMT1dfVEFSR0VUX1dPUkxEJyxcbiAgICBoZWxwR3JvdXA6ICdUYXJnZXQnLFxuICAgIGhlbHBMYWJlbDogJy1iLCAtLWJhY2tlbmQnLFxuICAgIGhlbHBWYWx1ZTogWydsb2NhbCcsICd2ZXJjZWwnLCAnPHlvdXItcGFja2FnZS1uYW1lPiddLFxuICAgIGRlZmF1bHRIZWxwOiAnbG9jYWwnLFxuICB9KSxcbiAgYXV0aFRva2VuOiBGbGFncy5zdHJpbmcoe1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0F1dGhlbnRpY2F0aW9uIHRva2VuIHRvIGJlIHBhc3NlZCB0byB0aGUgYmFja2VuZC4gSWYgbm90IHByb3ZpZGVkIGFuZCB0aGUgYmFja2VuZCBpcyB2ZXJjZWwsIHdpbGwgZmFsbCBiYWNrIHRvIHRoZSB0b2tlbiBnZW5lcmF0ZWQgYnkgYHZjIGxvZ2luYC4nLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBjaGFyOiAnYScsXG4gICAgZGVwZW5kc09uOiBbJ2JhY2tlbmQnXSxcbiAgICBkZWZhdWx0OiAnJyxcbiAgICBlbnY6ICdXT1JLRkxPV19WRVJDRUxfQVVUSF9UT0tFTicsXG4gICAgaGVscEdyb3VwOiAnVGFyZ2V0JyxcbiAgICBoZWxwTGFiZWw6ICctYSwgLS1hdXRoVG9rZW4nLFxuICAgIGhlbHBWYWx1ZTogJ1RPS0VOJyxcbiAgfSksXG4gIHByb2plY3Q6IEZsYWdzLnN0cmluZyh7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnSWYgYmFja2VuZCBpcyB2ZXJjZWwsIHRoZSB2ZXJjZWwgcHJvamVjdCB0byBhdXRoZW50aWNhdGUgYWdhaW5zdCcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6ICcnLFxuICAgIGRlcGVuZHNPbjogWydiYWNrZW5kJ10sXG4gICAgZW52OiAnV09SS0ZMT1dfVkVSQ0VMX1BST0pFQ1QnLFxuICAgIGhlbHBHcm91cDogJ1RhcmdldCcsXG4gICAgaGVscExhYmVsOiAnLS1wcm9qZWN0JyxcbiAgICBoZWxwVmFsdWU6ICdQUk9KRUNUJyxcbiAgfSksXG4gIHRlYW06IEZsYWdzLnN0cmluZyh7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnSWYgYmFja2VuZCBpcyB2ZXJjZWwsIHRoZSB2ZXJjZWwgdGVhbSB0byBhdXRoZW50aWNhdGUgYWdhaW5zdCcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlcGVuZHNPbjogWydiYWNrZW5kJ10sXG4gICAgZGVmYXVsdDogJycsXG4gICAgZW52OiAnV09SS0ZMT1dfVkVSQ0VMX1RFQU0nLFxuICAgIGhlbHBHcm91cDogJ1RhcmdldCcsXG4gICAgaGVscExhYmVsOiAnLS10ZWFtJyxcbiAgICBoZWxwVmFsdWU6ICdURUFNJyxcbiAgfSksXG4gIGVudjogRmxhZ3Muc3RyaW5nKHtcbiAgICBkZXNjcmlwdGlvbjogJ0lmIGJhY2tlbmQgaXMgdmVyY2VsLCB0aGUgdmVyY2VsIGVudmlyb25tZW50IHRvIHVzZScsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIG9wdGlvbnM6IFsncHJvZHVjdGlvbicsICdwcmV2aWV3J10sXG4gICAgZGVmYXVsdDogJ3Byb2R1Y3Rpb24nLFxuICAgIGNoYXI6ICdlJyxcbiAgICBkZXBlbmRzT246IFsnYmFja2VuZCddLFxuICAgIGVudjogJ1dPUktGTE9XX1ZFUkNFTF9FTlYnLFxuICAgIGhlbHBHcm91cDogJ1RhcmdldCcsXG4gICAgaGVscExhYmVsOiAnLWUsIC0tZW52JyxcbiAgICBoZWxwVmFsdWU6IFsncHJvZHVjdGlvbicsICdwcmV2aWV3J10sXG4gICAgZGVmYXVsdEhlbHA6ICdwcm9kdWN0aW9uJyxcbiAgfSksXG4gIHdlYjogRmxhZ3MuYm9vbGVhbih7XG4gICAgZGVzY3JpcHRpb246ICdPcGVuIHRoZSB3ZWIgVUkgaW5zdGVhZCBvZiBkaXNwbGF5aW5nIGluIHRlcm1pbmFsJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgY2hhcjogJ3cnLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLXcsIC0td2ViJyxcbiAgfSksXG4gIHdlYlBvcnQ6IEZsYWdzLmludGVnZXIoe1xuICAgIGRlc2NyaXB0aW9uOiAnUG9ydCB0byB1c2Ugd2hlbiBsYXVuY2hpbmcgdGhlIHdlYiBVSSAoZGVmYXVsdDogMzQ1NiknLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiAzNDU2LFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLS13ZWJQb3J0JyxcbiAgICBoZWxwVmFsdWU6ICdXRUJfUE9SVCcsXG4gICAgZW52OiAnV09SS0ZMT1dfV0VCX1BPUlQnLFxuICB9KSxcbiAgbm9Ccm93c2VyOiBGbGFncy5ib29sZWFuKHtcbiAgICBkZXNjcmlwdGlvbjogJ0Rpc2FibGUgYXV0b21hdGljIGJyb3dzZXIgb3BlbmluZyB3aGVuIGxhdW5jaGluZyB3ZWIgVUknLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICBlbnY6ICdXT1JLRkxPV19ESVNBQkxFX0JST1dTRVJfT1BFTicsXG4gICAgaGVscEdyb3VwOiAnT3V0cHV0JyxcbiAgICBoZWxwTGFiZWw6ICctLW5vQnJvd3NlcicsXG4gIH0pLFxuICBsb2NhbFVpOiBGbGFncy5ib29sZWFuKHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdVc2UgbG9jYWwgd2ViIFVJIGluc3RlYWQgb2YgVmVyY2VsIGRhc2hib2FyZCAod2hlbiBiYWNrZW5kIGlzIHZlcmNlbCknLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICBlbnY6ICdXT1JLRkxPV19MT0NBTF9VSScsXG4gICAgaGVscEdyb3VwOiAnT3V0cHV0JyxcbiAgICBoZWxwTGFiZWw6ICctLWxvY2FsVWknLFxuICB9KSxcbiAgc3RhbmRhbG9uZTogRmxhZ3MuYm9vbGVhbih7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnQWx3YXlzIHN0YXJ0IHRoZSBzdGFuZGFsb25lIHdlYiBVSSwgZXZlbiBpZiBhbiBlbWJlZGRlZCBkYXNoYm9hcmQgKGUuZy4gL193b3JrZmxvdykgaXMgYWxyZWFkeSBydW5uaW5nJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgZW52OiAnV09SS0ZMT1dfU1RBTkRBTE9ORV9VSScsXG4gICAgaGVscEdyb3VwOiAnT3V0cHV0JyxcbiAgICBoZWxwTGFiZWw6ICctLXN0YW5kYWxvbmUnLFxuICB9KSxcbiAgc29ydDogRmxhZ3Muc3RyaW5nKHtcbiAgICBkZXNjcmlwdGlvbjogJ3NvcnQgb3JkZXIgZm9yIGxpc3QgY29tbWFuZHMnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBvcHRpb25zOiBbJ2FzYycsICdkZXNjJ10sXG4gICAgLy8gTm8gcGFyc2VyLWxldmVsIGRlZmF1bHQ6IGV2ZXJ5IHRpbWUtb3JkZXJlZCBsaXN0aW5nIGFscmVhZHkgZmFsbHMgYmFja1xuICAgIC8vIHRvIGBkZXNjYCBpdHNlbGYsIGFuZCBhIGRlZmF1bHQgaGVyZSBtYWRlIHRoZSBmbGFnIGluZGlzdGluZ3Vpc2hhYmxlXG4gICAgLy8gZnJvbSBhbiBleHBsaWNpdCBvbmUsIHNvIGBpbnNwZWN0IGF0dHJpYnV0ZXNgIGNvdWxkIG5vdCB0ZWxsIHRoYXQgaXRcbiAgICAvLyBzaG91bGQgbGVhdmUgdGhlIGJhY2tlbmQncyBhbHBoYWJldGljYWwga2V5IG9yZGVyIGFsb25lLlxuICAgIGhlbHBHcm91cDogJ0ZpbHRlcmluZycsXG4gICAgaGVscExhYmVsOiAnLS1zb3J0JyxcbiAgICBoZWxwVmFsdWU6IFsnYXNjJywgJ2Rlc2MnXSxcbiAgICBkZWZhdWx0SGVscDogJ2Rlc2MnLFxuICB9KSxcbiAgbGltaXQ6IEZsYWdzLmludGVnZXIoe1xuICAgIGRlc2NyaXB0aW9uOiAnbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZScsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IDIwLFxuICAgIGhlbHBHcm91cDogJ0ZpbHRlcmluZycsXG4gICAgaGVscExhYmVsOiAnLS1saW1pdCcsXG4gICAgaGVscFZhbHVlOiAnTlVNQkVSJyxcbiAgfSksXG4gIGludGVyYWN0aXZlOiBGbGFncy5ib29sZWFuKHtcbiAgICBkZXNjcmlwdGlvbjogJ0VuYWJsZSBpbnRlcmFjdGl2ZSBwYWdpbmF0aW9uIHdpdGgga2V5Ym9hcmQgY29udHJvbHMnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBjaGFyOiAnaScsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgaGVscEdyb3VwOiAnT3V0cHV0JyxcbiAgICBoZWxwTGFiZWw6ICctaSwgLS1pbnRlcmFjdGl2ZScsXG4gIH0pLFxufTtcblxuLyoqXG4gKiBGbGFnIGZvciBwcmludGluZyBhIHNoYXJlYWJsZSBkZWVwLWxpbmsgVVJMIGluc3RlYWQgb2Ygb3BlbmluZyB0aGUgd2ViIFVJLlxuICogT25seSByZWxldmFudCB0byBjb21tYW5kcyB0aGF0IGNhbiBvcGVuIGEgZGFzaGJvYXJkIChgaW5zcGVjdGAsIGB3ZWJgKSwgc28gaXRcbiAqIGlzIGV4cG9ydGVkIHNlcGFyYXRlbHkgcmF0aGVyIHRoYW4gYnVuZGxlZCBpbnRvIGBjbGlGbGFnc2AuXG4gKi9cbmV4cG9ydCBjb25zdCB1cmxGbGFnID0ge1xuICB1cmw6IEZsYWdzLmJvb2xlYW4oe1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1ByaW50IHRoZSBkZWVwLWxpbmsgVVJMIHRvIHRoZSBydW4vZGFzaGJvYXJkIGFuZCBleGl0IChubyBicm93c2VyLCBubyBzZXJ2ZXIpJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgaGVscEdyb3VwOiAnT3V0cHV0JyxcbiAgICBoZWxwTGFiZWw6ICctLXVybCcsXG4gIH0pLFxufTtcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/hydration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAQL,KAAK,QAAQ,EAEd,MAAM,qCAAqC,CAAC;AAK7C;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAC7B,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,GACpD,IAAI,CAAC;AAGT,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,WAAW,EACX,KAAK,QAAQ,EACb,eAAe,EACf,KAAK,SAAS,EACd,UAAU,GACX,MAAM,qCAAqC,CAAC;AA8B7C;;;;;;GAMG;AACH,cAAM,gBAAgB;IACpB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM;IAI1B,MAAM,IAAI,MAAM;IAIhB,QAAQ,IAAI,MAAM;CAGnB;AAKD,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAExE;AAMD;;;;;;GAMG;AACH,cAAM,cAAc;IAClB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM;IAI1B,MAAM,IAAI,MAAM;IAIhB,QAAQ,IAAI,MAAM;CAGnB;AAKD,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAEpE;AAwED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CA6DzC;AAgID;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,QAAQ,EAAE,CAAC,EACX,WAAW,CAAC,EAAE,qBAAqB,GAClC,OAAO,CAAC,CAAC,CAAC,CASZ"}
1
+ {"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/hydration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAQL,KAAK,QAAQ,EAEd,MAAM,qCAAqC,CAAC;AAK7C;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAC7B,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,GACpD,IAAI,CAAC;AAGT,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,WAAW,EACX,KAAK,QAAQ,EACb,eAAe,EACf,KAAK,SAAS,EACd,UAAU,GACX,MAAM,qCAAqC,CAAC;AA8B7C;;;;;;GAMG;AACH,cAAM,gBAAgB;IACpB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM;IAI1B,MAAM,IAAI,MAAM;IAIhB,QAAQ,IAAI,MAAM;CAGnB;AAKD,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAExE;AAMD;;;;;;GAMG;AACH,cAAM,cAAc;IAClB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM;IAI1B,MAAM,IAAI,MAAM;IAIhB,QAAQ,IAAI,MAAM;CAGnB;AAKD,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAEpE;AAyED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CA6DzC;AAgID;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,QAAQ,EAAE,CAAC,EACX,WAAW,CAAC,EAAE,qBAAqB,GAClC,OAAO,CAAC,CAAC,CAAC,CASZ"}