@tailglow/cli 0.8.1 → 0.9.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 +7 -8
- package/package.json +2 -2
- package/src/commands.generated.js +69 -134
- package/src/config.js +8 -1
- package/src/docs.generated.js +18 -18
- package/src/import-command.js +2 -13
- package/src/import-options.js +0 -1
- package/src/import-worker.generated.js +23 -41
- package/src/import.generated.d.ts +0 -5
- package/src/import.generated.js +60 -86
- package/src/index.js +14 -0
- package/src/request.js +12 -4
- package/src/update-check.js +137 -0
package/README.md
CHANGED
|
@@ -10,7 +10,9 @@ tglow login
|
|
|
10
10
|
tglow projects list
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
Node 22 or newer. `bun add -g` and `pnpm add -g` work the same way.
|
|
13
|
+
Node 22 or newer. `bun add -g` and `pnpm add -g` work the same way. Update with
|
|
14
|
+
`npm install -g @tailglow/cli@latest`. When a newer version is out, `tglow` says so in one line on
|
|
15
|
+
stderr; it asks npm at most once a day.
|
|
14
16
|
|
|
15
17
|
Prefer a shorter name? Alias it rather than installing over one:
|
|
16
18
|
|
|
@@ -37,7 +39,7 @@ Field names are snake_case on the wire and kebab-case on the command line: `repe
|
|
|
37
39
|
becomes `--repeat-window-minutes`. Object and array fields take JSON:
|
|
38
40
|
|
|
39
41
|
```bash
|
|
40
|
-
tglow views create
|
|
42
|
+
tglow views create --project prj_x --type join --base-view-id view_a --joins '[{"lookup_view_id":"view_b","alias":"b","base_field":"user_id","lookup_field":"id"}]'
|
|
41
43
|
```
|
|
42
44
|
|
|
43
45
|
## Credentials
|
|
@@ -151,7 +153,7 @@ Scan and validate locally without credentials:
|
|
|
151
153
|
```bash
|
|
152
154
|
tglow import scan export.xml
|
|
153
155
|
tglow import scan export.xml --record-path /HealthData/Record --full
|
|
154
|
-
tglow import validate events.jsonl
|
|
156
|
+
tglow import validate events.jsonl
|
|
155
157
|
```
|
|
156
158
|
|
|
157
159
|
Content detection supports XML, JSONL, JSON, CSV and TSV; use `--format` to resolve ambiguity.
|
|
@@ -194,11 +196,8 @@ graceful Ctrl-C. A cleanup failure is reported separately as `cleanup_error` and
|
|
|
194
196
|
not change delivery status or acknowledged counts. Changes to the original after copying do not change the uploaded bytes. A failed
|
|
195
197
|
full check sends no rows; successful checking cannot prevent a later delivery failure.
|
|
196
198
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
values fail validation. Selected dates must be between 1970-01-01 UTC and the current time, since earlier or future ingest timestamps cannot be preserved by the server. No timestamp field is selected automatically. Batches split whenever
|
|
200
|
-
the exact parsed timestamp changes, which can produce one request per row, and otherwise stay
|
|
201
|
-
within 500 rows and 1 MiB.
|
|
199
|
+
Records keep their own fields, including their dates; Tailglow records when each batch arrived.
|
|
200
|
+
Batches stay within 500 rows and 1 MiB.
|
|
202
201
|
|
|
203
202
|
Only HTTP 202 acknowledges a batch. Upload stops on rejection or uncertain delivery and never
|
|
204
203
|
retries automatically. The report includes `accepted_count` and the affected batch's inclusive
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tailglow/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "The Tailglow command line. Every command is generated from the Tailglow API reference, so the CLI and the documentation can never describe different APIs.",
|
|
6
6
|
"bin": {
|
|
@@ -35,6 +35,6 @@
|
|
|
35
35
|
"@clack/prompts": "^1.2.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@types/bun": "^1.3
|
|
38
|
+
"@types/bun": "^1.4.3"
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -248,13 +248,13 @@ export const CLI_COMMANDS = [
|
|
|
248
248
|
"query_params": [],
|
|
249
249
|
"body_fields": [
|
|
250
250
|
{
|
|
251
|
-
"name": "
|
|
252
|
-
"type": "
|
|
251
|
+
"name": "ambiguity_handling",
|
|
252
|
+
"type": "AmbiguityHandlingMode",
|
|
253
253
|
"required": false,
|
|
254
|
-
"description": "
|
|
254
|
+
"description": "What new mappings do when the source data allows more than one defensible reading. decide picks the most defensible one; ask requests a hint from you instead. Defaults to decide. Existing scripts are unchanged. Optional.",
|
|
255
255
|
"allowed_values": [
|
|
256
|
-
"
|
|
257
|
-
"
|
|
256
|
+
"decide",
|
|
257
|
+
"ask"
|
|
258
258
|
],
|
|
259
259
|
"deprecated": null
|
|
260
260
|
},
|
|
@@ -1804,7 +1804,7 @@ export const CLI_COMMANDS = [
|
|
|
1804
1804
|
"sources:read"
|
|
1805
1805
|
],
|
|
1806
1806
|
"notes": [
|
|
1807
|
-
"Documents are returned
|
|
1807
|
+
"Documents are returned as they were sent, minus Tailglow's own reserved envelope. A value sent in a JSON array or JSONL that is not an object comes back as `{\"value\": ...}`.",
|
|
1808
1808
|
"Paging is forward-only. Pass `pagination.next_cursor` back as `after` to get the next page; no `prev_cursor` is issued, and `before` returns the first page.",
|
|
1809
1809
|
"While the project's server is stopped this answers 409 `server_stopped`. Start the server and try again.",
|
|
1810
1810
|
"`after` and `before` are mutually exclusive."
|
|
@@ -2013,7 +2013,7 @@ export const CLI_COMMANDS = [
|
|
|
2013
2013
|
"command": "create",
|
|
2014
2014
|
"operation_id": "createView",
|
|
2015
2015
|
"summary": "Create View",
|
|
2016
|
-
"description": "Create a view
|
|
2016
|
+
"description": "Create a view: a transform over one collection or view, or a join of a base view with lookups.",
|
|
2017
2017
|
"method": "POST",
|
|
2018
2018
|
"path": "/v1/projects/:project_id/views",
|
|
2019
2019
|
"alternate_paths": [],
|
|
@@ -2021,15 +2021,19 @@ export const CLI_COMMANDS = [
|
|
|
2021
2021
|
"views:write"
|
|
2022
2022
|
],
|
|
2023
2023
|
"notes": [
|
|
2024
|
-
"A view reads from exactly one source: a collection, or another view to derive from.",
|
|
2025
2024
|
"The output schema defines the fields the view produces. A transform is created alongside the view to populate them.",
|
|
2026
2025
|
"Leaving the transform script empty queues it for generation instead of rejecting it, so a view can be created before its TGL is written.",
|
|
2027
2026
|
"Backfilling existing records starts shortly after creation and runs in the background. The view reports its progress while it catches up.",
|
|
2028
|
-
"A
|
|
2027
|
+
"A join's base view and lookup views must all be views in this project.",
|
|
2028
|
+
"A join whose inputs lead back to the join itself, directly or through other views, is rejected.",
|
|
2029
|
+
"A `transform` view reads from exactly one place: set `collection_id` to derive from raw ingested records, or `parent_view_id` to derive from another view. Setting both, or neither, is rejected, and so are `base_view_id` and `joins`.",
|
|
2030
|
+
"A `join` view requires `base_view_id` and `joins` (one to ten clauses), and rejects `collection_id` and `parent_view_id`. Join a collection by creating a view over it first.",
|
|
2031
|
+
"Each join clause's `alias` must be lowercase letters, digits and underscores, and start with a letter. It is how the clause's fields are addressed in the transform script.",
|
|
2032
|
+
"A join enriches each record with each joined view's latest value, by record timestamp, at the time the record is processed. Records already produced are not revisited.",
|
|
2029
2033
|
"There is no `source_id` on this endpoint. One source can hold many collections, and the collection is what owns the schema and the records a view transforms. List a source's collections with `GET /v1/projects/:project/collections?source_id=...` and pass the one you want.",
|
|
2030
2034
|
"`output_schema` field names must be unique by name, cannot conflict on type, and cannot collide with a reserved query key such as `limit` or `cursor`.",
|
|
2031
|
-
"`transform_script` cannot be whitespace-only. Supplying one
|
|
2032
|
-
"Use `hint` for rules the generator cannot read off the field names: a formatting rule (\"display_name should be Name (Type)\"), a business threshold (\"classify as high above 500\"), or a disambiguation when
|
|
2035
|
+
"`transform_script` cannot be whitespace-only. Supplying one skips automatic TGL generation; omit it entirely to have one generated.",
|
|
2036
|
+
"Use `hint` for rules the generator cannot read off the field names: a formatting rule (\"display_name should be Name (Type)\"), a business threshold (\"classify as high above 500\"), or a disambiguation when an input field could map more than one way. Skip it for obvious mappings like renames and type conversions, which the generator already handles."
|
|
2033
2037
|
],
|
|
2034
2038
|
"path_params": [
|
|
2035
2039
|
{
|
|
@@ -2043,6 +2047,17 @@ export const CLI_COMMANDS = [
|
|
|
2043
2047
|
],
|
|
2044
2048
|
"query_params": [],
|
|
2045
2049
|
"body_fields": [
|
|
2050
|
+
{
|
|
2051
|
+
"name": "type",
|
|
2052
|
+
"type": "ViewType",
|
|
2053
|
+
"required": false,
|
|
2054
|
+
"description": "How the view's records are produced: `transform` reads one collection or view through a script; `join` starts from a base view and attaches lookup rows. Fixed at creation. Optional. Defaults to `\"transform\"`.",
|
|
2055
|
+
"allowed_values": [
|
|
2056
|
+
"transform",
|
|
2057
|
+
"join"
|
|
2058
|
+
],
|
|
2059
|
+
"deprecated": null
|
|
2060
|
+
},
|
|
2046
2061
|
{
|
|
2047
2062
|
"name": "name",
|
|
2048
2063
|
"type": "string",
|
|
@@ -2166,89 +2181,19 @@ export const CLI_COMMANDS = [
|
|
|
2166
2181
|
"allowed_values": [],
|
|
2167
2182
|
"deprecated": null
|
|
2168
2183
|
},
|
|
2169
|
-
{
|
|
2170
|
-
"name": "transform_script",
|
|
2171
|
-
"type": "string",
|
|
2172
|
-
"required": false,
|
|
2173
|
-
"description": "TGL transform script. When set, the view skips automatic TGL generation. Optional. Minimum length: `1`. Maximum length: `65536`.",
|
|
2174
|
-
"allowed_values": [],
|
|
2175
|
-
"deprecated": null
|
|
2176
|
-
},
|
|
2177
|
-
{
|
|
2178
|
-
"name": "transform_mode",
|
|
2179
|
-
"type": "string",
|
|
2180
|
-
"required": false,
|
|
2181
|
-
"description": "Whether a new schema version that no existing transform covers gets a script generated for it, or waits for you to write one. Defaults to auto. Optional.",
|
|
2182
|
-
"allowed_values": [
|
|
2183
|
-
"auto",
|
|
2184
|
-
"manual"
|
|
2185
|
-
],
|
|
2186
|
-
"deprecated": null
|
|
2187
|
-
}
|
|
2188
|
-
]
|
|
2189
|
-
},
|
|
2190
|
-
{
|
|
2191
|
-
"resource": "views",
|
|
2192
|
-
"command": "create-join",
|
|
2193
|
-
"operation_id": "createJoinView",
|
|
2194
|
-
"summary": "Create Join View",
|
|
2195
|
-
"description": "Create a view that joins two existing views on a shared key.",
|
|
2196
|
-
"method": "POST",
|
|
2197
|
-
"path": "/v1/projects/:project_id/views/join",
|
|
2198
|
-
"alternate_paths": [],
|
|
2199
|
-
"scopes": [
|
|
2200
|
-
"views:write"
|
|
2201
|
-
],
|
|
2202
|
-
"notes": [
|
|
2203
|
-
"Both sides must be views in this project. Join a collection by creating a view over it first.",
|
|
2204
|
-
"The join key must exist in the output schema of both sides.",
|
|
2205
|
-
"A join view rebuilds when either side produces new records, so it trails its inputs rather than updating in the same instant.",
|
|
2206
|
-
"Records are enriched with each joined view's latest value, by record timestamp, at the time they are processed. Records already produced are not revisited.",
|
|
2207
|
-
"Each join clause's `alias` must be lowercase letters, digits and underscores, and start with a letter. It is how the clause's fields are addressed in the transform script.",
|
|
2208
|
-
"`transform_script` cannot be whitespace-only. Omit it entirely to have one generated.",
|
|
2209
|
-
"Use `hint` for rules the generator cannot read off the field names: a formatting rule (\"display_name should be Name (Type)\"), a business threshold (\"classify as high above 500\"), or a disambiguation when an input field could map more than one way. Skip it for obvious mappings like renames and type conversions, which the generator already handles."
|
|
2210
|
-
],
|
|
2211
|
-
"path_params": [
|
|
2212
|
-
{
|
|
2213
|
-
"name": "project_id",
|
|
2214
|
-
"type": "string",
|
|
2215
|
-
"required": true,
|
|
2216
|
-
"description": "Unique identifier of the project.",
|
|
2217
|
-
"allowed_values": [],
|
|
2218
|
-
"deprecated": null
|
|
2219
|
-
}
|
|
2220
|
-
],
|
|
2221
|
-
"query_params": [],
|
|
2222
|
-
"body_fields": [
|
|
2223
|
-
{
|
|
2224
|
-
"name": "name",
|
|
2225
|
-
"type": "string",
|
|
2226
|
-
"required": true,
|
|
2227
|
-
"description": "Name shown for this join view. Minimum length: `1`. Maximum length: `128`.",
|
|
2228
|
-
"allowed_values": [],
|
|
2229
|
-
"deprecated": null
|
|
2230
|
-
},
|
|
2231
|
-
{
|
|
2232
|
-
"name": "project_id",
|
|
2233
|
-
"type": "string",
|
|
2234
|
-
"required": false,
|
|
2235
|
-
"description": "Project the join view belongs to. Optional.",
|
|
2236
|
-
"allowed_values": [],
|
|
2237
|
-
"deprecated": null
|
|
2238
|
-
},
|
|
2239
2184
|
{
|
|
2240
2185
|
"name": "base_view_id",
|
|
2241
2186
|
"type": "string",
|
|
2242
|
-
"required":
|
|
2243
|
-
"description": "View every output record starts from. Minimum length: `1`.",
|
|
2187
|
+
"required": false,
|
|
2188
|
+
"description": "View every output record of a join starts from. Optional. Minimum length: `1`.",
|
|
2244
2189
|
"allowed_values": [],
|
|
2245
2190
|
"deprecated": null
|
|
2246
2191
|
},
|
|
2247
2192
|
{
|
|
2248
2193
|
"name": "joins",
|
|
2249
2194
|
"type": "object[]",
|
|
2250
|
-
"required":
|
|
2251
|
-
"description": "Views joined onto the base view, each with its own match fields.",
|
|
2195
|
+
"required": false,
|
|
2196
|
+
"description": "Views joined onto the base view, each with its own match fields. Optional.",
|
|
2252
2197
|
"allowed_values": [],
|
|
2253
2198
|
"deprecated": null,
|
|
2254
2199
|
"fields": [
|
|
@@ -2315,61 +2260,23 @@ export const CLI_COMMANDS = [
|
|
|
2315
2260
|
}
|
|
2316
2261
|
]
|
|
2317
2262
|
},
|
|
2318
|
-
{
|
|
2319
|
-
"name": "output_schema",
|
|
2320
|
-
"type": "object[]",
|
|
2321
|
-
"required": false,
|
|
2322
|
-
"description": "Fields the join produces. Leave empty to have one inferred. Optional. Defaults to `[]`.",
|
|
2323
|
-
"allowed_values": [],
|
|
2324
|
-
"deprecated": null,
|
|
2325
|
-
"fields": [
|
|
2326
|
-
{
|
|
2327
|
-
"name": "name",
|
|
2328
|
-
"type": "string",
|
|
2329
|
-
"required": true,
|
|
2330
|
-
"description": "Field name as it appears on the view's records. Minimum length: `1`. Maximum length: `128`.",
|
|
2331
|
-
"allowed_values": [],
|
|
2332
|
-
"deprecated": null
|
|
2333
|
-
},
|
|
2334
|
-
{
|
|
2335
|
-
"name": "type",
|
|
2336
|
-
"type": "string",
|
|
2337
|
-
"required": true,
|
|
2338
|
-
"description": "Value type the field holds.",
|
|
2339
|
-
"allowed_values": [
|
|
2340
|
-
"string",
|
|
2341
|
-
"number",
|
|
2342
|
-
"boolean",
|
|
2343
|
-
"date",
|
|
2344
|
-
"array",
|
|
2345
|
-
"null"
|
|
2346
|
-
],
|
|
2347
|
-
"deprecated": null
|
|
2348
|
-
},
|
|
2349
|
-
{
|
|
2350
|
-
"name": "description",
|
|
2351
|
-
"type": "string",
|
|
2352
|
-
"required": false,
|
|
2353
|
-
"description": "What the field means. Used as guidance when a transform script is generated. Optional. Maximum length: `512`.",
|
|
2354
|
-
"allowed_values": [],
|
|
2355
|
-
"deprecated": null
|
|
2356
|
-
}
|
|
2357
|
-
]
|
|
2358
|
-
},
|
|
2359
2263
|
{
|
|
2360
2264
|
"name": "transform_script",
|
|
2361
2265
|
"type": "string",
|
|
2362
2266
|
"required": false,
|
|
2363
|
-
"description": "TGL transform script.
|
|
2267
|
+
"description": "TGL transform script. When set, the view skips automatic TGL generation. Optional. Minimum length: `1`. Maximum length: `65536`.",
|
|
2364
2268
|
"allowed_values": [],
|
|
2365
2269
|
"deprecated": null
|
|
2366
2270
|
},
|
|
2367
2271
|
{
|
|
2368
|
-
"name": "
|
|
2272
|
+
"name": "transform_mode",
|
|
2369
2273
|
"type": "string",
|
|
2370
2274
|
"required": false,
|
|
2371
|
-
"description": "
|
|
2372
|
-
"allowed_values": [
|
|
2275
|
+
"description": "Whether a new schema version that no existing transform covers gets a script generated for it, or waits for you to write one. Defaults to auto. Optional.",
|
|
2276
|
+
"allowed_values": [
|
|
2277
|
+
"auto",
|
|
2278
|
+
"manual"
|
|
2279
|
+
],
|
|
2373
2280
|
"deprecated": null
|
|
2374
2281
|
}
|
|
2375
2282
|
]
|
|
@@ -7432,10 +7339,10 @@ export const CLI_COMMANDS = [
|
|
|
7432
7339
|
"notes": [
|
|
7433
7340
|
"Teams cannot be created with an API key. Use a signed-in user session.",
|
|
7434
7341
|
"`name` defaults to `Team` and `billing_email` defaults to the authenticated user's email address when they are omitted.",
|
|
7342
|
+
"`billing_email` cannot use the `@tailglow.io` domain.",
|
|
7435
7343
|
"The team starts on the `pro_v1` plan with a generated logo. `billing_plan`, `status`, `logo_url`, `is_mfa_required`, `billing_address`, and `max_servers_per_project` are ignored on create. Send them to the update endpoint instead.",
|
|
7436
7344
|
"There is a maximum number of teams a single user can create.",
|
|
7437
7345
|
"The authenticated user is added to the new team as its Owner.",
|
|
7438
|
-
"`billing_email` cannot use the `@tailglow.io` domain.",
|
|
7439
7346
|
"`logo_url` must be a JPEG or PNG base64 data URI of at most 5 MB."
|
|
7440
7347
|
],
|
|
7441
7348
|
"path_params": [],
|
|
@@ -7587,7 +7494,7 @@ export const CLI_COMMANDS = [
|
|
|
7587
7494
|
"Teams cannot be updated with an API key. Use a signed-in user session.",
|
|
7588
7495
|
"At least one field must be provided.",
|
|
7589
7496
|
"Only team Owners can change billing, security, or account settings. Other members can update `name` and `logo_url` only.",
|
|
7590
|
-
"`status`, `max_servers_per_project`, and `deleted_at` are managed by Tailglow and cannot be set by team members.",
|
|
7497
|
+
"`status`, `max_servers_per_project`, and `deleted_at` are managed by Tailglow and cannot be set by team members, with one exception: an Owner restores a team scheduled for deletion by sending only `deleted_at` set to null.",
|
|
7591
7498
|
"`status` requires `expected_status`, the status you loaded; the change is refused with a conflict if the team's status has changed since.",
|
|
7592
7499
|
"Changing `is_mfa_required` requires a recently verified multi-factor sign-in.",
|
|
7593
7500
|
"Moving to a plan that bills a payment method requires a valid payment method on the team.",
|
|
@@ -7761,7 +7668,7 @@ export const CLI_COMMANDS = [
|
|
|
7761
7668
|
"name": "deleted_at",
|
|
7762
7669
|
"type": "ISODateString | null",
|
|
7763
7670
|
"required": false,
|
|
7764
|
-
"description": "
|
|
7671
|
+
"description": "Set to null, as the only field, to restore a team scheduled for deletion. Only Tailglow can set a date. Optional.",
|
|
7765
7672
|
"allowed_values": [],
|
|
7766
7673
|
"deprecated": null
|
|
7767
7674
|
}
|
|
@@ -7781,7 +7688,8 @@ export const CLI_COMMANDS = [
|
|
|
7781
7688
|
"Teams cannot be deleted with an API key. Use a signed-in user session.",
|
|
7782
7689
|
"Only the team Owner can delete a team.",
|
|
7783
7690
|
"The team must be active. Contact support to delete a suspended or blocked team.",
|
|
7784
|
-
"Deletion is scheduled, not immediate. Permanent removal happens 40 days later
|
|
7691
|
+
"Deletion is scheduled, not immediate. Permanent removal happens 40 days later. The team's API keys are deleted, its ingest keys are revoked, and its servers are scaled to zero.",
|
|
7692
|
+
"Members lose access to the team at once but stay signed in to their other teams. Until permanent removal, an Owner can restore the team by updating it with `deleted_at` set to null."
|
|
7785
7693
|
],
|
|
7786
7694
|
"path_params": [
|
|
7787
7695
|
{
|
|
@@ -8337,6 +8245,17 @@ export const CLI_COMMANDS = [
|
|
|
8337
8245
|
],
|
|
8338
8246
|
"deprecated": null
|
|
8339
8247
|
},
|
|
8248
|
+
{
|
|
8249
|
+
"name": "timezone_display",
|
|
8250
|
+
"type": "TimezoneDisplay",
|
|
8251
|
+
"required": false,
|
|
8252
|
+
"description": "How the user reads times in the dashboard and in emails: `local` in the time zone their browser reports, `utc` in UTC. Optional.",
|
|
8253
|
+
"allowed_values": [
|
|
8254
|
+
"local",
|
|
8255
|
+
"utc"
|
|
8256
|
+
],
|
|
8257
|
+
"deprecated": null
|
|
8258
|
+
},
|
|
8340
8259
|
{
|
|
8341
8260
|
"name": "default_ai_model",
|
|
8342
8261
|
"type": "AiChatSelection",
|
|
@@ -9254,6 +9173,9 @@ export const CLI_COMMANDS = [
|
|
|
9254
9173
|
"notes": [
|
|
9255
9174
|
"A server is a dedicated machine that receives and processes the project's data. Every project runs its own fleet.",
|
|
9256
9175
|
"A server that is still coming up is returned with a status of `provisioning`, and a server on its way out with a status of `terminating`.",
|
|
9176
|
+
"During a platform update, the server being replaced is returned with a status of `upgrading`. The `status` filter matches the status stored before the update, so it finds that server under `active`.",
|
|
9177
|
+
"A platform update also adds a temporary server that takes each server's records while that server is replaced. It is not billed and is left out of this list; `is_deploy_surge=true` lists it instead.",
|
|
9178
|
+
"`is_deploy_surge` accepts `true`, `false`, `1` or `0`.",
|
|
9257
9179
|
"`after` and `before` are mutually exclusive."
|
|
9258
9180
|
],
|
|
9259
9181
|
"path_params": [
|
|
@@ -9293,6 +9215,19 @@ export const CLI_COMMANDS = [
|
|
|
9293
9215
|
],
|
|
9294
9216
|
"deprecated": null
|
|
9295
9217
|
},
|
|
9218
|
+
{
|
|
9219
|
+
"name": "is_deploy_surge",
|
|
9220
|
+
"type": "string",
|
|
9221
|
+
"required": false,
|
|
9222
|
+
"description": "Set true to list the temporary server a platform update adds instead of the project's own servers. Optional.",
|
|
9223
|
+
"allowed_values": [
|
|
9224
|
+
"true",
|
|
9225
|
+
"false",
|
|
9226
|
+
"1",
|
|
9227
|
+
"0"
|
|
9228
|
+
],
|
|
9229
|
+
"deprecated": null
|
|
9230
|
+
},
|
|
9296
9231
|
{
|
|
9297
9232
|
"name": "limit",
|
|
9298
9233
|
"type": "number",
|
package/src/config.js
CHANGED
|
@@ -17,7 +17,14 @@ export const CLI_CONFIGS = {
|
|
|
17
17
|
DIRECTORY_MODE: 0o700,
|
|
18
18
|
LOCK_RETRY_MS: 50,
|
|
19
19
|
// The lock covers one small read and write, so waiting this long means its holder stopped.
|
|
20
|
-
LOCK_TIMEOUT_MS: 10_000
|
|
20
|
+
LOCK_TIMEOUT_MS: 10_000,
|
|
21
|
+
UPDATE_CHECK_URL: "https://registry.npmjs.org/@tailglow/cli/latest",
|
|
22
|
+
UPDATE_CHECK_PATH: join(homedir(), ".tailglow", "update-check.json"),
|
|
23
|
+
UPDATE_CHECK_INTERVAL_MS: 24 * 60 * 60 * 1_000,
|
|
24
|
+
// The check runs alongside the command, so this only delays a command that finishes sooner.
|
|
25
|
+
UPDATE_CHECK_TIMEOUT_MS: 1_500,
|
|
26
|
+
// Caps the stored check and npm's answer, which is about 2 KB.
|
|
27
|
+
UPDATE_CHECK_MAX_BYTES: 65_536
|
|
21
28
|
};
|
|
22
29
|
|
|
23
30
|
export const LOGIN_CONFIGS = {
|