@hyperline/cli 0.1.0-build.1.7063cf1 → 0.1.0-build.1.7070075
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/dist/bin/hyperline-main.js +481 -203
- package/package.json +1 -1
|
@@ -34985,10 +34985,10 @@ var require_shared = __commonJS({
|
|
|
34985
34985
|
ZodId: () => ZodId,
|
|
34986
34986
|
ZodTranslationsSchemaFn: () => ZodTranslationsSchemaFn
|
|
34987
34987
|
});
|
|
34988
|
-
var
|
|
34988
|
+
var import_zod23 = require_lib();
|
|
34989
34989
|
var countryIds2 = ["all", ...countries.map(({ id }) => id)];
|
|
34990
|
-
var ZodId =
|
|
34991
|
-
var ZodTranslationsSchemaFn = (schema) =>
|
|
34990
|
+
var ZodId = import_zod23.z.enum(countryIds2);
|
|
34991
|
+
var ZodTranslationsSchemaFn = (schema) => import_zod23.z.record(import_zod23.z.string(), schema.optional());
|
|
34992
34992
|
var UsStates = [
|
|
34993
34993
|
{ id: "AA", name: "Armed Forces Americas" },
|
|
34994
34994
|
{ id: "AE", name: "Armed Forces Europe" },
|
|
@@ -36287,14 +36287,14 @@ var require_shared = __commonJS({
|
|
|
36287
36287
|
ZodNumberCurrencyPositiveValue: () => ZodNumberCurrencyPositiveValue,
|
|
36288
36288
|
ZodNumberCurrencyPositiveValueExcludingZero: () => ZodNumberCurrencyPositiveValueExcludingZero
|
|
36289
36289
|
});
|
|
36290
|
-
var
|
|
36291
|
-
var ZodCurrencyId =
|
|
36290
|
+
var import_zod24 = require_lib();
|
|
36291
|
+
var ZodCurrencyId = import_zod24.z.enum(
|
|
36292
36292
|
all_default.map(({ id }) => id)
|
|
36293
36293
|
);
|
|
36294
|
-
var ZodNumberCurrency =
|
|
36295
|
-
var ZodNumberCurrencyPositiveValue =
|
|
36296
|
-
var ZodNumberCurrencyPositiveValueExcludingZero =
|
|
36297
|
-
var ZodCurrencyMap =
|
|
36294
|
+
var ZodNumberCurrency = import_zod24.z.string().or(import_zod24.z.number().transform((number4) => number4)).transform((number4) => number4);
|
|
36295
|
+
var ZodNumberCurrencyPositiveValue = import_zod24.z.number().min(0).transform((number4) => number4).transform((number4) => number4);
|
|
36296
|
+
var ZodNumberCurrencyPositiveValueExcludingZero = import_zod24.z.number().gt(0).transform((number4) => number4).transform((number4) => number4);
|
|
36297
|
+
var ZodCurrencyMap = import_zod24.z.record(ZodNumberCurrency).refine(
|
|
36298
36298
|
(data) => Object.keys(data).every((key) => ZodCurrencyId.safeParse(key).success),
|
|
36299
36299
|
{
|
|
36300
36300
|
message: "Invalid currency key.",
|
|
@@ -40508,7 +40508,7 @@ Examples:
|
|
|
40508
40508
|
// build/commands/generated/ai-monitoring.js
|
|
40509
40509
|
function registerAi_MonitoringCommands(parent) {
|
|
40510
40510
|
const resource = parent.command("ai-monitoring").description("Manage ai > monitoring");
|
|
40511
|
-
resource.command("list-monitoring-analyses").description(`List customer health analyses from the monitoring agent, newest first: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals. Filter by customer (Hyperline or external ID) with limit=1 to get a customer's current health score. Only completed analyses unless status is set.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--customer-id <value>", `Return only analyses of this customer. Accepts the Hyperline ID or your own external ID.`).option("--status <value>", `Return only analyses with this status. Defaults to \`completed\`, the analyses that carry a score.`).option("--created-at.gte <value>", `Return only analyses created at or after this date.`).option("--created-at.lte <value>", `Return only analyses created at or before this date.`).addHelpText("after", `
|
|
40511
|
+
resource.command("list-monitoring-analyses").description(`List customer health analyses from the monitoring agent, newest first: health score (0-100), tier, summary, per-dimension scores, risk factors and positive signals. Filter by customer (Hyperline or external ID) with limit=1 to get a customer's current health score, or by customer_id__in (up to 100 Hyperline IDs) for several customers; the first analysis per customer is its latest. Only completed analyses unless status is set.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--customer-id <value>", `Return only analyses of this customer. Accepts the Hyperline ID or your own external ID.`).option("--customer-id.in <value>", `Comma-separated list of up to 100 Hyperline customer IDs. Return only analyses of these customers. Cannot be combined with \`customer_id\`.`).option("--status <value>", `Return only analyses with this status. Defaults to \`completed\`, the analyses that carry a score.`).option("--created-at.gte <value>", `Return only analyses created at or after this date.`).option("--created-at.lte <value>", `Return only analyses created at or before this date.`).addHelpText("after", `
|
|
40512
40512
|
Examples:
|
|
40513
40513
|
hyperline ai-monitoring list-monitoring-analyses
|
|
40514
40514
|
hyperline ai-monitoring list-monitoring-analyses --limit <limit> --cursor <cursor>`).action(async (opts) => {
|
|
@@ -40524,6 +40524,8 @@ Examples:
|
|
|
40524
40524
|
args.include_total = opts.includeTotal;
|
|
40525
40525
|
if (opts.customerId !== void 0)
|
|
40526
40526
|
args.customer_id = opts.customerId;
|
|
40527
|
+
if (opts["customerId.in"] !== void 0)
|
|
40528
|
+
args.customer_id__in = opts["customerId.in"];
|
|
40527
40529
|
if (opts.status !== void 0)
|
|
40528
40530
|
args.status = opts.status;
|
|
40529
40531
|
if (opts["createdAt.gte"] !== void 0)
|
|
@@ -40541,6 +40543,7 @@ Examples:
|
|
|
40541
40543
|
"cursor",
|
|
40542
40544
|
"include_total",
|
|
40543
40545
|
"customer_id",
|
|
40546
|
+
"customer_id__in",
|
|
40544
40547
|
"status",
|
|
40545
40548
|
"created_at__gte",
|
|
40546
40549
|
"created_at__lte"
|
|
@@ -40726,7 +40729,7 @@ Examples:
|
|
|
40726
40729
|
queryParamKeys: ["take", "skip"]
|
|
40727
40730
|
});
|
|
40728
40731
|
});
|
|
40729
|
-
resource.command("create").description(`Create a new coupon with discount rules. Supports percentage or fixed amount discounts, duration limits, and redemption restrictions.`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `
|
|
40732
|
+
resource.command("create").description(`Create a new coupon with discount rules. Supports percentage or fixed amount discounts, duration limits, and redemption restrictions.`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `Products the coupon is scoped to, read together with \`product_scope\`: the only discounted products when \`include\`, the products never discounted when \`exclude\`, empty when \`all\`.`).option("--product-scope <value>", `Which products the coupon discounts. \`all\`: every product (\`product_ids\` must be empty). \`include\`: only the products in \`product_ids\`. \`exclude\`: every product except those in \`product_ids\` (lines without a product stay discounted). \`include\` and \`exclude\` require a non-empty \`product_ids\`. When omitted on create/update, it is inferred: \`include\` if \`product_ids\` is non-empty, \`all\` otherwise. Integrations that read \`product_ids\` without \`product_scope\` will misread an \`exclude\` list as the products the coupon applies to.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
|
|
40730
40733
|
Examples:
|
|
40731
40734
|
hyperline coupons create --name <name> --type <type>
|
|
40732
40735
|
hyperline coupons create --name <name> --type <type> --description <description> --expiration-date <expiration_date>
|
|
@@ -40743,6 +40746,8 @@ Examples:
|
|
|
40743
40746
|
args.description = opts.description;
|
|
40744
40747
|
if (opts.expirationDate !== void 0)
|
|
40745
40748
|
args.expiration_date = opts.expirationDate;
|
|
40749
|
+
if (opts.productScope !== void 0)
|
|
40750
|
+
args.product_scope = opts.productScope;
|
|
40746
40751
|
if (opts.repeat !== void 0)
|
|
40747
40752
|
args.repeat = opts.repeat;
|
|
40748
40753
|
if (opts.type !== void 0)
|
|
@@ -40786,7 +40791,7 @@ Examples:
|
|
|
40786
40791
|
queryParamKeys: []
|
|
40787
40792
|
});
|
|
40788
40793
|
});
|
|
40789
|
-
resource.command("update").description(`Update an existing coupon's name, discount rules, or restrictions.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `
|
|
40794
|
+
resource.command("update").description(`Update an existing coupon's name, discount rules, or restrictions.`).requiredOption("--id <value>", `id parameter`).requiredOption("--name <value>", `Coupon name.`).option("--description <value>", `Coupon description.`).option("--expiration-date <value>", `Date corresponding to the expiration of the coupon.`).option("--redemption-limit <number>", `Maximum number of subscriptions to which a single coupon can be applied.`).option("--product-ids <json>", `Products the coupon is scoped to, read together with \`product_scope\`: the only discounted products when \`include\`, the products never discounted when \`exclude\`, empty when \`all\`.`).option("--product-scope <value>", `Which products the coupon discounts. \`all\`: every product (\`product_ids\` must be empty). \`include\`: only the products in \`product_ids\`. \`exclude\`: every product except those in \`product_ids\` (lines without a product stay discounted). \`include\` and \`exclude\` require a non-empty \`product_ids\`. When omitted on create/update, it is inferred: \`include\` if \`product_ids\` is non-empty, \`all\` otherwise. Integrations that read \`product_ids\` without \`product_scope\` will misread an \`exclude\` list as the products the coupon applies to.`).option("--repeat <value>", `Default repeat behaviour applied when the coupon is attached to a subscription. Valid values: \`once\`, \`forever\`, \`duration\`. Can be overridden at attach time.`).option("--duration <json>", `Default duration applied when \`repeat\` is \`duration\`. Required when \`repeat\` is \`duration\`, must be null otherwise.`).option("--properties <json>", `Key/value pairs to store any metadata useful in your context.`).requiredOption("--type <value>", `type`).option("--discount-amount <number>", `Amount to apply as a discount on the total amount (excluding taxes) of a subscription. Expressed in the currency's smallest unit.`).option("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--discount-percent <number>", `Percentage to apply as a discount on the amount (excluding taxes) of a product.`).addHelpText("after", `
|
|
40790
40795
|
Examples:
|
|
40791
40796
|
hyperline coupons update --id <id> --name <name> --type <type>
|
|
40792
40797
|
hyperline coupons update --id <id> --name <name> --type <type> --description <description> --expiration-date <expiration_date>
|
|
@@ -40805,6 +40810,8 @@ Examples:
|
|
|
40805
40810
|
args.description = opts.description;
|
|
40806
40811
|
if (opts.expirationDate !== void 0)
|
|
40807
40812
|
args.expiration_date = opts.expirationDate;
|
|
40813
|
+
if (opts.productScope !== void 0)
|
|
40814
|
+
args.product_scope = opts.productScope;
|
|
40808
40815
|
if (opts.repeat !== void 0)
|
|
40809
40816
|
args.repeat = opts.repeat;
|
|
40810
40817
|
if (opts.type !== void 0)
|
|
@@ -41155,7 +41162,15 @@ Examples:
|
|
|
41155
41162
|
// build/commands/generated/customers.js
|
|
41156
41163
|
function registerCustomersCommands(parent) {
|
|
41157
41164
|
const resource = parent.command("customers").description("Manage customers");
|
|
41158
|
-
resource.command("list").description(`List customers with optional filters for name, type, status, currency, country, external_id, billing_email, search, tax_id, subscription_status, invoicing_entity_id, segment_id, custom_properties, payment_method_type, integration_entity_id, created_at, and updated_at. Sortable by created_at or updated_at. Paginated with limit/cursor.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--order <value>", `Sort direction.`).option("--sort <value>", `Field used to sort the results.`).option("--
|
|
41165
|
+
resource.command("list").description(`List customers with optional filters for name, type, status, currency, country, external_id, billing_email, search, tax_id, tax_id_status, subscription_status, invoicing_entity_id, segment_id, custom_properties, payment_method_type, integration_entity_id, created_at, and updated_at. Sortable by created_at or updated_at. Paginated with limit/cursor.`).option("--limit <number>", `Maximum number of items to return (1-100).`).option("--cursor <value>", `Opaque cursor returned in the previous response's \`next_cursor\`. Omit to fetch the first page.`).option("--include-total <value>", `Set to \`true\` to include \`total\` in the response.`).option("--order <value>", `Sort direction.`).option("--sort <value>", `Field used to sort the results.`).option("--tax-id-status <value>", `
|
|
41166
|
+
Verification status of the customer tax ID.
|
|
41167
|
+
|
|
41168
|
+
- \`valid\`: Tax ID has been verified and is valid.
|
|
41169
|
+
- \`invalid\`: Tax ID has been verified and is invalid.
|
|
41170
|
+
- \`mismatch\`: Tax ID is valid but is for a different country than the customer's country.
|
|
41171
|
+
- \`unverified\`: Tax ID has not been verified yet.
|
|
41172
|
+
- \`unsupported\`: Tax ID verification for this type not supported yet.
|
|
41173
|
+
`).option("--name <value>", `name`).option("--name.not <value>", `name__not`).option("--name.is-null <value>", `name__isNull`).option("--name.is-not-null <value>", `name__isNotNull`).option("--name.equals <value>", `name__equals`).option("--name.contains <value>", `name__contains`).option("--name.starts-with <value>", `name__startsWith`).option("--name.end-with <value>", `name__endWith`).option("--type <value>", `type`).option("--type.in <value>", `type__in`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--currency <value>", `currency`).option("--currency.not <value>", `currency__not`).option("--currency.is-null <value>", `currency__isNull`).option("--currency.is-not-null <value>", `currency__isNotNull`).option("--currency.equals <value>", `currency__equals`).option("--currency.contains <value>", `currency__contains`).option("--currency.starts-with <value>", `currency__startsWith`).option("--currency.end-with <value>", `currency__endWith`).option("--country <value>", `country`).option("--country.not <value>", `country__not`).option("--country.is-null <value>", `country__isNull`).option("--country.is-not-null <value>", `country__isNotNull`).option("--country.equals <value>", `country__equals`).option("--country.contains <value>", `country__contains`).option("--country.starts-with <value>", `country__startsWith`).option("--country.end-with <value>", `country__endWith`).option("--external-id <value>", `external_id`).option("--external-id.not <value>", `external_id__not`).option("--external-id.is-null <value>", `external_id__isNull`).option("--external-id.is-not-null <value>", `external_id__isNotNull`).option("--external-id.equals <value>", `external_id__equals`).option("--external-id.contains <value>", `external_id__contains`).option("--external-id.starts-with <value>", `external_id__startsWith`).option("--external-id.end-with <value>", `external_id__endWith`).option("--billing-email <value>", `billing_email`).option("--billing-email.not <value>", `billing_email__not`).option("--billing-email.is-null <value>", `billing_email__isNull`).option("--billing-email.is-not-null <value>", `billing_email__isNotNull`).option("--billing-email.equals <value>", `billing_email__equals`).option("--billing-email.contains <value>", `billing_email__contains`).option("--billing-email.starts-with <value>", `billing_email__startsWith`).option("--billing-email.end-with <value>", `billing_email__endWith`).option("--search <value>", `search`).option("--tax-id <value>", `tax_id`).option("--tax-id.not <value>", `tax_id__not`).option("--tax-id.is-null <value>", `tax_id__isNull`).option("--tax-id.is-not-null <value>", `tax_id__isNotNull`).option("--tax-id.equals <value>", `tax_id__equals`).option("--tax-id.contains <value>", `tax_id__contains`).option("--tax-id.starts-with <value>", `tax_id__startsWith`).option("--tax-id.end-with <value>", `tax_id__endWith`).option("--subscription-status <value>", `subscription_status`).option("--subscription-status.in <value>", `subscription_status__in`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--invoicing-entity-id.not <value>", `invoicing_entity_id__not`).option("--invoicing-entity-id.is-null <value>", `invoicing_entity_id__isNull`).option("--invoicing-entity-id.is-not-null <value>", `invoicing_entity_id__isNotNull`).option("--invoicing-entity-id.equals <value>", `invoicing_entity_id__equals`).option("--invoicing-entity-id.contains <value>", `invoicing_entity_id__contains`).option("--invoicing-entity-id.starts-with <value>", `invoicing_entity_id__startsWith`).option("--invoicing-entity-id.end-with <value>", `invoicing_entity_id__endWith`).option("--segment-id <value>", `segment_id`).option("--custom-properties <value>", `custom_properties`).option("--payment-method-type <value>", `payment_method_type`).option("--payment-method-type.in <value>", `payment_method_type__in`).option("--integration-entity-id <value>", `integration_entity_id`).option("--created-at <value>", `created_at`).option("--created-at.not <value>", `created_at__not`).option("--created-at.is-null <value>", `created_at__isNull`).option("--created-at.is-not-null <value>", `created_at__isNotNull`).option("--created-at.equals <value>", `created_at__equals`).option("--created-at.lt <value>", `created_at__lt`).option("--created-at.lte <value>", `created_at__lte`).option("--created-at.gt <value>", `created_at__gt`).option("--created-at.gte <value>", `created_at__gte`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
|
|
41159
41174
|
Examples:
|
|
41160
41175
|
hyperline customers list
|
|
41161
41176
|
hyperline customers list --limit <limit> --cursor <cursor>`).action(async (opts) => {
|
|
@@ -41173,6 +41188,8 @@ Examples:
|
|
|
41173
41188
|
args.order = opts.order;
|
|
41174
41189
|
if (opts.sort !== void 0)
|
|
41175
41190
|
args.sort = opts.sort;
|
|
41191
|
+
if (opts.taxIdStatus !== void 0)
|
|
41192
|
+
args.tax_id_status = opts.taxIdStatus;
|
|
41176
41193
|
if (opts.name !== void 0)
|
|
41177
41194
|
args.name = opts.name;
|
|
41178
41195
|
if (opts["name.not"] !== void 0)
|
|
@@ -41357,6 +41374,7 @@ Examples:
|
|
|
41357
41374
|
"include_total",
|
|
41358
41375
|
"order",
|
|
41359
41376
|
"sort",
|
|
41377
|
+
"tax_id_status",
|
|
41360
41378
|
"name",
|
|
41361
41379
|
"name__not",
|
|
41362
41380
|
"name__isNull",
|
|
@@ -44294,7 +44312,7 @@ Examples:
|
|
|
44294
44312
|
queryParamKeys: []
|
|
44295
44313
|
});
|
|
44296
44314
|
});
|
|
44297
|
-
resource.command("create").description(`Create a new price configuration on an existing product. Specify the product_id, pricing type (fee, volume, bulk, packaged, bps, bundle), currency, billing interval, and price tiers. Supports metering_filter for dynamic products.`).requiredOption("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--countries <json>", `Countries this price configuration is eligible in. Omit or send \`null\` to make it eligible in every country. An empty array restricts it to customers that have no country set.`).option("--price-book-id <value>", `ID of the price book to which this price configuration belongs to. If null, the price configuration belongs to the default price book.`).requiredOption("--billing-interval <json>", `Billing interval on which the price configuration is eligible.`).option("--commitment-interval <json>", `Commitment interval on which the price configuration is eligible.`).requiredOption("--type <value>", `type`).requiredOption("--prices <json>", `Price tiers of the price configuration. If fixed amount, only one price is available.`).requiredOption("--product-id <value>", `ID of the product to add the price configuration to.`).option("--metering-filter <json>", `Filter to scope which billable events are eligible for this price configuration.`).option("--allow-on-portal", `allow_on_portal`).addHelpText("after", `
|
|
44315
|
+
resource.command("create").description(`Create a new price configuration on an existing product. Specify the product_id, pricing type (fee, volume, bulk, packaged, bps, bundle), currency, billing interval, and price tiers. Supports metering_filter for dynamic products.`).requiredOption("--currency <value>", `Currency code. See [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes).`).option("--countries <json>", `Countries this price configuration is eligible in. Omit or send \`null\` to make it eligible in every country. An empty array restricts it to customers that have no country set.`).option("--price-book-id <value>", `ID of the price book to which this price configuration belongs to. If null, the price configuration belongs to the default price book.`).requiredOption("--billing-interval <json>", `Billing interval on which the price configuration is eligible.`).option("--commitment-interval <json>", `Commitment interval on which the price configuration is eligible.`).requiredOption("--type <value>", `type`).requiredOption("--prices <json>", `Price tiers of the price configuration. If fixed amount, only one price is available.`).requiredOption("--product-id <value>", `ID of the product to add the price configuration to.`).option("--metering-filter <json>", `Filter to scope which billable events are eligible for this price configuration.`).option("--aggregator-filter-id <value>", `ID of an existing metering filter of the product's aggregator to attach to this price configuration, instead of creating a new one with \`metering_filter\`.`).option("--allow-on-portal", `allow_on_portal`).addHelpText("after", `
|
|
44298
44316
|
Examples:
|
|
44299
44317
|
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id>
|
|
44300
44318
|
hyperline price-configurations create --currency <currency> --billing-interval <billing_interval> --type <type> --prices <prices> --product-id <product_id> --countries <countries> --price-book-id <price_book_id>
|
|
@@ -44313,6 +44331,8 @@ Examples:
|
|
|
44313
44331
|
args.type = opts.type;
|
|
44314
44332
|
if (opts.productId !== void 0)
|
|
44315
44333
|
args.product_id = opts.productId;
|
|
44334
|
+
if (opts.aggregatorFilterId !== void 0)
|
|
44335
|
+
args.aggregator_filter_id = opts.aggregatorFilterId;
|
|
44316
44336
|
if (opts.allowOnPortal !== void 0)
|
|
44317
44337
|
args.allow_on_portal = true;
|
|
44318
44338
|
if (opts.countries !== void 0)
|
|
@@ -44731,7 +44751,7 @@ Quote status.
|
|
|
44731
44751
|
- \`all\`: Display all pricing tiers.
|
|
44732
44752
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
44733
44753
|
- \`none\`: Hide all pricing tiers.
|
|
44734
|
-
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--template-id <value>", `ID of the quote template. If not specified, a subscription configuration or an \`invoice\` payload must be defined.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--subscription <json>", `Subscription configuration constituting the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided, a draft invoice is created and linked to the quote. Cannot be combined with \`subscription\` or \`template_id\`.`).addHelpText("after", `
|
|
44754
|
+
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--template-id <value>", `ID of the quote template. If not specified, a subscription configuration or an \`invoice\` payload must be defined.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.`).option("--subscription <json>", `Subscription configuration constituting the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided, a draft invoice is created and linked to the quote. Cannot be combined with \`subscription\` or \`template_id\`.`).addHelpText("after", `
|
|
44735
44755
|
Examples:
|
|
44736
44756
|
hyperline quotes create --customer-id <customer_id>
|
|
44737
44757
|
hyperline quotes create --customer-id <customer_id> --status <status> --owner-email <owner_email>
|
|
@@ -44770,6 +44790,8 @@ Examples:
|
|
|
44770
44790
|
args.display_price_tiers = opts.displayPriceTiers;
|
|
44771
44791
|
if (opts.displayPhaseValue !== void 0)
|
|
44772
44792
|
args.display_phase_value = opts.displayPhaseValue;
|
|
44793
|
+
if (opts.displayDiscountsOnTotal !== void 0)
|
|
44794
|
+
args.display_discounts_on_total = opts.displayDiscountsOnTotal;
|
|
44773
44795
|
if (opts.displayFirstInvoiceAmount !== void 0)
|
|
44774
44796
|
args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
|
|
44775
44797
|
if (opts.displayDocumentsInPreview !== void 0)
|
|
@@ -44801,7 +44823,7 @@ Examples:
|
|
|
44801
44823
|
queryParamKeys: []
|
|
44802
44824
|
});
|
|
44803
44825
|
});
|
|
44804
|
-
resource.command("list").description(`List quotes with optional filters for id, number, status, customer_id, template_id, crm_opportunity_id, type, and updated_at. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.is-null <value>", `id__isNull`).option("--id.is-not-null <value>", `id__isNotNull`).option("--id.equals <value>", `id__equals`).option("--id.contains <value>", `id__contains`).option("--id.starts-with <value>", `id__startsWith`).option("--id.end-with <value>", `id__endWith`).option("--number <value>", `number`).option("--number.not <value>", `number__not`).option("--number.is-null <value>", `number__isNull`).option("--number.is-not-null <value>", `number__isNotNull`).option("--number.equals <value>", `number__equals`).option("--number.contains <value>", `number__contains`).option("--number.starts-with <value>", `number__startsWith`).option("--number.end-with <value>", `number__endWith`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--template-id <value>", `template_id`).option("--template-id.not <value>", `template_id__not`).option("--template-id.is-null <value>", `template_id__isNull`).option("--template-id.is-not-null <value>", `template_id__isNotNull`).option("--template-id.equals <value>", `template_id__equals`).option("--template-id.contains <value>", `template_id__contains`).option("--template-id.starts-with <value>", `template_id__startsWith`).option("--template-id.end-with <value>", `template_id__endWith`).option("--crm-opportunity-id <value>", `crm_opportunity_id`).option("--crm-opportunity-id.not <value>", `crm_opportunity_id__not`).option("--crm-opportunity-id.is-null <value>", `crm_opportunity_id__isNull`).option("--crm-opportunity-id.is-not-null <value>", `crm_opportunity_id__isNotNull`).option("--crm-opportunity-id.equals <value>", `crm_opportunity_id__equals`).option("--crm-opportunity-id.contains <value>", `crm_opportunity_id__contains`).option("--crm-opportunity-id.starts-with <value>", `crm_opportunity_id__startsWith`).option("--crm-opportunity-id.end-with <value>", `crm_opportunity_id__endWith`).option("--type <value>", `type`).option("--
|
|
44826
|
+
resource.command("list").description(`List quotes with optional filters for id, number, status, customer_id, template_id, crm_opportunity_id, type, and updated_at. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--id <value>", `id`).option("--id.not <value>", `id__not`).option("--id.is-null <value>", `id__isNull`).option("--id.is-not-null <value>", `id__isNotNull`).option("--id.equals <value>", `id__equals`).option("--id.contains <value>", `id__contains`).option("--id.starts-with <value>", `id__startsWith`).option("--id.end-with <value>", `id__endWith`).option("--number <value>", `number`).option("--number.not <value>", `number__not`).option("--number.is-null <value>", `number__isNull`).option("--number.is-not-null <value>", `number__isNotNull`).option("--number.equals <value>", `number__equals`).option("--number.contains <value>", `number__contains`).option("--number.starts-with <value>", `number__startsWith`).option("--number.end-with <value>", `number__endWith`).option("--status <value>", `status`).option("--status.in <value>", `status__in`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--template-id <value>", `template_id`).option("--template-id.not <value>", `template_id__not`).option("--template-id.is-null <value>", `template_id__isNull`).option("--template-id.is-not-null <value>", `template_id__isNotNull`).option("--template-id.equals <value>", `template_id__equals`).option("--template-id.contains <value>", `template_id__contains`).option("--template-id.starts-with <value>", `template_id__startsWith`).option("--template-id.end-with <value>", `template_id__endWith`).option("--crm-opportunity-id <value>", `crm_opportunity_id`).option("--crm-opportunity-id.not <value>", `crm_opportunity_id__not`).option("--crm-opportunity-id.is-null <value>", `crm_opportunity_id__isNull`).option("--crm-opportunity-id.is-not-null <value>", `crm_opportunity_id__isNotNull`).option("--crm-opportunity-id.equals <value>", `crm_opportunity_id__equals`).option("--crm-opportunity-id.contains <value>", `crm_opportunity_id__contains`).option("--crm-opportunity-id.starts-with <value>", `crm_opportunity_id__startsWith`).option("--crm-opportunity-id.end-with <value>", `crm_opportunity_id__endWith`).option("--type <value>", `type`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
|
|
44805
44827
|
Examples:
|
|
44806
44828
|
hyperline quotes list
|
|
44807
44829
|
hyperline quotes list --take <take> --id <id>`).action(async (opts) => {
|
|
@@ -44897,20 +44919,6 @@ Examples:
|
|
|
44897
44919
|
args.crm_opportunity_id__endWith = opts["crmOpportunityId.endWith"];
|
|
44898
44920
|
if (opts.type !== void 0)
|
|
44899
44921
|
args.type = opts.type;
|
|
44900
|
-
if (opts["type.not"] !== void 0)
|
|
44901
|
-
args.type__not = opts["type.not"];
|
|
44902
|
-
if (opts["type.isNull"] !== void 0)
|
|
44903
|
-
args.type__isNull = opts["type.isNull"];
|
|
44904
|
-
if (opts["type.isNotNull"] !== void 0)
|
|
44905
|
-
args.type__isNotNull = opts["type.isNotNull"];
|
|
44906
|
-
if (opts["type.equals"] !== void 0)
|
|
44907
|
-
args.type__equals = opts["type.equals"];
|
|
44908
|
-
if (opts["type.contains"] !== void 0)
|
|
44909
|
-
args.type__contains = opts["type.contains"];
|
|
44910
|
-
if (opts["type.startsWith"] !== void 0)
|
|
44911
|
-
args.type__startsWith = opts["type.startsWith"];
|
|
44912
|
-
if (opts["type.endWith"] !== void 0)
|
|
44913
|
-
args.type__endWith = opts["type.endWith"];
|
|
44914
44922
|
if (opts.updatedAt !== void 0)
|
|
44915
44923
|
args.updated_at = opts.updatedAt;
|
|
44916
44924
|
if (opts["updatedAt.not"] !== void 0)
|
|
@@ -44983,13 +44991,6 @@ Examples:
|
|
|
44983
44991
|
"crm_opportunity_id__startsWith",
|
|
44984
44992
|
"crm_opportunity_id__endWith",
|
|
44985
44993
|
"type",
|
|
44986
|
-
"type__not",
|
|
44987
|
-
"type__isNull",
|
|
44988
|
-
"type__isNotNull",
|
|
44989
|
-
"type__equals",
|
|
44990
|
-
"type__contains",
|
|
44991
|
-
"type__startsWith",
|
|
44992
|
-
"type__endWith",
|
|
44993
44994
|
"updated_at",
|
|
44994
44995
|
"updated_at__not",
|
|
44995
44996
|
"updated_at__isNull",
|
|
@@ -45025,7 +45026,7 @@ Examples:
|
|
|
45025
45026
|
- \`all\`: Display all pricing tiers.
|
|
45026
45027
|
- \`matching\`: Only display the tiers used to compute the price based on quantity.
|
|
45027
45028
|
- \`none\`: Hide all pricing tiers.
|
|
45028
|
-
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. Set to \`null\` to clear the expiration.`).option("--subscription <json>", `Subscription configuration constituting the quote. When provided on a draft quote, it creates or replaces the draft subscription attached to the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided on a draft one-off quote, it deletes the previous draft invoice and creates a fresh one linked to the quote. \`invoice.invoicing_entity_id\` is ignored on update \u2014 the quote's existing invoicing entity is reused.`).addHelpText("after", `
|
|
45029
|
+
`).option("--display-phase-value <value>", `Display per-phase value breakdown on the quote.`).option("--display-discounts-on-total <value>", `Display discounts on the totals, with product prices before discount. Totals then follow the contract value, so discounts with a limited duration are included.`).option("--display-first-invoice-amount <value>", `Display the first invoice amount on the quote.`).option("--display-documents-in-preview <value>", `Display attached documents in the quote preview.`).option("--subscription-update-display <value>", `Sections displayed on subscription update quotes: quote_update_details, subscription_details, or both. Takes precedence over display_subscription_on_update.`).option("--generate-draft-invoices <value>", `When \`true\`, the invoice issued after signature stays in \`draft\` status instead of being emitted for payment. Use this when you want to review the final invoice manually before sending it. Defaults to \`false\`.`).option("--crm-opportunity-id <value>", `ID of the related opportunity/deal in the connected CRM.`).option("--expires-at <value>", `Quote expiration date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. Set to \`null\` to clear the expiration.`).option("--subscription <json>", `Subscription configuration constituting the quote. When provided on a draft quote, it creates or replaces the draft subscription attached to the quote.`).option("--invoice <json>", `Invoice configuration constituting the one-off quote. When provided on a draft one-off quote, it deletes the previous draft invoice and creates a fresh one linked to the quote. \`invoice.invoicing_entity_id\` is ignored on update \u2014 the quote's existing invoicing entity is reused.`).addHelpText("after", `
|
|
45029
45030
|
Examples:
|
|
45030
45031
|
hyperline quotes update --id <id>
|
|
45031
45032
|
hyperline quotes update --id <id> --owner-email <owner_email> --catalog-version-id <catalog_version_id>
|
|
@@ -45060,6 +45061,8 @@ Examples:
|
|
|
45060
45061
|
args.display_price_tiers = opts.displayPriceTiers;
|
|
45061
45062
|
if (opts.displayPhaseValue !== void 0)
|
|
45062
45063
|
args.display_phase_value = opts.displayPhaseValue;
|
|
45064
|
+
if (opts.displayDiscountsOnTotal !== void 0)
|
|
45065
|
+
args.display_discounts_on_total = opts.displayDiscountsOnTotal;
|
|
45063
45066
|
if (opts.displayFirstInvoiceAmount !== void 0)
|
|
45064
45067
|
args.display_first_invoice_amount = opts.displayFirstInvoiceAmount;
|
|
45065
45068
|
if (opts.displayDocumentsInPreview !== void 0)
|
|
@@ -45153,6 +45156,25 @@ Examples:
|
|
|
45153
45156
|
queryParamKeys: []
|
|
45154
45157
|
});
|
|
45155
45158
|
});
|
|
45159
|
+
resource.command("redraft").description(`Switch a quote back to draft so its subscription or invoice configuration can be updated. Works on quotes pending approval, with changes requested, approved, or awaiting signature. Cancels pending approval requests and the signature request; the quote must then be finalized again.`).requiredOption("--id <value>", `id parameter`).addHelpText("after", `
|
|
45160
|
+
Examples:
|
|
45161
|
+
hyperline quotes redraft --id <id>
|
|
45162
|
+
hyperline quotes redraft --id <id> --output json`).action(async (opts) => {
|
|
45163
|
+
const ctx = resource.parent?.opts()._ctx;
|
|
45164
|
+
if (!ctx) {
|
|
45165
|
+
process.stderr.write("Error: Not authenticated\n");
|
|
45166
|
+
process.exit(1);
|
|
45167
|
+
}
|
|
45168
|
+
const args = {};
|
|
45169
|
+
if (opts.id !== void 0)
|
|
45170
|
+
args.id = opts.id;
|
|
45171
|
+
await ctx.execute({
|
|
45172
|
+
method: "POST",
|
|
45173
|
+
path: "/v1/quotes/{id}/redraft",
|
|
45174
|
+
args,
|
|
45175
|
+
queryParamKeys: []
|
|
45176
|
+
});
|
|
45177
|
+
});
|
|
45156
45178
|
resource.command("send").description(`Send a quote by email for customer signature. Requires the quote to be approved first.`).requiredOption("--id <value>", `id parameter`).option("--email <value>", `Email address to which the quote will be sent for signature. Required unless the quote has signers, in which case the email goes to the signers of the current step and this field is ignored.`).option("--message <value>", `Custom message used in the email content.`).addHelpText("after", `
|
|
45157
45179
|
Examples:
|
|
45158
45180
|
hyperline quotes send --id <id>
|
|
@@ -45846,7 +45868,7 @@ Examples:
|
|
|
45846
45868
|
queryParamKeys: []
|
|
45847
45869
|
});
|
|
45848
45870
|
});
|
|
45849
|
-
resource.command("list").description(`List subscriptions with filters for activation_strategy, status, currency, plan_id, original_quote_id, integration_entity_id, customer_id, invoicing_entity_id, purchase_order, updated_at, custom_properties. Draft, voided, cancelled and archived excluded by default (status=all applies the same exclusion); status=any returns every status. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--activation-strategy <value>", `activation_strategy`).option("--activation-strategy.in <value>", `activation_strategy__in`).option("--status <value>", `
|
|
45871
|
+
resource.command("list").description(`List subscriptions with filters for activation_strategy, status, currency, plan_id, original_quote_id, integration_entity_id, customer_id, invoicing_entity_id, purchase_order, updated_at, cancel_at, custom_properties, and the active contract: contract_start__gte/__lte, contract_end__gte/__lte, renew_automatically. For upcoming renewals, combine contract_end__gte/__lte with renew_automatically, plus cancel_at for scheduled cancellations. Draft, voided, cancelled and archived excluded by default (status=all applies the same exclusion); status=any returns every status. Paginated with take/skip.`).option("--take <number>", `take`).option("--skip <number>", `skip`).option("--activation-strategy <value>", `activation_strategy`).option("--activation-strategy.in <value>", `activation_strategy__in`).option("--status <value>", `
|
|
45850
45872
|
Subscription status filter.
|
|
45851
45873
|
|
|
45852
45874
|
- \`active\`, \`pending\`, \`paused\`, \`errored\`, \`cancelled\`, \`draft\`, \`voided\`, \`archived\`: match that status.
|
|
@@ -45855,7 +45877,7 @@ Subscription status filter.
|
|
|
45855
45877
|
- \`any\`: every status, no exclusion.
|
|
45856
45878
|
|
|
45857
45879
|
Use \`status__in\` with comma-separated values to combine statuses. When the filter is omitted, \`draft\`, \`voided\`, \`cancelled\` and \`archived\` subscriptions are excluded.
|
|
45858
|
-
`).option("--status.in <value>", `Comma-separated list of subscription statuses to include. Same values as \`status\`.`).option("--currency <value>", `currency`).option("--currency.not <value>", `currency__not`).option("--currency.is-null <value>", `currency__isNull`).option("--currency.is-not-null <value>", `currency__isNotNull`).option("--currency.equals <value>", `currency__equals`).option("--currency.contains <value>", `currency__contains`).option("--currency.starts-with <value>", `currency__startsWith`).option("--currency.end-with <value>", `currency__endWith`).option("--plan-id <value>", `plan_id`).option("--plan-id.not <value>", `plan_id__not`).option("--plan-id.is-null <value>", `plan_id__isNull`).option("--plan-id.is-not-null <value>", `plan_id__isNotNull`).option("--plan-id.equals <value>", `plan_id__equals`).option("--plan-id.contains <value>", `plan_id__contains`).option("--plan-id.starts-with <value>", `plan_id__startsWith`).option("--plan-id.end-with <value>", `plan_id__endWith`).option("--original-quote-id <value>", `original_quote_id`).option("--original-quote-id.not <value>", `original_quote_id__not`).option("--original-quote-id.is-null <value>", `original_quote_id__isNull`).option("--original-quote-id.is-not-null <value>", `original_quote_id__isNotNull`).option("--original-quote-id.equals <value>", `original_quote_id__equals`).option("--original-quote-id.contains <value>", `original_quote_id__contains`).option("--original-quote-id.starts-with <value>", `original_quote_id__startsWith`).option("--original-quote-id.end-with <value>", `original_quote_id__endWith`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--purchase-order <value>", `purchase_order`).option("--purchase-order.not <value>", `purchase_order__not`).option("--purchase-order.is-null <value>", `purchase_order__isNull`).option("--purchase-order.is-not-null <value>", `purchase_order__isNotNull`).option("--purchase-order.equals <value>", `purchase_order__equals`).option("--purchase-order.contains <value>", `purchase_order__contains`).option("--purchase-order.starts-with <value>", `purchase_order__startsWith`).option("--purchase-order.end-with <value>", `purchase_order__endWith`).option("--custom-properties <value>", `custom_properties`).option("--invoice-drafts <value>", `invoice_drafts`).option("--integration-entity-id <value>", `integration_entity_id`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).addHelpText("after", `
|
|
45880
|
+
`).option("--status.in <value>", `Comma-separated list of subscription statuses to include. Same values as \`status\`.`).option("--currency <value>", `currency`).option("--currency.not <value>", `currency__not`).option("--currency.is-null <value>", `currency__isNull`).option("--currency.is-not-null <value>", `currency__isNotNull`).option("--currency.equals <value>", `currency__equals`).option("--currency.contains <value>", `currency__contains`).option("--currency.starts-with <value>", `currency__startsWith`).option("--currency.end-with <value>", `currency__endWith`).option("--plan-id <value>", `plan_id`).option("--plan-id.not <value>", `plan_id__not`).option("--plan-id.is-null <value>", `plan_id__isNull`).option("--plan-id.is-not-null <value>", `plan_id__isNotNull`).option("--plan-id.equals <value>", `plan_id__equals`).option("--plan-id.contains <value>", `plan_id__contains`).option("--plan-id.starts-with <value>", `plan_id__startsWith`).option("--plan-id.end-with <value>", `plan_id__endWith`).option("--original-quote-id <value>", `original_quote_id`).option("--original-quote-id.not <value>", `original_quote_id__not`).option("--original-quote-id.is-null <value>", `original_quote_id__isNull`).option("--original-quote-id.is-not-null <value>", `original_quote_id__isNotNull`).option("--original-quote-id.equals <value>", `original_quote_id__equals`).option("--original-quote-id.contains <value>", `original_quote_id__contains`).option("--original-quote-id.starts-with <value>", `original_quote_id__startsWith`).option("--original-quote-id.end-with <value>", `original_quote_id__endWith`).option("--customer-id <value>", `customer_id`).option("--customer-id.not <value>", `customer_id__not`).option("--customer-id.is-null <value>", `customer_id__isNull`).option("--customer-id.is-not-null <value>", `customer_id__isNotNull`).option("--customer-id.equals <value>", `customer_id__equals`).option("--customer-id.contains <value>", `customer_id__contains`).option("--customer-id.starts-with <value>", `customer_id__startsWith`).option("--customer-id.end-with <value>", `customer_id__endWith`).option("--invoicing-entity-id <value>", `invoicing_entity_id`).option("--purchase-order <value>", `purchase_order`).option("--purchase-order.not <value>", `purchase_order__not`).option("--purchase-order.is-null <value>", `purchase_order__isNull`).option("--purchase-order.is-not-null <value>", `purchase_order__isNotNull`).option("--purchase-order.equals <value>", `purchase_order__equals`).option("--purchase-order.contains <value>", `purchase_order__contains`).option("--purchase-order.starts-with <value>", `purchase_order__startsWith`).option("--purchase-order.end-with <value>", `purchase_order__endWith`).option("--custom-properties <value>", `custom_properties`).option("--invoice-drafts <value>", `invoice_drafts`).option("--integration-entity-id <value>", `integration_entity_id`).option("--updated-at <value>", `updated_at`).option("--updated-at.not <value>", `updated_at__not`).option("--updated-at.is-null <value>", `updated_at__isNull`).option("--updated-at.is-not-null <value>", `updated_at__isNotNull`).option("--updated-at.equals <value>", `updated_at__equals`).option("--updated-at.lt <value>", `updated_at__lt`).option("--updated-at.lte <value>", `updated_at__lte`).option("--updated-at.gt <value>", `updated_at__gt`).option("--updated-at.gte <value>", `updated_at__gte`).option("--cancel-at <value>", `cancel_at`).option("--cancel-at.not <value>", `cancel_at__not`).option("--cancel-at.is-null <value>", `cancel_at__isNull`).option("--cancel-at.is-not-null <value>", `cancel_at__isNotNull`).option("--cancel-at.equals <value>", `cancel_at__equals`).option("--cancel-at.lt <value>", `cancel_at__lt`).option("--cancel-at.lte <value>", `cancel_at__lte`).option("--cancel-at.gt <value>", `cancel_at__gt`).option("--cancel-at.gte <value>", `cancel_at__gte`).option("--contract-start.gte <value>", `Return only subscriptions whose active contract starts on or after this date.`).option("--contract-start.lte <value>", `Return only subscriptions whose active contract starts on or before this date.`).option("--contract-end.gte <value>", `Return only subscriptions whose active contract ends on or after this date.`).option("--contract-end.lte <value>", `Return only subscriptions whose active contract ends on or before this date.`).option("--renew-automatically <value>", `Return only subscriptions whose active contract renews automatically (\`true\`) or not (\`false\`).`).addHelpText("after", `
|
|
45859
45881
|
Examples:
|
|
45860
45882
|
hyperline subscriptions list
|
|
45861
45883
|
hyperline subscriptions list --take <take> --activation-strategy <activation_strategy>`).action(async (opts) => {
|
|
@@ -45979,6 +46001,34 @@ Examples:
|
|
|
45979
46001
|
args.updated_at__gt = opts["updatedAt.gt"];
|
|
45980
46002
|
if (opts["updatedAt.gte"] !== void 0)
|
|
45981
46003
|
args.updated_at__gte = opts["updatedAt.gte"];
|
|
46004
|
+
if (opts.cancelAt !== void 0)
|
|
46005
|
+
args.cancel_at = opts.cancelAt;
|
|
46006
|
+
if (opts["cancelAt.not"] !== void 0)
|
|
46007
|
+
args.cancel_at__not = opts["cancelAt.not"];
|
|
46008
|
+
if (opts["cancelAt.isNull"] !== void 0)
|
|
46009
|
+
args.cancel_at__isNull = opts["cancelAt.isNull"];
|
|
46010
|
+
if (opts["cancelAt.isNotNull"] !== void 0)
|
|
46011
|
+
args.cancel_at__isNotNull = opts["cancelAt.isNotNull"];
|
|
46012
|
+
if (opts["cancelAt.equals"] !== void 0)
|
|
46013
|
+
args.cancel_at__equals = opts["cancelAt.equals"];
|
|
46014
|
+
if (opts["cancelAt.lt"] !== void 0)
|
|
46015
|
+
args.cancel_at__lt = opts["cancelAt.lt"];
|
|
46016
|
+
if (opts["cancelAt.lte"] !== void 0)
|
|
46017
|
+
args.cancel_at__lte = opts["cancelAt.lte"];
|
|
46018
|
+
if (opts["cancelAt.gt"] !== void 0)
|
|
46019
|
+
args.cancel_at__gt = opts["cancelAt.gt"];
|
|
46020
|
+
if (opts["cancelAt.gte"] !== void 0)
|
|
46021
|
+
args.cancel_at__gte = opts["cancelAt.gte"];
|
|
46022
|
+
if (opts["contractStart.gte"] !== void 0)
|
|
46023
|
+
args.contract_start__gte = opts["contractStart.gte"];
|
|
46024
|
+
if (opts["contractStart.lte"] !== void 0)
|
|
46025
|
+
args.contract_start__lte = opts["contractStart.lte"];
|
|
46026
|
+
if (opts["contractEnd.gte"] !== void 0)
|
|
46027
|
+
args.contract_end__gte = opts["contractEnd.gte"];
|
|
46028
|
+
if (opts["contractEnd.lte"] !== void 0)
|
|
46029
|
+
args.contract_end__lte = opts["contractEnd.lte"];
|
|
46030
|
+
if (opts.renewAutomatically !== void 0)
|
|
46031
|
+
args.renew_automatically = opts.renewAutomatically;
|
|
45982
46032
|
if (opts.take !== void 0)
|
|
45983
46033
|
args.take = Number(opts.take);
|
|
45984
46034
|
if (opts.skip !== void 0)
|
|
@@ -46046,7 +46096,21 @@ Examples:
|
|
|
46046
46096
|
"updated_at__lt",
|
|
46047
46097
|
"updated_at__lte",
|
|
46048
46098
|
"updated_at__gt",
|
|
46049
|
-
"updated_at__gte"
|
|
46099
|
+
"updated_at__gte",
|
|
46100
|
+
"cancel_at",
|
|
46101
|
+
"cancel_at__not",
|
|
46102
|
+
"cancel_at__isNull",
|
|
46103
|
+
"cancel_at__isNotNull",
|
|
46104
|
+
"cancel_at__equals",
|
|
46105
|
+
"cancel_at__lt",
|
|
46106
|
+
"cancel_at__lte",
|
|
46107
|
+
"cancel_at__gt",
|
|
46108
|
+
"cancel_at__gte",
|
|
46109
|
+
"contract_start__gte",
|
|
46110
|
+
"contract_start__lte",
|
|
46111
|
+
"contract_end__gte",
|
|
46112
|
+
"contract_end__lte",
|
|
46113
|
+
"renew_automatically"
|
|
46050
46114
|
]
|
|
46051
46115
|
});
|
|
46052
46116
|
});
|
|
@@ -63301,6 +63365,8 @@ var de = {
|
|
|
63301
63365
|
"einvoicing.paymentFromWallet": "Zahlung aus Guthaben",
|
|
63302
63366
|
"einvoicing.paymentProcessed": "Zahlung verarbeitet",
|
|
63303
63367
|
"einvoicing.paymentReceived": "Zahlung erhalten",
|
|
63368
|
+
"invoices.minimumFee.adjustmentName": "Anpassung der Mindestgeb\xFChr",
|
|
63369
|
+
"invoices.minimumFee.name": "Mindestgeb\xFChr",
|
|
63304
63370
|
"invoices.outstandingProduct.description": "Unbezahlter Betrag der Rechnung{{invoiceNumber}} vom {{date}}",
|
|
63305
63371
|
"invoices.outstandingProduct.descriptionPeriod": "Unbezahlter Betrag der Rechnung{{invoiceNumber}} vom {{periodStart}} bis {{periodEnd}}",
|
|
63306
63372
|
"invoices.outstandingProduct.name": "Offener Saldo",
|
|
@@ -63334,6 +63400,8 @@ var en = {
|
|
|
63334
63400
|
"creditNotes.refundChargeName": "Refund for invoice",
|
|
63335
63401
|
"credits.bundleOf": "{{productName}} - Pack of {{creditCount}} credits",
|
|
63336
63402
|
"credits.unitsOf": "{{productName}} - {{creditCount}} credits",
|
|
63403
|
+
"invoices.minimumFee.adjustmentName": "Minimum fee adjustment",
|
|
63404
|
+
"invoices.minimumFee.name": "Minimum fee",
|
|
63337
63405
|
"invoices.outstandingProduct.description": "Unpaid amount from the invoice{{invoiceNumber}} emitted on {{date}}",
|
|
63338
63406
|
"invoices.outstandingProduct.descriptionPeriod": "Unpaid amount from the invoice{{invoiceNumber}} from {{periodStart}} to {{periodEnd}}",
|
|
63339
63407
|
"invoices.outstandingProduct.name": "Outstanding balance",
|
|
@@ -63397,6 +63465,8 @@ var es = {
|
|
|
63397
63465
|
"einvoicing.paymentFromWallet": "Pago desde el monedero",
|
|
63398
63466
|
"einvoicing.paymentProcessed": "Pago procesado",
|
|
63399
63467
|
"einvoicing.paymentReceived": "Pago recibido",
|
|
63468
|
+
"invoices.minimumFee.adjustmentName": "Ajuste del cargo m\xEDnimo",
|
|
63469
|
+
"invoices.minimumFee.name": "Cargo m\xEDnimo",
|
|
63400
63470
|
"invoices.outstandingProduct.description": "Monto pendiente de la factura{{invoiceNumber}} emitida el {{date}}",
|
|
63401
63471
|
"invoices.outstandingProduct.descriptionPeriod": "Monto pendiente de la factura{{invoiceNumber}} del {{periodStart}} al {{periodEnd}}",
|
|
63402
63472
|
"invoices.outstandingProduct.name": "Saldo pendiente",
|
|
@@ -63445,6 +63515,8 @@ var fr = {
|
|
|
63445
63515
|
"einvoicing.paymentFromWallet": "Paiement depuis le portefeuille",
|
|
63446
63516
|
"einvoicing.paymentProcessed": "Paiement effectu\xE9",
|
|
63447
63517
|
"einvoicing.paymentReceived": "Paiement re\xE7u",
|
|
63518
|
+
"invoices.minimumFee.adjustmentName": "Ajustement des frais minimums",
|
|
63519
|
+
"invoices.minimumFee.name": "Frais minimums",
|
|
63448
63520
|
"invoices.outstandingProduct.description": "Montant impay\xE9 de la facture{{invoiceNumber}} \xE9mise le {{date}}",
|
|
63449
63521
|
"invoices.outstandingProduct.descriptionPeriod": "Montant impay\xE9 de la facture{{invoiceNumber}} du {{periodStart}} au {{periodEnd}}",
|
|
63450
63522
|
"invoices.outstandingProduct.name": "Solde impay\xE9",
|
|
@@ -63493,6 +63565,8 @@ var it = {
|
|
|
63493
63565
|
"einvoicing.paymentFromWallet": "Pagamento dal portafoglio",
|
|
63494
63566
|
"einvoicing.paymentProcessed": "Pagamento elaborato",
|
|
63495
63567
|
"einvoicing.paymentReceived": "Pagamento ricevuto",
|
|
63568
|
+
"invoices.minimumFee.adjustmentName": "Adeguamento all\u2019importo minimo",
|
|
63569
|
+
"invoices.minimumFee.name": "Importo minimo",
|
|
63496
63570
|
"invoices.outstandingProduct.description": "Importo insoluto della fattura{{invoiceNumber}} emessa il {{date}}",
|
|
63497
63571
|
"invoices.outstandingProduct.descriptionPeriod": "Importo insoluto della fattura{{invoiceNumber}} dal {{periodStart}} al {{periodEnd}}",
|
|
63498
63572
|
"invoices.outstandingProduct.name": "Saldo insoluto",
|
|
@@ -63541,6 +63615,8 @@ var lt = {
|
|
|
63541
63615
|
"einvoicing.paymentFromWallet": "Mok\u0117jimas i\u0161 pinigin\u0117s",
|
|
63542
63616
|
"einvoicing.paymentProcessed": "Mok\u0117jimas apdorotas",
|
|
63543
63617
|
"einvoicing.paymentReceived": "Mok\u0117jimas gautas",
|
|
63618
|
+
"invoices.minimumFee.adjustmentName": "Minimalaus mokes\u010Dio koregavimas",
|
|
63619
|
+
"invoices.minimumFee.name": "Minimalus mokestis",
|
|
63544
63620
|
"invoices.outstandingProduct.description": "Neapmok\u0117ta {{date}} i\u0161ra\u0161ytos s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma",
|
|
63545
63621
|
"invoices.outstandingProduct.descriptionPeriod": "Neapmok\u0117ta s\u0105skaitos fakt\u016Bros{{invoiceNumber}} suma u\u017E laikotarp\u012F nuo {{periodStart}} iki {{periodEnd}}",
|
|
63546
63622
|
"invoices.outstandingProduct.name": "Neapmok\u0117tas likutis",
|
|
@@ -63589,6 +63665,8 @@ var nl = {
|
|
|
63589
63665
|
"einvoicing.paymentFromWallet": "Betaling uit tegoed",
|
|
63590
63666
|
"einvoicing.paymentProcessed": "Betaling verwerkt",
|
|
63591
63667
|
"einvoicing.paymentReceived": "Betaling ontvangen",
|
|
63668
|
+
"invoices.minimumFee.adjustmentName": "Aanpassing minimumbedrag",
|
|
63669
|
+
"invoices.minimumFee.name": "Minimumbedrag",
|
|
63592
63670
|
"invoices.outstandingProduct.description": "Onbetaald bedrag van de factuur{{invoiceNumber}} uitgegeven op {{date}}",
|
|
63593
63671
|
"invoices.outstandingProduct.descriptionPeriod": "Onbetaald bedrag van de factuur{{invoiceNumber}} van {{periodStart}} tot {{periodEnd}}",
|
|
63594
63672
|
"invoices.outstandingProduct.name": "Openstaand saldo",
|
|
@@ -63637,6 +63715,8 @@ var pl = {
|
|
|
63637
63715
|
"einvoicing.paymentFromWallet": "P\u0142atno\u015B\u0107 z portfela",
|
|
63638
63716
|
"einvoicing.paymentProcessed": "P\u0142atno\u015B\u0107 przetworzona",
|
|
63639
63717
|
"einvoicing.paymentReceived": "P\u0142atno\u015B\u0107 otrzymana",
|
|
63718
|
+
"invoices.minimumFee.adjustmentName": "Wyr\xF3wnanie do op\u0142aty minimalnej",
|
|
63719
|
+
"invoices.minimumFee.name": "Op\u0142ata minimalna",
|
|
63640
63720
|
"invoices.outstandingProduct.description": "Nieop\u0142acona kwota z faktury{{invoiceNumber}} wystawionej {{date}}",
|
|
63641
63721
|
"invoices.outstandingProduct.descriptionPeriod": "Nieop\u0142acona kwota z faktury{{invoiceNumber}} od {{periodStart}} do {{periodEnd}}",
|
|
63642
63722
|
"invoices.outstandingProduct.name": "Niezap\u0142acone saldo",
|
|
@@ -63685,6 +63765,8 @@ var pt = {
|
|
|
63685
63765
|
"einvoicing.paymentFromWallet": "Pagamento da carteira",
|
|
63686
63766
|
"einvoicing.paymentProcessed": "Pagamento processado",
|
|
63687
63767
|
"einvoicing.paymentReceived": "Pagamento recebido",
|
|
63768
|
+
"invoices.minimumFee.adjustmentName": "Ajuste do valor m\xEDnimo",
|
|
63769
|
+
"invoices.minimumFee.name": "Valor m\xEDnimo",
|
|
63688
63770
|
"invoices.outstandingProduct.description": "Valor em aberto da fatura{{invoiceNumber}} emitida em {{date}}",
|
|
63689
63771
|
"invoices.outstandingProduct.descriptionPeriod": "Valor em aberto da fatura{{invoiceNumber}} de {{periodStart}} a {{periodEnd}}",
|
|
63690
63772
|
"invoices.outstandingProduct.name": "Saldo em aberto",
|
|
@@ -63873,6 +63955,223 @@ import * as winston from "winston";
|
|
|
63873
63955
|
|
|
63874
63956
|
// ../hyperline-monitoring/build/logger/formatting/format.js
|
|
63875
63957
|
import prune from "json-prune";
|
|
63958
|
+
|
|
63959
|
+
// ../hyperline-monitoring/build/logger/formatting/logRedaction.js
|
|
63960
|
+
var REDACTED_KEY_NAMES = /* @__PURE__ */ new Set([
|
|
63961
|
+
"accesstoken",
|
|
63962
|
+
"apitoken",
|
|
63963
|
+
"assertion",
|
|
63964
|
+
"authorization",
|
|
63965
|
+
"authtoken",
|
|
63966
|
+
"cardnumber",
|
|
63967
|
+
"clientassertion",
|
|
63968
|
+
"codeverifier",
|
|
63969
|
+
"connectionurl",
|
|
63970
|
+
"consumerkey",
|
|
63971
|
+
"cookie",
|
|
63972
|
+
"credential",
|
|
63973
|
+
"credentials",
|
|
63974
|
+
"iban",
|
|
63975
|
+
"idtoken",
|
|
63976
|
+
"privatekey",
|
|
63977
|
+
"publictoken",
|
|
63978
|
+
"refreshtoken",
|
|
63979
|
+
"sessiontoken",
|
|
63980
|
+
"token",
|
|
63981
|
+
"tokenid",
|
|
63982
|
+
"verificationcode"
|
|
63983
|
+
]);
|
|
63984
|
+
var REDACTED_KEY_SUFFIX_PATTERN = /(secret|password|passphrase|apikey)$/;
|
|
63985
|
+
var REDACTED_KEY_CANDIDATE_PATTERN = /token|key|secret|pass|assertion|verifier|credential|authorization|cookie|iban|cardnumber|code|connectionurl/i;
|
|
63986
|
+
var URL_ONLY_REDACTED_KEYS = /* @__PURE__ */ new Set(["key"]);
|
|
63987
|
+
var OAUTH_CODE_KEY = "code";
|
|
63988
|
+
var OAUTH_CODE_CONTEXT_KEYS = ["state", "grant_type"];
|
|
63989
|
+
var REDACTED_VALUE = "<redacted>";
|
|
63990
|
+
var TRUNCATED_VALUE = "[TRUNCATED: not redacted]";
|
|
63991
|
+
var TRUNCATED_KEY = "[TRUNCATED]";
|
|
63992
|
+
var MAX_REDACTION_DEPTH = 6;
|
|
63993
|
+
var MAX_ARRAY_ENTRIES = 50;
|
|
63994
|
+
var MAX_PARSED_STRING_LENGTH = 16384;
|
|
63995
|
+
var MAX_VISITED_NODES = 5e3;
|
|
63996
|
+
var MAX_CONTAINER_ENTRIES = 1e3;
|
|
63997
|
+
var MAX_STRING_CHARACTERS = 256e3;
|
|
63998
|
+
function redactLogBody({ body }) {
|
|
63999
|
+
return redactValue({
|
|
64000
|
+
value: body,
|
|
64001
|
+
depth: MAX_REDACTION_DEPTH,
|
|
64002
|
+
budget: {
|
|
64003
|
+
remainingNodes: MAX_VISITED_NODES,
|
|
64004
|
+
remainingChars: MAX_STRING_CHARACTERS
|
|
64005
|
+
}
|
|
64006
|
+
});
|
|
64007
|
+
}
|
|
64008
|
+
function redactLogUrl({ url: url2 }) {
|
|
64009
|
+
const queryIndex = url2.indexOf("?");
|
|
64010
|
+
if (queryIndex === -1) {
|
|
64011
|
+
return url2;
|
|
64012
|
+
}
|
|
64013
|
+
if (url2.length > MAX_PARSED_STRING_LENGTH) {
|
|
64014
|
+
return `${url2.slice(0, queryIndex)}?${TRUNCATED_VALUE}`;
|
|
64015
|
+
}
|
|
64016
|
+
const redactedQuery = redactFormEncoded({
|
|
64017
|
+
text: url2.slice(queryIndex + 1),
|
|
64018
|
+
extraRedactedKeys: URL_ONLY_REDACTED_KEYS
|
|
64019
|
+
});
|
|
64020
|
+
return redactedQuery === void 0 ? url2 : `${url2.slice(0, queryIndex)}?${redactedQuery}`;
|
|
64021
|
+
}
|
|
64022
|
+
function redactValue({ value, depth, budget }) {
|
|
64023
|
+
if (isOpaqueObject({ value })) {
|
|
64024
|
+
return replaceOpaqueObject({ value });
|
|
64025
|
+
}
|
|
64026
|
+
if (typeof value === "string") {
|
|
64027
|
+
if (value.length > budget.remainingChars) {
|
|
64028
|
+
return TRUNCATED_VALUE;
|
|
64029
|
+
}
|
|
64030
|
+
budget.remainingChars -= value.length;
|
|
64031
|
+
}
|
|
64032
|
+
if (depth <= 0 || budget.remainingNodes <= 0) {
|
|
64033
|
+
return isInspectable({ value }) ? TRUNCATED_VALUE : value;
|
|
64034
|
+
}
|
|
64035
|
+
budget.remainingNodes -= 1;
|
|
64036
|
+
if (typeof value === "string") {
|
|
64037
|
+
return redactString({ text: value, budget });
|
|
64038
|
+
}
|
|
64039
|
+
if (value instanceof URLSearchParams) {
|
|
64040
|
+
return redactValue({ value: value.toString(), depth, budget });
|
|
64041
|
+
}
|
|
64042
|
+
if (Array.isArray(value)) {
|
|
64043
|
+
return redactArray({ items: value, depth, budget });
|
|
64044
|
+
}
|
|
64045
|
+
if (isPlainObject2(value)) {
|
|
64046
|
+
return redactObject({ record: value, depth, budget });
|
|
64047
|
+
}
|
|
64048
|
+
return value;
|
|
64049
|
+
}
|
|
64050
|
+
function isOpaqueObject({ value }) {
|
|
64051
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) && !isPlainObject2(value) && !(value instanceof URLSearchParams);
|
|
64052
|
+
}
|
|
64053
|
+
function replaceOpaqueObject({ value }) {
|
|
64054
|
+
if (typeof value !== "object" || value === null || value instanceof Date) {
|
|
64055
|
+
return value;
|
|
64056
|
+
}
|
|
64057
|
+
if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {
|
|
64058
|
+
return `[BINARY ${value.byteLength} bytes]`;
|
|
64059
|
+
}
|
|
64060
|
+
if (value instanceof Blob) {
|
|
64061
|
+
return `[BINARY ${value.size} bytes]`;
|
|
64062
|
+
}
|
|
64063
|
+
if (value instanceof FormData || typeof Reflect.get(value, "pipe") === "function") {
|
|
64064
|
+
return "[BINARY stream]";
|
|
64065
|
+
}
|
|
64066
|
+
return TRUNCATED_VALUE;
|
|
64067
|
+
}
|
|
64068
|
+
function redactArray({ items, depth, budget }) {
|
|
64069
|
+
const isTruncated = items.length > MAX_ARRAY_ENTRIES;
|
|
64070
|
+
const keptItems = isTruncated ? items.slice(0, MAX_ARRAY_ENTRIES) : items;
|
|
64071
|
+
let redactedItems;
|
|
64072
|
+
for (const [index, item] of keptItems.entries()) {
|
|
64073
|
+
const redactedItem = redactValue({ value: item, depth: depth - 1, budget });
|
|
64074
|
+
if (redactedItem !== item) {
|
|
64075
|
+
redactedItems ??= [...keptItems];
|
|
64076
|
+
redactedItems[index] = redactedItem;
|
|
64077
|
+
}
|
|
64078
|
+
}
|
|
64079
|
+
const result = redactedItems ?? keptItems;
|
|
64080
|
+
return isTruncated ? [...result, TRUNCATED_VALUE] : result;
|
|
64081
|
+
}
|
|
64082
|
+
function redactObject({ record: record2, depth, budget }) {
|
|
64083
|
+
const redactedEntries = /* @__PURE__ */ new Map();
|
|
64084
|
+
const carriesOAuthCode = OAUTH_CODE_CONTEXT_KEYS.some((contextKey) => Object.hasOwn(record2, contextKey));
|
|
64085
|
+
const keptKeys = [];
|
|
64086
|
+
let isTruncated = false;
|
|
64087
|
+
for (const key in record2) {
|
|
64088
|
+
if (!Object.hasOwn(record2, key)) {
|
|
64089
|
+
continue;
|
|
64090
|
+
}
|
|
64091
|
+
if (keptKeys.length >= MAX_CONTAINER_ENTRIES || key.length > budget.remainingChars) {
|
|
64092
|
+
isTruncated = true;
|
|
64093
|
+
break;
|
|
64094
|
+
}
|
|
64095
|
+
budget.remainingChars -= key.length;
|
|
64096
|
+
keptKeys.push(key);
|
|
64097
|
+
const nestedValue = record2[key];
|
|
64098
|
+
const isSensitiveKey = isRedactedKey({ key }) || carriesOAuthCode && key === OAUTH_CODE_KEY;
|
|
64099
|
+
const shouldRedact = isSensitiveKey && nestedValue != null && typeof nestedValue !== "boolean";
|
|
64100
|
+
if (shouldRedact) {
|
|
64101
|
+
budget.remainingNodes -= 1;
|
|
64102
|
+
}
|
|
64103
|
+
const redactedNestedValue = shouldRedact ? REDACTED_VALUE : redactValue({ value: nestedValue, depth: depth - 1, budget });
|
|
64104
|
+
if (redactedNestedValue !== nestedValue) {
|
|
64105
|
+
redactedEntries.set(key, redactedNestedValue);
|
|
64106
|
+
}
|
|
64107
|
+
}
|
|
64108
|
+
if (isTruncated) {
|
|
64109
|
+
const keptRecord = {};
|
|
64110
|
+
for (const key of keptKeys) {
|
|
64111
|
+
keptRecord[key] = redactedEntries.has(key) ? redactedEntries.get(key) : record2[key];
|
|
64112
|
+
}
|
|
64113
|
+
keptRecord[TRUNCATED_KEY] = TRUNCATED_VALUE;
|
|
64114
|
+
return keptRecord;
|
|
64115
|
+
}
|
|
64116
|
+
return redactedEntries.size === 0 ? record2 : { ...record2, ...Object.fromEntries(redactedEntries) };
|
|
64117
|
+
}
|
|
64118
|
+
function redactString({ text, budget }) {
|
|
64119
|
+
if (text.length > MAX_PARSED_STRING_LENGTH) {
|
|
64120
|
+
return TRUNCATED_VALUE;
|
|
64121
|
+
}
|
|
64122
|
+
if (!isInspectable({ value: text })) {
|
|
64123
|
+
return text;
|
|
64124
|
+
}
|
|
64125
|
+
const trimmedText = text.trim();
|
|
64126
|
+
if (trimmedText.startsWith("{") || trimmedText.startsWith("[")) {
|
|
64127
|
+
try {
|
|
64128
|
+
const parsedValue = JSON.parse(trimmedText);
|
|
64129
|
+
const redactedValue = redactValue({
|
|
64130
|
+
value: parsedValue,
|
|
64131
|
+
depth: MAX_REDACTION_DEPTH,
|
|
64132
|
+
budget
|
|
64133
|
+
});
|
|
64134
|
+
return redactedValue === parsedValue ? text : JSON.stringify(redactedValue);
|
|
64135
|
+
} catch {
|
|
64136
|
+
return REDACTED_KEY_CANDIDATE_PATTERN.test(text) ? TRUNCATED_VALUE : redactFormEncoded({ text }) ?? text;
|
|
64137
|
+
}
|
|
64138
|
+
}
|
|
64139
|
+
return redactFormEncoded({ text }) ?? text;
|
|
64140
|
+
}
|
|
64141
|
+
function redactFormEncoded({ text, extraRedactedKeys }) {
|
|
64142
|
+
if (!text.includes("=") || !REDACTED_KEY_CANDIDATE_PATTERN.test(text)) {
|
|
64143
|
+
return void 0;
|
|
64144
|
+
}
|
|
64145
|
+
const params = new URLSearchParams(text);
|
|
64146
|
+
const carriesOAuthCode = OAUTH_CODE_CONTEXT_KEYS.some((contextKey) => params.has(contextKey));
|
|
64147
|
+
let hasRedactedParam = false;
|
|
64148
|
+
for (const key of new Set(params.keys())) {
|
|
64149
|
+
if (isRedactedKey({ key }) || extraRedactedKeys?.has(key.toLowerCase()) || carriesOAuthCode && key === OAUTH_CODE_KEY) {
|
|
64150
|
+
params.set(key, REDACTED_VALUE);
|
|
64151
|
+
hasRedactedParam = true;
|
|
64152
|
+
}
|
|
64153
|
+
}
|
|
64154
|
+
return hasRedactedParam ? params.toString() : void 0;
|
|
64155
|
+
}
|
|
64156
|
+
function isRedactedKey({ key }) {
|
|
64157
|
+
const normalizedKey = key.toLowerCase().replace(/[_-]/g, "");
|
|
64158
|
+
return REDACTED_KEY_NAMES.has(normalizedKey) || REDACTED_KEY_SUFFIX_PATTERN.test(normalizedKey);
|
|
64159
|
+
}
|
|
64160
|
+
function isInspectable({ value }) {
|
|
64161
|
+
if (typeof value === "string") {
|
|
64162
|
+
return value.length > MAX_PARSED_STRING_LENGTH || /^\s*[{[]/.test(value) || value.includes("=") && REDACTED_KEY_CANDIDATE_PATTERN.test(value);
|
|
64163
|
+
}
|
|
64164
|
+
return value instanceof URLSearchParams || Array.isArray(value) || isPlainObject2(value);
|
|
64165
|
+
}
|
|
64166
|
+
function isPlainObject2(value) {
|
|
64167
|
+
if (typeof value !== "object" || value === null) {
|
|
64168
|
+
return false;
|
|
64169
|
+
}
|
|
64170
|
+
const prototype = Object.getPrototypeOf(value);
|
|
64171
|
+
return prototype === Object.prototype || prototype === null;
|
|
64172
|
+
}
|
|
64173
|
+
|
|
64174
|
+
// ../hyperline-monitoring/build/logger/formatting/format.js
|
|
63876
64175
|
var REDACTED_HEADER_KEY_PATTERN = /authorization|authenticate|cookie|secret|token|credential|signature|jwt|api[_-]?key|access[_-]?token|refresh[_-]?token|private[_-]?key/i;
|
|
63877
64176
|
function jsonFormat(info) {
|
|
63878
64177
|
const prunedInfo = JSON.parse(prune(info));
|
|
@@ -63933,14 +64232,106 @@ function transformPrune(info) {
|
|
|
63933
64232
|
});
|
|
63934
64233
|
return info;
|
|
63935
64234
|
}
|
|
64235
|
+
var MAX_AXIOS_ERROR_DEPTH = 5;
|
|
64236
|
+
var MAX_AXIOS_ERROR_CONTAINER_ENTRIES = 1e3;
|
|
64237
|
+
var MAX_AXIOS_ERROR_VISITED_NODES = 5e3;
|
|
64238
|
+
var REDACTED_BODY_KEYS = /* @__PURE__ */ new Set(["requestBody", "responseBody"]);
|
|
63936
64239
|
function transformAxiosError(info) {
|
|
63937
|
-
|
|
63938
|
-
|
|
63939
|
-
|
|
64240
|
+
let walk;
|
|
64241
|
+
for (const [key, value] of Object.entries(info)) {
|
|
64242
|
+
if (typeof value !== "object" || value === null || REDACTED_BODY_KEYS.has(key)) {
|
|
64243
|
+
continue;
|
|
63940
64244
|
}
|
|
63941
|
-
|
|
64245
|
+
walk ??= {
|
|
64246
|
+
formatted: /* @__PURE__ */ new Map(),
|
|
64247
|
+
remainingNodes: MAX_AXIOS_ERROR_VISITED_NODES
|
|
64248
|
+
};
|
|
64249
|
+
const formattedValue = formatNestedAxiosErrors({
|
|
64250
|
+
value,
|
|
64251
|
+
depth: MAX_AXIOS_ERROR_DEPTH,
|
|
64252
|
+
walk
|
|
64253
|
+
});
|
|
64254
|
+
if (formattedValue !== value) {
|
|
64255
|
+
info[key] = formattedValue;
|
|
64256
|
+
}
|
|
64257
|
+
}
|
|
63942
64258
|
return info;
|
|
63943
64259
|
}
|
|
64260
|
+
function formatNestedAxiosErrors({ value, depth, walk }) {
|
|
64261
|
+
if (typeof value !== "object" || value === null) {
|
|
64262
|
+
return value;
|
|
64263
|
+
}
|
|
64264
|
+
if (walk.formatted.has(value)) {
|
|
64265
|
+
return walk.formatted.get(value);
|
|
64266
|
+
}
|
|
64267
|
+
if (Reflect.get(value, "name") === "AxiosError") {
|
|
64268
|
+
const formattedError = walk.remainingNodes > 0 ? formatAxiosError(value) : summarizeAxiosError({ error: value });
|
|
64269
|
+
walk.remainingNodes -= 1;
|
|
64270
|
+
walk.formatted.set(value, formattedError);
|
|
64271
|
+
return formattedError;
|
|
64272
|
+
}
|
|
64273
|
+
const isWalkable = Array.isArray(value) || value instanceof Error || isPlainRecord(value);
|
|
64274
|
+
if (!isWalkable || depth <= 0 || walk.remainingNodes <= 0) {
|
|
64275
|
+
return value;
|
|
64276
|
+
}
|
|
64277
|
+
walk.formatted.set(value, "[Circular]");
|
|
64278
|
+
walk.remainingNodes -= 1;
|
|
64279
|
+
const formattedValue = formatWalkableValue({ value, depth, walk });
|
|
64280
|
+
walk.formatted.set(value, formattedValue);
|
|
64281
|
+
return formattedValue;
|
|
64282
|
+
}
|
|
64283
|
+
function summarizeAxiosError({ error: error48 }) {
|
|
64284
|
+
return {
|
|
64285
|
+
name: Reflect.get(error48, "name"),
|
|
64286
|
+
message: Reflect.get(error48, "message"),
|
|
64287
|
+
code: Reflect.get(error48, "code")
|
|
64288
|
+
};
|
|
64289
|
+
}
|
|
64290
|
+
function formatWalkableValue({ value, depth, walk }) {
|
|
64291
|
+
if (Array.isArray(value)) {
|
|
64292
|
+
if (value.length > MAX_AXIOS_ERROR_CONTAINER_ENTRIES) {
|
|
64293
|
+
return value;
|
|
64294
|
+
}
|
|
64295
|
+
let formattedItems;
|
|
64296
|
+
for (const [index, item] of value.entries()) {
|
|
64297
|
+
const formattedItem = formatNestedAxiosErrors({
|
|
64298
|
+
value: item,
|
|
64299
|
+
depth: depth - 1,
|
|
64300
|
+
walk
|
|
64301
|
+
});
|
|
64302
|
+
if (formattedItem !== item) {
|
|
64303
|
+
formattedItems ??= [...value];
|
|
64304
|
+
formattedItems[index] = formattedItem;
|
|
64305
|
+
}
|
|
64306
|
+
}
|
|
64307
|
+
return formattedItems ?? value;
|
|
64308
|
+
}
|
|
64309
|
+
const keys = Object.keys(value);
|
|
64310
|
+
if (keys.length > MAX_AXIOS_ERROR_CONTAINER_ENTRIES) {
|
|
64311
|
+
return value;
|
|
64312
|
+
}
|
|
64313
|
+
const formattedEntries = /* @__PURE__ */ new Map();
|
|
64314
|
+
for (const key of keys) {
|
|
64315
|
+
const nestedValue = Reflect.get(value, key);
|
|
64316
|
+
const formattedNestedValue = formatNestedAxiosErrors({
|
|
64317
|
+
value: nestedValue,
|
|
64318
|
+
depth: depth - 1,
|
|
64319
|
+
walk
|
|
64320
|
+
});
|
|
64321
|
+
if (formattedNestedValue !== nestedValue) {
|
|
64322
|
+
formattedEntries.set(key, formattedNestedValue);
|
|
64323
|
+
}
|
|
64324
|
+
}
|
|
64325
|
+
if (formattedEntries.size === 0) {
|
|
64326
|
+
return value;
|
|
64327
|
+
}
|
|
64328
|
+
return {
|
|
64329
|
+
...value,
|
|
64330
|
+
// Error properties are not enumerable, so the spread would drop them.
|
|
64331
|
+
...value instanceof Error ? { name: value.name, message: value.message, stack: value.stack } : {},
|
|
64332
|
+
...Object.fromEntries(formattedEntries)
|
|
64333
|
+
};
|
|
64334
|
+
}
|
|
63944
64335
|
function formatAxiosError(error48) {
|
|
63945
64336
|
if (!isRecord(error48) || error48.name !== "AxiosError") {
|
|
63946
64337
|
return error48;
|
|
@@ -63953,9 +64344,9 @@ function formatAxiosError(error48) {
|
|
|
63953
64344
|
code: error48.code,
|
|
63954
64345
|
request: {
|
|
63955
64346
|
method: request?.method,
|
|
63956
|
-
url: request?.url,
|
|
64347
|
+
url: typeof request?.url === "string" ? redactLogUrl({ url: request.url }) : request?.url,
|
|
63957
64348
|
baseURL: request?.baseURL,
|
|
63958
|
-
params: request?.params,
|
|
64349
|
+
params: redactLogBody({ body: request?.params }),
|
|
63959
64350
|
headers: redactHeaders({ headers: request?.headers }),
|
|
63960
64351
|
"axios-retry": request?.["axios-retry"]
|
|
63961
64352
|
},
|
|
@@ -63963,7 +64354,7 @@ function formatAxiosError(error48) {
|
|
|
63963
64354
|
status: response?.status,
|
|
63964
64355
|
statusText: response?.statusText,
|
|
63965
64356
|
headers: redactHeaders({ headers: response?.headers }),
|
|
63966
|
-
data: response?.data
|
|
64357
|
+
data: redactLogBody({ body: response?.data })
|
|
63967
64358
|
}
|
|
63968
64359
|
};
|
|
63969
64360
|
}
|
|
@@ -63976,6 +64367,10 @@ function redactHeaders({ headers }) {
|
|
|
63976
64367
|
REDACTED_HEADER_KEY_PATTERN.test(headerKey) ? "<redacted>" : headerValue
|
|
63977
64368
|
]));
|
|
63978
64369
|
}
|
|
64370
|
+
function isPlainRecord(value) {
|
|
64371
|
+
const prototype = Object.getPrototypeOf(value);
|
|
64372
|
+
return prototype === Object.prototype || prototype === null;
|
|
64373
|
+
}
|
|
63979
64374
|
function isRecord(value) {
|
|
63980
64375
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
63981
64376
|
}
|
|
@@ -64005,7 +64400,7 @@ function logHttpResponse(logger2, response, responseTime, extra) {
|
|
|
64005
64400
|
const responseMetadata = {
|
|
64006
64401
|
statusCode,
|
|
64007
64402
|
responseTime,
|
|
64008
|
-
responseBody,
|
|
64403
|
+
responseBody: redactLogBody({ body: responseBody }),
|
|
64009
64404
|
// Redacted so secrets (authorization/cookie/token/…) never reach the logs
|
|
64010
64405
|
// while diagnostic headers (e.g. rate-limit headers on a 429) stay visible.
|
|
64011
64406
|
responseHeaders: responseHeaders === void 0 ? void 0 : redactHeaders({ headers: responseHeaders })
|
|
@@ -64018,14 +64413,15 @@ function logHttpResponse(logger2, response, responseTime, extra) {
|
|
|
64018
64413
|
}
|
|
64019
64414
|
function transform2(request) {
|
|
64020
64415
|
const method = request.method.toUpperCase();
|
|
64021
|
-
const
|
|
64416
|
+
const originalUrl = redactLogUrl({ url: request.originalUrl });
|
|
64417
|
+
const message = `${method} ${originalUrl}`;
|
|
64022
64418
|
const metadata = {};
|
|
64023
64419
|
metadata.method = method;
|
|
64024
|
-
metadata.url = request.url;
|
|
64025
|
-
metadata.path = request.path;
|
|
64420
|
+
metadata.url = redactLogUrl({ url: request.url });
|
|
64421
|
+
metadata.path = redactLogUrl({ url: request.path });
|
|
64026
64422
|
metadata.hostname = request.hostname;
|
|
64027
|
-
metadata.originalUrl =
|
|
64028
|
-
metadata.requestBody =
|
|
64423
|
+
metadata.originalUrl = originalUrl;
|
|
64424
|
+
metadata.requestBody = redactLogBody({ body: request.body });
|
|
64029
64425
|
metadata.routePath = transformUrlIntoRoutePath(request);
|
|
64030
64426
|
metadata.apiKeyEnd = request.headers["authorization"]?.slice(-6);
|
|
64031
64427
|
return { message, metadata };
|
|
@@ -64072,7 +64468,16 @@ function buildLoggerFactory({ config: config4, context }) {
|
|
|
64072
64468
|
const internalLogger = winston.createLogger({
|
|
64073
64469
|
transports: transports2,
|
|
64074
64470
|
defaultMeta,
|
|
64075
|
-
format: winston.format.combine(
|
|
64471
|
+
format: winston.format.combine(
|
|
64472
|
+
winston.format.splat(),
|
|
64473
|
+
winston.format(addMetadata({ getCorrelationId, getExecutionContext }))(),
|
|
64474
|
+
// Before pruning: json-prune would otherwise serialize a binary
|
|
64475
|
+
// `response.data` byte by byte before it is summarised (#6006).
|
|
64476
|
+
winston.format(transformAxiosError)(),
|
|
64477
|
+
winston.format(transformErrorEnrich)({ depth: 5 }),
|
|
64478
|
+
winston.format(transformPrune)(),
|
|
64479
|
+
winston.format.timestamp()
|
|
64480
|
+
),
|
|
64076
64481
|
exitOnError: false
|
|
64077
64482
|
});
|
|
64078
64483
|
function createLogger3({ serviceName }) {
|
|
@@ -66419,8 +66824,21 @@ import { deepEqual } from "fast-equals";
|
|
|
66419
66824
|
|
|
66420
66825
|
// ../hyperline-lib/build/utils/realignDatesToTimezone.js
|
|
66421
66826
|
var import_shared4 = __toESM(require_shared(), 1);
|
|
66422
|
-
var
|
|
66827
|
+
var MILLISECONDS_PER_HOUR = 60 * 60 * 1e3;
|
|
66828
|
+
var MILLISECONDS_PER_DAY = 24 * MILLISECONDS_PER_HOUR;
|
|
66423
66829
|
var LAST_MILLISECOND_OF_DAY = MILLISECONDS_PER_DAY - 1;
|
|
66830
|
+
var dateRealignmentModeSchema = external_exports.enum([
|
|
66831
|
+
"utc_midnight_import",
|
|
66832
|
+
"dst_hour_drift",
|
|
66833
|
+
"month_start_drift",
|
|
66834
|
+
"manual_phase_end_midnight"
|
|
66835
|
+
]).default("utc_midnight_import");
|
|
66836
|
+
var DST_HOUR_SHIFT_BY_LOCAL_MILLISECOND_OF_DAY = /* @__PURE__ */ new Map([
|
|
66837
|
+
[23 * MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
|
|
66838
|
+
[LAST_MILLISECOND_OF_DAY - MILLISECONDS_PER_HOUR, MILLISECONDS_PER_HOUR],
|
|
66839
|
+
[MILLISECONDS_PER_HOUR, -MILLISECONDS_PER_HOUR],
|
|
66840
|
+
[MILLISECONDS_PER_HOUR - 1, -MILLISECONDS_PER_HOUR]
|
|
66841
|
+
]);
|
|
66424
66842
|
|
|
66425
66843
|
// ../hyperline-lib/build/utils/api/filterBuilder.js
|
|
66426
66844
|
var baseAuthorizedOperators = ["not", "isNull", "isNotNull"];
|
|
@@ -66489,150 +66907,6 @@ var isAxiosError = axios.isAxiosError;
|
|
|
66489
66907
|
// ../hyperline-lib/build/httpClient/httpClient.js
|
|
66490
66908
|
import axios2 from "axios";
|
|
66491
66909
|
import axiosRetry, { isNetworkOrIdempotentRequestError, retryAfter } from "axios-retry";
|
|
66492
|
-
|
|
66493
|
-
// ../hyperline-lib/build/httpClient/logRedaction.js
|
|
66494
|
-
var REDACTED_KEY_NAMES = /* @__PURE__ */ new Set([
|
|
66495
|
-
"accesstoken",
|
|
66496
|
-
"apikey",
|
|
66497
|
-
"apitoken",
|
|
66498
|
-
"assertion",
|
|
66499
|
-
"authtoken",
|
|
66500
|
-
"clientassertion",
|
|
66501
|
-
"codeverifier",
|
|
66502
|
-
"credentials",
|
|
66503
|
-
"idtoken",
|
|
66504
|
-
"privatekey",
|
|
66505
|
-
"refreshtoken",
|
|
66506
|
-
"sessiontoken",
|
|
66507
|
-
"token"
|
|
66508
|
-
]);
|
|
66509
|
-
var REDACTED_KEY_SUFFIX_PATTERN = /(secret|password)$/;
|
|
66510
|
-
var REDACTED_KEY_CANDIDATE_PATTERN = /token|key|secret|password|assertion|verifier|credentials/i;
|
|
66511
|
-
var REDACTED_VALUE = "<redacted>";
|
|
66512
|
-
var MAX_REDACTION_DEPTH = 10;
|
|
66513
|
-
var MAX_PARSED_STRING_LENGTH = 16384;
|
|
66514
|
-
var MAX_VISITED_NODES = 1e3;
|
|
66515
|
-
var MAX_CONTAINER_ENTRIES = MAX_VISITED_NODES;
|
|
66516
|
-
function redactLogBody({ body }) {
|
|
66517
|
-
return redactValue({
|
|
66518
|
-
value: body,
|
|
66519
|
-
depth: MAX_REDACTION_DEPTH,
|
|
66520
|
-
budget: { remainingNodes: MAX_VISITED_NODES }
|
|
66521
|
-
});
|
|
66522
|
-
}
|
|
66523
|
-
function redactLogUrl({ url: url2 }) {
|
|
66524
|
-
const queryIndex = url2.indexOf("?");
|
|
66525
|
-
if (queryIndex === -1 || url2.length > MAX_PARSED_STRING_LENGTH) {
|
|
66526
|
-
return url2;
|
|
66527
|
-
}
|
|
66528
|
-
const redactedQuery = redactFormEncoded({ text: url2.slice(queryIndex + 1) });
|
|
66529
|
-
return redactedQuery === void 0 ? url2 : `${url2.slice(0, queryIndex)}?${redactedQuery}`;
|
|
66530
|
-
}
|
|
66531
|
-
function redactValue({ value, depth, budget }) {
|
|
66532
|
-
if (depth <= 0 || budget.remainingNodes <= 0) {
|
|
66533
|
-
return value;
|
|
66534
|
-
}
|
|
66535
|
-
budget.remainingNodes -= 1;
|
|
66536
|
-
if (typeof value === "string") {
|
|
66537
|
-
return redactString({ text: value, budget });
|
|
66538
|
-
}
|
|
66539
|
-
if (value instanceof URLSearchParams) {
|
|
66540
|
-
return redactFormEncoded({ text: value.toString() }) ?? value;
|
|
66541
|
-
}
|
|
66542
|
-
if (Array.isArray(value)) {
|
|
66543
|
-
return redactArray({ items: value, depth, budget });
|
|
66544
|
-
}
|
|
66545
|
-
if (isPlainObject2(value)) {
|
|
66546
|
-
return redactObject({ record: value, depth, budget });
|
|
66547
|
-
}
|
|
66548
|
-
return value;
|
|
66549
|
-
}
|
|
66550
|
-
function redactArray({ items, depth, budget }) {
|
|
66551
|
-
if (items.length > MAX_CONTAINER_ENTRIES) {
|
|
66552
|
-
return items;
|
|
66553
|
-
}
|
|
66554
|
-
let redactedItems;
|
|
66555
|
-
for (const [index, item] of items.entries()) {
|
|
66556
|
-
if (budget.remainingNodes <= 0) {
|
|
66557
|
-
break;
|
|
66558
|
-
}
|
|
66559
|
-
const redactedItem = redactValue({ value: item, depth: depth - 1, budget });
|
|
66560
|
-
if (redactedItem !== item) {
|
|
66561
|
-
redactedItems ??= [...items];
|
|
66562
|
-
redactedItems[index] = redactedItem;
|
|
66563
|
-
}
|
|
66564
|
-
}
|
|
66565
|
-
return redactedItems ?? items;
|
|
66566
|
-
}
|
|
66567
|
-
function redactObject({ record: record2, depth, budget }) {
|
|
66568
|
-
const redactedEntries = /* @__PURE__ */ new Map();
|
|
66569
|
-
let entryCount = 0;
|
|
66570
|
-
for (const key in record2) {
|
|
66571
|
-
if (!Object.hasOwn(record2, key)) {
|
|
66572
|
-
continue;
|
|
66573
|
-
}
|
|
66574
|
-
entryCount += 1;
|
|
66575
|
-
if (entryCount > MAX_CONTAINER_ENTRIES) {
|
|
66576
|
-
return record2;
|
|
66577
|
-
}
|
|
66578
|
-
if (budget.remainingNodes <= 0) {
|
|
66579
|
-
break;
|
|
66580
|
-
}
|
|
66581
|
-
const nestedValue = record2[key];
|
|
66582
|
-
const redactedNestedValue = isRedactedKey({ key }) && nestedValue != null ? REDACTED_VALUE : redactValue({ value: nestedValue, depth: depth - 1, budget });
|
|
66583
|
-
if (redactedNestedValue !== nestedValue) {
|
|
66584
|
-
redactedEntries.set(key, redactedNestedValue);
|
|
66585
|
-
}
|
|
66586
|
-
}
|
|
66587
|
-
return redactedEntries.size === 0 ? record2 : { ...record2, ...Object.fromEntries(redactedEntries) };
|
|
66588
|
-
}
|
|
66589
|
-
function redactString({ text, budget }) {
|
|
66590
|
-
if (text.length > MAX_PARSED_STRING_LENGTH) {
|
|
66591
|
-
return text;
|
|
66592
|
-
}
|
|
66593
|
-
const trimmedText = text.trim();
|
|
66594
|
-
if (trimmedText.startsWith("{") || trimmedText.startsWith("[")) {
|
|
66595
|
-
try {
|
|
66596
|
-
const parsedValue = JSON.parse(trimmedText);
|
|
66597
|
-
const redactedValue = redactValue({
|
|
66598
|
-
value: parsedValue,
|
|
66599
|
-
depth: MAX_REDACTION_DEPTH,
|
|
66600
|
-
budget
|
|
66601
|
-
});
|
|
66602
|
-
return redactedValue === parsedValue ? text : JSON.stringify(redactedValue);
|
|
66603
|
-
} catch {
|
|
66604
|
-
return text;
|
|
66605
|
-
}
|
|
66606
|
-
}
|
|
66607
|
-
return redactFormEncoded({ text }) ?? text;
|
|
66608
|
-
}
|
|
66609
|
-
function redactFormEncoded({ text }) {
|
|
66610
|
-
if (!text.includes("=") || !REDACTED_KEY_CANDIDATE_PATTERN.test(text)) {
|
|
66611
|
-
return void 0;
|
|
66612
|
-
}
|
|
66613
|
-
const params = new URLSearchParams(text);
|
|
66614
|
-
let hasRedactedParam = false;
|
|
66615
|
-
for (const key of new Set(params.keys())) {
|
|
66616
|
-
if (isRedactedKey({ key })) {
|
|
66617
|
-
params.set(key, REDACTED_VALUE);
|
|
66618
|
-
hasRedactedParam = true;
|
|
66619
|
-
}
|
|
66620
|
-
}
|
|
66621
|
-
return hasRedactedParam ? params.toString() : void 0;
|
|
66622
|
-
}
|
|
66623
|
-
function isRedactedKey({ key }) {
|
|
66624
|
-
const normalizedKey = key.toLowerCase().replace(/[_-]/g, "");
|
|
66625
|
-
return REDACTED_KEY_NAMES.has(normalizedKey) || REDACTED_KEY_SUFFIX_PATTERN.test(normalizedKey);
|
|
66626
|
-
}
|
|
66627
|
-
function isPlainObject2(value) {
|
|
66628
|
-
if (typeof value !== "object" || value === null) {
|
|
66629
|
-
return false;
|
|
66630
|
-
}
|
|
66631
|
-
const prototype = Object.getPrototypeOf(value);
|
|
66632
|
-
return prototype === Object.prototype || prototype === null;
|
|
66633
|
-
}
|
|
66634
|
-
|
|
66635
|
-
// ../hyperline-lib/build/httpClient/httpClient.js
|
|
66636
66910
|
import { AxiosError } from "axios";
|
|
66637
66911
|
var recommendedRetryConfig = {
|
|
66638
66912
|
retries: 3,
|
|
@@ -66700,14 +66974,14 @@ function isTooManyRequestsError(error48) {
|
|
|
66700
66974
|
return error48.response?.status === 429;
|
|
66701
66975
|
}
|
|
66702
66976
|
var toLogRequest = (config4) => {
|
|
66703
|
-
const url2 =
|
|
66977
|
+
const url2 = config4.url ?? "";
|
|
66704
66978
|
return {
|
|
66705
66979
|
method: config4.method ?? "",
|
|
66706
66980
|
url: url2,
|
|
66707
66981
|
path: url2,
|
|
66708
66982
|
hostname: config4.baseURL ?? "",
|
|
66709
66983
|
originalUrl: `${config4.baseURL ?? ""}${url2}`,
|
|
66710
|
-
body:
|
|
66984
|
+
body: config4.data,
|
|
66711
66985
|
headers: {}
|
|
66712
66986
|
};
|
|
66713
66987
|
};
|
|
@@ -66727,9 +67001,13 @@ import multer2 from "multer";
|
|
|
66727
67001
|
// ../hyperline-lib/build/httpRouter/file.js
|
|
66728
67002
|
import helmet from "helmet";
|
|
66729
67003
|
|
|
66730
|
-
// ../hyperline-lib/build/publicApi/auth/
|
|
67004
|
+
// ../hyperline-lib/build/publicApi/auth/apiKey.js
|
|
66731
67005
|
import { randomBytes as randomBytes2, scryptSync } from "node:crypto";
|
|
66732
67006
|
|
|
67007
|
+
// ../hyperline-lib/build/publicApi/auth/apiKeyHashCache.js
|
|
67008
|
+
import { createHash as createHash4 } from "node:crypto";
|
|
67009
|
+
var TTL_MS = 5 * 6e4;
|
|
67010
|
+
|
|
66733
67011
|
// ../hyperline-mcp/build/requestBuilder.js
|
|
66734
67012
|
function buildRequestConfig(path2, args, method, queryParamKeys = []) {
|
|
66735
67013
|
const { url: url2, usedKeys } = replacePathParams(path2, args);
|