@cardelli/ambit 0.4.4 → 0.4.5
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 +4 -4
- package/esm/cli/commands/auth.js +5 -37
- package/esm/cli/commands/create/index.js +3 -3
- package/esm/cli/commands/deploy/index.js +2 -1
- package/esm/cli/commands/deploy/machine.d.ts.map +1 -1
- package/esm/cli/commands/destroy/app.js +1 -1
- package/esm/cli/commands/destroy/index.js +1 -1
- package/esm/cli/commands/destroy/network.d.ts.map +1 -1
- package/esm/cli/commands/destroy/network.js +13 -7
- package/esm/cli/commands/doctor.js +1 -1
- package/esm/cli/commands/list/apps.js +2 -2
- package/esm/cli/commands/list/index.js +1 -1
- package/esm/cli/commands/list/networks.js +2 -2
- package/esm/cli/commands/logs.js +1 -1
- package/esm/cli/commands/secrets.js +2 -2
- package/esm/cli/commands/share.js +2 -2
- package/esm/cli/commands/status/app.js +1 -1
- package/esm/cli/commands/status/index.js +1 -1
- package/esm/cli/commands/status/network.js +1 -1
- package/esm/cli/commands/status/networks.js +2 -2
- package/esm/cli/mod.js +1 -1
- package/esm/deno.js +1 -1
- package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/_layout.d.ts +5 -1
- package/esm/deps/jsr.io/@cliffy/table/1.1.0/_layout.d.ts.map +1 -0
- package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/_layout.js +101 -16
- package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/_utils.d.ts +6 -9
- package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/_utils.d.ts.map +1 -1
- package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/_utils.js +9 -2
- package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/border.d.ts.map +1 -1
- package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/cell.d.ts.map +1 -1
- package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/column.d.ts +35 -0
- package/esm/deps/jsr.io/@cliffy/table/1.1.0/column.d.ts.map +1 -0
- package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/column.js +39 -0
- package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/consume_words.d.ts.map +1 -1
- package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/mod.d.ts.map +1 -1
- package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/row.d.ts.map +1 -1
- package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/table.d.ts +47 -0
- package/esm/deps/jsr.io/@cliffy/table/1.1.0/table.d.ts.map +1 -0
- package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/table.js +55 -0
- package/esm/deps/jsr.io/@cliffy/table/1.1.0/unicode_width.d.ts.map +1 -0
- package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/unicode_width.js +15 -9
- package/esm/deps/jsr.io/@std/cli/1.0.29/_data.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/_run_length.d.ts.map +1 -1
- package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/mod.d.ts.map +1 -1
- package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/parse_args.d.ts.map +1 -1
- package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/prompt_secret.d.ts.map +1 -1
- package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/prompt_secret.js +1 -1
- package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/unicode_width.d.ts.map +1 -1
- package/esm/deps/jsr.io/@std/collections/{1.1.6 → 1.1.7}/deep_merge.d.ts.map +1 -1
- package/esm/deps/jsr.io/@std/fmt/1.0.10/colors.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fmt/{1.0.9 → 1.0.10}/colors.js +2 -2
- package/esm/deps/jsr.io/@std/internal/1.0.13/_os.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/internal/{1.0.12 → 1.0.13}/_os.js +1 -1
- package/esm/deps/jsr.io/@std/internal/{1.0.12 → 1.0.13}/os.d.ts.map +1 -1
- package/esm/deps/jsr.io/@std/internal/{1.0.12 → 1.0.13}/os.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/basename.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/constants.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/dirname.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/extname.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/format.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/from_file_url.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/glob_to_regexp.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/is_absolute.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/join.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/join_globs.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/normalize.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/normalize_glob.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/parse.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/relative.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/resolve.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/to_file_url.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/to_namespaced_path.js +1 -1
- package/esm/deps/jsr.io/@std/toml/1.0.11/_parser.js +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/index.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/checks.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/coerce.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/compat.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/errors.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/errors.js +2 -2
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/external.d.ts +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/classic/external.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/from-json-schema.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/from-json-schema.js +31 -16
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/iso.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/parse.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/schemas.d.ts +42 -14
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/classic/schemas.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/schemas.js +356 -118
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/api.d.ts +26 -5
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/core/api.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/api.js +7 -2
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/checks.d.ts +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/checks.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/core.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/core.js +4 -2
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/doc.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/errors.d.ts +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/core/errors.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/errors.js +26 -23
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/index.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/json-schema-generator.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/json-schema-processors.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/json-schema-processors.js +16 -20
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/json-schema.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/parse.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/parse.js +7 -7
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/regexes.d.ts +6 -0
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/core/regexes.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/regexes.js +7 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/registries.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/schemas.d.ts +39 -1
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/core/schemas.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/schemas.js +210 -64
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/standard-schema.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/to-json-schema.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/to-json-schema.js +12 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/util.d.ts +1 -0
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/util.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/util.js +55 -32
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/versions.d.ts +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/versions.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/versions.js +2 -2
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ar.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/az.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/be.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/bg.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ca.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/cs.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/da.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/de.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/locales/el.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/locales/el.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/locales/el.js +109 -0
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/locales/en.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/en.js +4 -0
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/eo.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/es.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/fa.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/fi.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/fr-CA.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/locales/fr.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/fr.js +24 -7
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/he.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/locales/hr.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/locales/hr.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/locales/hr.js +122 -0
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/hu.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/hy.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/id.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/index.d.ts +3 -0
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/index.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/index.js +3 -0
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/is.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/it.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/it.js +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ja.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ka.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ka.js +8 -8
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/kh.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/km.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ko.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/lt.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/mk.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ms.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/nl.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/no.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ota.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/pl.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ps.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/pt.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/locales/ro.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/locales/ro.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/locales/ro.js +119 -0
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ru.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/sl.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/sv.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ta.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/th.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/tr.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ua.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/uk.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ur.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/4.4.3/src/v4/locales/uz.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/uz.js +1 -0
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/vi.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/yo.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/zh-CN.d.ts.map +1 -1
- package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/zh-TW.d.ts.map +1 -1
- package/esm/providers/fly.d.ts +1 -0
- package/esm/providers/fly.d.ts.map +1 -1
- package/esm/providers/fly.js +55 -27
- package/esm/schemas/fly.d.ts +1 -1
- package/esm/schemas/fly.js +1 -1
- package/esm/schemas/tailscale.d.ts +1 -1
- package/esm/schemas/tailscale.js +1 -1
- package/esm/util/credentials.d.ts +0 -3
- package/esm/util/credentials.d.ts.map +1 -1
- package/esm/util/credentials.js +5 -28
- package/esm/util/fly-token.d.ts +7 -0
- package/esm/util/fly-token.d.ts.map +1 -0
- package/esm/util/fly-token.js +50 -0
- package/esm/util/fly-transforms.d.ts +1 -1
- package/esm/util/session.d.ts.map +1 -1
- package/esm/util/session.js +3 -2
- package/esm/util/tailscale-local.d.ts +8 -0
- package/esm/util/tailscale-local.d.ts.map +1 -1
- package/esm/util/tailscale-local.js +37 -0
- package/package.json +1 -1
- package/esm/deps/jsr.io/@cliffy/table/1.0.0/_layout.d.ts.map +0 -1
- package/esm/deps/jsr.io/@cliffy/table/1.0.0/column.d.ts.map +0 -1
- package/esm/deps/jsr.io/@cliffy/table/1.0.0/table.d.ts.map +0 -1
- package/esm/deps/jsr.io/@cliffy/table/1.0.0/unicode_width.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/cli/1.0.28/_data.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/fmt/1.0.9/colors.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/internal/1.0.12/_os.d.ts.map +0 -1
- package/esm/deps/jsr.io/@zod/zod/4.3.6/src/v4/classic/external.d.ts.map +0 -1
- package/esm/deps/jsr.io/@zod/zod/4.3.6/src/v4/classic/schemas.d.ts.map +0 -1
- package/esm/deps/jsr.io/@zod/zod/4.3.6/src/v4/core/api.d.ts.map +0 -1
- package/esm/deps/jsr.io/@zod/zod/4.3.6/src/v4/core/errors.d.ts.map +0 -1
- package/esm/deps/jsr.io/@zod/zod/4.3.6/src/v4/core/regexes.d.ts.map +0 -1
- package/esm/deps/jsr.io/@zod/zod/4.3.6/src/v4/core/schemas.d.ts.map +0 -1
- package/esm/deps/jsr.io/@zod/zod/4.3.6/src/v4/locales/en.d.ts.map +0 -1
- package/esm/deps/jsr.io/@zod/zod/4.3.6/src/v4/locales/fr.d.ts.map +0 -1
- package/esm/deps/jsr.io/@zod/zod/4.3.6/src/v4/locales/uz.d.ts.map +0 -1
- /package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/border.d.ts +0 -0
- /package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/border.js +0 -0
- /package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/cell.d.ts +0 -0
- /package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/cell.js +0 -0
- /package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/consume_words.d.ts +0 -0
- /package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/consume_words.js +0 -0
- /package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/mod.d.ts +0 -0
- /package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/mod.js +0 -0
- /package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/row.d.ts +0 -0
- /package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/row.js +0 -0
- /package/esm/deps/jsr.io/@cliffy/table/{1.0.0 → 1.1.0}/unicode_width.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/_data.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/_data.js +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/_run_length.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/_run_length.js +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/mod.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/mod.js +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/parse_args.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/parse_args.js +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/prompt_secret.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/unicode_width.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.28 → 1.0.29}/unicode_width.js +0 -0
- /package/esm/deps/jsr.io/@std/collections/{1.1.6 → 1.1.7}/deep_merge.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/collections/{1.1.6 → 1.1.7}/deep_merge.js +0 -0
- /package/esm/deps/jsr.io/@std/fmt/{1.0.9 → 1.0.10}/colors.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/internal/{1.0.12 → 1.0.13}/_os.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/internal/{1.0.12 → 1.0.13}/os.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/index.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/index.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/checks.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/checks.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/coerce.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/coerce.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/compat.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/compat.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/errors.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/external.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/from-json-schema.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/iso.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/iso.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/parse.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/classic/parse.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/checks.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/core.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/doc.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/doc.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/index.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/index.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/json-schema-generator.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/json-schema-generator.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/json-schema-processors.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/json-schema.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/json-schema.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/parse.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/registries.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/registries.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/standard-schema.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/standard-schema.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/core/to-json-schema.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ar.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ar.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/az.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/az.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/be.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/be.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/bg.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/bg.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ca.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ca.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/cs.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/cs.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/da.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/da.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/de.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/de.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/en.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/eo.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/eo.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/es.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/es.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/fa.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/fa.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/fi.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/fi.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/fr-CA.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/fr-CA.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/fr.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/he.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/he.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/hu.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/hu.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/hy.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/hy.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/id.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/id.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/is.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/is.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/it.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ja.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ja.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ka.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/kh.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/kh.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/km.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/km.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ko.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ko.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/lt.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/lt.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/mk.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/mk.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ms.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ms.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/nl.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/nl.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/no.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/no.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ota.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ota.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/pl.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/pl.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ps.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ps.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/pt.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/pt.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ru.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ru.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/sl.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/sl.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/sv.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/sv.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ta.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ta.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/th.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/th.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/tr.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/tr.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ua.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ua.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/uk.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/uk.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ur.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/ur.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/uz.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/vi.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/vi.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/yo.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/yo.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/zh-CN.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/zh-CN.js +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/zh-TW.d.ts +0 -0
- /package/esm/deps/jsr.io/@zod/zod/{4.3.6 → 4.4.3}/src/v4/locales/zh-TW.js +0 -0
package/README.md
CHANGED
|
@@ -294,12 +294,12 @@ npx @cardelli/ambit logs my-app.lab --no-tail | less -R # scroll buffered logs
|
|
|
294
294
|
|
|
295
295
|
### `ambit destroy network <name>`
|
|
296
296
|
|
|
297
|
-
Tears down a network: destroys the router, cleans up DNS, removes the Tailscale device, and automatically removes the router's tag from your Tailscale ACL policy (tagOwners and
|
|
297
|
+
Tears down a network: destroys the router, cleans up DNS, removes the Tailscale device, and automatically removes the router's tag from your Tailscale ACL policy (`tagOwners`, `autoApprovers`, and tag-referencing access rules). If there are workload apps still on the network, ambit warns you before proceeding.
|
|
298
298
|
|
|
299
299
|
| Flag | Description |
|
|
300
300
|
| ----------------- | ------------------------------ |
|
|
301
301
|
| `--org <org>` | Fly.io organization slug |
|
|
302
|
-
| `--manual` | Skip automatic Tailscale ACL cleanup
|
|
302
|
+
| `--manual` | Skip automatic Tailscale ACL cleanup |
|
|
303
303
|
| `-y`, `--yes` | Skip confirmation prompts |
|
|
304
304
|
| `--json` | Machine-readable JSON output |
|
|
305
305
|
|
|
@@ -340,7 +340,7 @@ Checks app health: verifies the app is deployed and running, then checks the rou
|
|
|
340
340
|
|
|
341
341
|
## Access Control
|
|
342
342
|
|
|
343
|
-
By default, `ambit create` automatically adds the router's tag to your Tailscale ACL policy (`tagOwners` and `autoApprovers`). `ambit destroy network` automatically removes
|
|
343
|
+
By default, `ambit create` automatically adds the router's tag to your Tailscale ACL policy (`tagOwners` and `autoApprovers`). `ambit destroy network` automatically removes those entries and any access rules that reference the router tag. Pass `--manual` to either command to skip this and manage the policy yourself — useful if your API token lacks ACL write permission (`policy_file` scope).
|
|
344
344
|
|
|
345
345
|
If you want to lock down which users can reach which networks, two rules do the job — one for DNS queries and one for data traffic:
|
|
346
346
|
|
|
@@ -357,7 +357,7 @@ If you want to lock down which users can reach which networks, two rules do the
|
|
|
357
357
|
}
|
|
358
358
|
```
|
|
359
359
|
|
|
360
|
-
|
|
360
|
+
On destroy, Ambit removes access-rule references to the router tag, such as `tag:ambit-infra:53`, before removing the tag owner. Subnet-only access rules do not reference the tag and may still need manual cleanup.
|
|
361
361
|
|
|
362
362
|
## Multiple Networks
|
|
363
363
|
|
package/esm/cli/commands/auth.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Auth Command - Manage Fly.io and Tailscale Authentication
|
|
3
3
|
// =============================================================================
|
|
4
4
|
import * as dntShim from "../../_dnt.shims.js";
|
|
5
|
-
import { parseArgs } from "../../deps/jsr.io/@std/cli/1.0.
|
|
5
|
+
import { parseArgs } from "../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
6
6
|
import { bold, confirm, readSecret } from "../../lib/cli.js";
|
|
7
7
|
import { checkArgs } from "../../lib/args.js";
|
|
8
8
|
import { createOutput } from "../../lib/output.js";
|
|
@@ -12,7 +12,6 @@ import { createTailscaleProvider } from "../../providers/tailscale.js";
|
|
|
12
12
|
import { getCredentialStore } from "../../util/credentials.js";
|
|
13
13
|
import { TAILSCALE_API_KEY_PREFIX } from "../../util/constants.js";
|
|
14
14
|
import { FlyAuthSchema } from "../../schemas/fly.js";
|
|
15
|
-
import { fileExists } from "../../lib/cli.js";
|
|
16
15
|
// =============================================================================
|
|
17
16
|
// Helpers
|
|
18
17
|
// =============================================================================
|
|
@@ -26,15 +25,6 @@ const tryFlyWhoami = async (token) => {
|
|
|
26
25
|
const parsed = FlyAuthSchema.safeParse(auth.value);
|
|
27
26
|
return parsed.success ? parsed.data.email : null;
|
|
28
27
|
};
|
|
29
|
-
const readFlyConfigToken = async () => {
|
|
30
|
-
const home = dntShim.Deno.env.get("HOME") || dntShim.Deno.env.get("USERPROFILE") || "";
|
|
31
|
-
const configPath = `${home}/.fly/config.yml`;
|
|
32
|
-
if (!(await fileExists(configPath)))
|
|
33
|
-
return null;
|
|
34
|
-
const content = await dntShim.Deno.readTextFile(configPath);
|
|
35
|
-
const match = content.match(/access_token:\s*(.+)/);
|
|
36
|
-
return match?.[1]?.trim() ?? null;
|
|
37
|
-
};
|
|
38
28
|
// =============================================================================
|
|
39
29
|
// Auth Login
|
|
40
30
|
// =============================================================================
|
|
@@ -59,8 +49,7 @@ ${bold("OPTIONS")}
|
|
|
59
49
|
|
|
60
50
|
${bold("DESCRIPTION")}
|
|
61
51
|
Authenticates with both Fly.io and Tailscale. Only prompts for
|
|
62
|
-
credentials that are missing or invalid
|
|
63
|
-
are preserved.
|
|
52
|
+
credentials that are missing or invalid.
|
|
64
53
|
|
|
65
54
|
${bold("EXAMPLES")}
|
|
66
55
|
ambit auth login
|
|
@@ -80,21 +69,11 @@ ${bold("EXAMPLES")}
|
|
|
80
69
|
if (!email) {
|
|
81
70
|
return out.die("Invalid Fly.io API Token");
|
|
82
71
|
}
|
|
83
|
-
await credentials.setFlyToken(args["fly-api-key"]);
|
|
84
72
|
out.ok(`Authenticated as ${email}`);
|
|
85
73
|
flyEmail = email;
|
|
86
74
|
}
|
|
87
75
|
else {
|
|
88
|
-
|
|
89
|
-
const storedToken = await credentials.getFlyToken();
|
|
90
|
-
const configToken = await readFlyConfigToken();
|
|
91
|
-
const bestToken = configToken && configToken !== storedToken
|
|
92
|
-
? configToken
|
|
93
|
-
: storedToken;
|
|
94
|
-
if (bestToken && bestToken !== storedToken) {
|
|
95
|
-
await credentials.setFlyToken(bestToken);
|
|
96
|
-
}
|
|
97
|
-
const bestEmail = bestToken ? await tryFlyWhoami(bestToken) : null;
|
|
76
|
+
const bestEmail = await tryFlyWhoami();
|
|
98
77
|
if (bestEmail) {
|
|
99
78
|
out.ok(`Already Authenticated as ${bestEmail}`);
|
|
100
79
|
flyEmail = bestEmail;
|
|
@@ -109,15 +88,10 @@ ${bold("EXAMPLES")}
|
|
|
109
88
|
if (!loginResult.ok) {
|
|
110
89
|
return out.die("Fly.io Authentication Failed");
|
|
111
90
|
}
|
|
112
|
-
const
|
|
113
|
-
if (!token) {
|
|
114
|
-
return out.die("Could Not Read Fly.io Token After Login");
|
|
115
|
-
}
|
|
116
|
-
const email = await tryFlyWhoami(token);
|
|
91
|
+
const email = await tryFlyWhoami();
|
|
117
92
|
if (!email) {
|
|
118
93
|
return out.die("Fly.io Authentication Verification Failed");
|
|
119
94
|
}
|
|
120
|
-
await credentials.setFlyToken(token);
|
|
121
95
|
out.ok(`Authenticated as ${email}`);
|
|
122
96
|
flyEmail = email;
|
|
123
97
|
}
|
|
@@ -218,13 +192,7 @@ ${bold("EXAMPLES")}
|
|
|
218
192
|
// Step 1: Fly.io
|
|
219
193
|
// =========================================================================
|
|
220
194
|
let flyEmail = null;
|
|
221
|
-
|
|
222
|
-
if (storedToken) {
|
|
223
|
-
flyEmail = await tryFlyWhoami(storedToken);
|
|
224
|
-
}
|
|
225
|
-
if (!flyEmail) {
|
|
226
|
-
flyEmail = await tryFlyWhoami();
|
|
227
|
-
}
|
|
195
|
+
flyEmail = await tryFlyWhoami();
|
|
228
196
|
// =========================================================================
|
|
229
197
|
// Step 2: Tailscale
|
|
230
198
|
// =========================================================================
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// =============================================================================
|
|
2
2
|
// Create Command - Create Tailscale Subnet Router on Fly.io Custom Network
|
|
3
3
|
// =============================================================================
|
|
4
|
-
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.
|
|
4
|
+
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
5
5
|
import { bold } from "../../../lib/cli.js";
|
|
6
6
|
import { checkArgs } from "../../../lib/args.js";
|
|
7
7
|
import { createOutput } from "../../../lib/output.js";
|
|
@@ -21,12 +21,12 @@ import { createTransition, hydrateCreate, reportSkipped, } from "./machine.js";
|
|
|
21
21
|
// =============================================================================
|
|
22
22
|
const stageFlyConfig = async (out, opts) => {
|
|
23
23
|
out.header("Step 1: Fly.io Configuration").blank();
|
|
24
|
-
const
|
|
25
|
-
const fly = createFlyProvider(flyToken ?? undefined);
|
|
24
|
+
const fly = createFlyProvider();
|
|
26
25
|
await fly.auth.ensureInstalled();
|
|
27
26
|
const email = await fly.auth.login({ interactive: !opts.json });
|
|
28
27
|
out.ok(`Authenticated as ${email}`);
|
|
29
28
|
const org = await resolveOrg(fly, opts, out);
|
|
29
|
+
await fly.auth.useOrgToken(org);
|
|
30
30
|
const region = opts.region || "iad";
|
|
31
31
|
out.ok(`Using Region: ${region}`);
|
|
32
32
|
out.blank();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// =============================================================================
|
|
2
2
|
// Deploy Command - Safely Deploy a Workload App on a Custom Private Network
|
|
3
3
|
// =============================================================================
|
|
4
|
-
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.
|
|
4
|
+
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
5
5
|
import { bold } from "../../../lib/cli.js";
|
|
6
6
|
import { checkArgs } from "../../../lib/args.js";
|
|
7
7
|
import { createOutput } from "../../../lib/output.js";
|
|
@@ -24,6 +24,7 @@ const stageFlyConfig = async (out, opts) => {
|
|
|
24
24
|
const email = await fly.auth.login({ interactive: !opts.json });
|
|
25
25
|
out.ok(`Authenticated as ${email}`);
|
|
26
26
|
const org = await resolveOrg(fly, opts, out);
|
|
27
|
+
await fly.auth.useOrgToken(org);
|
|
27
28
|
out.blank();
|
|
28
29
|
return { fly, org };
|
|
29
30
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/deploy/machine.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACvB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,OAAO,GACP,UAAU,CAAC;AAMf,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE;QACL,mBAAmB,EAAE,MAAM,CAAC;QAC5B,aAAa,EAAE,MAAM,CAAC;QACtB,mBAAmB,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjE,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,SAAS,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,WAAW,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,iBAAiB,CAAC;IACjC,KAAK,CAAC,EAAE;QACN,mBAAmB,EAAE,MAAM,CAAC;QAC5B,aAAa,EAAE,MAAM,CAAC;QACtB,mBAAmB,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjE,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH;AAaD,eAAO,MAAM,mBAAmB,GAC9B,KAAK,MAAM,CAAC,YAAY,CAAC,EACzB,YAAY,WAAW,SAMxB,CAAC;AAMF,eAAO,MAAM,aAAa,GACxB,KAAK,SAAS,KACb,OAAO,CAAC,WAAW,CAMrB,CAAC;AAMF,eAAO,MAAM,gBAAgB,GAC3B,OAAO,WAAW,EAClB,KAAK,SAAS,KACb,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/deploy/machine.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACvB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,OAAO,GACP,UAAU,CAAC;AAMf,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE;QACL,mBAAmB,EAAE,MAAM,CAAC;QAC5B,aAAa,EAAE,MAAM,CAAC;QACtB,mBAAmB,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjE,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,SAAS,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,WAAW,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,iBAAiB,CAAC;IACjC,KAAK,CAAC,EAAE;QACN,mBAAmB,EAAE,MAAM,CAAC;QAC5B,aAAa,EAAE,MAAM,CAAC;QACtB,mBAAmB,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjE,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH;AAaD,eAAO,MAAM,mBAAmB,GAC9B,KAAK,MAAM,CAAC,YAAY,CAAC,EACzB,YAAY,WAAW,SAMxB,CAAC;AAMF,eAAO,MAAM,aAAa,GACxB,KAAK,SAAS,KACb,OAAO,CAAC,WAAW,CAMrB,CAAC;AAMF,eAAO,MAAM,gBAAgB,GAC3B,OAAO,WAAW,EAClB,KAAK,SAAS,KACb,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAmH7B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// =============================================================================
|
|
2
2
|
// Destroy App — Destroy a Workload App on a Network
|
|
3
3
|
// =============================================================================
|
|
4
|
-
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.
|
|
4
|
+
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
5
5
|
import { bold, confirm } from "../../../lib/cli.js";
|
|
6
6
|
import { checkArgs } from "../../../lib/args.js";
|
|
7
7
|
import { createOutput } from "../../../lib/output.js";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Destroy Command - Destroy Networks or Apps
|
|
3
3
|
// =============================================================================
|
|
4
4
|
import * as dntShim from "../../../_dnt.shims.js";
|
|
5
|
-
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.
|
|
5
|
+
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
6
6
|
import { bold } from "../../../lib/cli.js";
|
|
7
7
|
import { checkArgs } from "../../../lib/args.js";
|
|
8
8
|
import { registerCommand } from "../../mod.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/destroy/network.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/destroy/network.ts"],"names":[],"mappings":"AA8VA,eAAO,MAAM,cAAc,GAAU,MAAM,MAAM,EAAE,KAAG,OAAO,CAAC,IAAI,CA2DjE,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// =============================================================================
|
|
2
2
|
// Destroy Network — Tear Down Router and Clean Up Tailnet
|
|
3
3
|
// =============================================================================
|
|
4
|
-
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.
|
|
4
|
+
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
5
5
|
import { bold, confirm } from "../../../lib/cli.js";
|
|
6
6
|
import { checkArgs } from "../../../lib/args.js";
|
|
7
7
|
import { createOutput } from "../../../lib/output.js";
|
|
@@ -9,7 +9,7 @@ import { Result } from "../../../lib/result.js";
|
|
|
9
9
|
import { runMachine } from "../../../lib/machine.js";
|
|
10
10
|
import { findRouterApp, listWorkloadAppsOnNetwork } from "../../../util/discovery.js";
|
|
11
11
|
import { getRouterTag } from "../../../util/naming.js";
|
|
12
|
-
import { isAutoApproverConfigured, isTagOwnerConfigured, unpatchAutoApprover, unpatchTagOwner, } from "../../../util/tailscale-local.js";
|
|
12
|
+
import { isAutoApproverConfigured, isTagOwnerConfigured, unpatchAclTagReferences, unpatchAutoApprover, unpatchTagOwner, } from "../../../util/tailscale-local.js";
|
|
13
13
|
import { initSession } from "../../../util/session.js";
|
|
14
14
|
// =============================================================================
|
|
15
15
|
// Phase Labels
|
|
@@ -120,6 +120,11 @@ const destroyNetworkTransition = async (phase, ctx) => {
|
|
|
120
120
|
return Result.ok("complete");
|
|
121
121
|
}
|
|
122
122
|
let changed = false;
|
|
123
|
+
const withoutAclRefs = unpatchAclTagReferences(policy, tag);
|
|
124
|
+
if (withoutAclRefs !== policy) {
|
|
125
|
+
policy = withoutAclRefs;
|
|
126
|
+
changed = true;
|
|
127
|
+
}
|
|
123
128
|
if (isTagOwnerConfigured(policy, tag)) {
|
|
124
129
|
policy = unpatchTagOwner(policy, tag);
|
|
125
130
|
changed = true;
|
|
@@ -195,8 +200,8 @@ const stageSummary = (out, ctx) => {
|
|
|
195
200
|
const tag = ctx.tag || getRouterTag(ctx.network);
|
|
196
201
|
if (!ctx.manual) {
|
|
197
202
|
out.blank()
|
|
198
|
-
.dim("If You Added ACL Rules
|
|
199
|
-
.dim(` acls: rules
|
|
203
|
+
.dim("If You Added Subnet-Only ACL Rules for This Router, Remember to Remove:")
|
|
204
|
+
.dim(` acls: rules for this network's subnet`)
|
|
200
205
|
.blank();
|
|
201
206
|
}
|
|
202
207
|
else if (ctx.tag) {
|
|
@@ -235,14 +240,15 @@ ${bold("USAGE")}
|
|
|
235
240
|
|
|
236
241
|
${bold("OPTIONS")}
|
|
237
242
|
--org <org> Fly.io organization slug
|
|
238
|
-
--manual Skip automatic Tailscale ACL cleanup
|
|
243
|
+
--manual Skip automatic Tailscale ACL cleanup
|
|
239
244
|
-y, --yes Skip confirmation prompts
|
|
240
245
|
--json Output as JSON
|
|
241
246
|
|
|
242
247
|
${bold("DESCRIPTION")}
|
|
243
248
|
By default, ambit removes the router's tag from your Tailscale ACL
|
|
244
|
-
policy (tagOwners
|
|
245
|
-
lacks ACL write permission or you prefer
|
|
249
|
+
policy (tagOwners, autoApprovers, and tag-referencing access rules).
|
|
250
|
+
Use --manual if your API token lacks ACL write permission or you prefer
|
|
251
|
+
to manage the policy yourself.
|
|
246
252
|
|
|
247
253
|
${bold("EXAMPLES")}
|
|
248
254
|
ambit destroy network browsers
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// =============================================================================
|
|
2
2
|
// Doctor Command - Verify Environment and Infrastructure Health
|
|
3
3
|
// =============================================================================
|
|
4
|
-
import { parseArgs } from "../../deps/jsr.io/@std/cli/1.0.
|
|
4
|
+
import { parseArgs } from "../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
5
5
|
import { bold } from "../../lib/cli.js";
|
|
6
6
|
import { checkArgs } from "../../lib/args.js";
|
|
7
7
|
import { createOutput } from "../../lib/output.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// =============================================================================
|
|
2
2
|
// List Apps — List All Workload Apps on a Network
|
|
3
3
|
// =============================================================================
|
|
4
|
-
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.
|
|
5
|
-
import { Table } from "../../../deps/jsr.io/@cliffy/table/1.
|
|
4
|
+
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
5
|
+
import { Table } from "../../../deps/jsr.io/@cliffy/table/1.1.0/mod.js";
|
|
6
6
|
import { bold } from "../../../lib/cli.js";
|
|
7
7
|
import { checkArgs } from "../../../lib/args.js";
|
|
8
8
|
import { createOutput } from "../../../lib/output.js";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// List Command - List Networks or Apps
|
|
3
3
|
// =============================================================================
|
|
4
4
|
import * as dntShim from "../../../_dnt.shims.js";
|
|
5
|
-
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.
|
|
5
|
+
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
6
6
|
import { bold } from "../../../lib/cli.js";
|
|
7
7
|
import { checkArgs } from "../../../lib/args.js";
|
|
8
8
|
import { registerCommand } from "../../mod.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// =============================================================================
|
|
2
2
|
// List Networks — List All Discovered Routers Across Networks
|
|
3
3
|
// =============================================================================
|
|
4
|
-
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.
|
|
5
|
-
import { Table } from "../../../deps/jsr.io/@cliffy/table/1.
|
|
4
|
+
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
5
|
+
import { Table } from "../../../deps/jsr.io/@cliffy/table/1.1.0/mod.js";
|
|
6
6
|
import { bold } from "../../../lib/cli.js";
|
|
7
7
|
import { checkArgs } from "../../../lib/args.js";
|
|
8
8
|
import { createOutput } from "../../../lib/output.js";
|
package/esm/cli/commands/logs.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// =============================================================================
|
|
2
2
|
// Logs Command - Stream Logs for Workload Apps
|
|
3
3
|
// =============================================================================
|
|
4
|
-
import { parseArgs } from "../../deps/jsr.io/@std/cli/1.0.
|
|
4
|
+
import { parseArgs } from "../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
5
5
|
import { bold } from "../../lib/cli.js";
|
|
6
6
|
import { checkArgs } from "../../lib/args.js";
|
|
7
7
|
import { createOutput } from "../../lib/output.js";
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
// Secrets Command - Manage Secrets for Workload Apps
|
|
3
3
|
// =============================================================================
|
|
4
4
|
import * as dntShim from "../../_dnt.shims.js";
|
|
5
|
-
import { parseArgs } from "../../deps/jsr.io/@std/cli/1.0.
|
|
6
|
-
import { Table } from "../../deps/jsr.io/@cliffy/table/1.
|
|
5
|
+
import { parseArgs } from "../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
6
|
+
import { Table } from "../../deps/jsr.io/@cliffy/table/1.1.0/mod.js";
|
|
7
7
|
import { bold } from "../../lib/cli.js";
|
|
8
8
|
import { checkArgs } from "../../lib/args.js";
|
|
9
9
|
import { createOutput } from "../../lib/output.js";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// =============================================================================
|
|
2
2
|
// Share Command - Grant Members Access to a Network via Tailscale ACL
|
|
3
3
|
// =============================================================================
|
|
4
|
-
import { parseArgs } from "../../deps/jsr.io/@std/cli/1.0.
|
|
4
|
+
import { parseArgs } from "../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
5
5
|
import { bold } from "../../lib/cli.js";
|
|
6
6
|
import { checkArgs } from "../../lib/args.js";
|
|
7
7
|
import { createOutput } from "../../lib/output.js";
|
|
8
8
|
import { registerCommand } from "../mod.js";
|
|
9
|
-
import { z } from "../../deps/jsr.io/@zod/zod/4.3
|
|
9
|
+
import { z } from "../../deps/jsr.io/@zod/zod/4.4.3/src/index.js";
|
|
10
10
|
import { findRouterApp, getRouterMachineInfo } from "../../util/discovery.js";
|
|
11
11
|
import { getRouterTag } from "../../util/naming.js";
|
|
12
12
|
import { assertAdditivePatch, isAclRuleConfigured, patchAclRule, } from "../../util/tailscale-local.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// =============================================================================
|
|
2
2
|
// Status App — Show App Status
|
|
3
3
|
// =============================================================================
|
|
4
|
-
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.
|
|
4
|
+
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
5
5
|
import { bold } from "../../../lib/cli.js";
|
|
6
6
|
import { checkArgs } from "../../../lib/args.js";
|
|
7
7
|
import { createOutput } from "../../../lib/output.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// =============================================================================
|
|
2
2
|
// Status Command - Show Network, App, and Router Status
|
|
3
3
|
// =============================================================================
|
|
4
|
-
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.
|
|
4
|
+
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
5
5
|
import { bold } from "../../../lib/cli.js";
|
|
6
6
|
import { checkArgs } from "../../../lib/args.js";
|
|
7
7
|
import { registerCommand } from "../../mod.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// =============================================================================
|
|
2
2
|
// Status Network — Show Detailed Status for a Single Network
|
|
3
3
|
// =============================================================================
|
|
4
|
-
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.
|
|
4
|
+
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
5
5
|
import { bold } from "../../../lib/cli.js";
|
|
6
6
|
import { checkArgs } from "../../../lib/args.js";
|
|
7
7
|
import { createOutput } from "../../../lib/output.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// =============================================================================
|
|
2
2
|
// Status Networks — Summary Table of All Networks
|
|
3
3
|
// =============================================================================
|
|
4
|
-
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.
|
|
5
|
-
import { Table } from "../../../deps/jsr.io/@cliffy/table/1.
|
|
4
|
+
import { parseArgs } from "../../../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
5
|
+
import { Table } from "../../../deps/jsr.io/@cliffy/table/1.1.0/mod.js";
|
|
6
6
|
import { bold } from "../../../lib/cli.js";
|
|
7
7
|
import { checkArgs } from "../../../lib/args.js";
|
|
8
8
|
import { createOutput } from "../../../lib/output.js";
|
package/esm/cli/mod.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// CLI Framework - Command Parser and Router
|
|
3
3
|
// =============================================================================
|
|
4
4
|
import * as dntShim from "../_dnt.shims.js";
|
|
5
|
-
import { parseArgs } from "../deps/jsr.io/@std/cli/1.0.
|
|
5
|
+
import { parseArgs } from "../deps/jsr.io/@std/cli/1.0.29/mod.js";
|
|
6
6
|
import { bold, dim } from "../lib/cli.js";
|
|
7
7
|
import denoConfig from "../deno.js";
|
|
8
8
|
// =============================================================================
|
package/esm/deno.js
CHANGED
|
@@ -30,12 +30,16 @@ export declare class TableLayout {
|
|
|
30
30
|
* settings.
|
|
31
31
|
*/
|
|
32
32
|
protected createLayout(): RenderSettings;
|
|
33
|
+
private computeColumnDimensions;
|
|
34
|
+
private applyFlexShrink;
|
|
35
|
+
private applyFlexGrow;
|
|
36
|
+
private resolveColumnWeight;
|
|
33
37
|
/**
|
|
34
38
|
* Fills rows and cols by specified row/col span with a reference of the
|
|
35
39
|
* original cell.
|
|
36
40
|
*/
|
|
37
41
|
protected spanRows(rows: Array<RowType>): Array<Row<Cell>>;
|
|
38
|
-
protected getDeleteCount(rows: Array<Array<unknown>>, rowIndex: number, colIndex: number):
|
|
42
|
+
protected getDeleteCount(rows: Array<Array<unknown>>, rowIndex: number, colIndex: number): 0 | 1;
|
|
39
43
|
/**
|
|
40
44
|
* Create a new row from existing row or cell array.
|
|
41
45
|
* @param row Original row.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_layout.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@cliffy/table/1.1.0/_layout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAkB,MAAM,WAAW,CAAC;AAEhE,OAAO,EAAE,GAAG,EAAE,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAiB,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMtE,8BAA8B;AAC9B,UAAU,cAAc;IACtB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;CACxB;AASD,6BAA6B;AAC7B,qBAAa,WAAW;;IAOpB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,OAAO;IAPjB;;;;OAIG;gBAEO,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,aAAa;IAGhC,6BAA6B;IACtB,QAAQ,IAAI,MAAM;IAKzB;;;;OAIG;IACH,SAAS,CAAC,YAAY,IAAI,cAAc;IA0DxC,OAAO,CAAC,uBAAuB;IAsC/B,OAAO,CAAC,eAAe;IA6CvB,OAAO,CAAC,aAAa;IAsCrB,OAAO,CAAC,mBAAmB;IAwC3B;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IA4D1D,SAAS,CAAC,cAAc,CACtB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,CAAC,GAAG,CAAC;IAOR;;;OAGG;IACH,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;IAM5C;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,CAClB,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACjC,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,IAAI;IAcP,OAAO,CAAC,WAAW;IAInB;;;OAGG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IAWlD;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,CACjB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,cAAc,EACpB,WAAW,CAAC,EAAE,OAAO,GACpB,MAAM;IAwET;;;;;;OAMG;IACH,SAAS,CAAC,UAAU,CAClB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,EACd,IAAI,EAAE,cAAc,EACpB,QAAQ,CAAC,EAAE,OAAO,GACjB,MAAM;IAqDT;;;;;OAKG;IACH,SAAS,CAAC,eAAe,CACvB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,MAAM,GAChB;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAgDpC;;;;;;OAMG;IACH,SAAS,CAAC,eAAe,CACvB,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,EAC9B,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,EAC9B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EACtB,IAAI,EAAE,cAAc,GACnB,MAAM;IA2BT;;;;;;;OAOG;IACH,SAAS,CAAC,gBAAgB,CACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,EAC9B,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,EAC9B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EACtB,IAAI,EAAE,cAAc,GACnB,MAAM;CAoJV"}
|
|
@@ -2,6 +2,7 @@ import { Cell } from "./cell.js";
|
|
|
2
2
|
import { consumeChars, consumeWords } from "./consume_words.js";
|
|
3
3
|
import { Row } from "./row.js";
|
|
4
4
|
import { getUnclosedAnsiRuns, longest, strLength } from "./_utils.js";
|
|
5
|
+
const sum = (numList) => numList.reduce((a, b) => a + b, 0);
|
|
5
6
|
/** Table layout renderer. */
|
|
6
7
|
export class TableLayout {
|
|
7
8
|
table;
|
|
@@ -47,34 +48,115 @@ export class TableLayout {
|
|
|
47
48
|
}
|
|
48
49
|
}
|
|
49
50
|
}
|
|
51
|
+
const { padding, width, minColWidth, maxColWidth, } = this.computeColumnDimensions(columns, rows);
|
|
52
|
+
if (isFinite(this.options.maxWidth)) {
|
|
53
|
+
const totalPadding = hasBorder
|
|
54
|
+
? sum(padding) * 2 + (columns + 1)
|
|
55
|
+
: sum(padding.slice(0, -1));
|
|
56
|
+
const maxAllowable = this.options.maxWidth - totalPadding;
|
|
57
|
+
if (sum(width) > maxAllowable) {
|
|
58
|
+
this.applyFlexShrink(width, minColWidth, maxAllowable);
|
|
59
|
+
}
|
|
60
|
+
if (sum(width) < maxAllowable) {
|
|
61
|
+
this.applyFlexGrow(width, maxColWidth, maxAllowable);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
padding,
|
|
66
|
+
width,
|
|
67
|
+
rows,
|
|
68
|
+
columns,
|
|
69
|
+
hasBorder,
|
|
70
|
+
hasBodyBorder,
|
|
71
|
+
hasHeaderBorder,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
computeColumnDimensions(columns, rows) {
|
|
50
75
|
const padding = [];
|
|
51
76
|
const width = [];
|
|
77
|
+
const minColWidth = [];
|
|
78
|
+
const maxColWidth = [];
|
|
52
79
|
for (let colIndex = 0; colIndex < columns; colIndex++) {
|
|
53
80
|
const column = this.options.columns.at(colIndex);
|
|
54
|
-
|
|
81
|
+
minColWidth[colIndex] = column?.getMinWidth() ??
|
|
55
82
|
(Array.isArray(this.options.minColWidth)
|
|
56
83
|
? this.options.minColWidth[colIndex]
|
|
57
|
-
: this.options.minColWidth)
|
|
58
|
-
|
|
84
|
+
: this.options.minColWidth) ??
|
|
85
|
+
0;
|
|
86
|
+
maxColWidth[colIndex] = column?.getMaxWidth() ??
|
|
59
87
|
(Array.isArray(this.options.maxColWidth)
|
|
60
88
|
? this.options.maxColWidth[colIndex]
|
|
61
|
-
: this.options.maxColWidth)
|
|
62
|
-
|
|
63
|
-
|
|
89
|
+
: this.options.maxColWidth) ??
|
|
90
|
+
Infinity;
|
|
91
|
+
const colWidth = longest(colIndex, rows, maxColWidth[colIndex]);
|
|
92
|
+
width[colIndex] = Math.min(maxColWidth[colIndex], Math.max(minColWidth[colIndex], colWidth));
|
|
64
93
|
padding[colIndex] = column?.getPadding() ??
|
|
65
94
|
(Array.isArray(this.options.padding)
|
|
66
95
|
? this.options.padding[colIndex]
|
|
67
|
-
: this.options.padding)
|
|
96
|
+
: this.options.padding) ??
|
|
97
|
+
0;
|
|
98
|
+
}
|
|
99
|
+
return { padding, width, minColWidth, maxColWidth };
|
|
100
|
+
}
|
|
101
|
+
applyFlexShrink(width, minColWidth, maxAllowable) {
|
|
102
|
+
const shrink = width.map((_w, i) => this.resolveColumnWeight("flexShrink", i));
|
|
103
|
+
let changed = true;
|
|
104
|
+
while (changed) {
|
|
105
|
+
changed = false;
|
|
106
|
+
if (sum(width) <= maxAllowable) {
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
const overflow = sum(width) - maxAllowable;
|
|
110
|
+
// CSS flex-shrink: each column's reduction share is proportional to
|
|
111
|
+
// shrink × width, so wider or higher-weighted columns absorb more.
|
|
112
|
+
const scaledTotal = sum(width.map((w, i) => shrink[i] > 0 && w > minColWidth[i] ? shrink[i] * w : 0));
|
|
113
|
+
if (scaledTotal === 0) {
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
for (let i = 0; i < width.length; i++) {
|
|
117
|
+
if (shrink[i] > 0 && width[i] > minColWidth[i]) {
|
|
118
|
+
const target = Math.max(Math.max(1, minColWidth[i]), Math.floor(width[i] * (1 - overflow * shrink[i] / scaledTotal)));
|
|
119
|
+
if (target !== width[i]) {
|
|
120
|
+
width[i] = target;
|
|
121
|
+
changed = true;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
68
125
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
126
|
+
}
|
|
127
|
+
applyFlexGrow(width, maxColWidth, maxAllowable) {
|
|
128
|
+
const grow = width.map((_w, i) => this.resolveColumnWeight("flexGrow", i));
|
|
129
|
+
let changed = true;
|
|
130
|
+
while (changed) {
|
|
131
|
+
changed = false;
|
|
132
|
+
if (sum(width) >= maxAllowable) {
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
const slack = maxAllowable - sum(width);
|
|
136
|
+
// CSS flex-grow: available slack is distributed proportionally by weight.
|
|
137
|
+
const totalWeight = sum(grow.map((g, i) => width[i] < maxColWidth[i] ? g : 0));
|
|
138
|
+
if (totalWeight === 0) {
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
for (let i = 0; i < width.length; i++) {
|
|
142
|
+
if (grow[i] > 0 && width[i] < maxColWidth[i]) {
|
|
143
|
+
const extra = Math.floor(slack * grow[i] / totalWeight);
|
|
144
|
+
const newWidth = Math.min(maxColWidth[i], width[i] + extra);
|
|
145
|
+
if (newWidth !== width[i]) {
|
|
146
|
+
width[i] = newWidth;
|
|
147
|
+
changed = true;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
resolveColumnWeight(prop, i) {
|
|
154
|
+
const getter = prop === "flexShrink" ? "getFlexShrink" : "getFlexGrow";
|
|
155
|
+
const weight = this.options.columns.at(i)?.[getter]() ??
|
|
156
|
+
(Array.isArray(this.options[prop])
|
|
157
|
+
? this.options[prop][i]
|
|
158
|
+
: this.options[prop]);
|
|
159
|
+
return Number.isFinite(weight) && weight > 0 ? weight : 0;
|
|
78
160
|
}
|
|
79
161
|
#getRows() {
|
|
80
162
|
const header = this.table.getHeader();
|
|
@@ -297,6 +379,9 @@ export class TableLayout {
|
|
|
297
379
|
* @param maxLength Max length of content to render.
|
|
298
380
|
*/
|
|
299
381
|
renderCellValue(cell, maxLength) {
|
|
382
|
+
if (maxLength <= 0) {
|
|
383
|
+
return { current: "", next: "" };
|
|
384
|
+
}
|
|
300
385
|
const length = Math.min(maxLength, strLength(cell.toString()));
|
|
301
386
|
let words = consumeWords(length, cell.toString());
|
|
302
387
|
// break word if word is longer than max length
|
|
@@ -12,18 +12,15 @@ export declare function longest(index: number, rows: Array<Array<CellType>>, max
|
|
|
12
12
|
export declare const strLength: (str: string) => number;
|
|
13
13
|
/** Regex `source` to match any relevant ANSI code. */
|
|
14
14
|
export declare const ansiRegexSource: string;
|
|
15
|
+
interface UnclosedAnsiRunsResult {
|
|
16
|
+
currentSuffix: string;
|
|
17
|
+
nextPrefix: string;
|
|
18
|
+
}
|
|
15
19
|
/**
|
|
16
20
|
* Get unclosed ANSI runs in a string.
|
|
17
21
|
*
|
|
18
22
|
* @param text - A string segment possibly containing unclosed ANSI runs.
|
|
19
23
|
*/
|
|
20
|
-
export declare function getUnclosedAnsiRuns(text: string):
|
|
21
|
-
|
|
22
|
-
currentSuffix: string;
|
|
23
|
-
/**
|
|
24
|
-
* The prefix to be appended to the next segment to continue unclosed
|
|
25
|
-
* runs if the input text forms the first segment of a multi-line string.
|
|
26
|
-
*/
|
|
27
|
-
nextPrefix: string;
|
|
28
|
-
};
|
|
24
|
+
export declare function getUnclosedAnsiRuns(text: string): UnclosedAnsiRunsResult;
|
|
25
|
+
export {};
|
|
29
26
|
//# sourceMappingURL=_utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_utils.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@cliffy/table/1.
|
|
1
|
+
{"version":3,"file":"_utils.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@cliffy/table/1.1.0/_utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAOhD;;GAEG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAC5B,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAmBR;AAED,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,KAAG,MAEvC,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,eAAe,QAGjB,CAAC;AAEZ,UAAU,sBAAsB;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAuCxE"}
|