From 87168399ab01ed58512b546f54018dfc38cfa683 Mon Sep 17 00:00:00 2001 From: Robert Yokota Date: Tue, 27 Aug 2024 15:37:49 -0700 Subject: [PATCH 01/12] First cut at additional serde tests --- proto/test/schemaregistry/serde/author.proto | 22 ++ .../google/type/calendar_period_pb.ts | 102 +++++++++ schemaregistry/google/type/color_pb.ts | 204 ++++++++++++++++++ schemaregistry/google/type/date_pb.ts | 79 +++++++ schemaregistry/google/type/datetime_pb.ts | 180 ++++++++++++++++ schemaregistry/google/type/dayofweek_pb.ts | 96 +++++++++ schemaregistry/google/type/decimal_pb.ts | 114 ++++++++++ schemaregistry/google/type/expr_pb.ts | 105 +++++++++ schemaregistry/google/type/fraction_pb.ts | 57 +++++ schemaregistry/google/type/interval_pb.ts | 69 ++++++ schemaregistry/google/type/latlng_pb.ts | 60 ++++++ .../google/type/localized_text_pb.ts | 59 +++++ schemaregistry/google/type/money_pb.ts | 69 ++++++ schemaregistry/google/type/month_pb.ts | 131 +++++++++++ schemaregistry/google/type/phone_number_pb.ts | 165 ++++++++++++++ .../google/type/postal_address_pb.ts | 193 +++++++++++++++++ schemaregistry/google/type/quaternion_pb.ts | 125 +++++++++++ schemaregistry/google/type/timeofday_pb.ts | 75 +++++++ schemaregistry/mock-schemaregistry-client.ts | 2 +- schemaregistry/schemaregistry-client.ts | 8 +- schemaregistry/serde/protobuf.ts | 108 +++++++--- schemaregistry/serde/serde.ts | 8 +- test/schemaregistry/serde/author_pb.ts | 69 ++++++ test/schemaregistry/serde/protobuf.spec.ts | 109 ++++++++++ 24 files changed, 2175 insertions(+), 34 deletions(-) create mode 100644 proto/test/schemaregistry/serde/author.proto create mode 100644 schemaregistry/google/type/calendar_period_pb.ts create mode 100644 schemaregistry/google/type/color_pb.ts create mode 100644 schemaregistry/google/type/date_pb.ts create mode 100644 schemaregistry/google/type/datetime_pb.ts create mode 100644 schemaregistry/google/type/dayofweek_pb.ts create mode 100644 schemaregistry/google/type/decimal_pb.ts create mode 100644 schemaregistry/google/type/expr_pb.ts create mode 100644 schemaregistry/google/type/fraction_pb.ts create mode 100644 schemaregistry/google/type/interval_pb.ts create mode 100644 schemaregistry/google/type/latlng_pb.ts create mode 100644 schemaregistry/google/type/localized_text_pb.ts create mode 100644 schemaregistry/google/type/money_pb.ts create mode 100644 schemaregistry/google/type/month_pb.ts create mode 100644 schemaregistry/google/type/phone_number_pb.ts create mode 100644 schemaregistry/google/type/postal_address_pb.ts create mode 100644 schemaregistry/google/type/quaternion_pb.ts create mode 100644 schemaregistry/google/type/timeofday_pb.ts create mode 100644 test/schemaregistry/serde/author_pb.ts create mode 100644 test/schemaregistry/serde/protobuf.spec.ts diff --git a/proto/test/schemaregistry/serde/author.proto b/proto/test/schemaregistry/serde/author.proto new file mode 100644 index 00000000..a8e65fca --- /dev/null +++ b/proto/test/schemaregistry/serde/author.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; + +package test; +option go_package="../test"; + +import "confluent/meta.proto"; + +message Author { + string name = 1 [ + (confluent.field_meta).tags = "PII" + ]; + int32 id = 2; + bytes picture = 3 [ + (confluent.field_meta).tags = "PII" + ]; + repeated string works = 4; +} + +message Pizza { + string size = 1; + repeated string toppings = 2; +} diff --git a/schemaregistry/google/type/calendar_period_pb.ts b/schemaregistry/google/type/calendar_period_pb.ts new file mode 100644 index 00000000..a8ad8988 --- /dev/null +++ b/schemaregistry/google/type/calendar_period_pb.ts @@ -0,0 +1,102 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/calendar_period.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile } from "@bufbuild/protobuf/codegenv1"; +import { enumDesc, fileDesc } from "@bufbuild/protobuf/codegenv1"; + +/** + * Describes the file google/type/calendar_period.proto. + */ +export const file_google_type_calendar_period: GenFile = /*@__PURE__*/ + fileDesc("CiFnb29nbGUvdHlwZS9jYWxlbmRhcl9wZXJpb2QucHJvdG8SC2dvb2dsZS50eXBlKn8KDkNhbGVuZGFyUGVyaW9kEh8KG0NBTEVOREFSX1BFUklPRF9VTlNQRUNJRklFRBAAEgcKA0RBWRABEggKBFdFRUsQAhINCglGT1JUTklHSFQQAxIJCgVNT05USBAEEgsKB1FVQVJURVIQBRIICgRIQUxGEAYSCAoEWUVBUhAHQngKD2NvbS5nb29nbGUudHlwZUITQ2FsZW5kYXJQZXJpb2RQcm90b1ABWkhnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvY2FsZW5kYXJwZXJpb2Q7Y2FsZW5kYXJwZXJpb2SiAgNHVFBiBnByb3RvMw"); + +/** + * A `CalendarPeriod` represents the abstract concept of a time period that has + * a canonical start. Grammatically, "the start of the current + * `CalendarPeriod`." All calendar times begin at midnight UTC. + * + * @generated from enum google.type.CalendarPeriod + */ +export enum CalendarPeriod { + /** + * Undefined period, raises an error. + * + * @generated from enum value: CALENDAR_PERIOD_UNSPECIFIED = 0; + */ + CALENDAR_PERIOD_UNSPECIFIED = 0, + + /** + * A day. + * + * @generated from enum value: DAY = 1; + */ + DAY = 1, + + /** + * A week. Weeks begin on Monday, following + * [ISO 8601](https://en.wikipedia.org/wiki/ISO_week_date). + * + * @generated from enum value: WEEK = 2; + */ + WEEK = 2, + + /** + * A fortnight. The first calendar fortnight of the year begins at the start + * of week 1 according to + * [ISO 8601](https://en.wikipedia.org/wiki/ISO_week_date). + * + * @generated from enum value: FORTNIGHT = 3; + */ + FORTNIGHT = 3, + + /** + * A month. + * + * @generated from enum value: MONTH = 4; + */ + MONTH = 4, + + /** + * A quarter. Quarters start on dates 1-Jan, 1-Apr, 1-Jul, and 1-Oct of each + * year. + * + * @generated from enum value: QUARTER = 5; + */ + QUARTER = 5, + + /** + * A half-year. Half-years start on dates 1-Jan and 1-Jul. + * + * @generated from enum value: HALF = 6; + */ + HALF = 6, + + /** + * A year. + * + * @generated from enum value: YEAR = 7; + */ + YEAR = 7, +} + +/** + * Describes the enum google.type.CalendarPeriod. + */ +export const CalendarPeriodSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_google_type_calendar_period, 0); + diff --git a/schemaregistry/google/type/color_pb.ts b/schemaregistry/google/type/color_pb.ts new file mode 100644 index 00000000..462d70da --- /dev/null +++ b/schemaregistry/google/type/color_pb.ts @@ -0,0 +1,204 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/color.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import { file_google_protobuf_wrappers } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file google/type/color.proto. + */ +export const file_google_type_color: GenFile = /*@__PURE__*/ + fileDesc("Chdnb29nbGUvdHlwZS9jb2xvci5wcm90bxILZ29vZ2xlLnR5cGUiXQoFQ29sb3ISCwoDcmVkGAEgASgCEg0KBWdyZWVuGAIgASgCEgwKBGJsdWUYAyABKAISKgoFYWxwaGEYBCABKAsyGy5nb29nbGUucHJvdG9idWYuRmxvYXRWYWx1ZUJgCg9jb20uZ29vZ2xlLnR5cGVCCkNvbG9yUHJvdG9QAVo2Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL2NvbG9yO2NvbG9y+AEBogIDR1RQYgZwcm90bzM", [file_google_protobuf_wrappers]); + +/** + * Represents a color in the RGBA color space. This representation is designed + * for simplicity of conversion to/from color representations in various + * languages over compactness. For example, the fields of this representation + * can be trivially provided to the constructor of `java.awt.Color` in Java; it + * can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` + * method in iOS; and, with just a little work, it can be easily formatted into + * a CSS `rgba()` string in JavaScript. + * + * This reference page doesn't carry information about the absolute color + * space + * that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB, + * DCI-P3, BT.2020, etc.). By default, applications should assume the sRGB color + * space. + * + * When color equality needs to be decided, implementations, unless + * documented otherwise, treat two colors as equal if all their red, + * green, blue, and alpha values each differ by at most 1e-5. + * + * Example (Java): + * + * import com.google.type.Color; + * + * // ... + * public static java.awt.Color fromProto(Color protocolor) { + * float alpha = protocolor.hasAlpha() + * ? protocolor.getAlpha().getValue() + * : 1.0; + * + * return new java.awt.Color( + * protocolor.getRed(), + * protocolor.getGreen(), + * protocolor.getBlue(), + * alpha); + * } + * + * public static Color toProto(java.awt.Color color) { + * float red = (float) color.getRed(); + * float green = (float) color.getGreen(); + * float blue = (float) color.getBlue(); + * float denominator = 255.0; + * Color.Builder resultBuilder = + * Color + * .newBuilder() + * .setRed(red / denominator) + * .setGreen(green / denominator) + * .setBlue(blue / denominator); + * int alpha = color.getAlpha(); + * if (alpha != 255) { + * result.setAlpha( + * FloatValue + * .newBuilder() + * .setValue(((float) alpha) / denominator) + * .build()); + * } + * return resultBuilder.build(); + * } + * // ... + * + * Example (iOS / Obj-C): + * + * // ... + * static UIColor* fromProto(Color* protocolor) { + * float red = [protocolor red]; + * float green = [protocolor green]; + * float blue = [protocolor blue]; + * FloatValue* alpha_wrapper = [protocolor alpha]; + * float alpha = 1.0; + * if (alpha_wrapper != nil) { + * alpha = [alpha_wrapper value]; + * } + * return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; + * } + * + * static Color* toProto(UIColor* color) { + * CGFloat red, green, blue, alpha; + * if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { + * return nil; + * } + * Color* result = [[Color alloc] init]; + * [result setRed:red]; + * [result setGreen:green]; + * [result setBlue:blue]; + * if (alpha <= 0.9999) { + * [result setAlpha:floatWrapperWithValue(alpha)]; + * } + * [result autorelease]; + * return result; + * } + * // ... + * + * Example (JavaScript): + * + * // ... + * + * var protoToCssColor = function(rgb_color) { + * var redFrac = rgb_color.red || 0.0; + * var greenFrac = rgb_color.green || 0.0; + * var blueFrac = rgb_color.blue || 0.0; + * var red = Math.floor(redFrac * 255); + * var green = Math.floor(greenFrac * 255); + * var blue = Math.floor(blueFrac * 255); + * + * if (!('alpha' in rgb_color)) { + * return rgbToCssColor(red, green, blue); + * } + * + * var alphaFrac = rgb_color.alpha.value || 0.0; + * var rgbParams = [red, green, blue].join(','); + * return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); + * }; + * + * var rgbToCssColor = function(red, green, blue) { + * var rgbNumber = new Number((red << 16) | (green << 8) | blue); + * var hexString = rgbNumber.toString(16); + * var missingZeros = 6 - hexString.length; + * var resultBuilder = ['#']; + * for (var i = 0; i < missingZeros; i++) { + * resultBuilder.push('0'); + * } + * resultBuilder.push(hexString); + * return resultBuilder.join(''); + * }; + * + * // ... + * + * @generated from message google.type.Color + */ +export type Color = Message<"google.type.Color"> & { + /** + * The amount of red in the color as a value in the interval [0, 1]. + * + * @generated from field: float red = 1; + */ + red: number; + + /** + * The amount of green in the color as a value in the interval [0, 1]. + * + * @generated from field: float green = 2; + */ + green: number; + + /** + * The amount of blue in the color as a value in the interval [0, 1]. + * + * @generated from field: float blue = 3; + */ + blue: number; + + /** + * The fraction of this color that should be applied to the pixel. That is, + * the final pixel color is defined by the equation: + * + * `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)` + * + * This means that a value of 1.0 corresponds to a solid color, whereas + * a value of 0.0 corresponds to a completely transparent color. This + * uses a wrapper message rather than a simple float scalar so that it is + * possible to distinguish between a default value and the value being unset. + * If omitted, this color object is rendered as a solid color + * (as if the alpha value had been explicitly given a value of 1.0). + * + * @generated from field: google.protobuf.FloatValue alpha = 4; + */ + alpha?: number; +}; + +/** + * Describes the message google.type.Color. + * Use `create(ColorSchema)` to create a new message. + */ +export const ColorSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_google_type_color, 0); + diff --git a/schemaregistry/google/type/date_pb.ts b/schemaregistry/google/type/date_pb.ts new file mode 100644 index 00000000..eaf34962 --- /dev/null +++ b/schemaregistry/google/type/date_pb.ts @@ -0,0 +1,79 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/date.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file google/type/date.proto. + */ +export const file_google_type_date: GenFile = /*@__PURE__*/ + fileDesc("ChZnb29nbGUvdHlwZS9kYXRlLnByb3RvEgtnb29nbGUudHlwZSIwCgREYXRlEgwKBHllYXIYASABKAUSDQoFbW9udGgYAiABKAUSCwoDZGF5GAMgASgFQl0KD2NvbS5nb29nbGUudHlwZUIJRGF0ZVByb3RvUAFaNGdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvdHlwZS9kYXRlO2RhdGX4AQGiAgNHVFBiBnByb3RvMw"); + +/** + * Represents a whole or partial calendar date, such as a birthday. The time of + * day and time zone are either specified elsewhere or are insignificant. The + * date is relative to the Gregorian Calendar. This can represent one of the + * following: + * + * * A full date, with non-zero year, month, and day values + * * A month and day value, with a zero year, such as an anniversary + * * A year on its own, with zero month and day values + * * A year and month value, with a zero day, such as a credit card expiration + * date + * + * Related types are [google.type.TimeOfDay][google.type.TimeOfDay] and + * `google.protobuf.Timestamp`. + * + * @generated from message google.type.Date + */ +export type Date = Message<"google.type.Date"> & { + /** + * Year of the date. Must be from 1 to 9999, or 0 to specify a date without + * a year. + * + * @generated from field: int32 year = 1; + */ + year: number; + + /** + * Month of a year. Must be from 1 to 12, or 0 to specify a year without a + * month and day. + * + * @generated from field: int32 month = 2; + */ + month: number; + + /** + * Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 + * to specify a year by itself or a year and month where the day isn't + * significant. + * + * @generated from field: int32 day = 3; + */ + day: number; +}; + +/** + * Describes the message google.type.Date. + * Use `create(DateSchema)` to create a new message. + */ +export const DateSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_google_type_date, 0); + diff --git a/schemaregistry/google/type/datetime_pb.ts b/schemaregistry/google/type/datetime_pb.ts new file mode 100644 index 00000000..511b0859 --- /dev/null +++ b/schemaregistry/google/type/datetime_pb.ts @@ -0,0 +1,180 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/datetime.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Duration } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_duration } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file google/type/datetime.proto. + */ +export const file_google_type_datetime: GenFile = /*@__PURE__*/ + fileDesc("Chpnb29nbGUvdHlwZS9kYXRldGltZS5wcm90bxILZ29vZ2xlLnR5cGUi4AEKCERhdGVUaW1lEgwKBHllYXIYASABKAUSDQoFbW9udGgYAiABKAUSCwoDZGF5GAMgASgFEg0KBWhvdXJzGAQgASgFEg8KB21pbnV0ZXMYBSABKAUSDwoHc2Vjb25kcxgGIAEoBRINCgVuYW5vcxgHIAEoBRIvCgp1dGNfb2Zmc2V0GAggASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uSAASKgoJdGltZV96b25lGAkgASgLMhUuZ29vZ2xlLnR5cGUuVGltZVpvbmVIAEINCgt0aW1lX29mZnNldCInCghUaW1lWm9uZRIKCgJpZBgBIAEoCRIPCgd2ZXJzaW9uGAIgASgJQmkKD2NvbS5nb29nbGUudHlwZUINRGF0ZVRpbWVQcm90b1ABWjxnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvZGF0ZXRpbWU7ZGF0ZXRpbWX4AQGiAgNHVFBiBnByb3RvMw", [file_google_protobuf_duration]); + +/** + * Represents civil time (or occasionally physical time). + * + * This type can represent a civil time in one of a few possible ways: + * + * * When utc_offset is set and time_zone is unset: a civil time on a calendar + * day with a particular offset from UTC. + * * When time_zone is set and utc_offset is unset: a civil time on a calendar + * day in a particular time zone. + * * When neither time_zone nor utc_offset is set: a civil time on a calendar + * day in local time. + * + * The date is relative to the Proleptic Gregorian Calendar. + * + * If year is 0, the DateTime is considered not to have a specific year. month + * and day must have valid, non-zero values. + * + * This type may also be used to represent a physical time if all the date and + * time fields are set and either case of the `time_offset` oneof is set. + * Consider using `Timestamp` message for physical time instead. If your use + * case also would like to store the user's timezone, that can be done in + * another field. + * + * This type is more flexible than some applications may want. Make sure to + * document and validate your application's limitations. + * + * @generated from message google.type.DateTime + */ +export type DateTime = Message<"google.type.DateTime"> & { + /** + * Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a + * datetime without a year. + * + * @generated from field: int32 year = 1; + */ + year: number; + + /** + * Required. Month of year. Must be from 1 to 12. + * + * @generated from field: int32 month = 2; + */ + month: number; + + /** + * Required. Day of month. Must be from 1 to 31 and valid for the year and + * month. + * + * @generated from field: int32 day = 3; + */ + day: number; + + /** + * Required. Hours of day in 24 hour format. Should be from 0 to 23. An API + * may choose to allow the value "24:00:00" for scenarios like business + * closing time. + * + * @generated from field: int32 hours = 4; + */ + hours: number; + + /** + * Required. Minutes of hour of day. Must be from 0 to 59. + * + * @generated from field: int32 minutes = 5; + */ + minutes: number; + + /** + * Required. Seconds of minutes of the time. Must normally be from 0 to 59. An + * API may allow the value 60 if it allows leap-seconds. + * + * @generated from field: int32 seconds = 6; + */ + seconds: number; + + /** + * Required. Fractions of seconds in nanoseconds. Must be from 0 to + * 999,999,999. + * + * @generated from field: int32 nanos = 7; + */ + nanos: number; + + /** + * Optional. Specifies either the UTC offset or the time zone of the DateTime. + * Choose carefully between them, considering that time zone data may change + * in the future (for example, a country modifies their DST start/end dates, + * and future DateTimes in the affected range had already been stored). + * If omitted, the DateTime is considered to be in local time. + * + * @generated from oneof google.type.DateTime.time_offset + */ + timeOffset: { + /** + * UTC offset. Must be whole seconds, between -18 hours and +18 hours. + * For example, a UTC offset of -4:00 would be represented as + * { seconds: -14400 }. + * + * @generated from field: google.protobuf.Duration utc_offset = 8; + */ + value: Duration; + case: "utcOffset"; + } | { + /** + * Time zone. + * + * @generated from field: google.type.TimeZone time_zone = 9; + */ + value: TimeZone; + case: "timeZone"; + } | { case: undefined; value?: undefined }; +}; + +/** + * Describes the message google.type.DateTime. + * Use `create(DateTimeSchema)` to create a new message. + */ +export const DateTimeSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_google_type_datetime, 0); + +/** + * Represents a time zone from the + * [IANA Time Zone Database](https://www.iana.org/time-zones). + * + * @generated from message google.type.TimeZone + */ +export type TimeZone = Message<"google.type.TimeZone"> & { + /** + * IANA Time Zone Database time zone, e.g. "America/New_York". + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * Optional. IANA Time Zone Database version number, e.g. "2019a". + * + * @generated from field: string version = 2; + */ + version: string; +}; + +/** + * Describes the message google.type.TimeZone. + * Use `create(TimeZoneSchema)` to create a new message. + */ +export const TimeZoneSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_google_type_datetime, 1); + diff --git a/schemaregistry/google/type/dayofweek_pb.ts b/schemaregistry/google/type/dayofweek_pb.ts new file mode 100644 index 00000000..8932990c --- /dev/null +++ b/schemaregistry/google/type/dayofweek_pb.ts @@ -0,0 +1,96 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/dayofweek.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile } from "@bufbuild/protobuf/codegenv1"; +import { enumDesc, fileDesc } from "@bufbuild/protobuf/codegenv1"; + +/** + * Describes the file google/type/dayofweek.proto. + */ +export const file_google_type_dayofweek: GenFile = /*@__PURE__*/ + fileDesc("Chtnb29nbGUvdHlwZS9kYXlvZndlZWsucHJvdG8SC2dvb2dsZS50eXBlKoQBCglEYXlPZldlZWsSGwoXREFZX09GX1dFRUtfVU5TUEVDSUZJRUQQABIKCgZNT05EQVkQARILCgdUVUVTREFZEAISDQoJV0VETkVTREFZEAMSDAoIVEhVUlNEQVkQBBIKCgZGUklEQVkQBRIMCghTQVRVUkRBWRAGEgoKBlNVTkRBWRAHQmkKD2NvbS5nb29nbGUudHlwZUIORGF5T2ZXZWVrUHJvdG9QAVo+Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL2RheW9md2VlaztkYXlvZndlZWuiAgNHVFBiBnByb3RvMw"); + +/** + * Represents a day of the week. + * + * @generated from enum google.type.DayOfWeek + */ +export enum DayOfWeek { + /** + * The day of the week is unspecified. + * + * @generated from enum value: DAY_OF_WEEK_UNSPECIFIED = 0; + */ + DAY_OF_WEEK_UNSPECIFIED = 0, + + /** + * Monday + * + * @generated from enum value: MONDAY = 1; + */ + MONDAY = 1, + + /** + * Tuesday + * + * @generated from enum value: TUESDAY = 2; + */ + TUESDAY = 2, + + /** + * Wednesday + * + * @generated from enum value: WEDNESDAY = 3; + */ + WEDNESDAY = 3, + + /** + * Thursday + * + * @generated from enum value: THURSDAY = 4; + */ + THURSDAY = 4, + + /** + * Friday + * + * @generated from enum value: FRIDAY = 5; + */ + FRIDAY = 5, + + /** + * Saturday + * + * @generated from enum value: SATURDAY = 6; + */ + SATURDAY = 6, + + /** + * Sunday + * + * @generated from enum value: SUNDAY = 7; + */ + SUNDAY = 7, +} + +/** + * Describes the enum google.type.DayOfWeek. + */ +export const DayOfWeekSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_google_type_dayofweek, 0); + diff --git a/schemaregistry/google/type/decimal_pb.ts b/schemaregistry/google/type/decimal_pb.ts new file mode 100644 index 00000000..f3c65377 --- /dev/null +++ b/schemaregistry/google/type/decimal_pb.ts @@ -0,0 +1,114 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/decimal.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file google/type/decimal.proto. + */ +export const file_google_type_decimal: GenFile = /*@__PURE__*/ + fileDesc("Chlnb29nbGUvdHlwZS9kZWNpbWFsLnByb3RvEgtnb29nbGUudHlwZSIYCgdEZWNpbWFsEg0KBXZhbHVlGAEgASgJQmYKD2NvbS5nb29nbGUudHlwZUIMRGVjaW1hbFByb3RvUAFaOmdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvdHlwZS9kZWNpbWFsO2RlY2ltYWz4AQGiAgNHVFBiBnByb3RvMw"); + +/** + * A representation of a decimal value, such as 2.5. Clients may convert values + * into language-native decimal formats, such as Java's [BigDecimal][] or + * Python's [decimal.Decimal][]. + * + * [BigDecimal]: + * https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDecimal.html + * [decimal.Decimal]: https://docs.python.org/3/library/decimal.html + * + * @generated from message google.type.Decimal + */ +export type Decimal = Message<"google.type.Decimal"> & { + /** + * The decimal value, as a string. + * + * The string representation consists of an optional sign, `+` (`U+002B`) + * or `-` (`U+002D`), followed by a sequence of zero or more decimal digits + * ("the integer"), optionally followed by a fraction, optionally followed + * by an exponent. + * + * The fraction consists of a decimal point followed by zero or more decimal + * digits. The string must contain at least one digit in either the integer + * or the fraction. The number formed by the sign, the integer and the + * fraction is referred to as the significand. + * + * The exponent consists of the character `e` (`U+0065`) or `E` (`U+0045`) + * followed by one or more decimal digits. + * + * Services **should** normalize decimal values before storing them by: + * + * - Removing an explicitly-provided `+` sign (`+2.5` -> `2.5`). + * - Replacing a zero-length integer value with `0` (`.5` -> `0.5`). + * - Coercing the exponent character to lower-case (`2.5E8` -> `2.5e8`). + * - Removing an explicitly-provided zero exponent (`2.5e0` -> `2.5`). + * + * Services **may** perform additional normalization based on its own needs + * and the internal decimal implementation selected, such as shifting the + * decimal point and exponent value together (example: `2.5e-1` <-> `0.25`). + * Additionally, services **may** preserve trailing zeroes in the fraction + * to indicate increased precision, but are not required to do so. + * + * Note that only the `.` character is supported to divide the integer + * and the fraction; `,` **should not** be supported regardless of locale. + * Additionally, thousand separators **should not** be supported. If a + * service does support them, values **must** be normalized. + * + * The ENBF grammar is: + * + * DecimalString = + * [Sign] Significand [Exponent]; + * + * Sign = '+' | '-'; + * + * Significand = + * Digits ['.'] [Digits] | [Digits] '.' Digits; + * + * Exponent = ('e' | 'E') [Sign] Digits; + * + * Digits = { '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' }; + * + * Services **should** clearly document the range of supported values, the + * maximum supported precision (total number of digits), and, if applicable, + * the scale (number of digits after the decimal point), as well as how it + * behaves when receiving out-of-bounds values. + * + * Services **may** choose to accept values passed as input even when the + * value has a higher precision or scale than the service supports, and + * **should** round the value to fit the supported scale. Alternatively, the + * service **may** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC) + * if precision would be lost. + * + * Services **should** error with `400 Bad Request` (`INVALID_ARGUMENT` in + * gRPC) if the service receives a value outside of the supported range. + * + * @generated from field: string value = 1; + */ + value: string; +}; + +/** + * Describes the message google.type.Decimal. + * Use `create(DecimalSchema)` to create a new message. + */ +export const DecimalSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_google_type_decimal, 0); + diff --git a/schemaregistry/google/type/expr_pb.ts b/schemaregistry/google/type/expr_pb.ts new file mode 100644 index 00000000..a4dd114b --- /dev/null +++ b/schemaregistry/google/type/expr_pb.ts @@ -0,0 +1,105 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/expr.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file google/type/expr.proto. + */ +export const file_google_type_expr: GenFile = /*@__PURE__*/ + fileDesc("ChZnb29nbGUvdHlwZS9leHByLnByb3RvEgtnb29nbGUudHlwZSJQCgRFeHByEhIKCmV4cHJlc3Npb24YASABKAkSDQoFdGl0bGUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSEAoIbG9jYXRpb24YBCABKAlCWgoPY29tLmdvb2dsZS50eXBlQglFeHByUHJvdG9QAVo0Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL2V4cHI7ZXhwcqICA0dUUGIGcHJvdG8z"); + +/** + * Represents a textual expression in the Common Expression Language (CEL) + * syntax. CEL is a C-like expression language. The syntax and semantics of CEL + * are documented at https://github.com/google/cel-spec. + * + * Example (Comparison): + * + * title: "Summary size limit" + * description: "Determines if a summary is less than 100 chars" + * expression: "document.summary.size() < 100" + * + * Example (Equality): + * + * title: "Requestor is owner" + * description: "Determines if requestor is the document owner" + * expression: "document.owner == request.auth.claims.email" + * + * Example (Logic): + * + * title: "Public documents" + * description: "Determine whether the document should be publicly visible" + * expression: "document.type != 'private' && document.type != 'internal'" + * + * Example (Data Manipulation): + * + * title: "Notification string" + * description: "Create a notification string with a timestamp." + * expression: "'New message received at ' + string(document.create_time)" + * + * The exact variables and functions that may be referenced within an expression + * are determined by the service that evaluates it. See the service + * documentation for additional information. + * + * @generated from message google.type.Expr + */ +export type Expr = Message<"google.type.Expr"> & { + /** + * Textual representation of an expression in Common Expression Language + * syntax. + * + * @generated from field: string expression = 1; + */ + expression: string; + + /** + * Optional. Title for the expression, i.e. a short string describing + * its purpose. This can be used e.g. in UIs which allow to enter the + * expression. + * + * @generated from field: string title = 2; + */ + title: string; + + /** + * Optional. Description of the expression. This is a longer text which + * describes the expression, e.g. when hovered over it in a UI. + * + * @generated from field: string description = 3; + */ + description: string; + + /** + * Optional. String indicating the location of the expression for error + * reporting, e.g. a file name and a position in the file. + * + * @generated from field: string location = 4; + */ + location: string; +}; + +/** + * Describes the message google.type.Expr. + * Use `create(ExprSchema)` to create a new message. + */ +export const ExprSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_google_type_expr, 0); + diff --git a/schemaregistry/google/type/fraction_pb.ts b/schemaregistry/google/type/fraction_pb.ts new file mode 100644 index 00000000..2d180530 --- /dev/null +++ b/schemaregistry/google/type/fraction_pb.ts @@ -0,0 +1,57 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/fraction.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file google/type/fraction.proto. + */ +export const file_google_type_fraction: GenFile = /*@__PURE__*/ + fileDesc("Chpnb29nbGUvdHlwZS9mcmFjdGlvbi5wcm90bxILZ29vZ2xlLnR5cGUiMgoIRnJhY3Rpb24SEQoJbnVtZXJhdG9yGAEgASgDEhMKC2Rlbm9taW5hdG9yGAIgASgDQmYKD2NvbS5nb29nbGUudHlwZUINRnJhY3Rpb25Qcm90b1ABWjxnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvZnJhY3Rpb247ZnJhY3Rpb26iAgNHVFBiBnByb3RvMw"); + +/** + * Represents a fraction in terms of a numerator divided by a denominator. + * + * @generated from message google.type.Fraction + */ +export type Fraction = Message<"google.type.Fraction"> & { + /** + * The numerator in the fraction, e.g. 2 in 2/3. + * + * @generated from field: int64 numerator = 1; + */ + numerator: bigint; + + /** + * The value by which the numerator is divided, e.g. 3 in 2/3. Must be + * positive. + * + * @generated from field: int64 denominator = 2; + */ + denominator: bigint; +}; + +/** + * Describes the message google.type.Fraction. + * Use `create(FractionSchema)` to create a new message. + */ +export const FractionSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_google_type_fraction, 0); + diff --git a/schemaregistry/google/type/interval_pb.ts b/schemaregistry/google/type/interval_pb.ts new file mode 100644 index 00000000..ae5ffa96 --- /dev/null +++ b/schemaregistry/google/type/interval_pb.ts @@ -0,0 +1,69 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/interval.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file google/type/interval.proto. + */ +export const file_google_type_interval: GenFile = /*@__PURE__*/ + fileDesc("Chpnb29nbGUvdHlwZS9pbnRlcnZhbC5wcm90bxILZ29vZ2xlLnR5cGUiaAoISW50ZXJ2YWwSLgoKc3RhcnRfdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoIZW5kX3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQmkKD2NvbS5nb29nbGUudHlwZUINSW50ZXJ2YWxQcm90b1ABWjxnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvaW50ZXJ2YWw7aW50ZXJ2YWz4AQGiAgNHVFBiBnByb3RvMw", [file_google_protobuf_timestamp]); + +/** + * Represents a time interval, encoded as a Timestamp start (inclusive) and a + * Timestamp end (exclusive). + * + * The start must be less than or equal to the end. + * When the start equals the end, the interval is empty (matches no time). + * When both start and end are unspecified, the interval matches any time. + * + * @generated from message google.type.Interval + */ +export type Interval = Message<"google.type.Interval"> & { + /** + * Optional. Inclusive start of the interval. + * + * If specified, a Timestamp matching this interval will have to be the same + * or after the start. + * + * @generated from field: google.protobuf.Timestamp start_time = 1; + */ + startTime?: Timestamp; + + /** + * Optional. Exclusive end of the interval. + * + * If specified, a Timestamp matching this interval will have to be before the + * end. + * + * @generated from field: google.protobuf.Timestamp end_time = 2; + */ + endTime?: Timestamp; +}; + +/** + * Describes the message google.type.Interval. + * Use `create(IntervalSchema)` to create a new message. + */ +export const IntervalSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_google_type_interval, 0); + diff --git a/schemaregistry/google/type/latlng_pb.ts b/schemaregistry/google/type/latlng_pb.ts new file mode 100644 index 00000000..41c99c15 --- /dev/null +++ b/schemaregistry/google/type/latlng_pb.ts @@ -0,0 +1,60 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/latlng.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file google/type/latlng.proto. + */ +export const file_google_type_latlng: GenFile = /*@__PURE__*/ + fileDesc("Chhnb29nbGUvdHlwZS9sYXRsbmcucHJvdG8SC2dvb2dsZS50eXBlIi0KBkxhdExuZxIQCghsYXRpdHVkZRgBIAEoARIRCglsb25naXR1ZGUYAiABKAFCYwoPY29tLmdvb2dsZS50eXBlQgtMYXRMbmdQcm90b1ABWjhnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvbGF0bG5nO2xhdGxuZ/gBAaICA0dUUGIGcHJvdG8z"); + +/** + * An object that represents a latitude/longitude pair. This is expressed as a + * pair of doubles to represent degrees latitude and degrees longitude. Unless + * specified otherwise, this must conform to the + * WGS84 + * standard. Values must be within normalized ranges. + * + * @generated from message google.type.LatLng + */ +export type LatLng = Message<"google.type.LatLng"> & { + /** + * The latitude in degrees. It must be in the range [-90.0, +90.0]. + * + * @generated from field: double latitude = 1; + */ + latitude: number; + + /** + * The longitude in degrees. It must be in the range [-180.0, +180.0]. + * + * @generated from field: double longitude = 2; + */ + longitude: number; +}; + +/** + * Describes the message google.type.LatLng. + * Use `create(LatLngSchema)` to create a new message. + */ +export const LatLngSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_google_type_latlng, 0); + diff --git a/schemaregistry/google/type/localized_text_pb.ts b/schemaregistry/google/type/localized_text_pb.ts new file mode 100644 index 00000000..80235333 --- /dev/null +++ b/schemaregistry/google/type/localized_text_pb.ts @@ -0,0 +1,59 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/localized_text.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file google/type/localized_text.proto. + */ +export const file_google_type_localized_text: GenFile = /*@__PURE__*/ + fileDesc("CiBnb29nbGUvdHlwZS9sb2NhbGl6ZWRfdGV4dC5wcm90bxILZ29vZ2xlLnR5cGUiNAoNTG9jYWxpemVkVGV4dBIMCgR0ZXh0GAEgASgJEhUKDWxhbmd1YWdlX2NvZGUYAiABKAlCegoPY29tLmdvb2dsZS50eXBlQhJMb2NhbGl6ZWRUZXh0UHJvdG9QAVpIZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL2xvY2FsaXplZF90ZXh0O2xvY2FsaXplZF90ZXh0+AEBogIDR1RQYgZwcm90bzM"); + +/** + * Localized variant of a text in a particular language. + * + * @generated from message google.type.LocalizedText + */ +export type LocalizedText = Message<"google.type.LocalizedText"> & { + /** + * Localized string in the language corresponding to `language_code' below. + * + * @generated from field: string text = 1; + */ + text: string; + + /** + * The text's BCP-47 language code, such as "en-US" or "sr-Latn". + * + * For more information, see + * http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. + * + * @generated from field: string language_code = 2; + */ + languageCode: string; +}; + +/** + * Describes the message google.type.LocalizedText. + * Use `create(LocalizedTextSchema)` to create a new message. + */ +export const LocalizedTextSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_google_type_localized_text, 0); + diff --git a/schemaregistry/google/type/money_pb.ts b/schemaregistry/google/type/money_pb.ts new file mode 100644 index 00000000..de6bd31d --- /dev/null +++ b/schemaregistry/google/type/money_pb.ts @@ -0,0 +1,69 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/money.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file google/type/money.proto. + */ +export const file_google_type_money: GenFile = /*@__PURE__*/ + fileDesc("Chdnb29nbGUvdHlwZS9tb25leS5wcm90bxILZ29vZ2xlLnR5cGUiPAoFTW9uZXkSFQoNY3VycmVuY3lfY29kZRgBIAEoCRINCgV1bml0cxgCIAEoAxINCgVuYW5vcxgDIAEoBUJgCg9jb20uZ29vZ2xlLnR5cGVCCk1vbmV5UHJvdG9QAVo2Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL21vbmV5O21vbmV5+AEBogIDR1RQYgZwcm90bzM"); + +/** + * Represents an amount of money with its currency type. + * + * @generated from message google.type.Money + */ +export type Money = Message<"google.type.Money"> & { + /** + * The three-letter currency code defined in ISO 4217. + * + * @generated from field: string currency_code = 1; + */ + currencyCode: string; + + /** + * The whole units of the amount. + * For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar. + * + * @generated from field: int64 units = 2; + */ + units: bigint; + + /** + * Number of nano (10^-9) units of the amount. + * The value must be between -999,999,999 and +999,999,999 inclusive. + * If `units` is positive, `nanos` must be positive or zero. + * If `units` is zero, `nanos` can be positive, zero, or negative. + * If `units` is negative, `nanos` must be negative or zero. + * For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000. + * + * @generated from field: int32 nanos = 3; + */ + nanos: number; +}; + +/** + * Describes the message google.type.Money. + * Use `create(MoneySchema)` to create a new message. + */ +export const MoneySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_google_type_money, 0); + diff --git a/schemaregistry/google/type/month_pb.ts b/schemaregistry/google/type/month_pb.ts new file mode 100644 index 00000000..072f60b1 --- /dev/null +++ b/schemaregistry/google/type/month_pb.ts @@ -0,0 +1,131 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/month.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile } from "@bufbuild/protobuf/codegenv1"; +import { enumDesc, fileDesc } from "@bufbuild/protobuf/codegenv1"; + +/** + * Describes the file google/type/month.proto. + */ +export const file_google_type_month: GenFile = /*@__PURE__*/ + fileDesc("Chdnb29nbGUvdHlwZS9tb250aC5wcm90bxILZ29vZ2xlLnR5cGUqsAEKBU1vbnRoEhUKEU1PTlRIX1VOU1BFQ0lGSUVEEAASCwoHSkFOVUFSWRABEgwKCEZFQlJVQVJZEAISCQoFTUFSQ0gQAxIJCgVBUFJJTBAEEgcKA01BWRAFEggKBEpVTkUQBhIICgRKVUxZEAcSCgoGQVVHVVNUEAgSDQoJU0VQVEVNQkVSEAkSCwoHT0NUT0JFUhAKEgwKCE5PVkVNQkVSEAsSDAoIREVDRU1CRVIQDEJdCg9jb20uZ29vZ2xlLnR5cGVCCk1vbnRoUHJvdG9QAVo2Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL21vbnRoO21vbnRoogIDR1RQYgZwcm90bzM"); + +/** + * Represents a month in the Gregorian calendar. + * + * @generated from enum google.type.Month + */ +export enum Month { + /** + * The unspecified month. + * + * @generated from enum value: MONTH_UNSPECIFIED = 0; + */ + MONTH_UNSPECIFIED = 0, + + /** + * The month of January. + * + * @generated from enum value: JANUARY = 1; + */ + JANUARY = 1, + + /** + * The month of February. + * + * @generated from enum value: FEBRUARY = 2; + */ + FEBRUARY = 2, + + /** + * The month of March. + * + * @generated from enum value: MARCH = 3; + */ + MARCH = 3, + + /** + * The month of April. + * + * @generated from enum value: APRIL = 4; + */ + APRIL = 4, + + /** + * The month of May. + * + * @generated from enum value: MAY = 5; + */ + MAY = 5, + + /** + * The month of June. + * + * @generated from enum value: JUNE = 6; + */ + JUNE = 6, + + /** + * The month of July. + * + * @generated from enum value: JULY = 7; + */ + JULY = 7, + + /** + * The month of August. + * + * @generated from enum value: AUGUST = 8; + */ + AUGUST = 8, + + /** + * The month of September. + * + * @generated from enum value: SEPTEMBER = 9; + */ + SEPTEMBER = 9, + + /** + * The month of October. + * + * @generated from enum value: OCTOBER = 10; + */ + OCTOBER = 10, + + /** + * The month of November. + * + * @generated from enum value: NOVEMBER = 11; + */ + NOVEMBER = 11, + + /** + * The month of December. + * + * @generated from enum value: DECEMBER = 12; + */ + DECEMBER = 12, +} + +/** + * Describes the enum google.type.Month. + */ +export const MonthSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_google_type_month, 0); + diff --git a/schemaregistry/google/type/phone_number_pb.ts b/schemaregistry/google/type/phone_number_pb.ts new file mode 100644 index 00000000..f11e0e54 --- /dev/null +++ b/schemaregistry/google/type/phone_number_pb.ts @@ -0,0 +1,165 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/phone_number.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file google/type/phone_number.proto. + */ +export const file_google_type_phone_number: GenFile = /*@__PURE__*/ + fileDesc("Ch5nb29nbGUvdHlwZS9waG9uZV9udW1iZXIucHJvdG8SC2dvb2dsZS50eXBlIqsBCgtQaG9uZU51bWJlchIVCgtlMTY0X251bWJlchgBIAEoCUgAEjgKCnNob3J0X2NvZGUYAiABKAsyIi5nb29nbGUudHlwZS5QaG9uZU51bWJlci5TaG9ydENvZGVIABIRCglleHRlbnNpb24YAyABKAkaMAoJU2hvcnRDb2RlEhMKC3JlZ2lvbl9jb2RlGAEgASgJEg4KBm51bWJlchgCIAEoCUIGCgRraW5kQnQKD2NvbS5nb29nbGUudHlwZUIQUGhvbmVOdW1iZXJQcm90b1ABWkRnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvcGhvbmVfbnVtYmVyO3Bob25lX251bWJlcvgBAaICA0dUUGIGcHJvdG8z"); + +/** + * An object representing a phone number, suitable as an API wire format. + * + * This representation: + * + * - should not be used for locale-specific formatting of a phone number, such + * as "+1 (650) 253-0000 ext. 123" + * + * - is not designed for efficient storage + * - may not be suitable for dialing - specialized libraries (see references) + * should be used to parse the number for that purpose + * + * To do something meaningful with this number, such as format it for various + * use-cases, convert it to an `i18n.phonenumbers.PhoneNumber` object first. + * + * For instance, in Java this would be: + * + * com.google.type.PhoneNumber wireProto = + * com.google.type.PhoneNumber.newBuilder().build(); + * com.google.i18n.phonenumbers.Phonenumber.PhoneNumber phoneNumber = + * PhoneNumberUtil.getInstance().parse(wireProto.getE164Number(), "ZZ"); + * if (!wireProto.getExtension().isEmpty()) { + * phoneNumber.setExtension(wireProto.getExtension()); + * } + * + * Reference(s): + * - https://github.com/google/libphonenumber + * + * @generated from message google.type.PhoneNumber + */ +export type PhoneNumber = Message<"google.type.PhoneNumber"> & { + /** + * Required. Either a regular number, or a short code. New fields may be + * added to the oneof below in the future, so clients should ignore phone + * numbers for which none of the fields they coded against are set. + * + * @generated from oneof google.type.PhoneNumber.kind + */ + kind: { + /** + * The phone number, represented as a leading plus sign ('+'), followed by a + * phone number that uses a relaxed ITU E.164 format consisting of the + * country calling code (1 to 3 digits) and the subscriber number, with no + * additional spaces or formatting, e.g.: + * - correct: "+15552220123" + * - incorrect: "+1 (555) 222-01234 x123". + * + * The ITU E.164 format limits the latter to 12 digits, but in practice not + * all countries respect that, so we relax that restriction here. + * National-only numbers are not allowed. + * + * References: + * - https://www.itu.int/rec/T-REC-E.164-201011-I + * - https://en.wikipedia.org/wiki/E.164. + * - https://en.wikipedia.org/wiki/List_of_country_calling_codes + * + * @generated from field: string e164_number = 1; + */ + value: string; + case: "e164Number"; + } | { + /** + * A short code. + * + * Reference(s): + * - https://en.wikipedia.org/wiki/Short_code + * + * @generated from field: google.type.PhoneNumber.ShortCode short_code = 2; + */ + value: PhoneNumber_ShortCode; + case: "shortCode"; + } | { case: undefined; value?: undefined }; + + /** + * The phone number's extension. The extension is not standardized in ITU + * recommendations, except for being defined as a series of numbers with a + * maximum length of 40 digits. Other than digits, some other dialing + * characters such as ',' (indicating a wait) or '#' may be stored here. + * + * Note that no regions currently use extensions with short codes, so this + * field is normally only set in conjunction with an E.164 number. It is held + * separately from the E.164 number to allow for short code extensions in the + * future. + * + * @generated from field: string extension = 3; + */ + extension: string; +}; + +/** + * Describes the message google.type.PhoneNumber. + * Use `create(PhoneNumberSchema)` to create a new message. + */ +export const PhoneNumberSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_google_type_phone_number, 0); + +/** + * An object representing a short code, which is a phone number that is + * typically much shorter than regular phone numbers and can be used to + * address messages in MMS and SMS systems, as well as for abbreviated dialing + * (e.g. "Text 611 to see how many minutes you have remaining on your plan."). + * + * Short codes are restricted to a region and are not internationally + * dialable, which means the same short code can exist in different regions, + * with different usage and pricing, even if those regions share the same + * country calling code (e.g. US and CA). + * + * @generated from message google.type.PhoneNumber.ShortCode + */ +export type PhoneNumber_ShortCode = Message<"google.type.PhoneNumber.ShortCode"> & { + /** + * Required. The BCP-47 region code of the location where calls to this + * short code can be made, such as "US" and "BB". + * + * Reference(s): + * - http://www.unicode.org/reports/tr35/#unicode_region_subtag + * + * @generated from field: string region_code = 1; + */ + regionCode: string; + + /** + * Required. The short code digits, without a leading plus ('+') or country + * calling code, e.g. "611". + * + * @generated from field: string number = 2; + */ + number: string; +}; + +/** + * Describes the message google.type.PhoneNumber.ShortCode. + * Use `create(PhoneNumber_ShortCodeSchema)` to create a new message. + */ +export const PhoneNumber_ShortCodeSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_google_type_phone_number, 0, 0); + diff --git a/schemaregistry/google/type/postal_address_pb.ts b/schemaregistry/google/type/postal_address_pb.ts new file mode 100644 index 00000000..2bde15eb --- /dev/null +++ b/schemaregistry/google/type/postal_address_pb.ts @@ -0,0 +1,193 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/postal_address.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file google/type/postal_address.proto. + */ +export const file_google_type_postal_address: GenFile = /*@__PURE__*/ + fileDesc("CiBnb29nbGUvdHlwZS9wb3N0YWxfYWRkcmVzcy5wcm90bxILZ29vZ2xlLnR5cGUi/QEKDVBvc3RhbEFkZHJlc3MSEAoIcmV2aXNpb24YASABKAUSEwoLcmVnaW9uX2NvZGUYAiABKAkSFQoNbGFuZ3VhZ2VfY29kZRgDIAEoCRITCgtwb3N0YWxfY29kZRgEIAEoCRIUCgxzb3J0aW5nX2NvZGUYBSABKAkSGwoTYWRtaW5pc3RyYXRpdmVfYXJlYRgGIAEoCRIQCghsb2NhbGl0eRgHIAEoCRITCgtzdWJsb2NhbGl0eRgIIAEoCRIVCg1hZGRyZXNzX2xpbmVzGAkgAygJEhIKCnJlY2lwaWVudHMYCiADKAkSFAoMb3JnYW5pemF0aW9uGAsgASgJQngKD2NvbS5nb29nbGUudHlwZUISUG9zdGFsQWRkcmVzc1Byb3RvUAFaRmdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvdHlwZS9wb3N0YWxhZGRyZXNzO3Bvc3RhbGFkZHJlc3P4AQGiAgNHVFBiBnByb3RvMw"); + +/** + * Represents a postal address, e.g. for postal delivery or payments addresses. + * Given a postal address, a postal service can deliver items to a premise, P.O. + * Box or similar. + * It is not intended to model geographical locations (roads, towns, + * mountains). + * + * In typical usage an address would be created via user input or from importing + * existing data, depending on the type of process. + * + * Advice on address input / editing: + * - Use an i18n-ready address widget such as + * https://github.com/google/libaddressinput) + * - Users should not be presented with UI elements for input or editing of + * fields outside countries where that field is used. + * + * For more guidance on how to use this schema, please see: + * https://support.google.com/business/answer/6397478 + * + * @generated from message google.type.PostalAddress + */ +export type PostalAddress = Message<"google.type.PostalAddress"> & { + /** + * The schema revision of the `PostalAddress`. This must be set to 0, which is + * the latest revision. + * + * All new revisions **must** be backward compatible with old revisions. + * + * @generated from field: int32 revision = 1; + */ + revision: number; + + /** + * Required. CLDR region code of the country/region of the address. This + * is never inferred and it is up to the user to ensure the value is + * correct. See http://cldr.unicode.org/ and + * http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html + * for details. Example: "CH" for Switzerland. + * + * @generated from field: string region_code = 2; + */ + regionCode: string; + + /** + * Optional. BCP-47 language code of the contents of this address (if + * known). This is often the UI language of the input form or is expected + * to match one of the languages used in the address' country/region, or their + * transliterated equivalents. + * This can affect formatting in certain countries, but is not critical + * to the correctness of the data and will never affect any validation or + * other non-formatting related operations. + * + * If this value is not known, it should be omitted (rather than specifying a + * possibly incorrect default). + * + * Examples: "zh-Hant", "ja", "ja-Latn", "en". + * + * @generated from field: string language_code = 3; + */ + languageCode: string; + + /** + * Optional. Postal code of the address. Not all countries use or require + * postal codes to be present, but where they are used, they may trigger + * additional validation with other parts of the address (e.g. state/zip + * validation in the U.S.A.). + * + * @generated from field: string postal_code = 4; + */ + postalCode: string; + + /** + * Optional. Additional, country-specific, sorting code. This is not used + * in most regions. Where it is used, the value is either a string like + * "CEDEX", optionally followed by a number (e.g. "CEDEX 7"), or just a number + * alone, representing the "sector code" (Jamaica), "delivery area indicator" + * (Malawi) or "post office indicator" (e.g. Côte d'Ivoire). + * + * @generated from field: string sorting_code = 5; + */ + sortingCode: string; + + /** + * Optional. Highest administrative subdivision which is used for postal + * addresses of a country or region. + * For example, this can be a state, a province, an oblast, or a prefecture. + * Specifically, for Spain this is the province and not the autonomous + * community (e.g. "Barcelona" and not "Catalonia"). + * Many countries don't use an administrative area in postal addresses. E.g. + * in Switzerland this should be left unpopulated. + * + * @generated from field: string administrative_area = 6; + */ + administrativeArea: string; + + /** + * Optional. Generally refers to the city/town portion of the address. + * Examples: US city, IT comune, UK post town. + * In regions of the world where localities are not well defined or do not fit + * into this structure well, leave locality empty and use address_lines. + * + * @generated from field: string locality = 7; + */ + locality: string; + + /** + * Optional. Sublocality of the address. + * For example, this can be neighborhoods, boroughs, districts. + * + * @generated from field: string sublocality = 8; + */ + sublocality: string; + + /** + * Unstructured address lines describing the lower levels of an address. + * + * Because values in address_lines do not have type information and may + * sometimes contain multiple values in a single field (e.g. + * "Austin, TX"), it is important that the line order is clear. The order of + * address lines should be "envelope order" for the country/region of the + * address. In places where this can vary (e.g. Japan), address_language is + * used to make it explicit (e.g. "ja" for large-to-small ordering and + * "ja-Latn" or "en" for small-to-large). This way, the most specific line of + * an address can be selected based on the language. + * + * The minimum permitted structural representation of an address consists + * of a region_code with all remaining information placed in the + * address_lines. It would be possible to format such an address very + * approximately without geocoding, but no semantic reasoning could be + * made about any of the address components until it was at least + * partially resolved. + * + * Creating an address only containing a region_code and address_lines, and + * then geocoding is the recommended way to handle completely unstructured + * addresses (as opposed to guessing which parts of the address should be + * localities or administrative areas). + * + * @generated from field: repeated string address_lines = 9; + */ + addressLines: string[]; + + /** + * Optional. The recipient at the address. + * This field may, under certain circumstances, contain multiline information. + * For example, it might contain "care of" information. + * + * @generated from field: repeated string recipients = 10; + */ + recipients: string[]; + + /** + * Optional. The name of the organization at the address. + * + * @generated from field: string organization = 11; + */ + organization: string; +}; + +/** + * Describes the message google.type.PostalAddress. + * Use `create(PostalAddressSchema)` to create a new message. + */ +export const PostalAddressSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_google_type_postal_address, 0); + diff --git a/schemaregistry/google/type/quaternion_pb.ts b/schemaregistry/google/type/quaternion_pb.ts new file mode 100644 index 00000000..b0047bef --- /dev/null +++ b/schemaregistry/google/type/quaternion_pb.ts @@ -0,0 +1,125 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/quaternion.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file google/type/quaternion.proto. + */ +export const file_google_type_quaternion: GenFile = /*@__PURE__*/ + fileDesc("Chxnb29nbGUvdHlwZS9xdWF0ZXJuaW9uLnByb3RvEgtnb29nbGUudHlwZSI4CgpRdWF0ZXJuaW9uEgkKAXgYASABKAESCQoBeRgCIAEoARIJCgF6GAMgASgBEgkKAXcYBCABKAFCbwoPY29tLmdvb2dsZS50eXBlQg9RdWF0ZXJuaW9uUHJvdG9QAVpAZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL3F1YXRlcm5pb247cXVhdGVybmlvbvgBAaICA0dUUGIGcHJvdG8z"); + +/** + * A quaternion is defined as the quotient of two directed lines in a + * three-dimensional space or equivalently as the quotient of two Euclidean + * vectors (https://en.wikipedia.org/wiki/Quaternion). + * + * Quaternions are often used in calculations involving three-dimensional + * rotations (https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation), + * as they provide greater mathematical robustness by avoiding the gimbal lock + * problems that can be encountered when using Euler angles + * (https://en.wikipedia.org/wiki/Gimbal_lock). + * + * Quaternions are generally represented in this form: + * + * w + xi + yj + zk + * + * where x, y, z, and w are real numbers, and i, j, and k are three imaginary + * numbers. + * + * Our naming choice `(x, y, z, w)` comes from the desire to avoid confusion for + * those interested in the geometric properties of the quaternion in the 3D + * Cartesian space. Other texts often use alternative names or subscripts, such + * as `(a, b, c, d)`, `(1, i, j, k)`, or `(0, 1, 2, 3)`, which are perhaps + * better suited for mathematical interpretations. + * + * To avoid any confusion, as well as to maintain compatibility with a large + * number of software libraries, the quaternions represented using the protocol + * buffer below *must* follow the Hamilton convention, which defines `ij = k` + * (i.e. a right-handed algebra), and therefore: + * + * i^2 = j^2 = k^2 = ijk = −1 + * ij = −ji = k + * jk = −kj = i + * ki = −ik = j + * + * Please DO NOT use this to represent quaternions that follow the JPL + * convention, or any of the other quaternion flavors out there. + * + * Definitions: + * + * - Quaternion norm (or magnitude): `sqrt(x^2 + y^2 + z^2 + w^2)`. + * - Unit (or normalized) quaternion: a quaternion whose norm is 1. + * - Pure quaternion: a quaternion whose scalar component (`w`) is 0. + * - Rotation quaternion: a unit quaternion used to represent rotation. + * - Orientation quaternion: a unit quaternion used to represent orientation. + * + * A quaternion can be normalized by dividing it by its norm. The resulting + * quaternion maintains the same direction, but has a norm of 1, i.e. it moves + * on the unit sphere. This is generally necessary for rotation and orientation + * quaternions, to avoid rounding errors: + * https://en.wikipedia.org/wiki/Rotation_formalisms_in_three_dimensions + * + * Note that `(x, y, z, w)` and `(-x, -y, -z, -w)` represent the same rotation, + * but normalization would be even more useful, e.g. for comparison purposes, if + * it would produce a unique representation. It is thus recommended that `w` be + * kept positive, which can be achieved by changing all the signs when `w` is + * negative. + * + * + * @generated from message google.type.Quaternion + */ +export type Quaternion = Message<"google.type.Quaternion"> & { + /** + * The x component. + * + * @generated from field: double x = 1; + */ + x: number; + + /** + * The y component. + * + * @generated from field: double y = 2; + */ + y: number; + + /** + * The z component. + * + * @generated from field: double z = 3; + */ + z: number; + + /** + * The scalar component. + * + * @generated from field: double w = 4; + */ + w: number; +}; + +/** + * Describes the message google.type.Quaternion. + * Use `create(QuaternionSchema)` to create a new message. + */ +export const QuaternionSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_google_type_quaternion, 0); + diff --git a/schemaregistry/google/type/timeofday_pb.ts b/schemaregistry/google/type/timeofday_pb.ts new file mode 100644 index 00000000..ddcca796 --- /dev/null +++ b/schemaregistry/google/type/timeofday_pb.ts @@ -0,0 +1,75 @@ +// Copyright 2021-2024 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file google/type/timeofday.proto (package google.type, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file google/type/timeofday.proto. + */ +export const file_google_type_timeofday: GenFile = /*@__PURE__*/ + fileDesc("Chtnb29nbGUvdHlwZS90aW1lb2ZkYXkucHJvdG8SC2dvb2dsZS50eXBlIksKCVRpbWVPZkRheRINCgVob3VycxgBIAEoBRIPCgdtaW51dGVzGAIgASgFEg8KB3NlY29uZHMYAyABKAUSDQoFbmFub3MYBCABKAVCbAoPY29tLmdvb2dsZS50eXBlQg5UaW1lT2ZEYXlQcm90b1ABWj5nb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvdGltZW9mZGF5O3RpbWVvZmRhefgBAaICA0dUUGIGcHJvdG8z"); + +/** + * Represents a time of day. The date and time zone are either not significant + * or are specified elsewhere. An API may choose to allow leap seconds. Related + * types are [google.type.Date][google.type.Date] and + * `google.protobuf.Timestamp`. + * + * @generated from message google.type.TimeOfDay + */ +export type TimeOfDay = Message<"google.type.TimeOfDay"> & { + /** + * Hours of day in 24 hour format. Should be from 0 to 23. An API may choose + * to allow the value "24:00:00" for scenarios like business closing time. + * + * @generated from field: int32 hours = 1; + */ + hours: number; + + /** + * Minutes of hour of day. Must be from 0 to 59. + * + * @generated from field: int32 minutes = 2; + */ + minutes: number; + + /** + * Seconds of minutes of the time. Must normally be from 0 to 59. An API may + * allow the value 60 if it allows leap-seconds. + * + * @generated from field: int32 seconds = 3; + */ + seconds: number; + + /** + * Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999. + * + * @generated from field: int32 nanos = 4; + */ + nanos: number; +}; + +/** + * Describes the message google.type.TimeOfDay. + * Use `create(TimeOfDaySchema)` to create a new message. + */ +export const TimeOfDaySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_google_type_timeofday, 0); + diff --git a/schemaregistry/mock-schemaregistry-client.ts b/schemaregistry/mock-schemaregistry-client.ts index 4c181af5..5677f62c 100644 --- a/schemaregistry/mock-schemaregistry-client.ts +++ b/schemaregistry/mock-schemaregistry-client.ts @@ -124,7 +124,7 @@ class MockClient implements Client { this.schemaToVersionCache.set(cacheKey, { version: newVersion, softDeleted: false }); } - async getBySubjectAndId(subject: string, id: number): Promise { + async getBySubjectAndId(subject: string, id: number, format?: string): Promise { const cacheKey = stringify({ subject, id }); const cacheEntry = this.idToSchemaCache.get(cacheKey); diff --git a/schemaregistry/schemaregistry-client.ts b/schemaregistry/schemaregistry-client.ts index 7e1a3241..928e761e 100644 --- a/schemaregistry/schemaregistry-client.ts +++ b/schemaregistry/schemaregistry-client.ts @@ -114,7 +114,7 @@ export interface Client { config(): ClientConfig; register(subject: string, schema: SchemaInfo, normalize: boolean): Promise; registerFullResponse(subject: string, schema: SchemaInfo, normalize: boolean): Promise; - getBySubjectAndId(subject: string, id: number): Promise; + getBySubjectAndId(subject: string, id: number, format?: string): Promise; getId(subject: string, schema: SchemaInfo, normalize: boolean): Promise; getLatestSchemaMetadata(subject: string): Promise; getSchemaMetadata(subject: string, version: number, deleted: boolean): Promise; @@ -221,7 +221,7 @@ export class SchemaRegistryClient implements Client { }); } - async getBySubjectAndId(subject: string, id: number): Promise { + async getBySubjectAndId(subject: string, id: number, format?: string): Promise { const cacheKey = stringify({ subject, id }); return await this.idToSchemaInfoMutex.runExclusive(async () => { const cachedSchema: SchemaInfo | undefined = this.idToSchemaInfoCache.get(cacheKey); @@ -231,8 +231,10 @@ export class SchemaRegistryClient implements Client { subject = encodeURIComponent(subject); + let formatStr = format != null ? `&format=${format}` : ''; + const response: AxiosResponse = await this.restService.handleRequest( - `/schemas/ids/${id}?subject=${subject}`, + `/schemas/ids/${id}?subject=${subject}${formatStr}`, 'GET' ); this.idToSchemaInfoCache.set(cacheKey, response.data); diff --git a/schemaregistry/serde/protobuf.ts b/schemaregistry/serde/protobuf.ts index bdd49568..d557468c 100644 --- a/schemaregistry/serde/protobuf.ts +++ b/schemaregistry/serde/protobuf.ts @@ -14,40 +14,92 @@ import { SchemaMetadata } from "../schemaregistry-client"; import { - createFileRegistry, + createFileRegistry, createMutableRegistry, DescField, DescFile, DescMessage, FileRegistry, - fromBinary, getExtension, hasExtension, - Registry, + fromBinary, getExtension, hasExtension, MutableRegistry, ScalarType, toBinary } from "@bufbuild/protobuf"; -import { FileDescriptorProtoSchema } from "@bufbuild/protobuf/wkt"; +import { + file_google_protobuf_any, + file_google_protobuf_api, + file_google_protobuf_descriptor, + file_google_protobuf_duration, + file_google_protobuf_empty, + file_google_protobuf_field_mask, + file_google_protobuf_source_context, + file_google_protobuf_struct, + file_google_protobuf_timestamp, file_google_protobuf_type, file_google_protobuf_wrappers, + FileDescriptorProtoSchema +} from "@bufbuild/protobuf/wkt"; import { BufferWrapper, MAX_VARINT_LEN_64 } from "./buffer-wrapper"; import { LRUCache } from "lru-cache"; -import {field_meta, Meta} from "../confluent/meta_pb"; +import {field_meta, file_confluent_meta, Meta} from "../confluent/meta_pb"; import {getRuleExecutors} from "./rule-registry"; import stringify from "json-stringify-deterministic"; +import {file_confluent_types_decimal} from "../confluent/types/decimal_pb"; +import {file_google_type_calendar_period} from "../google/type/calendar_period_pb"; +import {file_google_type_color} from "../google/type/color_pb"; +import {file_google_type_date} from "../google/type/date_pb"; +import {file_google_type_datetime} from "../google/type/datetime_pb"; +import {file_google_type_dayofweek} from "../google/type/dayofweek_pb"; +import {file_google_type_fraction} from "../google/type/fraction_pb"; +import {file_google_type_expr} from "../google/type/expr_pb"; +import {file_google_type_latlng} from "../google/type/latlng_pb"; +import {file_google_type_money} from "../google/type/money_pb"; +import {file_google_type_postal_address} from "../google/type/postal_address_pb"; +import {file_google_type_quaternion} from "../google/type/quaternion_pb"; +import {file_google_type_timeofday} from "../google/type/timeofday_pb"; +import {file_google_type_month} from "../google/type/month_pb"; + +const builtinDeps = new Map([ + ['confluent/meta.proto', file_confluent_meta], + ['confluent/type/decimal.proto', file_confluent_types_decimal], + ['google/type/calendar_period.proto', file_google_type_calendar_period], + ['google/type/color.proto', file_google_type_color], + ['google/type/date.proto', file_google_type_date], + ['google/type/datetime.proto', file_google_type_datetime], + ['google/type/dayofweek.proto', file_google_type_dayofweek], + ['google/type/expr.proto', file_google_type_expr], + ['google/type/fraction.proto', file_google_type_fraction], + ['google/type/latlng.proto', file_google_type_latlng], + ['google/type/money.proto', file_google_type_money], + ['google/type/month.proto', file_google_type_month], + ['google/type/postal_address.proto', file_google_type_postal_address], + ['google/type/quaternion.proto', file_google_type_quaternion], + ['google/type/timeofday.proto', file_google_type_timeofday], + ['google/protobuf/any.proto', file_google_protobuf_any], + ['google/protobuf/api.proto', file_google_protobuf_api], + ['google/protobuf/descriptor.proto', file_google_protobuf_descriptor], + ['google/protobuf/duration.proto', file_google_protobuf_duration], + ['google/protobuf/empty.proto', file_google_protobuf_empty], + ['google/protobuf/field_mask.proto', file_google_protobuf_field_mask], + ['google/protobuf/source_context.proto', file_google_protobuf_source_context], + ['google/protobuf/struct.proto', file_google_protobuf_struct], + ['google/protobuf/timestamp.proto', file_google_protobuf_timestamp], + ['google/protobuf/type.proto', file_google_protobuf_type], + ['google/protobuf/wrappers.proto', file_google_protobuf_wrappers], +]) export interface ProtobufSerde { schemaToDescCache: LRUCache } export type ProtobufSerializerConfig = SerializerConfig & { - registry: Registry - descToSchemaCache: LRUCache + registry?: MutableRegistry } export class ProtobufSerializer extends Serializer implements ProtobufSerde { - registry: Registry + registry: MutableRegistry schemaToDescCache: LRUCache descToSchemaCache: LRUCache constructor(client: Client, serdeType: SerdeType, conf: ProtobufSerializerConfig) { super(client, serdeType, conf) - this.registry = conf.registry + this.registry = conf.registry ?? createMutableRegistry() this.schemaToDescCache = new LRUCache({ max: this.config().cacheCapacity ?? 1000 } ) this.descToSchemaCache = new LRUCache({ max: this.config().cacheCapacity ?? 1000 } ) this.fieldTransformer = async (ctx: RuleContext, fieldTransform: FieldTransform, msg: any) => { @@ -76,7 +128,7 @@ export class ProtobufSerializer extends Serializer implements ProtobufSerde { } const fileDesc = messageDesc.file const schema = await this.getSchemaInfo(fileDesc) - const [id, info] = await this.getId(topic, msg, schema) + const [id, info] = await this.getId(topic, msg, schema, 'serialized') const subject = this.subjectName(topic, info) msg = await this.executeRules(subject, topic, RuleMode.WRITE, null, info, msg, null) const msgIndexBytes = this.toMessageIndexBytes(messageDesc) @@ -114,7 +166,7 @@ export class ProtobufSerializer extends Serializer implements ProtobufSerde { toDependencies(fileDesc: DescFile, deps: Map) { deps.set(fileDesc.name, Buffer.from(toBinary(FileDescriptorProtoSchema, fileDesc.proto)).toString('base64')) fileDesc.dependencies.forEach((dep) => { - if (!this.ignoreFile(dep.name)) { + if (!isBuiltin(dep.name)) { this.toDependencies(dep, deps) } }) @@ -123,10 +175,9 @@ export class ProtobufSerializer extends Serializer implements ProtobufSerde { async resolveDependencies(fileDesc: DescFile, deps: Map, subject: string, autoRegister: boolean, normalize: boolean): Promise { const refs: Reference[] = [] - refs.length = fileDesc.dependencies.length for (let i = 0; i < fileDesc.dependencies.length; i++) { const dep = fileDesc.dependencies[i] - if (this.ignoreFile(dep.name)) { + if (isBuiltin(dep.name)) { continue } const ref = await this.resolveDependencies(dep, deps, dep.name, autoRegister, normalize) @@ -211,12 +262,6 @@ export class ProtobufSerializer extends Serializer implements ProtobufSerde { throw new SerializationError('message descriptor not found in file descriptor'); } - ignoreFile(name: string): boolean { - return name.startsWith('confluent/') || - name.startsWith('google/protobuf/') || - name.startsWith('google/type/') - } - async fieldTransform(ctx: RuleContext, fieldTransform: FieldTransform, msg: any): Promise { const typeName = msg.$typeName if (typeName == null) { @@ -256,7 +301,7 @@ export class ProtobufDeserializer extends Deserializer implements ProtobufSerde return null } - const info = await this.getSchema(topic, payload) + const info = await this.getSchema(topic, payload, 'serialized') const fd = await this.toFileDesc(this.client, info) const [bytesRead, msgIndexes] = this.readMessageIndexes(payload.subarray(5)) const messageDesc = this.toMessageDesc(fd, msgIndexes) @@ -309,11 +354,19 @@ export class ProtobufDeserializer extends Deserializer implements ProtobufSerde await this.resolveReferences(client, info, deps) const fileDesc = fromBinary(FileDescriptorProtoSchema, Buffer.from(info.schema, 'base64')) const resolve = (depName: string) => { - const dep = deps.get(depName) - if (dep == null) { - throw new SerializationError('dependency not found') + if (isBuiltin(depName)) { + const dep = builtinDeps.get(depName) + if (dep == null) { + throw new SerializationError(`dependency ${depName} not found`) + } + return dep + } else { + const dep = deps.get(depName) + if (dep == null) { + throw new SerializationError(`dependency ${depName} not found`) + } + return fromBinary(FileDescriptorProtoSchema, Buffer.from(dep, 'base64')) } - return fromBinary(FileDescriptorProtoSchema, Buffer.from(dep, 'base64')) } // TODO check google protos already in registry const fileRegistry = createFileRegistry(fileDesc, resolve) @@ -461,5 +514,8 @@ function disjoint(tags1: Set, tags2: Set): boolean { return true } - - +function isBuiltin(name: string): boolean { + return name.startsWith('confluent/') || + name.startsWith('google/protobuf/') || + name.startsWith('google/type/') +} diff --git a/schemaregistry/serde/serde.ts b/schemaregistry/serde/serde.ts index 66fc92bd..86376ca8 100644 --- a/schemaregistry/serde/serde.ts +++ b/schemaregistry/serde/serde.ts @@ -233,7 +233,7 @@ export abstract class Serializer extends Serde { abstract serialize(topic: string, msg: any): Promise // GetID returns a schema ID for the given schema - async getId(topic: string, msg: any, info: SchemaInfo): Promise<[number, SchemaInfo]> { + async getId(topic: string, msg: any, info: SchemaInfo, format?: string): Promise<[number, SchemaInfo]> { let autoRegister = this.config().autoRegisterSchemas let useSchemaId = this.config().useSchemaId let useLatestWithMetadata = this.conf.useLatestWithMetadata @@ -245,7 +245,7 @@ export abstract class Serializer extends Serde { if (autoRegister) { id = await this.client.register(subject, info, Boolean(normalizeSchema)) } else if (useSchemaId != null && useSchemaId >= 0) { - info = await this.client.getBySubjectAndId(subject, useSchemaId) + info = await this.client.getBySubjectAndId(subject, useSchemaId, format) id = await this.client.getId(subject, info, false) if (id !== useSchemaId) { throw new SerializationError(`failed to match schema ID (${id} != ${useSchemaId})`) @@ -287,7 +287,7 @@ export abstract class Deserializer extends Serde { return this.conf as DeserializerConfig } - async getSchema(topic: string, payload: Buffer): Promise { + async getSchema(topic: string, payload: Buffer, format?: string): Promise { const magicByte = payload.subarray(0, 1) if (!magicByte.equals(MAGIC_BYTE)) { throw new SerializationError( @@ -298,7 +298,7 @@ export abstract class Deserializer extends Serde { } const id = payload.subarray(1, 5).readInt32BE(0) let subject = this.subjectName(topic) - return await this.client.getBySubjectAndId(subject, id) + return await this.client.getBySubjectAndId(subject, id, format) } async getReaderSchema(subject: string): Promise { diff --git a/test/schemaregistry/serde/author_pb.ts b/test/schemaregistry/serde/author_pb.ts new file mode 100644 index 00000000..1384d36d --- /dev/null +++ b/test/schemaregistry/serde/author_pb.ts @@ -0,0 +1,69 @@ +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file test/schemaregistry/serde/author.proto (package test, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import { file_confluent_meta } from "../../../schemaregistry/confluent/meta_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file test/schemaregistry/serde/author.proto. + */ +export const file_test_schemaregistry_serde_author: GenFile = /*@__PURE__*/ + fileDesc("CiZ0ZXN0L3NjaGVtYXJlZ2lzdHJ5L3NlcmRlL2F1dGhvci5wcm90bxIEdGVzdCJWCgZBdXRob3ISFgoEbmFtZRgBIAEoCUIIgkQFGgNQSUkSCgoCaWQYAiABKAUSGQoHcGljdHVyZRgDIAEoDEIIgkQFGgNQSUkSDQoFd29ya3MYBCADKAkiJwoFUGl6emESDAoEc2l6ZRgBIAEoCRIQCgh0b3BwaW5ncxgCIAMoCUIJWgcuLi90ZXN0YgZwcm90bzM", [file_confluent_meta]); + +/** + * @generated from message test.Author + */ +export type Author = Message<"test.Author"> & { + /** + * @generated from field: string name = 1; + */ + name: string; + + /** + * @generated from field: int32 id = 2; + */ + id: number; + + /** + * @generated from field: bytes picture = 3; + */ + picture: Uint8Array; + + /** + * @generated from field: repeated string works = 4; + */ + works: string[]; +}; + +/** + * Describes the message test.Author. + * Use `create(AuthorSchema)` to create a new message. + */ +export const AuthorSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_test_schemaregistry_serde_author, 0); + +/** + * @generated from message test.Pizza + */ +export type Pizza = Message<"test.Pizza"> & { + /** + * @generated from field: string size = 1; + */ + size: string; + + /** + * @generated from field: repeated string toppings = 2; + */ + toppings: string[]; +}; + +/** + * Describes the message test.Pizza. + * Use `create(PizzaSchema)` to create a new message. + */ +export const PizzaSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_test_schemaregistry_serde_author, 1); + diff --git a/test/schemaregistry/serde/protobuf.spec.ts b/test/schemaregistry/serde/protobuf.spec.ts new file mode 100644 index 00000000..eb3b0601 --- /dev/null +++ b/test/schemaregistry/serde/protobuf.spec.ts @@ -0,0 +1,109 @@ +import {describe, expect, it} from '@jest/globals'; +import {ClientConfig} from "../../../schemaregistry/rest-service"; +import { + ProtobufDeserializer, ProtobufDeserializerConfig, + ProtobufSerializer, ProtobufSerializerConfig, +} from "../../../schemaregistry/serde/protobuf"; +import {SerdeType} from "../../../schemaregistry/serde/serde"; +import { + Rule, + RuleMode, + RuleSet, + SchemaInfo, + SchemaRegistryClient +} from "../../../schemaregistry/schemaregistry-client"; +import {LocalKmsDriver} from "../../../schemaregistry/rules/encryption/localkms/local-driver"; +import {FieldEncryptionExecutor} from "../../../schemaregistry/rules/encryption/encrypt-executor"; +import {AuthorSchema, file_test_schemaregistry_serde_author} from "./author_pb"; +import {create, toBinary} from "@bufbuild/protobuf"; +import {FileDescriptorProtoSchema} from "@bufbuild/protobuf/wkt"; + +const fieldEncryptionExecutor = FieldEncryptionExecutor.register() +LocalKmsDriver.register() + +describe('ProtobufSerializer', () => { + it('basic serialization', async () => { + let conf: ClientConfig = { + baseURLs: ['mock://'], + cacheCapacity: 1000 + } + let client = SchemaRegistryClient.newClient(conf) + let ser = new ProtobufSerializer(client, SerdeType.VALUE, {autoRegisterSchemas: true}) + ser.registry.add(AuthorSchema) + let obj = create(AuthorSchema, { + name: 'Kafka', + id: 123, + picture: Buffer.from([1, 2]), + works: ['The Castle', 'The Trial'] + }) + let bytes = await ser.serialize("topic1", obj) + + let deser = new ProtobufDeserializer(client, SerdeType.VALUE, {}) + let obj2 = await deser.deserialize("topic1", bytes) + expect(obj2).toEqual(obj) + }) + it('basic encryption', async () => { + let conf: ClientConfig = { + baseURLs: ['mock://'], + cacheCapacity: 1000 + } + let client = SchemaRegistryClient.newClient(conf) + let serConfig: ProtobufSerializerConfig = { + useLatestVersion: true, + ruleConfig: { + secret: 'mysecret' + } + } + let ser = new ProtobufSerializer(client, SerdeType.VALUE, serConfig) + ser.registry.add(AuthorSchema) + let dekClient = fieldEncryptionExecutor.client! + + let encRule: Rule = { + name: 'test-encrypt', + kind: 'TRANSFORM', + mode: RuleMode.WRITEREAD, + type: 'ENCRYPT', + tags: ['PII'], + params: { + 'encrypt.kek.name': 'kek1', + 'encrypt.kms.type': 'local-kms', + 'encrypt.kms.key.id': 'mykey', + }, + onFailure: 'ERROR,ERROR' + } + let ruleSet: RuleSet = { + domainRules: [encRule] + } + + let info: SchemaInfo = { + schemaType: 'AVRO', + schema: Buffer.from(toBinary(FileDescriptorProtoSchema, file_test_schemaregistry_serde_author.proto)).toString('base64'), + ruleSet + } + + let id = await client.register('topic1-value', info, false) + expect(id).toEqual(1) + + let obj = create(AuthorSchema, { + name: 'Kafka', + id: 123, + picture: Buffer.from([1, 2]), + works: ['The Castle', 'The Trial'] + }) + let bytes = await ser.serialize("topic1", obj) + + // reset encrypted field + obj.name = 'Kafka' + obj.picture = Buffer.from([1, 2]) + + let deserConfig: ProtobufDeserializerConfig = { + ruleConfig: { + secret: 'mysecret' + } + } + let deser = new ProtobufDeserializer(client, SerdeType.VALUE, deserConfig) + fieldEncryptionExecutor.client = dekClient + let obj2 = await deser.deserialize("topic1", bytes) + expect(obj2).toEqual(obj) + }) +}) From ffb47212e88dd9c6ce4d52c9a1d8fad203219513 Mon Sep 17 00:00:00 2001 From: Robert Yokota Date: Tue, 27 Aug 2024 16:04:57 -0700 Subject: [PATCH 02/12] Add JSON test --- test/schemaregistry/serde/json.spec.ts | 127 +++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 test/schemaregistry/serde/json.spec.ts diff --git a/test/schemaregistry/serde/json.spec.ts b/test/schemaregistry/serde/json.spec.ts new file mode 100644 index 00000000..7f5c4e2c --- /dev/null +++ b/test/schemaregistry/serde/json.spec.ts @@ -0,0 +1,127 @@ +import {describe, expect, it} from '@jest/globals'; +import {ClientConfig} from "../../../schemaregistry/rest-service"; +import {SerdeType} from "../../../schemaregistry/serde/serde"; +import { + Rule, + RuleMode, + RuleSet, + SchemaInfo, + SchemaRegistryClient +} from "../../../schemaregistry/schemaregistry-client"; +import {LocalKmsDriver} from "../../../schemaregistry/rules/encryption/localkms/local-driver"; +import {FieldEncryptionExecutor} from "../../../schemaregistry/rules/encryption/encrypt-executor"; +import { + JsonDeserializer, JsonDeserializerConfig, + JsonSerializer, + JsonSerializerConfig +} from "../../../schemaregistry/serde/json"; + +const fieldEncryptionExecutor = FieldEncryptionExecutor.register() +LocalKmsDriver.register() + +const demoSchema = ` +{ + "type": "object", + "properties": { + "intField": { "type": "integer" }, + "doubleField": { "type": "number" }, + "stringField": { + "type": "string", + "confluent:tags": [ "PII" ] + }, + "boolField": { "type": "boolean" }, + "bytesField": { + "type": "string", + "contentEncoding": "base64", + "confluent:tags": [ "PII" ] + } + } +} +` + +describe('JsonSerializer', () => { + it('basic serialization', async () => { + let conf: ClientConfig = { + baseURLs: ['mock://'], + cacheCapacity: 1000 + } + let client = SchemaRegistryClient.newClient(conf) + let ser = new JsonSerializer(client, SerdeType.VALUE, {autoRegisterSchemas: true}) + let obj = { + intField: 123, + doubleField: 45.67, + stringField: 'hi', + boolField: true, + bytesField: Buffer.from([0, 0, 0, 1]).toString('base64') + } + let bytes = await ser.serialize("topic1", obj) + + let deser = new JsonDeserializer(client, SerdeType.VALUE, {}) + let obj2 = await deser.deserialize("topic1", bytes) + expect(obj2).toEqual(obj) + }) + it('basic encryption', async () => { + let conf: ClientConfig = { + baseURLs: ['mock://'], + cacheCapacity: 1000 + } + let client = SchemaRegistryClient.newClient(conf) + let serConfig: JsonSerializerConfig = { + useLatestVersion: true, + ruleConfig: { + secret: 'mysecret' + } + } + let ser = new JsonSerializer(client, SerdeType.VALUE, serConfig) + let dekClient = fieldEncryptionExecutor.client! + + let encRule: Rule = { + name: 'test-encrypt', + kind: 'TRANSFORM', + mode: RuleMode.WRITEREAD, + type: 'ENCRYPT', + tags: ['PII'], + params: { + 'encrypt.kek.name': 'kek1', + 'encrypt.kms.type': 'local-kms', + 'encrypt.kms.key.id': 'mykey', + }, + onFailure: 'ERROR,ERROR' + } + let ruleSet: RuleSet = { + domainRules: [encRule] + } + + let info: SchemaInfo = { + schemaType: 'AVRO', + schema: demoSchema, + ruleSet + } + + let id = await client.register('topic1-value', info, false) + expect(id).toEqual(1) + + let obj = { + intField: 123, + doubleField: 45.67, + stringField: 'hi', + boolField: true, + bytesField: Buffer.from([0, 0, 0, 1]).toString('base64') + } + let bytes = await ser.serialize("topic1", obj) + + // reset encrypted field + obj.stringField = 'hi' + obj.bytesField = Buffer.from([0, 0, 0, 1]).toString('base64') + + let deserConfig: JsonDeserializerConfig = { + ruleConfig: { + secret: 'mysecret' + } + } + let deser = new JsonDeserializer(client, SerdeType.VALUE, deserConfig) + fieldEncryptionExecutor.client = dekClient + let obj2 = await deser.deserialize("topic1", bytes) + expect(obj2).toEqual(obj) + }) +}) From 4e1aa2fe65c7e39dab7d739e25b36d43aed65852 Mon Sep 17 00:00:00 2001 From: Robert Yokota Date: Tue, 27 Aug 2024 18:21:16 -0700 Subject: [PATCH 03/12] Add protobuf ref test --- coverage/clover.xml | 2471 ++++++++++ coverage/coverage-final.json | 51 + coverage/lcov-report/base.css | 224 + coverage/lcov-report/block-navigation.js | 87 + coverage/lcov-report/favicon.png | Bin 0 -> 445 bytes coverage/lcov-report/index.html | 311 ++ coverage/lcov-report/prettify.css | 1 + coverage/lcov-report/prettify.js | 2 + .../schemaregistry/confluent/index.html | 116 + .../schemaregistry/confluent/meta_pb.ts.html | 304 ++ .../confluent/types/decimal_pb.ts.html | 226 + .../schemaregistry/confluent/types/index.html | 116 + .../dekregistry/constants.ts.html | 97 + .../dekregistry/dekregistry-client.ts.html | 820 ++++ .../schemaregistry/dekregistry/index.html | 146 + .../mock-dekregistry-client.ts.html | 379 ++ .../google/type/calendar_period_pb.ts.html | 391 ++ .../google/type/color_pb.ts.html | 697 +++ .../google/type/date_pb.ts.html | 322 ++ .../google/type/datetime_pb.ts.html | 625 +++ .../google/type/dayofweek_pb.ts.html | 373 ++ .../google/type/expr_pb.ts.html | 400 ++ .../google/type/fraction_pb.ts.html | 256 + .../schemaregistry/google/type/index.html | 296 ++ .../google/type/latlng_pb.ts.html | 265 + .../google/type/money_pb.ts.html | 292 ++ .../google/type/month_pb.ts.html | 478 ++ .../google/type/postal_address_pb.ts.html | 664 +++ .../google/type/quaternion_pb.ts.html | 460 ++ .../google/type/timeofday_pb.ts.html | 310 ++ .../lcov-report/schemaregistry/index.html | 161 + .../mock-schemaregistry-client.ts.html | 1381 ++++++ .../schemaregistry/rest-error.ts.html | 112 + .../schemaregistry/rest-service.ts.html | 355 ++ .../rules/encryption/encrypt-executor.ts.html | 1675 +++++++ .../rules/encryption/index.html | 131 + .../rules/encryption/kms-registry.ts.html | 217 + .../rules/encryption/localkms/index.html | 131 + .../encryption/localkms/local-client.ts.html | 217 + .../encryption/localkms/local-driver.ts.html | 148 + .../rules/encryption/tink/aead.ts.html | 241 + .../rules/encryption/tink/aes_gcm.ts.html | 409 ++ .../rules/encryption/tink/aes_siv.ts.html | 211 + .../rules/encryption/tink/bytes.ts.html | 643 +++ .../encryption/tink/exception/index.html | 131 + .../invalid_arguments_exception.ts.html | 136 + .../tink/exception/security_exception.ts.html | 136 + .../rules/encryption/tink/hkdf.ts.html | 382 ++ .../rules/encryption/tink/hmac.ts.html | 379 ++ .../rules/encryption/tink/index.html | 236 + .../rules/encryption/tink/mac.ts.html | 187 + .../encryption/tink/proto/aes_gcm_pb.ts.html | 307 ++ .../encryption/tink/proto/aes_siv_pb.ts.html | 325 ++ .../rules/encryption/tink/proto/index.html | 131 + .../rules/encryption/tink/random.ts.html | 169 + .../rules/encryption/tink/validators.ts.html | 334 ++ .../schemaregistry-client.ts.html | 1921 ++++++++ .../schemaregistry/serde/avro.ts.html | 1243 +++++ .../serde/buffer-wrapper.ts.html | 274 ++ .../schemaregistry/serde/index.html | 221 + .../schemaregistry/serde/json-util.ts.html | 451 ++ .../schemaregistry/serde/json.ts.html | 1318 +++++ .../schemaregistry/serde/protobuf.ts.html | 1648 +++++++ .../serde/rule-registry.ts.html | 211 + .../schemaregistry/serde/serde.ts.html | 2290 +++++++++ .../serde/wildcard-matcher.ts.html | 355 ++ coverage/lcov-report/sort-arrow-sprite.png | Bin 0 -> 138 bytes coverage/lcov-report/sorter.js | 196 + .../schemaregistry/dekregistry/index.html | 116 + .../dekregistry/test-constants.ts.html | 304 ++ .../test/schemaregistry/index.html | 116 + .../schemaregistry/serde/author_pb.ts.html | 292 ++ .../test/schemaregistry/serde/index.html | 116 + .../schemaregistry/test-constants.ts.html | 190 + coverage/lcov.info | 4250 +++++++++++++++++ jest.config.js | 1 - proto/test/schemaregistry/serde/cycle.proto | 9 + proto/test/schemaregistry/serde/dep.proto | 11 + .../serde/{author.proto => example.proto} | 0 proto/test/schemaregistry/serde/nested.proto | 59 + .../schemaregistry/serde/newerwidget.proto | 10 + .../test/schemaregistry/serde/newwidget.proto | 10 + proto/test/schemaregistry/serde/test.proto | 24 + proto/test/schemaregistry/serde/widget.proto | 10 + schemaregistry/mock-schemaregistry-client.ts | 4 +- schemaregistry/serde/protobuf.ts | 14 +- schemaregistry/serde/serde.ts | 9 +- test/schemaregistry/serde/protobuf.spec.ts | 86 +- test/schemaregistry/serde/test/cycle_pb.ts | 36 + test/schemaregistry/serde/test/dep_pb.ts | 38 + .../{author_pb.ts => test/example_pb.ts} | 14 +- test/schemaregistry/serde/test/nested_pb.ts | 221 + .../serde/test/newerwidget_pb.ts | 41 + .../schemaregistry/serde/test/newwidget_pb.ts | 41 + test/schemaregistry/serde/test/test_pb.ts | 102 + test/schemaregistry/serde/test/widget_pb.ts | 41 + 96 files changed, 36330 insertions(+), 28 deletions(-) create mode 100644 coverage/clover.xml create mode 100644 coverage/coverage-final.json create mode 100644 coverage/lcov-report/base.css create mode 100644 coverage/lcov-report/block-navigation.js create mode 100644 coverage/lcov-report/favicon.png create mode 100644 coverage/lcov-report/index.html create mode 100644 coverage/lcov-report/prettify.css create mode 100644 coverage/lcov-report/prettify.js create mode 100644 coverage/lcov-report/schemaregistry/confluent/index.html create mode 100644 coverage/lcov-report/schemaregistry/confluent/meta_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/confluent/types/decimal_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/confluent/types/index.html create mode 100644 coverage/lcov-report/schemaregistry/dekregistry/constants.ts.html create mode 100644 coverage/lcov-report/schemaregistry/dekregistry/dekregistry-client.ts.html create mode 100644 coverage/lcov-report/schemaregistry/dekregistry/index.html create mode 100644 coverage/lcov-report/schemaregistry/dekregistry/mock-dekregistry-client.ts.html create mode 100644 coverage/lcov-report/schemaregistry/google/type/calendar_period_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/google/type/color_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/google/type/date_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/google/type/datetime_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/google/type/dayofweek_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/google/type/expr_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/google/type/fraction_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/google/type/index.html create mode 100644 coverage/lcov-report/schemaregistry/google/type/latlng_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/google/type/money_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/google/type/month_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/google/type/postal_address_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/google/type/quaternion_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/google/type/timeofday_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/index.html create mode 100644 coverage/lcov-report/schemaregistry/mock-schemaregistry-client.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rest-error.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rest-service.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/encrypt-executor.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/index.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/kms-registry.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/localkms/index.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/localkms/local-client.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/localkms/local-driver.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/aead.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/aes_gcm.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/aes_siv.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/bytes.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/index.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/invalid_arguments_exception.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/security_exception.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/hkdf.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/hmac.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/index.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/mac.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/aes_gcm_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/aes_siv_pb.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/index.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/random.ts.html create mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/validators.ts.html create mode 100644 coverage/lcov-report/schemaregistry/schemaregistry-client.ts.html create mode 100644 coverage/lcov-report/schemaregistry/serde/avro.ts.html create mode 100644 coverage/lcov-report/schemaregistry/serde/buffer-wrapper.ts.html create mode 100644 coverage/lcov-report/schemaregistry/serde/index.html create mode 100644 coverage/lcov-report/schemaregistry/serde/json-util.ts.html create mode 100644 coverage/lcov-report/schemaregistry/serde/json.ts.html create mode 100644 coverage/lcov-report/schemaregistry/serde/protobuf.ts.html create mode 100644 coverage/lcov-report/schemaregistry/serde/rule-registry.ts.html create mode 100644 coverage/lcov-report/schemaregistry/serde/serde.ts.html create mode 100644 coverage/lcov-report/schemaregistry/serde/wildcard-matcher.ts.html create mode 100644 coverage/lcov-report/sort-arrow-sprite.png create mode 100644 coverage/lcov-report/sorter.js create mode 100644 coverage/lcov-report/test/schemaregistry/dekregistry/index.html create mode 100644 coverage/lcov-report/test/schemaregistry/dekregistry/test-constants.ts.html create mode 100644 coverage/lcov-report/test/schemaregistry/index.html create mode 100644 coverage/lcov-report/test/schemaregistry/serde/author_pb.ts.html create mode 100644 coverage/lcov-report/test/schemaregistry/serde/index.html create mode 100644 coverage/lcov-report/test/schemaregistry/test-constants.ts.html create mode 100644 coverage/lcov.info create mode 100644 proto/test/schemaregistry/serde/cycle.proto create mode 100644 proto/test/schemaregistry/serde/dep.proto rename proto/test/schemaregistry/serde/{author.proto => example.proto} (100%) create mode 100644 proto/test/schemaregistry/serde/nested.proto create mode 100644 proto/test/schemaregistry/serde/newerwidget.proto create mode 100644 proto/test/schemaregistry/serde/newwidget.proto create mode 100644 proto/test/schemaregistry/serde/test.proto create mode 100644 proto/test/schemaregistry/serde/widget.proto create mode 100644 test/schemaregistry/serde/test/cycle_pb.ts create mode 100644 test/schemaregistry/serde/test/dep_pb.ts rename test/schemaregistry/serde/{author_pb.ts => test/example_pb.ts} (63%) create mode 100644 test/schemaregistry/serde/test/nested_pb.ts create mode 100644 test/schemaregistry/serde/test/newerwidget_pb.ts create mode 100644 test/schemaregistry/serde/test/newwidget_pb.ts create mode 100644 test/schemaregistry/serde/test/test_pb.ts create mode 100644 test/schemaregistry/serde/test/widget_pb.ts diff --git a/coverage/clover.xml b/coverage/clover.xml new file mode 100644 index 00000000..d0853ac4 --- /dev/null +++ b/coverage/clover.xml @@ -0,0 +1,2471 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json new file mode 100644 index 00000000..cafaea4f --- /dev/null +++ b/coverage/coverage-final.json @@ -0,0 +1,51 @@ +{"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/mock-schemaregistry-client.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/mock-schemaregistry-client.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":null}},"1":{"start":{"line":10,"column":0},"end":{"line":10,"column":53}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":39}},"3":{"start":{"line":30,"column":10},"end":{"line":30,"column":28}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":22}},"5":{"start":{"line":37,"column":4},"end":{"line":37,"column":17}},"6":{"start":{"line":38,"column":4},"end":{"line":38,"column":22}},"7":{"start":{"line":42,"column":18},"end":{"line":42,"column":20}},"8":{"start":{"line":53,"column":4},"end":{"line":53,"column":null}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":39}},"10":{"start":{"line":55,"column":4},"end":{"line":55,"column":37}},"11":{"start":{"line":56,"column":4},"end":{"line":56,"column":42}},"12":{"start":{"line":57,"column":4},"end":{"line":57,"column":33}},"13":{"start":{"line":58,"column":4},"end":{"line":58,"column":33}},"14":{"start":{"line":62,"column":4},"end":{"line":62,"column":null}},"15":{"start":{"line":66,"column":21},"end":{"line":66,"column":80}},"16":{"start":{"line":67,"column":4},"end":{"line":69,"column":5}},"17":{"start":{"line":68,"column":6},"end":{"line":68,"column":67}},"18":{"start":{"line":70,"column":4},"end":{"line":70,"column":23}},"19":{"start":{"line":74,"column":21},"end":{"line":74,"column":69}},"20":{"start":{"line":76,"column":23},"end":{"line":76,"column":59}},"21":{"start":{"line":77,"column":4},"end":{"line":79,"column":5}},"22":{"start":{"line":78,"column":6},"end":{"line":78,"column":33}},"23":{"start":{"line":81,"column":15},"end":{"line":81,"column":60}},"24":{"start":{"line":82,"column":4},"end":{"line":84,"column":5}},"25":{"start":{"line":83,"column":6},"end":{"line":83,"column":84}},"26":{"start":{"line":86,"column":37},"end":{"line":86,"column":54}},"27":{"start":{"line":87,"column":4},"end":{"line":87,"column":75}},"28":{"start":{"line":89,"column":4},"end":{"line":89,"column":20}},"29":{"start":{"line":93,"column":13},"end":{"line":93,"column":15}},"30":{"start":{"line":95,"column":4},"end":{"line":101,"column":5}},"31":{"start":{"line":96,"column":24},"end":{"line":96,"column":39}},"32":{"start":{"line":97,"column":6},"end":{"line":100,"column":7}},"33":{"start":{"line":98,"column":8},"end":{"line":98,"column":26}},"34":{"start":{"line":99,"column":8},"end":{"line":99,"column":14}},"35":{"start":{"line":103,"column":4},"end":{"line":103,"column":48}},"36":{"start":{"line":104,"column":4},"end":{"line":108,"column":5}},"37":{"start":{"line":105,"column":6},"end":{"line":105,"column":36}},"38":{"start":{"line":106,"column":25},"end":{"line":106,"column":51}},"39":{"start":{"line":107,"column":6},"end":{"line":107,"column":81}},"40":{"start":{"line":110,"column":4},"end":{"line":110,"column":14}},"41":{"start":{"line":114,"column":21},"end":{"line":114,"column":52}},"42":{"start":{"line":117,"column":4},"end":{"line":121,"column":5}},"43":{"start":{"line":118,"column":6},"end":{"line":118,"column":21}},"44":{"start":{"line":120,"column":6},"end":{"line":120,"column":53}},"45":{"start":{"line":123,"column":21},"end":{"line":123,"column":69}},"46":{"start":{"line":124,"column":4},"end":{"line":124,"column":89}},"47":{"start":{"line":128,"column":21},"end":{"line":128,"column":47}},"48":{"start":{"line":129,"column":23},"end":{"line":129,"column":57}},"49":{"start":{"line":131,"column":4},"end":{"line":133,"column":5}},"50":{"start":{"line":132,"column":6},"end":{"line":132,"column":58}},"51":{"start":{"line":134,"column":4},"end":{"line":134,"column":27}},"52":{"start":{"line":138,"column":21},"end":{"line":138,"column":69}},"53":{"start":{"line":139,"column":23},"end":{"line":139,"column":59}},"54":{"start":{"line":140,"column":4},"end":{"line":142,"column":5}},"55":{"start":{"line":141,"column":6},"end":{"line":141,"column":58}},"56":{"start":{"line":143,"column":4},"end":{"line":143,"column":34}},"57":{"start":{"line":147,"column":20},"end":{"line":147,"column":53}},"58":{"start":{"line":148,"column":4},"end":{"line":150,"column":5}},"59":{"start":{"line":149,"column":6},"end":{"line":149,"column":71}},"60":{"start":{"line":152,"column":4},"end":{"line":152,"column":52}},"61":{"start":{"line":157,"column":4},"end":{"line":162,"column":5}},"62":{"start":{"line":158,"column":24},"end":{"line":158,"column":39}},"63":{"start":{"line":159,"column":6},"end":{"line":161,"column":7}},"64":{"start":{"line":160,"column":8},"end":{"line":160,"column":25}},"65":{"start":{"line":164,"column":4},"end":{"line":166,"column":5}},"66":{"start":{"line":165,"column":6},"end":{"line":165,"column":58}},"67":{"start":{"line":168,"column":21},"end":{"line":168,"column":23}},"68":{"start":{"line":169,"column":4},"end":{"line":174,"column":5}},"69":{"start":{"line":170,"column":24},"end":{"line":170,"column":39}},"70":{"start":{"line":171,"column":6},"end":{"line":173,"column":7}},"71":{"start":{"line":172,"column":8},"end":{"line":172,"column":26}},"72":{"start":{"line":175,"column":4},"end":{"line":177,"column":5}},"73":{"start":{"line":176,"column":6},"end":{"line":176,"column":58}},"74":{"start":{"line":180,"column":4},"end":{"line":185,"column":6}},"75":{"start":{"line":189,"column":22},"end":{"line":189,"column":24}},"76":{"start":{"line":191,"column":4},"end":{"line":195,"column":5}},"77":{"start":{"line":192,"column":25},"end":{"line":192,"column":48}},"78":{"start":{"line":193,"column":27},"end":{"line":193,"column":60}},"79":{"start":{"line":194,"column":6},"end":{"line":194,"column":64}},"80":{"start":{"line":197,"column":36},"end":{"line":197,"column":38}},"81":{"start":{"line":199,"column":4},"end":{"line":206,"column":5}},"82":{"start":{"line":200,"column":24},"end":{"line":200,"column":39}},"83":{"start":{"line":201,"column":6},"end":{"line":205,"column":7}},"84":{"start":{"line":202,"column":8},"end":{"line":204,"column":9}},"85":{"start":{"line":203,"column":10},"end":{"line":203,"column":118}},"86":{"start":{"line":208,"column":4},"end":{"line":210,"column":5}},"87":{"start":{"line":209,"column":6},"end":{"line":209,"column":58}},"88":{"start":{"line":212,"column":33},"end":{"line":212,"column":43}},"89":{"start":{"line":214,"column":4},"end":{"line":218,"column":7}},"90":{"start":{"line":215,"column":6},"end":{"line":217,"column":7}},"91":{"start":{"line":216,"column":8},"end":{"line":216,"column":24}},"92":{"start":{"line":220,"column":4},"end":{"line":220,"column":18}},"93":{"start":{"line":224,"column":4},"end":{"line":228,"column":5}},"94":{"start":{"line":225,"column":6},"end":{"line":227,"column":7}},"95":{"start":{"line":226,"column":8},"end":{"line":226,"column":21}},"96":{"start":{"line":229,"column":4},"end":{"line":229,"column":16}},"97":{"start":{"line":233,"column":20},"end":{"line":233,"column":51}},"98":{"start":{"line":235,"column":4},"end":{"line":237,"column":5}},"99":{"start":{"line":236,"column":6},"end":{"line":236,"column":71}},"100":{"start":{"line":238,"column":4},"end":{"line":238,"column":19}},"101":{"start":{"line":242,"column":31},"end":{"line":242,"column":33}},"102":{"start":{"line":244,"column":4},"end":{"line":249,"column":5}},"103":{"start":{"line":245,"column":24},"end":{"line":245,"column":39}},"104":{"start":{"line":246,"column":6},"end":{"line":248,"column":7}},"105":{"start":{"line":247,"column":8},"end":{"line":247,"column":37}},"106":{"start":{"line":250,"column":4},"end":{"line":250,"column":20}},"107":{"start":{"line":254,"column":21},"end":{"line":254,"column":52}},"108":{"start":{"line":255,"column":4},"end":{"line":257,"column":5}},"109":{"start":{"line":256,"column":6},"end":{"line":256,"column":16}},"110":{"start":{"line":258,"column":4},"end":{"line":258,"column":41}},"111":{"start":{"line":262,"column":4},"end":{"line":266,"column":5}},"112":{"start":{"line":263,"column":6},"end":{"line":263,"column":49}},"113":{"start":{"line":265,"column":6},"end":{"line":265,"column":78}},"114":{"start":{"line":270,"column":4},"end":{"line":274,"column":5}},"115":{"start":{"line":271,"column":6},"end":{"line":271,"column":44}},"116":{"start":{"line":273,"column":6},"end":{"line":273,"column":70}},"117":{"start":{"line":278,"column":4},"end":{"line":282,"column":5}},"118":{"start":{"line":279,"column":6},"end":{"line":279,"column":46}},"119":{"start":{"line":281,"column":6},"end":{"line":281,"column":76}},"120":{"start":{"line":286,"column":21},"end":{"line":286,"column":69}},"121":{"start":{"line":287,"column":23},"end":{"line":287,"column":62}},"122":{"start":{"line":289,"column":4},"end":{"line":291,"column":5}},"123":{"start":{"line":290,"column":6},"end":{"line":290,"column":58}},"124":{"start":{"line":293,"column":4},"end":{"line":293,"column":30}},"125":{"start":{"line":297,"column":31},"end":{"line":297,"column":33}},"126":{"start":{"line":298,"column":4},"end":{"line":303,"column":5}},"127":{"start":{"line":299,"column":24},"end":{"line":299,"column":39}},"128":{"start":{"line":300,"column":6},"end":{"line":302,"column":7}},"129":{"start":{"line":301,"column":8},"end":{"line":301,"column":41}},"130":{"start":{"line":304,"column":4},"end":{"line":304,"column":27}},"131":{"start":{"line":308,"column":38},"end":{"line":308,"column":40}},"132":{"start":{"line":309,"column":4},"end":{"line":314,"column":5}},"133":{"start":{"line":310,"column":24},"end":{"line":310,"column":39}},"134":{"start":{"line":311,"column":6},"end":{"line":313,"column":7}},"135":{"start":{"line":312,"column":8},"end":{"line":312,"column":66}},"136":{"start":{"line":316,"column":4},"end":{"line":322,"column":5}},"137":{"start":{"line":317,"column":24},"end":{"line":317,"column":39}},"138":{"start":{"line":318,"column":6},"end":{"line":321,"column":7}},"139":{"start":{"line":319,"column":8},"end":{"line":319,"column":64}},"140":{"start":{"line":320,"column":8},"end":{"line":320,"column":44}},"141":{"start":{"line":324,"column":4},"end":{"line":324,"column":37}},"142":{"start":{"line":326,"column":4},"end":{"line":333,"column":5}},"143":{"start":{"line":327,"column":6},"end":{"line":332,"column":7}},"144":{"start":{"line":328,"column":26},"end":{"line":328,"column":41}},"145":{"start":{"line":329,"column":8},"end":{"line":331,"column":9}},"146":{"start":{"line":330,"column":10},"end":{"line":330,"column":60}},"147":{"start":{"line":335,"column":4},"end":{"line":335,"column":27}},"148":{"start":{"line":339,"column":4},"end":{"line":358,"column":5}},"149":{"start":{"line":340,"column":24},"end":{"line":340,"column":39}},"150":{"start":{"line":341,"column":6},"end":{"line":357,"column":7}},"151":{"start":{"line":342,"column":8},"end":{"line":342,"column":58}},"152":{"start":{"line":344,"column":31},"end":{"line":344,"column":89}},"153":{"start":{"line":345,"column":27},"end":{"line":345,"column":69}},"154":{"start":{"line":346,"column":8},"end":{"line":348,"column":9}},"155":{"start":{"line":347,"column":10},"end":{"line":347,"column":84}},"156":{"start":{"line":350,"column":8},"end":{"line":356,"column":9}},"157":{"start":{"line":351,"column":31},"end":{"line":351,"column":81}},"158":{"start":{"line":352,"column":35},"end":{"line":352,"column":73}},"159":{"start":{"line":353,"column":10},"end":{"line":355,"column":11}},"160":{"start":{"line":354,"column":12},"end":{"line":354,"column":82}},"161":{"start":{"line":360,"column":4},"end":{"line":360,"column":19}},"162":{"start":{"line":364,"column":4},"end":{"line":364,"column":45}},"163":{"start":{"line":368,"column":4},"end":{"line":368,"column":45}},"164":{"start":{"line":372,"column":23},"end":{"line":372,"column":52}},"165":{"start":{"line":373,"column":4},"end":{"line":375,"column":5}},"166":{"start":{"line":374,"column":6},"end":{"line":374,"column":59}},"167":{"start":{"line":376,"column":4},"end":{"line":376,"column":58}},"168":{"start":{"line":380,"column":4},"end":{"line":380,"column":73}},"169":{"start":{"line":381,"column":4},"end":{"line":381,"column":25}},"170":{"start":{"line":385,"column":23},"end":{"line":385,"column":54}},"171":{"start":{"line":386,"column":4},"end":{"line":388,"column":5}},"172":{"start":{"line":387,"column":6},"end":{"line":387,"column":73}},"173":{"start":{"line":389,"column":4},"end":{"line":389,"column":58}},"174":{"start":{"line":393,"column":4},"end":{"line":393,"column":75}},"175":{"start":{"line":394,"column":4},"end":{"line":394,"column":25}},"176":{"start":{"line":398,"column":23},"end":{"line":398,"column":52}},"177":{"start":{"line":399,"column":4},"end":{"line":401,"column":5}},"178":{"start":{"line":400,"column":6},"end":{"line":400,"column":59}},"179":{"start":{"line":402,"column":4},"end":{"line":402,"column":22}},"180":{"start":{"line":406,"column":4},"end":{"line":406,"column":42}},"181":{"start":{"line":407,"column":4},"end":{"line":407,"column":18}},"182":{"start":{"line":411,"column":23},"end":{"line":411,"column":54}},"183":{"start":{"line":412,"column":4},"end":{"line":414,"column":5}},"184":{"start":{"line":413,"column":6},"end":{"line":413,"column":66}},"185":{"start":{"line":415,"column":4},"end":{"line":415,"column":22}},"186":{"start":{"line":419,"column":4},"end":{"line":419,"column":44}},"187":{"start":{"line":420,"column":4},"end":{"line":420,"column":18}},"188":{"start":{"line":424,"column":4},"end":{"line":424,"column":11}},"189":{"start":{"line":428,"column":4},"end":{"line":428,"column":53}},"190":{"start":{"line":432,"column":9},"end":{"line":432,"column":19}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":29,"column":0},"end":{"line":29,"column":6}},"loc":{"start":{"line":29,"column":0},"end":{"line":40,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":32,"column":2},"end":{"line":32,"column":14}},"loc":{"start":{"line":32,"column":14},"end":{"line":34,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":36,"column":2},"end":{"line":36,"column":11}},"loc":{"start":{"line":36,"column":11},"end":{"line":39,"column":3}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":52,"column":2},"end":{"line":52,"column":14}},"loc":{"start":{"line":52,"column":35},"end":{"line":59,"column":3}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":61,"column":2},"end":{"line":61,"column":8}},"loc":{"start":{"line":61,"column":8},"end":{"line":63,"column":3}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":65,"column":2},"end":{"line":65,"column":7}},"loc":{"start":{"line":65,"column":80},"end":{"line":71,"column":3}}},"6":{"name":"(anonymous_7)","decl":{"start":{"line":73,"column":2},"end":{"line":73,"column":7}},"loc":{"start":{"line":73,"column":92},"end":{"line":90,"column":3}}},"7":{"name":"(anonymous_8)","decl":{"start":{"line":92,"column":10},"end":{"line":92,"column":15}},"loc":{"start":{"line":92,"column":69},"end":{"line":111,"column":3}}},"8":{"name":"(anonymous_9)","decl":{"start":{"line":113,"column":10},"end":{"line":113,"column":15}},"loc":{"start":{"line":113,"column":67},"end":{"line":125,"column":3}}},"9":{"name":"(anonymous_10)","decl":{"start":{"line":127,"column":2},"end":{"line":127,"column":7}},"loc":{"start":{"line":127,"column":70},"end":{"line":135,"column":3}}},"10":{"name":"(anonymous_11)","decl":{"start":{"line":137,"column":2},"end":{"line":137,"column":7}},"loc":{"start":{"line":137,"column":49},"end":{"line":144,"column":3}}},"11":{"name":"(anonymous_12)","decl":{"start":{"line":146,"column":2},"end":{"line":146,"column":7}},"loc":{"start":{"line":146,"column":47},"end":{"line":153,"column":3}}},"12":{"name":"(anonymous_13)","decl":{"start":{"line":155,"column":2},"end":{"line":155,"column":7}},"loc":{"start":{"line":155,"column":84},"end":{"line":186,"column":3}}},"13":{"name":"(anonymous_14)","decl":{"start":{"line":188,"column":2},"end":{"line":188,"column":7}},"loc":{"start":{"line":188,"column":108},"end":{"line":221,"column":3}}},"14":{"name":"(anonymous_15)","decl":{"start":{"line":214,"column":20},"end":{"line":214,"column":21}},"loc":{"start":{"line":214,"column":31},"end":{"line":218,"column":5}}},"15":{"name":"(anonymous_16)","decl":{"start":{"line":223,"column":10},"end":{"line":223,"column":18}},"loc":{"start":{"line":223,"column":93},"end":{"line":230,"column":3}}},"16":{"name":"(anonymous_17)","decl":{"start":{"line":232,"column":2},"end":{"line":232,"column":7}},"loc":{"start":{"line":232,"column":38},"end":{"line":239,"column":3}}},"17":{"name":"(anonymous_18)","decl":{"start":{"line":241,"column":10},"end":{"line":241,"column":15}},"loc":{"start":{"line":241,"column":43},"end":{"line":251,"column":3}}},"18":{"name":"(anonymous_19)","decl":{"start":{"line":253,"column":10},"end":{"line":253,"column":15}},"loc":{"start":{"line":253,"column":45},"end":{"line":259,"column":3}}},"19":{"name":"(anonymous_20)","decl":{"start":{"line":261,"column":10},"end":{"line":261,"column":15}},"loc":{"start":{"line":261,"column":83},"end":{"line":267,"column":3}}},"20":{"name":"(anonymous_21)","decl":{"start":{"line":269,"column":10},"end":{"line":269,"column":15}},"loc":{"start":{"line":269,"column":81},"end":{"line":275,"column":3}}},"21":{"name":"(anonymous_22)","decl":{"start":{"line":277,"column":10},"end":{"line":277,"column":15}},"loc":{"start":{"line":277,"column":93},"end":{"line":283,"column":3}}},"22":{"name":"(anonymous_23)","decl":{"start":{"line":285,"column":2},"end":{"line":285,"column":7}},"loc":{"start":{"line":285,"column":82},"end":{"line":294,"column":3}}},"23":{"name":"(anonymous_24)","decl":{"start":{"line":296,"column":2},"end":{"line":296,"column":7}},"loc":{"start":{"line":296,"column":22},"end":{"line":305,"column":3}}},"24":{"name":"(anonymous_25)","decl":{"start":{"line":307,"column":2},"end":{"line":307,"column":7}},"loc":{"start":{"line":307,"column":65},"end":{"line":336,"column":3}}},"25":{"name":"(anonymous_26)","decl":{"start":{"line":338,"column":2},"end":{"line":338,"column":7}},"loc":{"start":{"line":338,"column":89},"end":{"line":361,"column":3}}},"26":{"name":"(anonymous_27)","decl":{"start":{"line":363,"column":2},"end":{"line":363,"column":7}},"loc":{"start":{"line":363,"column":68},"end":{"line":365,"column":3}}},"27":{"name":"(anonymous_28)","decl":{"start":{"line":367,"column":2},"end":{"line":367,"column":7}},"loc":{"start":{"line":367,"column":78},"end":{"line":369,"column":3}}},"28":{"name":"(anonymous_29)","decl":{"start":{"line":371,"column":2},"end":{"line":371,"column":7}},"loc":{"start":{"line":371,"column":40},"end":{"line":377,"column":3}}},"29":{"name":"(anonymous_30)","decl":{"start":{"line":379,"column":2},"end":{"line":379,"column":7}},"loc":{"start":{"line":379,"column":73},"end":{"line":382,"column":3}}},"30":{"name":"(anonymous_31)","decl":{"start":{"line":384,"column":2},"end":{"line":384,"column":7}},"loc":{"start":{"line":384,"column":31},"end":{"line":390,"column":3}}},"31":{"name":"(anonymous_32)","decl":{"start":{"line":392,"column":2},"end":{"line":392,"column":7}},"loc":{"start":{"line":392,"column":63},"end":{"line":395,"column":3}}},"32":{"name":"(anonymous_33)","decl":{"start":{"line":397,"column":2},"end":{"line":397,"column":7}},"loc":{"start":{"line":397,"column":33},"end":{"line":403,"column":3}}},"33":{"name":"(anonymous_34)","decl":{"start":{"line":405,"column":2},"end":{"line":405,"column":7}},"loc":{"start":{"line":405,"column":58},"end":{"line":408,"column":3}}},"34":{"name":"(anonymous_35)","decl":{"start":{"line":410,"column":2},"end":{"line":410,"column":7}},"loc":{"start":{"line":410,"column":24},"end":{"line":416,"column":3}}},"35":{"name":"(anonymous_36)","decl":{"start":{"line":418,"column":2},"end":{"line":418,"column":7}},"loc":{"start":{"line":418,"column":48},"end":{"line":421,"column":3}}},"36":{"name":"(anonymous_37)","decl":{"start":{"line":423,"column":2},"end":{"line":423,"column":7}},"loc":{"start":{"line":423,"column":13},"end":{"line":425,"column":3}}},"37":{"name":"(anonymous_38)","decl":{"start":{"line":427,"column":10},"end":{"line":427,"column":22}},"loc":{"start":{"line":427,"column":63},"end":{"line":429,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":65,"column":54},"end":{"line":65,"column":80}},"type":"default-arg","locations":[{"start":{"line":65,"column":75},"end":{"line":65,"column":80}}]},"1":{"loc":{"start":{"line":67,"column":4},"end":{"line":69,"column":5}},"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":69,"column":5}}]},"2":{"loc":{"start":{"line":73,"column":66},"end":{"line":73,"column":92}},"type":"default-arg","locations":[{"start":{"line":73,"column":87},"end":{"line":73,"column":92}}]},"3":{"loc":{"start":{"line":77,"column":4},"end":{"line":79,"column":5}},"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":79,"column":5}}]},"4":{"loc":{"start":{"line":77,"column":8},"end":{"line":77,"column":45}},"type":"binary-expr","locations":[{"start":{"line":77,"column":8},"end":{"line":77,"column":18}},{"start":{"line":77,"column":22},"end":{"line":77,"column":45}}]},"5":{"loc":{"start":{"line":82,"column":4},"end":{"line":84,"column":5}},"type":"if","locations":[{"start":{"line":82,"column":4},"end":{"line":84,"column":5}}]},"6":{"loc":{"start":{"line":97,"column":6},"end":{"line":100,"column":7}},"type":"if","locations":[{"start":{"line":97,"column":6},"end":{"line":100,"column":7}}]},"7":{"loc":{"start":{"line":97,"column":10},"end":{"line":97,"column":80}},"type":"binary-expr","locations":[{"start":{"line":97,"column":10},"end":{"line":97,"column":39}},{"start":{"line":97,"column":43},"end":{"line":97,"column":80}}]},"8":{"loc":{"start":{"line":104,"column":4},"end":{"line":108,"column":5}},"type":"if","locations":[{"start":{"line":104,"column":4},"end":{"line":108,"column":5}}]},"9":{"loc":{"start":{"line":117,"column":4},"end":{"line":121,"column":5}},"type":"if","locations":[{"start":{"line":117,"column":4},"end":{"line":121,"column":5}},{"start":{"line":119,"column":11},"end":{"line":121,"column":5}}]},"10":{"loc":{"start":{"line":131,"column":4},"end":{"line":133,"column":5}},"type":"if","locations":[{"start":{"line":131,"column":4},"end":{"line":133,"column":5}}]},"11":{"loc":{"start":{"line":131,"column":8},"end":{"line":131,"column":45}},"type":"binary-expr","locations":[{"start":{"line":131,"column":8},"end":{"line":131,"column":19}},{"start":{"line":131,"column":23},"end":{"line":131,"column":45}}]},"12":{"loc":{"start":{"line":140,"column":4},"end":{"line":142,"column":5}},"type":"if","locations":[{"start":{"line":140,"column":4},"end":{"line":142,"column":5}}]},"13":{"loc":{"start":{"line":140,"column":8},"end":{"line":140,"column":45}},"type":"binary-expr","locations":[{"start":{"line":140,"column":8},"end":{"line":140,"column":19}},{"start":{"line":140,"column":23},"end":{"line":140,"column":45}}]},"14":{"loc":{"start":{"line":148,"column":4},"end":{"line":150,"column":5}},"type":"if","locations":[{"start":{"line":148,"column":4},"end":{"line":150,"column":5}}]},"15":{"loc":{"start":{"line":155,"column":60},"end":{"line":155,"column":84}},"type":"default-arg","locations":[{"start":{"line":155,"column":79},"end":{"line":155,"column":84}}]},"16":{"loc":{"start":{"line":159,"column":6},"end":{"line":161,"column":7}},"type":"if","locations":[{"start":{"line":159,"column":6},"end":{"line":161,"column":7}}]},"17":{"loc":{"start":{"line":159,"column":10},"end":{"line":159,"column":101}},"type":"binary-expr","locations":[{"start":{"line":159,"column":10},"end":{"line":159,"column":39}},{"start":{"line":159,"column":43},"end":{"line":159,"column":68}},{"start":{"line":159,"column":72},"end":{"line":159,"column":101}}]},"18":{"loc":{"start":{"line":164,"column":4},"end":{"line":166,"column":5}},"type":"if","locations":[{"start":{"line":164,"column":4},"end":{"line":166,"column":5}}]},"19":{"loc":{"start":{"line":171,"column":6},"end":{"line":173,"column":7}},"type":"if","locations":[{"start":{"line":171,"column":6},"end":{"line":173,"column":7}}]},"20":{"loc":{"start":{"line":171,"column":10},"end":{"line":171,"column":83}},"type":"binary-expr","locations":[{"start":{"line":171,"column":10},"end":{"line":171,"column":39}},{"start":{"line":171,"column":43},"end":{"line":171,"column":83}}]},"21":{"loc":{"start":{"line":175,"column":4},"end":{"line":177,"column":5}},"type":"if","locations":[{"start":{"line":175,"column":4},"end":{"line":177,"column":5}}]},"22":{"loc":{"start":{"line":188,"column":84},"end":{"line":188,"column":108}},"type":"default-arg","locations":[{"start":{"line":188,"column":103},"end":{"line":188,"column":108}}]},"23":{"loc":{"start":{"line":201,"column":6},"end":{"line":205,"column":7}},"type":"if","locations":[{"start":{"line":201,"column":6},"end":{"line":205,"column":7}}]},"24":{"loc":{"start":{"line":201,"column":10},"end":{"line":201,"column":74}},"type":"binary-expr","locations":[{"start":{"line":201,"column":10},"end":{"line":201,"column":39}},{"start":{"line":201,"column":44},"end":{"line":201,"column":62}},{"start":{"line":201,"column":66},"end":{"line":201,"column":73}}]},"25":{"loc":{"start":{"line":202,"column":8},"end":{"line":204,"column":9}},"type":"if","locations":[{"start":{"line":202,"column":8},"end":{"line":204,"column":9}}]},"26":{"loc":{"start":{"line":202,"column":12},"end":{"line":202,"column":102}},"type":"binary-expr","locations":[{"start":{"line":202,"column":12},"end":{"line":202,"column":37}},{"start":{"line":202,"column":41},"end":{"line":202,"column":102}}]},"27":{"loc":{"start":{"line":208,"column":4},"end":{"line":210,"column":5}},"type":"if","locations":[{"start":{"line":208,"column":4},"end":{"line":210,"column":5}}]},"28":{"loc":{"start":{"line":215,"column":6},"end":{"line":217,"column":7}},"type":"if","locations":[{"start":{"line":215,"column":6},"end":{"line":217,"column":7}}]},"29":{"loc":{"start":{"line":225,"column":6},"end":{"line":227,"column":7}},"type":"if","locations":[{"start":{"line":225,"column":6},"end":{"line":227,"column":7}}]},"30":{"loc":{"start":{"line":235,"column":4},"end":{"line":237,"column":5}},"type":"if","locations":[{"start":{"line":235,"column":4},"end":{"line":237,"column":5}}]},"31":{"loc":{"start":{"line":246,"column":6},"end":{"line":248,"column":7}},"type":"if","locations":[{"start":{"line":246,"column":6},"end":{"line":248,"column":7}}]},"32":{"loc":{"start":{"line":246,"column":10},"end":{"line":246,"column":61}},"type":"binary-expr","locations":[{"start":{"line":246,"column":10},"end":{"line":246,"column":39}},{"start":{"line":246,"column":43},"end":{"line":246,"column":61}}]},"33":{"loc":{"start":{"line":255,"column":4},"end":{"line":257,"column":5}},"type":"if","locations":[{"start":{"line":255,"column":4},"end":{"line":257,"column":5}}]},"34":{"loc":{"start":{"line":262,"column":4},"end":{"line":266,"column":5}},"type":"if","locations":[{"start":{"line":262,"column":4},"end":{"line":266,"column":5}},{"start":{"line":264,"column":11},"end":{"line":266,"column":5}}]},"35":{"loc":{"start":{"line":270,"column":4},"end":{"line":274,"column":5}},"type":"if","locations":[{"start":{"line":270,"column":4},"end":{"line":274,"column":5}},{"start":{"line":272,"column":11},"end":{"line":274,"column":5}}]},"36":{"loc":{"start":{"line":278,"column":4},"end":{"line":282,"column":5}},"type":"if","locations":[{"start":{"line":278,"column":4},"end":{"line":282,"column":5}},{"start":{"line":280,"column":11},"end":{"line":282,"column":5}}]},"37":{"loc":{"start":{"line":285,"column":56},"end":{"line":285,"column":82}},"type":"default-arg","locations":[{"start":{"line":285,"column":77},"end":{"line":285,"column":82}}]},"38":{"loc":{"start":{"line":289,"column":4},"end":{"line":291,"column":5}},"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":291,"column":5}}]},"39":{"loc":{"start":{"line":289,"column":8},"end":{"line":289,"column":45}},"type":"binary-expr","locations":[{"start":{"line":289,"column":8},"end":{"line":289,"column":19}},{"start":{"line":289,"column":23},"end":{"line":289,"column":45}}]},"40":{"loc":{"start":{"line":300,"column":6},"end":{"line":302,"column":7}},"type":"if","locations":[{"start":{"line":300,"column":6},"end":{"line":302,"column":7}}]},"41":{"loc":{"start":{"line":300,"column":10},"end":{"line":300,"column":69}},"type":"binary-expr","locations":[{"start":{"line":300,"column":10},"end":{"line":300,"column":28}},{"start":{"line":300,"column":32},"end":{"line":300,"column":69}}]},"42":{"loc":{"start":{"line":307,"column":39},"end":{"line":307,"column":65}},"type":"default-arg","locations":[{"start":{"line":307,"column":60},"end":{"line":307,"column":65}}]},"43":{"loc":{"start":{"line":311,"column":6},"end":{"line":313,"column":7}},"type":"if","locations":[{"start":{"line":311,"column":6},"end":{"line":313,"column":7}}]},"44":{"loc":{"start":{"line":311,"column":10},"end":{"line":311,"column":76}},"type":"binary-expr","locations":[{"start":{"line":311,"column":10},"end":{"line":311,"column":39}},{"start":{"line":311,"column":44},"end":{"line":311,"column":53}},{"start":{"line":311,"column":57},"end":{"line":311,"column":75}}]},"45":{"loc":{"start":{"line":318,"column":6},"end":{"line":321,"column":7}},"type":"if","locations":[{"start":{"line":318,"column":6},"end":{"line":321,"column":7}}]},"46":{"loc":{"start":{"line":318,"column":10},"end":{"line":318,"column":76}},"type":"binary-expr","locations":[{"start":{"line":318,"column":10},"end":{"line":318,"column":39}},{"start":{"line":318,"column":44},"end":{"line":318,"column":53}},{"start":{"line":318,"column":57},"end":{"line":318,"column":75}}]},"47":{"loc":{"start":{"line":326,"column":4},"end":{"line":333,"column":5}},"type":"if","locations":[{"start":{"line":326,"column":4},"end":{"line":333,"column":5}}]},"48":{"loc":{"start":{"line":329,"column":8},"end":{"line":331,"column":9}},"type":"if","locations":[{"start":{"line":329,"column":8},"end":{"line":331,"column":9}}]},"49":{"loc":{"start":{"line":329,"column":12},"end":{"line":329,"column":65}},"type":"binary-expr","locations":[{"start":{"line":329,"column":12},"end":{"line":329,"column":41}},{"start":{"line":329,"column":46},"end":{"line":329,"column":64}}]},"50":{"loc":{"start":{"line":338,"column":63},"end":{"line":338,"column":89}},"type":"default-arg","locations":[{"start":{"line":338,"column":84},"end":{"line":338,"column":89}}]},"51":{"loc":{"start":{"line":341,"column":6},"end":{"line":357,"column":7}},"type":"if","locations":[{"start":{"line":341,"column":6},"end":{"line":357,"column":7}}]},"52":{"loc":{"start":{"line":341,"column":10},"end":{"line":341,"column":68}},"type":"binary-expr","locations":[{"start":{"line":341,"column":10},"end":{"line":341,"column":39}},{"start":{"line":341,"column":43},"end":{"line":341,"column":68}}]},"53":{"loc":{"start":{"line":346,"column":8},"end":{"line":348,"column":9}},"type":"if","locations":[{"start":{"line":346,"column":8},"end":{"line":348,"column":9}}]},"54":{"loc":{"start":{"line":350,"column":8},"end":{"line":356,"column":9}},"type":"if","locations":[{"start":{"line":350,"column":8},"end":{"line":356,"column":9}}]},"55":{"loc":{"start":{"line":350,"column":12},"end":{"line":350,"column":35}},"type":"binary-expr","locations":[{"start":{"line":350,"column":12},"end":{"line":350,"column":21}},{"start":{"line":350,"column":25},"end":{"line":350,"column":35}}]},"56":{"loc":{"start":{"line":353,"column":10},"end":{"line":355,"column":11}},"type":"if","locations":[{"start":{"line":353,"column":10},"end":{"line":355,"column":11}}]},"57":{"loc":{"start":{"line":373,"column":4},"end":{"line":375,"column":5}},"type":"if","locations":[{"start":{"line":373,"column":4},"end":{"line":375,"column":5}}]},"58":{"loc":{"start":{"line":386,"column":4},"end":{"line":388,"column":5}},"type":"if","locations":[{"start":{"line":386,"column":4},"end":{"line":388,"column":5}}]},"59":{"loc":{"start":{"line":399,"column":4},"end":{"line":401,"column":5}},"type":"if","locations":[{"start":{"line":399,"column":4},"end":{"line":401,"column":5}}]},"60":{"loc":{"start":{"line":412,"column":4},"end":{"line":414,"column":5}},"type":"if","locations":[{"start":{"line":412,"column":4},"end":{"line":414,"column":5}}]}},"s":{"0":5,"1":5,"2":5,"3":31,"4":0,"5":30,"6":30,"7":5,"8":31,"9":31,"10":31,"11":31,"12":31,"13":31,"14":15,"15":29,"16":29,"17":0,"18":29,"19":30,"20":30,"21":30,"22":0,"23":30,"24":30,"25":0,"26":30,"27":30,"28":30,"29":30,"30":30,"31":7,"32":7,"33":0,"34":0,"35":30,"36":30,"37":30,"38":30,"39":30,"40":30,"41":30,"42":30,"43":24,"44":6,"45":30,"46":30,"47":15,"48":15,"49":15,"50":2,"51":13,"52":8,"53":8,"54":8,"55":4,"56":4,"57":4,"58":4,"59":0,"60":4,"61":6,"62":9,"63":9,"64":6,"65":6,"66":0,"67":6,"68":6,"69":9,"70":9,"71":6,"72":6,"73":0,"74":6,"75":2,"76":2,"77":4,"78":4,"79":4,"80":2,"81":2,"82":4,"83":4,"84":4,"85":2,"86":2,"87":0,"88":2,"89":2,"90":2,"91":0,"92":2,"93":4,"94":6,"95":2,"96":2,"97":1,"98":1,"99":0,"100":1,"101":35,"102":35,"103":14,"104":14,"105":13,"106":35,"107":4,"108":4,"109":0,"110":4,"111":3,"112":1,"113":2,"114":1,"115":1,"116":0,"117":3,"118":1,"119":2,"120":5,"121":5,"122":5,"123":4,"124":1,"125":2,"126":2,"127":2,"128":2,"129":2,"130":2,"131":2,"132":2,"133":2,"134":2,"135":2,"136":2,"137":2,"138":2,"139":2,"140":2,"141":2,"142":2,"143":1,"144":1,"145":1,"146":1,"147":2,"148":1,"149":2,"150":2,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":0,"158":0,"159":0,"160":0,"161":1,"162":0,"163":0,"164":2,"165":2,"166":1,"167":1,"168":2,"169":2,"170":2,"171":2,"172":1,"173":1,"174":2,"175":2,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":6,"190":5},"f":{"0":31,"1":0,"2":30,"3":31,"4":15,"5":29,"6":30,"7":30,"8":30,"9":15,"10":8,"11":4,"12":6,"13":2,"14":2,"15":4,"16":1,"17":35,"18":4,"19":3,"20":1,"21":3,"22":5,"23":2,"24":2,"25":1,"26":0,"27":0,"28":2,"29":2,"30":2,"31":2,"32":0,"33":0,"34":0,"35":0,"36":0,"37":6},"b":{"0":[20],"1":[0],"2":[1],"3":[0],"4":[30,0],"5":[0],"6":[0],"7":[7,6],"8":[30],"9":[24,6],"10":[2],"11":[15,13],"12":[4],"13":[8,6],"14":[0],"15":[6],"16":[6],"17":[9,9,6],"18":[0],"19":[6],"20":[9,9],"21":[0],"22":[2],"23":[4],"24":[4,4,0],"25":[2],"26":[4,4],"27":[0],"28":[0],"29":[2],"30":[0],"31":[13],"32":[14,13],"33":[0],"34":[1,2],"35":[1,0],"36":[1,2],"37":[5],"38":[4],"39":[5,3],"40":[2],"41":[2,2],"42":[1],"43":[2],"44":[2,2,1],"45":[2],"46":[2,2,1],"47":[1],"48":[1],"49":[1,1],"50":[1],"51":[1],"52":[2,2],"53":[1],"54":[0],"55":[1,0],"56":[0],"57":[1],"58":[1],"59":[0],"60":[0]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rest-error.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rest-error.ts","statementMap":{"0":{"start":{"line":6,"column":4},"end":{"line":6,"column":50}},"1":{"start":{"line":7,"column":4},"end":{"line":7,"column":25}},"2":{"start":{"line":8,"column":4},"end":{"line":8,"column":31}},"3":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":14}},"loc":{"start":{"line":5,"column":64},"end":{"line":9,"column":3}}}},"branchMap":{},"s":{"0":16,"1":16,"2":16,"3":9},"f":{"0":16},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rest-service.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rest-service.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":101}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":41}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":46}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":29}},"4":{"start":{"line":29,"column":4},"end":{"line":31,"column":5}},"5":{"start":{"line":30,"column":6},"end":{"line":30,"column":null}},"6":{"start":{"line":41,"column":4},"end":{"line":64,"column":5}},"7":{"start":{"line":41,"column":17},"end":{"line":41,"column":18}},"8":{"start":{"line":42,"column":6},"end":{"line":63,"column":7}},"9":{"start":{"line":43,"column":8},"end":{"line":43,"column":42}},"10":{"start":{"line":44,"column":25},"end":{"line":49,"column":10}},"11":{"start":{"line":50,"column":8},"end":{"line":50,"column":24}},"12":{"start":{"line":52,"column":8},"end":{"line":59,"column":9}},"13":{"start":{"line":53,"column":23},"end":{"line":53,"column":42}},"14":{"start":{"line":54,"column":10},"end":{"line":58,"column":11}},"15":{"start":{"line":55,"column":12},"end":{"line":55,"column":88}},"16":{"start":{"line":57,"column":12},"end":{"line":57,"column":null}},"17":{"start":{"line":60,"column":8},"end":{"line":62,"column":9}},"18":{"start":{"line":61,"column":10},"end":{"line":61,"column":22}},"19":{"start":{"line":66,"column":4},"end":{"line":66,"column":49}},"20":{"start":{"line":70,"column":4},"end":{"line":70,"column":null}},"21":{"start":{"line":74,"column":4},"end":{"line":76,"column":5}},"22":{"start":{"line":75,"column":6},"end":{"line":75,"column":null}},"23":{"start":{"line":78,"column":4},"end":{"line":80,"column":5}},"24":{"start":{"line":79,"column":6},"end":{"line":79,"column":null}},"25":{"start":{"line":84,"column":4},"end":{"line":84,"column":null}},"26":{"start":{"line":88,"column":4},"end":{"line":88,"column":null}},"27":{"start":{"line":21,"column":0},"end":{"line":21,"column":13}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":25,"column":2},"end":{"line":25,"column":14}},"loc":{"start":{"line":25,"column":90},"end":{"line":32,"column":3}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":34,"column":2},"end":{"line":34,"column":7}},"loc":{"start":{"line":38,"column":31},"end":{"line":67,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":69,"column":2},"end":{"line":69,"column":12}},"loc":{"start":{"line":69,"column":44},"end":{"line":71,"column":3}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":73,"column":2},"end":{"line":73,"column":9}},"loc":{"start":{"line":73,"column":50},"end":{"line":81,"column":3}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":83,"column":2},"end":{"line":83,"column":12}},"loc":{"start":{"line":83,"column":28},"end":{"line":85,"column":3}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":87,"column":2},"end":{"line":87,"column":12}},"loc":{"start":{"line":87,"column":28},"end":{"line":89,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":29,"column":4},"end":{"line":31,"column":5}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":31,"column":5}}]},"1":{"loc":{"start":{"line":52,"column":8},"end":{"line":59,"column":9}},"type":"if","locations":[{"start":{"line":52,"column":8},"end":{"line":59,"column":9}}]},"2":{"loc":{"start":{"line":52,"column":12},"end":{"line":52,"column":119}},"type":"binary-expr","locations":[{"start":{"line":52,"column":12},"end":{"line":52,"column":37}},{"start":{"line":52,"column":41},"end":{"line":52,"column":55}},{"start":{"line":52,"column":60},"end":{"line":52,"column":87}},{"start":{"line":52,"column":91},"end":{"line":52,"column":118}}]},"3":{"loc":{"start":{"line":54,"column":10},"end":{"line":58,"column":11}},"type":"if","locations":[{"start":{"line":54,"column":10},"end":{"line":58,"column":11}},{"start":{"line":56,"column":17},"end":{"line":58,"column":11}}]},"4":{"loc":{"start":{"line":54,"column":14},"end":{"line":54,"column":45}},"type":"binary-expr","locations":[{"start":{"line":54,"column":14},"end":{"line":54,"column":29}},{"start":{"line":54,"column":33},"end":{"line":54,"column":45}}]},"5":{"loc":{"start":{"line":60,"column":8},"end":{"line":62,"column":9}},"type":"if","locations":[{"start":{"line":60,"column":8},"end":{"line":62,"column":9}}]},"6":{"loc":{"start":{"line":74,"column":4},"end":{"line":76,"column":5}},"type":"if","locations":[{"start":{"line":74,"column":4},"end":{"line":76,"column":5}}]},"7":{"loc":{"start":{"line":78,"column":4},"end":{"line":80,"column":5}},"type":"if","locations":[{"start":{"line":78,"column":4},"end":{"line":80,"column":5}}]}},"s":{"0":6,"1":6,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":6},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{"0":[0],"1":[0],"2":[0,0,0,0],"3":[0,0],"4":[0,0],"5":[0],"6":[0],"7":[0]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/schemaregistry-client.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/schemaregistry-client.ts","statementMap":{"0":{"start":{"line":64,"column":0},"end":{"line":64,"column":16}},"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":59}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":53}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":37}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":36}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":56}},"6":{"start":{"line":17,"column":0},"end":{"line":17,"column":null}},"7":{"start":{"line":18,"column":2},"end":{"line":18,"column":null}},"8":{"start":{"line":19,"column":2},"end":{"line":19,"column":null}},"9":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"10":{"start":{"line":21,"column":2},"end":{"line":21,"column":null}},"11":{"start":{"line":22,"column":2},"end":{"line":22,"column":null}},"12":{"start":{"line":23,"column":2},"end":{"line":23,"column":null}},"13":{"start":{"line":24,"column":2},"end":{"line":24,"column":null}},"14":{"start":{"line":46,"column":0},"end":{"line":46,"column":null}},"15":{"start":{"line":47,"column":2},"end":{"line":47,"column":null}},"16":{"start":{"line":48,"column":2},"end":{"line":48,"column":null}},"17":{"start":{"line":49,"column":2},"end":{"line":49,"column":null}},"18":{"start":{"line":50,"column":2},"end":{"line":50,"column":null}},"19":{"start":{"line":51,"column":2},"end":{"line":51,"column":null}},"20":{"start":{"line":52,"column":2},"end":{"line":52,"column":null}},"21":{"start":{"line":65,"column":2},"end":{"line":71,"column":null}},"22":{"start":{"line":161,"column":4},"end":{"line":161,"column":null}},"23":{"start":{"line":162,"column":25},"end":{"line":165,"column":6}},"24":{"start":{"line":167,"column":4},"end":{"line":167,"column":102}},"25":{"start":{"line":169,"column":4},"end":{"line":169,"column":54}},"26":{"start":{"line":170,"column":4},"end":{"line":170,"column":58}},"27":{"start":{"line":171,"column":4},"end":{"line":171,"column":56}},"28":{"start":{"line":172,"column":4},"end":{"line":172,"column":58}},"29":{"start":{"line":173,"column":4},"end":{"line":173,"column":59}},"30":{"start":{"line":174,"column":4},"end":{"line":174,"column":59}},"31":{"start":{"line":175,"column":4},"end":{"line":175,"column":60}},"32":{"start":{"line":176,"column":4},"end":{"line":176,"column":39}},"33":{"start":{"line":177,"column":4},"end":{"line":177,"column":43}},"34":{"start":{"line":178,"column":4},"end":{"line":178,"column":41}},"35":{"start":{"line":179,"column":4},"end":{"line":179,"column":43}},"36":{"start":{"line":180,"column":4},"end":{"line":180,"column":44}},"37":{"start":{"line":181,"column":4},"end":{"line":181,"column":44}},"38":{"start":{"line":182,"column":4},"end":{"line":182,"column":45}},"39":{"start":{"line":186,"column":14},"end":{"line":186,"column":32}},"40":{"start":{"line":187,"column":4},"end":{"line":189,"column":5}},"41":{"start":{"line":188,"column":6},"end":{"line":188,"column":null}},"42":{"start":{"line":190,"column":4},"end":{"line":190,"column":null}},"43":{"start":{"line":194,"column":4},"end":{"line":194,"column":null}},"44":{"start":{"line":198,"column":27},"end":{"line":198,"column":86}},"45":{"start":{"line":200,"column":4},"end":{"line":200,"column":29}},"46":{"start":{"line":204,"column":21},"end":{"line":204,"column":69}},"47":{"start":{"line":206,"column":4},"end":{"line":221,"column":7}},"48":{"start":{"line":207,"column":63},"end":{"line":207,"column":99}},"49":{"start":{"line":208,"column":6},"end":{"line":210,"column":7}},"50":{"start":{"line":209,"column":8},"end":{"line":209,"column":36}},"51":{"start":{"line":212,"column":6},"end":{"line":212,"column":44}},"52":{"start":{"line":214,"column":54},"end":{"line":217,"column":null}},"53":{"start":{"line":219,"column":6},"end":{"line":219,"column":58}},"54":{"start":{"line":220,"column":6},"end":{"line":220,"column":27}},"55":{"start":{"line":225,"column":21},"end":{"line":225,"column":47}},"56":{"start":{"line":226,"column":4},"end":{"line":242,"column":7}},"57":{"start":{"line":227,"column":51},"end":{"line":227,"column":89}},"58":{"start":{"line":228,"column":6},"end":{"line":230,"column":7}},"59":{"start":{"line":229,"column":8},"end":{"line":229,"column":28}},"60":{"start":{"line":232,"column":6},"end":{"line":232,"column":44}},"61":{"start":{"line":234,"column":22},"end":{"line":234,"column":63}},"62":{"start":{"line":236,"column":50},"end":{"line":238,"column":null}},"63":{"start":{"line":240,"column":6},"end":{"line":240,"column":60}},"64":{"start":{"line":241,"column":6},"end":{"line":241,"column":27}},"65":{"start":{"line":246,"column":21},"end":{"line":246,"column":69}},"66":{"start":{"line":248,"column":4},"end":{"line":263,"column":7}},"67":{"start":{"line":249,"column":43},"end":{"line":249,"column":77}},"68":{"start":{"line":250,"column":6},"end":{"line":252,"column":7}},"69":{"start":{"line":251,"column":8},"end":{"line":251,"column":24}},"70":{"start":{"line":254,"column":6},"end":{"line":254,"column":44}},"71":{"start":{"line":256,"column":54},"end":{"line":259,"column":null}},"72":{"start":{"line":261,"column":6},"end":{"line":261,"column":59}},"73":{"start":{"line":262,"column":6},"end":{"line":262,"column":30}},"74":{"start":{"line":267,"column":4},"end":{"line":281,"column":7}},"75":{"start":{"line":268,"column":55},"end":{"line":268,"column":92}},"76":{"start":{"line":269,"column":6},"end":{"line":271,"column":7}},"77":{"start":{"line":270,"column":8},"end":{"line":270,"column":28}},"78":{"start":{"line":273,"column":6},"end":{"line":273,"column":44}},"79":{"start":{"line":275,"column":54},"end":{"line":277,"column":null}},"80":{"start":{"line":279,"column":6},"end":{"line":279,"column":59}},"81":{"start":{"line":280,"column":6},"end":{"line":280,"column":27}},"82":{"start":{"line":285,"column":21},"end":{"line":285,"column":61}},"83":{"start":{"line":287,"column":4},"end":{"line":301,"column":7}},"84":{"start":{"line":288,"column":63},"end":{"line":288,"column":102}},"85":{"start":{"line":289,"column":6},"end":{"line":291,"column":7}},"86":{"start":{"line":290,"column":8},"end":{"line":290,"column":36}},"87":{"start":{"line":293,"column":6},"end":{"line":293,"column":44}},"88":{"start":{"line":295,"column":54},"end":{"line":297,"column":null}},"89":{"start":{"line":299,"column":6},"end":{"line":299,"column":61}},"90":{"start":{"line":300,"column":6},"end":{"line":300,"column":27}},"91":{"start":{"line":305,"column":21},"end":{"line":305,"column":62}},"92":{"start":{"line":307,"column":4},"end":{"line":329,"column":7}},"93":{"start":{"line":308,"column":63},"end":{"line":308,"column":103}},"94":{"start":{"line":309,"column":6},"end":{"line":311,"column":7}},"95":{"start":{"line":310,"column":8},"end":{"line":310,"column":36}},"96":{"start":{"line":313,"column":6},"end":{"line":313,"column":44}},"97":{"start":{"line":315,"column":24},"end":{"line":315,"column":26}},"98":{"start":{"line":317,"column":6},"end":{"line":321,"column":7}},"99":{"start":{"line":318,"column":27},"end":{"line":318,"column":50}},"100":{"start":{"line":319,"column":29},"end":{"line":319,"column":62}},"101":{"start":{"line":320,"column":8},"end":{"line":320,"column":66}},"102":{"start":{"line":323,"column":54},"end":{"line":325,"column":null}},"103":{"start":{"line":327,"column":6},"end":{"line":327,"column":62}},"104":{"start":{"line":328,"column":6},"end":{"line":328,"column":27}},"105":{"start":{"line":334,"column":46},"end":{"line":336,"column":null}},"106":{"start":{"line":338,"column":4},"end":{"line":338,"column":25}},"107":{"start":{"line":342,"column":21},"end":{"line":342,"column":69}},"108":{"start":{"line":344,"column":4},"end":{"line":359,"column":7}},"109":{"start":{"line":345,"column":48},"end":{"line":345,"column":87}},"110":{"start":{"line":346,"column":6},"end":{"line":348,"column":7}},"111":{"start":{"line":347,"column":8},"end":{"line":347,"column":29}},"112":{"start":{"line":350,"column":6},"end":{"line":350,"column":44}},"113":{"start":{"line":352,"column":54},"end":{"line":355,"column":null}},"114":{"start":{"line":357,"column":6},"end":{"line":357,"column":69}},"115":{"start":{"line":358,"column":6},"end":{"line":358,"column":36}},"116":{"start":{"line":363,"column":46},"end":{"line":365,"column":null}},"117":{"start":{"line":367,"column":4},"end":{"line":367,"column":25}},"118":{"start":{"line":371,"column":4},"end":{"line":378,"column":7}},"119":{"start":{"line":372,"column":6},"end":{"line":377,"column":9}},"120":{"start":{"line":373,"column":26},"end":{"line":373,"column":41}},"121":{"start":{"line":374,"column":8},"end":{"line":376,"column":9}},"122":{"start":{"line":375,"column":10},"end":{"line":375,"column":45}},"123":{"start":{"line":380,"column":4},"end":{"line":387,"column":7}},"124":{"start":{"line":381,"column":6},"end":{"line":386,"column":9}},"125":{"start":{"line":382,"column":26},"end":{"line":382,"column":41}},"126":{"start":{"line":383,"column":8},"end":{"line":385,"column":9}},"127":{"start":{"line":384,"column":10},"end":{"line":384,"column":48}},"128":{"start":{"line":389,"column":4},"end":{"line":396,"column":7}},"129":{"start":{"line":390,"column":6},"end":{"line":395,"column":9}},"130":{"start":{"line":391,"column":26},"end":{"line":391,"column":41}},"131":{"start":{"line":392,"column":8},"end":{"line":394,"column":9}},"132":{"start":{"line":393,"column":10},"end":{"line":393,"column":48}},"133":{"start":{"line":398,"column":4},"end":{"line":405,"column":7}},"134":{"start":{"line":399,"column":6},"end":{"line":404,"column":9}},"135":{"start":{"line":400,"column":26},"end":{"line":400,"column":41}},"136":{"start":{"line":401,"column":8},"end":{"line":403,"column":9}},"137":{"start":{"line":402,"column":10},"end":{"line":402,"column":47}},"138":{"start":{"line":407,"column":4},"end":{"line":407,"column":42}},"139":{"start":{"line":409,"column":46},"end":{"line":411,"column":null}},"140":{"start":{"line":413,"column":4},"end":{"line":413,"column":25}},"141":{"start":{"line":417,"column":4},"end":{"line":452,"column":7}},"142":{"start":{"line":420,"column":6},"end":{"line":438,"column":9}},"143":{"start":{"line":421,"column":26},"end":{"line":421,"column":41}},"144":{"start":{"line":422,"column":8},"end":{"line":437,"column":9}},"145":{"start":{"line":423,"column":10},"end":{"line":423,"column":48}},"146":{"start":{"line":424,"column":39},"end":{"line":424,"column":106}},"147":{"start":{"line":426,"column":10},"end":{"line":436,"column":13}},"148":{"start":{"line":427,"column":12},"end":{"line":427,"column":77}},"149":{"start":{"line":428,"column":12},"end":{"line":435,"column":13}},"150":{"start":{"line":429,"column":14},"end":{"line":429,"column":66}},"151":{"start":{"line":430,"column":33},"end":{"line":430,"column":86}},"152":{"start":{"line":432,"column":14},"end":{"line":434,"column":17}},"153":{"start":{"line":433,"column":16},"end":{"line":433,"column":60}},"154":{"start":{"line":440,"column":23},"end":{"line":440,"column":72}},"155":{"start":{"line":441,"column":6},"end":{"line":443,"column":9}},"156":{"start":{"line":442,"column":8},"end":{"line":442,"column":51}},"157":{"start":{"line":445,"column":6},"end":{"line":445,"column":44}},"158":{"start":{"line":447,"column":46},"end":{"line":449,"column":null}},"159":{"start":{"line":451,"column":6},"end":{"line":451,"column":27}},"160":{"start":{"line":456,"column":4},"end":{"line":456,"column":42}},"161":{"start":{"line":458,"column":58},"end":{"line":461,"column":null}},"162":{"start":{"line":463,"column":4},"end":{"line":463,"column":39}},"163":{"start":{"line":467,"column":4},"end":{"line":467,"column":42}},"164":{"start":{"line":469,"column":58},"end":{"line":472,"column":null}},"165":{"start":{"line":474,"column":4},"end":{"line":474,"column":39}},"166":{"start":{"line":478,"column":4},"end":{"line":478,"column":42}},"167":{"start":{"line":480,"column":56},"end":{"line":482,"column":null}},"168":{"start":{"line":484,"column":4},"end":{"line":484,"column":45}},"169":{"start":{"line":488,"column":4},"end":{"line":488,"column":42}},"170":{"start":{"line":490,"column":56},"end":{"line":493,"column":null}},"171":{"start":{"line":495,"column":4},"end":{"line":495,"column":40}},"172":{"start":{"line":499,"column":56},"end":{"line":501,"column":null}},"173":{"start":{"line":503,"column":4},"end":{"line":503,"column":45}},"174":{"start":{"line":507,"column":56},"end":{"line":510,"column":null}},"175":{"start":{"line":512,"column":4},"end":{"line":512,"column":40}},"176":{"start":{"line":516,"column":4},"end":{"line":516,"column":42}},"177":{"start":{"line":518,"column":50},"end":{"line":520,"column":null}},"178":{"start":{"line":522,"column":4},"end":{"line":522,"column":25}},"179":{"start":{"line":526,"column":50},"end":{"line":529,"column":null}},"180":{"start":{"line":531,"column":4},"end":{"line":531,"column":25}},"181":{"start":{"line":535,"column":50},"end":{"line":537,"column":null}},"182":{"start":{"line":539,"column":4},"end":{"line":539,"column":25}},"183":{"start":{"line":543,"column":50},"end":{"line":546,"column":null}},"184":{"start":{"line":548,"column":4},"end":{"line":548,"column":25}},"185":{"start":{"line":552,"column":4},"end":{"line":552,"column":35}},"186":{"start":{"line":553,"column":4},"end":{"line":553,"column":38}},"187":{"start":{"line":554,"column":4},"end":{"line":554,"column":38}},"188":{"start":{"line":555,"column":4},"end":{"line":555,"column":37}},"189":{"start":{"line":557,"column":4},"end":{"line":557,"column":11}},"190":{"start":{"line":562,"column":21},"end":{"line":562,"column":69}},"191":{"start":{"line":563,"column":4},"end":{"line":565,"column":7}},"192":{"start":{"line":564,"column":6},"end":{"line":564,"column":53}},"193":{"start":{"line":569,"column":21},"end":{"line":569,"column":69}},"194":{"start":{"line":570,"column":4},"end":{"line":572,"column":7}},"195":{"start":{"line":571,"column":6},"end":{"line":571,"column":55}},"196":{"start":{"line":576,"column":21},"end":{"line":576,"column":52}},"197":{"start":{"line":577,"column":4},"end":{"line":579,"column":7}},"198":{"start":{"line":578,"column":6},"end":{"line":578,"column":56}},"199":{"start":{"line":583,"column":21},"end":{"line":583,"column":47}},"200":{"start":{"line":584,"column":4},"end":{"line":586,"column":7}},"201":{"start":{"line":585,"column":6},"end":{"line":585,"column":53}},"202":{"start":{"line":590,"column":4},"end":{"line":592,"column":7}},"203":{"start":{"line":591,"column":6},"end":{"line":591,"column":41}},"204":{"start":{"line":596,"column":4},"end":{"line":598,"column":7}},"205":{"start":{"line":597,"column":6},"end":{"line":597,"column":44}},"206":{"start":{"line":602,"column":4},"end":{"line":604,"column":7}},"207":{"start":{"line":603,"column":6},"end":{"line":603,"column":44}},"208":{"start":{"line":608,"column":4},"end":{"line":610,"column":7}},"209":{"start":{"line":609,"column":6},"end":{"line":609,"column":43}},"210":{"start":{"line":140,"column":0},"end":{"line":140,"column":13}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":17,"column":0},"end":{"line":17,"column":12}},"loc":{"start":{"line":17,"column":25},"end":{"line":25,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":46,"column":0},"end":{"line":46,"column":12}},"loc":{"start":{"line":46,"column":20},"end":{"line":53,"column":1}}},"2":{"name":"minimize","decl":{"start":{"line":64,"column":16},"end":{"line":64,"column":24}},"loc":{"start":{"line":64,"column":41},"end":{"line":72,"column":1}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":160,"column":2},"end":{"line":160,"column":14}},"loc":{"start":{"line":160,"column":34},"end":{"line":183,"column":3}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":185,"column":2},"end":{"line":185,"column":8}},"loc":{"start":{"line":185,"column":39},"end":{"line":191,"column":3}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":193,"column":2},"end":{"line":193,"column":8}},"loc":{"start":{"line":193,"column":8},"end":{"line":195,"column":3}}},"6":{"name":"(anonymous_7)","decl":{"start":{"line":197,"column":2},"end":{"line":197,"column":7}},"loc":{"start":{"line":197,"column":80},"end":{"line":201,"column":3}}},"7":{"name":"(anonymous_8)","decl":{"start":{"line":203,"column":2},"end":{"line":203,"column":7}},"loc":{"start":{"line":203,"column":92},"end":{"line":222,"column":3}}},"8":{"name":"(anonymous_9)","decl":{"start":{"line":206,"column":53},"end":{"line":206,"column":58}},"loc":{"start":{"line":206,"column":64},"end":{"line":221,"column":5}}},"9":{"name":"(anonymous_10)","decl":{"start":{"line":224,"column":2},"end":{"line":224,"column":7}},"loc":{"start":{"line":224,"column":70},"end":{"line":243,"column":3}}},"10":{"name":"(anonymous_11)","decl":{"start":{"line":226,"column":55},"end":{"line":226,"column":60}},"loc":{"start":{"line":226,"column":66},"end":{"line":242,"column":5}}},"11":{"name":"(anonymous_12)","decl":{"start":{"line":245,"column":2},"end":{"line":245,"column":7}},"loc":{"start":{"line":245,"column":77},"end":{"line":264,"column":3}}},"12":{"name":"(anonymous_13)","decl":{"start":{"line":248,"column":51},"end":{"line":248,"column":56}},"loc":{"start":{"line":248,"column":62},"end":{"line":263,"column":5}}},"13":{"name":"(anonymous_14)","decl":{"start":{"line":266,"column":2},"end":{"line":266,"column":7}},"loc":{"start":{"line":266,"column":47},"end":{"line":282,"column":3}}},"14":{"name":"(anonymous_15)","decl":{"start":{"line":267,"column":55},"end":{"line":267,"column":60}},"loc":{"start":{"line":267,"column":66},"end":{"line":281,"column":5}}},"15":{"name":"(anonymous_16)","decl":{"start":{"line":284,"column":2},"end":{"line":284,"column":7}},"loc":{"start":{"line":284,"column":84},"end":{"line":302,"column":3}}},"16":{"name":"(anonymous_17)","decl":{"start":{"line":287,"column":56},"end":{"line":287,"column":61}},"loc":{"start":{"line":287,"column":67},"end":{"line":301,"column":5}}},"17":{"name":"(anonymous_18)","decl":{"start":{"line":304,"column":2},"end":{"line":304,"column":7}},"loc":{"start":{"line":304,"column":108},"end":{"line":330,"column":3}}},"18":{"name":"(anonymous_19)","decl":{"start":{"line":307,"column":57},"end":{"line":307,"column":62}},"loc":{"start":{"line":307,"column":68},"end":{"line":329,"column":5}}},"19":{"name":"(anonymous_20)","decl":{"start":{"line":333,"column":2},"end":{"line":333,"column":7}},"loc":{"start":{"line":333,"column":38},"end":{"line":339,"column":3}}},"20":{"name":"(anonymous_21)","decl":{"start":{"line":341,"column":2},"end":{"line":341,"column":7}},"loc":{"start":{"line":341,"column":82},"end":{"line":360,"column":3}}},"21":{"name":"(anonymous_22)","decl":{"start":{"line":344,"column":56},"end":{"line":344,"column":61}},"loc":{"start":{"line":344,"column":67},"end":{"line":359,"column":5}}},"22":{"name":"(anonymous_23)","decl":{"start":{"line":362,"column":2},"end":{"line":362,"column":7}},"loc":{"start":{"line":362,"column":22},"end":{"line":368,"column":3}}},"23":{"name":"(anonymous_24)","decl":{"start":{"line":370,"column":2},"end":{"line":370,"column":7}},"loc":{"start":{"line":370,"column":65},"end":{"line":414,"column":3}}},"24":{"name":"(anonymous_25)","decl":{"start":{"line":371,"column":46},"end":{"line":371,"column":51}},"loc":{"start":{"line":371,"column":57},"end":{"line":378,"column":5}}},"25":{"name":"(anonymous_26)","decl":{"start":{"line":372,"column":37},"end":{"line":372,"column":38}},"loc":{"start":{"line":372,"column":48},"end":{"line":377,"column":7}}},"26":{"name":"(anonymous_27)","decl":{"start":{"line":380,"column":49},"end":{"line":380,"column":54}},"loc":{"start":{"line":380,"column":60},"end":{"line":387,"column":5}}},"27":{"name":"(anonymous_28)","decl":{"start":{"line":381,"column":40},"end":{"line":381,"column":41}},"loc":{"start":{"line":381,"column":51},"end":{"line":386,"column":7}}},"28":{"name":"(anonymous_29)","decl":{"start":{"line":389,"column":49},"end":{"line":389,"column":54}},"loc":{"start":{"line":389,"column":60},"end":{"line":396,"column":5}}},"29":{"name":"(anonymous_30)","decl":{"start":{"line":390,"column":40},"end":{"line":390,"column":41}},"loc":{"start":{"line":390,"column":51},"end":{"line":395,"column":7}}},"30":{"name":"(anonymous_31)","decl":{"start":{"line":398,"column":48},"end":{"line":398,"column":53}},"loc":{"start":{"line":398,"column":59},"end":{"line":405,"column":5}}},"31":{"name":"(anonymous_32)","decl":{"start":{"line":399,"column":39},"end":{"line":399,"column":40}},"loc":{"start":{"line":399,"column":50},"end":{"line":404,"column":7}}},"32":{"name":"(anonymous_33)","decl":{"start":{"line":416,"column":2},"end":{"line":416,"column":7}},"loc":{"start":{"line":416,"column":89},"end":{"line":453,"column":3}}},"33":{"name":"(anonymous_34)","decl":{"start":{"line":417,"column":56},"end":{"line":417,"column":61}},"loc":{"start":{"line":417,"column":67},"end":{"line":452,"column":5}}},"34":{"name":"(anonymous_35)","decl":{"start":{"line":420,"column":40},"end":{"line":420,"column":41}},"loc":{"start":{"line":420,"column":55},"end":{"line":438,"column":7}}},"35":{"name":"(anonymous_36)","decl":{"start":{"line":426,"column":46},"end":{"line":426,"column":51}},"loc":{"start":{"line":426,"column":57},"end":{"line":436,"column":11}}},"36":{"name":"(anonymous_37)","decl":{"start":{"line":432,"column":52},"end":{"line":432,"column":57}},"loc":{"start":{"line":432,"column":63},"end":{"line":434,"column":15}}},"37":{"name":"(anonymous_38)","decl":{"start":{"line":441,"column":45},"end":{"line":441,"column":50}},"loc":{"start":{"line":441,"column":56},"end":{"line":443,"column":7}}},"38":{"name":"(anonymous_39)","decl":{"start":{"line":455,"column":2},"end":{"line":455,"column":7}},"loc":{"start":{"line":455,"column":68},"end":{"line":464,"column":3}}},"39":{"name":"(anonymous_40)","decl":{"start":{"line":466,"column":2},"end":{"line":466,"column":7}},"loc":{"start":{"line":466,"column":78},"end":{"line":475,"column":3}}},"40":{"name":"(anonymous_41)","decl":{"start":{"line":477,"column":2},"end":{"line":477,"column":7}},"loc":{"start":{"line":477,"column":40},"end":{"line":485,"column":3}}},"41":{"name":"(anonymous_42)","decl":{"start":{"line":487,"column":2},"end":{"line":487,"column":7}},"loc":{"start":{"line":487,"column":66},"end":{"line":496,"column":3}}},"42":{"name":"(anonymous_43)","decl":{"start":{"line":498,"column":2},"end":{"line":498,"column":7}},"loc":{"start":{"line":498,"column":31},"end":{"line":504,"column":3}}},"43":{"name":"(anonymous_44)","decl":{"start":{"line":506,"column":2},"end":{"line":506,"column":7}},"loc":{"start":{"line":506,"column":56},"end":{"line":513,"column":3}}},"44":{"name":"(anonymous_45)","decl":{"start":{"line":515,"column":2},"end":{"line":515,"column":7}},"loc":{"start":{"line":515,"column":33},"end":{"line":523,"column":3}}},"45":{"name":"(anonymous_46)","decl":{"start":{"line":525,"column":2},"end":{"line":525,"column":7}},"loc":{"start":{"line":525,"column":58},"end":{"line":532,"column":3}}},"46":{"name":"(anonymous_47)","decl":{"start":{"line":534,"column":2},"end":{"line":534,"column":7}},"loc":{"start":{"line":534,"column":24},"end":{"line":540,"column":3}}},"47":{"name":"(anonymous_48)","decl":{"start":{"line":542,"column":2},"end":{"line":542,"column":7}},"loc":{"start":{"line":542,"column":48},"end":{"line":549,"column":3}}},"48":{"name":"(anonymous_49)","decl":{"start":{"line":551,"column":2},"end":{"line":551,"column":7}},"loc":{"start":{"line":551,"column":7},"end":{"line":558,"column":3}}},"49":{"name":"(anonymous_50)","decl":{"start":{"line":561,"column":2},"end":{"line":561,"column":7}},"loc":{"start":{"line":561,"column":92},"end":{"line":566,"column":3}}},"50":{"name":"(anonymous_51)","decl":{"start":{"line":563,"column":46},"end":{"line":563,"column":51}},"loc":{"start":{"line":563,"column":57},"end":{"line":565,"column":5}}},"51":{"name":"(anonymous_52)","decl":{"start":{"line":568,"column":2},"end":{"line":568,"column":7}},"loc":{"start":{"line":568,"column":86},"end":{"line":573,"column":3}}},"52":{"name":"(anonymous_53)","decl":{"start":{"line":570,"column":49},"end":{"line":570,"column":54}},"loc":{"start":{"line":570,"column":60},"end":{"line":572,"column":5}}},"53":{"name":"(anonymous_54)","decl":{"start":{"line":575,"column":2},"end":{"line":575,"column":7}},"loc":{"start":{"line":575,"column":92},"end":{"line":580,"column":3}}},"54":{"name":"(anonymous_55)","decl":{"start":{"line":577,"column":49},"end":{"line":577,"column":54}},"loc":{"start":{"line":577,"column":60},"end":{"line":579,"column":5}}},"55":{"name":"(anonymous_56)","decl":{"start":{"line":582,"column":2},"end":{"line":582,"column":7}},"loc":{"start":{"line":582,"column":80},"end":{"line":587,"column":3}}},"56":{"name":"(anonymous_57)","decl":{"start":{"line":584,"column":48},"end":{"line":584,"column":53}},"loc":{"start":{"line":584,"column":59},"end":{"line":586,"column":5}}},"57":{"name":"(anonymous_58)","decl":{"start":{"line":589,"column":2},"end":{"line":589,"column":7}},"loc":{"start":{"line":589,"column":32},"end":{"line":593,"column":3}}},"58":{"name":"(anonymous_59)","decl":{"start":{"line":590,"column":53},"end":{"line":590,"column":58}},"loc":{"start":{"line":590,"column":64},"end":{"line":592,"column":5}}},"59":{"name":"(anonymous_60)","decl":{"start":{"line":595,"column":2},"end":{"line":595,"column":7}},"loc":{"start":{"line":595,"column":35},"end":{"line":599,"column":3}}},"60":{"name":"(anonymous_61)","decl":{"start":{"line":596,"column":56},"end":{"line":596,"column":61}},"loc":{"start":{"line":596,"column":67},"end":{"line":598,"column":5}}},"61":{"name":"(anonymous_62)","decl":{"start":{"line":601,"column":2},"end":{"line":601,"column":7}},"loc":{"start":{"line":601,"column":35},"end":{"line":605,"column":3}}},"62":{"name":"(anonymous_63)","decl":{"start":{"line":602,"column":56},"end":{"line":602,"column":61}},"loc":{"start":{"line":602,"column":67},"end":{"line":604,"column":5}}},"63":{"name":"(anonymous_64)","decl":{"start":{"line":607,"column":2},"end":{"line":607,"column":7}},"loc":{"start":{"line":607,"column":34},"end":{"line":611,"column":3}}},"64":{"name":"(anonymous_65)","decl":{"start":{"line":608,"column":55},"end":{"line":608,"column":60}},"loc":{"start":{"line":608,"column":66},"end":{"line":610,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":12},"end":{"line":17,"column":null}},"type":"binary-expr","locations":[{"start":{"line":17,"column":12},"end":{"line":17,"column":25}},{"start":{"line":17,"column":25},"end":{"line":17,"column":null}}]},"1":{"loc":{"start":{"line":46,"column":12},"end":{"line":46,"column":null}},"type":"binary-expr","locations":[{"start":{"line":46,"column":12},"end":{"line":46,"column":20}},{"start":{"line":46,"column":20},"end":{"line":46,"column":null}}]},"2":{"loc":{"start":{"line":164,"column":10},"end":{"line":164,"column":97}},"type":"binary-expr","locations":[{"start":{"line":164,"column":10},"end":{"line":164,"column":49}},{"start":{"line":164,"column":53},"end":{"line":164,"column":97}}]},"3":{"loc":{"start":{"line":187,"column":4},"end":{"line":189,"column":5}},"type":"if","locations":[{"start":{"line":187,"column":4},"end":{"line":189,"column":5}}]},"4":{"loc":{"start":{"line":197,"column":54},"end":{"line":197,"column":80}},"type":"default-arg","locations":[{"start":{"line":197,"column":75},"end":{"line":197,"column":80}}]},"5":{"loc":{"start":{"line":203,"column":66},"end":{"line":203,"column":92}},"type":"default-arg","locations":[{"start":{"line":203,"column":87},"end":{"line":203,"column":92}}]},"6":{"loc":{"start":{"line":208,"column":6},"end":{"line":210,"column":7}},"type":"if","locations":[{"start":{"line":208,"column":6},"end":{"line":210,"column":7}}]},"7":{"loc":{"start":{"line":228,"column":6},"end":{"line":230,"column":7}},"type":"if","locations":[{"start":{"line":228,"column":6},"end":{"line":230,"column":7}}]},"8":{"loc":{"start":{"line":234,"column":22},"end":{"line":234,"column":63}},"type":"cond-expr","locations":[{"start":{"line":234,"column":39},"end":{"line":234,"column":58}},{"start":{"line":234,"column":61},"end":{"line":234,"column":63}}]},"9":{"loc":{"start":{"line":245,"column":51},"end":{"line":245,"column":77}},"type":"default-arg","locations":[{"start":{"line":245,"column":72},"end":{"line":245,"column":77}}]},"10":{"loc":{"start":{"line":250,"column":6},"end":{"line":252,"column":7}},"type":"if","locations":[{"start":{"line":250,"column":6},"end":{"line":252,"column":7}}]},"11":{"loc":{"start":{"line":269,"column":6},"end":{"line":271,"column":7}},"type":"if","locations":[{"start":{"line":269,"column":6},"end":{"line":271,"column":7}}]},"12":{"loc":{"start":{"line":284,"column":60},"end":{"line":284,"column":84}},"type":"default-arg","locations":[{"start":{"line":284,"column":79},"end":{"line":284,"column":84}}]},"13":{"loc":{"start":{"line":289,"column":6},"end":{"line":291,"column":7}},"type":"if","locations":[{"start":{"line":289,"column":6},"end":{"line":291,"column":7}}]},"14":{"loc":{"start":{"line":304,"column":84},"end":{"line":304,"column":108}},"type":"default-arg","locations":[{"start":{"line":304,"column":103},"end":{"line":304,"column":108}}]},"15":{"loc":{"start":{"line":309,"column":6},"end":{"line":311,"column":7}},"type":"if","locations":[{"start":{"line":309,"column":6},"end":{"line":311,"column":7}}]},"16":{"loc":{"start":{"line":341,"column":56},"end":{"line":341,"column":82}},"type":"default-arg","locations":[{"start":{"line":341,"column":77},"end":{"line":341,"column":82}}]},"17":{"loc":{"start":{"line":346,"column":6},"end":{"line":348,"column":7}},"type":"if","locations":[{"start":{"line":346,"column":6},"end":{"line":348,"column":7}}]},"18":{"loc":{"start":{"line":370,"column":39},"end":{"line":370,"column":65}},"type":"default-arg","locations":[{"start":{"line":370,"column":60},"end":{"line":370,"column":65}}]},"19":{"loc":{"start":{"line":374,"column":8},"end":{"line":376,"column":9}},"type":"if","locations":[{"start":{"line":374,"column":8},"end":{"line":376,"column":9}}]},"20":{"loc":{"start":{"line":383,"column":8},"end":{"line":385,"column":9}},"type":"if","locations":[{"start":{"line":383,"column":8},"end":{"line":385,"column":9}}]},"21":{"loc":{"start":{"line":392,"column":8},"end":{"line":394,"column":9}},"type":"if","locations":[{"start":{"line":392,"column":8},"end":{"line":394,"column":9}}]},"22":{"loc":{"start":{"line":401,"column":8},"end":{"line":403,"column":9}},"type":"if","locations":[{"start":{"line":401,"column":8},"end":{"line":403,"column":9}}]},"23":{"loc":{"start":{"line":416,"column":63},"end":{"line":416,"column":89}},"type":"default-arg","locations":[{"start":{"line":416,"column":84},"end":{"line":416,"column":89}}]},"24":{"loc":{"start":{"line":422,"column":8},"end":{"line":437,"column":9}},"type":"if","locations":[{"start":{"line":422,"column":8},"end":{"line":437,"column":9}}]},"25":{"loc":{"start":{"line":422,"column":12},"end":{"line":422,"column":62}},"type":"binary-expr","locations":[{"start":{"line":422,"column":12},"end":{"line":422,"column":41}},{"start":{"line":422,"column":45},"end":{"line":422,"column":62}}]},"26":{"loc":{"start":{"line":428,"column":12},"end":{"line":435,"column":13}},"type":"if","locations":[{"start":{"line":428,"column":12},"end":{"line":435,"column":13}}]}},"s":{"0":5,"1":5,"2":5,"3":5,"4":5,"5":5,"6":5,"7":5,"8":5,"9":5,"10":5,"11":5,"12":5,"13":5,"14":5,"15":5,"16":5,"17":5,"18":5,"19":5,"20":5,"21":99,"22":26,"23":26,"24":26,"25":26,"26":26,"27":26,"28":26,"29":26,"30":26,"31":26,"32":26,"33":26,"34":26,"35":26,"36":26,"37":26,"38":26,"39":9,"40":9,"41":9,"42":0,"43":0,"44":5,"45":5,"46":10,"47":10,"48":10,"49":10,"50":4,"51":6,"52":6,"53":6,"54":6,"55":5,"56":5,"57":5,"58":5,"59":2,"60":3,"61":3,"62":3,"63":3,"64":3,"65":5,"66":5,"67":5,"68":5,"69":2,"70":3,"71":3,"72":3,"73":3,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":5,"83":5,"84":5,"85":5,"86":2,"87":3,"88":3,"89":3,"90":3,"91":5,"92":5,"93":5,"94":5,"95":2,"96":3,"97":3,"98":3,"99":6,"100":6,"101":6,"102":3,"103":3,"104":3,"105":1,"106":1,"107":5,"108":5,"109":5,"110":5,"111":2,"112":3,"113":3,"114":3,"115":3,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":0,"186":0,"187":0,"188":0,"189":0,"190":2,"191":2,"192":2,"193":2,"194":2,"195":2,"196":2,"197":2,"198":2,"199":2,"200":2,"201":2,"202":2,"203":2,"204":2,"205":2,"206":2,"207":2,"208":2,"209":2,"210":5},"f":{"0":5,"1":5,"2":99,"3":26,"4":9,"5":0,"6":5,"7":10,"8":10,"9":5,"10":5,"11":5,"12":5,"13":0,"14":0,"15":5,"16":5,"17":5,"18":5,"19":1,"20":5,"21":5,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":0,"39":0,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":0,"49":2,"50":2,"51":2,"52":2,"53":2,"54":2,"55":2,"56":2,"57":2,"58":2,"59":2,"60":2,"61":2,"62":2,"63":2,"64":2},"b":{"0":[5,5],"1":[5,5],"2":[26,26],"3":[9],"4":[5],"5":[5],"6":[4],"7":[2],"8":[0,3],"9":[5],"10":[2],"11":[0],"12":[0],"13":[2],"14":[5],"15":[2],"16":[0],"17":[2],"18":[1],"19":[1],"20":[1],"21":[1],"22":[1],"23":[1],"24":[1],"25":[1,1],"26":[1]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/confluent/meta_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/confluent/meta_pb.ts","statementMap":{"0":{"start":{"line":6,"column":0},"end":{"line":6,"column":78}},"1":{"start":{"line":8,"column":0},"end":{"line":8,"column":73}},"2":{"start":{"line":14,"column":13},"end":{"line":15,"column":846}},"3":{"start":{"line":41,"column":13},"end":{"line":42,"column":38}},"4":{"start":{"line":47,"column":13},"end":{"line":48,"column":34}},"5":{"start":{"line":53,"column":13},"end":{"line":54,"column":34}},"6":{"start":{"line":59,"column":13},"end":{"line":60,"column":34}},"7":{"start":{"line":65,"column":13},"end":{"line":66,"column":34}},"8":{"start":{"line":71,"column":13},"end":{"line":72,"column":34}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/confluent/types/decimal_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/confluent/types/decimal_pb.ts","statementMap":{"0":{"start":{"line":6,"column":0},"end":{"line":6,"column":69}},"1":{"start":{"line":12,"column":13},"end":{"line":13,"column":185}},"2":{"start":{"line":45,"column":13},"end":{"line":46,"column":47}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/dekregistry/constants.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/dekregistry/constants.ts","statementMap":{"0":{"start":{"line":1,"column":16},"end":{"line":1,"column":27}},"1":{"start":{"line":4,"column":4},"end":{"line":4,"column":11}}},"fnMap":{},"branchMap":{},"s":{"0":5,"1":5},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/dekregistry/dekregistry-client.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/dekregistry/dekregistry-client.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":37}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":36}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":60}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":53}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":64}},"5":{"start":{"line":67,"column":25},"end":{"line":70,"column":6}},"6":{"start":{"line":73,"column":4},"end":{"line":73,"column":102}},"7":{"start":{"line":74,"column":4},"end":{"line":74,"column":60}},"8":{"start":{"line":75,"column":4},"end":{"line":75,"column":60}},"9":{"start":{"line":76,"column":4},"end":{"line":76,"column":32}},"10":{"start":{"line":77,"column":4},"end":{"line":77,"column":32}},"11":{"start":{"line":81,"column":14},"end":{"line":81,"column":32}},"12":{"start":{"line":82,"column":4},"end":{"line":84,"column":5}},"13":{"start":{"line":83,"column":6},"end":{"line":83,"column":null}},"14":{"start":{"line":85,"column":4},"end":{"line":85,"column":null}},"15":{"start":{"line":89,"column":4},"end":{"line":91,"column":5}},"16":{"start":{"line":90,"column":6},"end":{"line":90,"column":18}},"17":{"start":{"line":93,"column":4},"end":{"line":103,"column":5}},"18":{"start":{"line":94,"column":6},"end":{"line":102,"column":7}},"19":{"start":{"line":95,"column":22},"end":{"line":95,"column":69}},"20":{"start":{"line":96,"column":8},"end":{"line":96,"column":46}},"21":{"start":{"line":98,"column":8},"end":{"line":100,"column":9}},"22":{"start":{"line":99,"column":10},"end":{"line":99,"column":76}},"23":{"start":{"line":101,"column":8},"end":{"line":101,"column":49}},"24":{"start":{"line":105,"column":4},"end":{"line":105,"column":41}},"25":{"start":{"line":109,"column":4},"end":{"line":111,"column":5}},"26":{"start":{"line":110,"column":6},"end":{"line":110,"column":18}},"27":{"start":{"line":113,"column":4},"end":{"line":123,"column":5}},"28":{"start":{"line":114,"column":6},"end":{"line":122,"column":7}},"29":{"start":{"line":115,"column":22},"end":{"line":115,"column":60}},"30":{"start":{"line":116,"column":8},"end":{"line":116,"column":37}},"31":{"start":{"line":118,"column":8},"end":{"line":120,"column":9}},"32":{"start":{"line":119,"column":10},"end":{"line":119,"column":76}},"33":{"start":{"line":121,"column":8},"end":{"line":121,"column":49}},"34":{"start":{"line":125,"column":4},"end":{"line":125,"column":32}},"35":{"start":{"line":129,"column":4},"end":{"line":132,"column":5}},"36":{"start":{"line":130,"column":18},"end":{"line":130,"column":53}},"37":{"start":{"line":131,"column":6},"end":{"line":131,"column":28}},"38":{"start":{"line":137,"column":21},"end":{"line":137,"column":56}},"39":{"start":{"line":139,"column":4},"end":{"line":160,"column":7}},"40":{"start":{"line":140,"column":18},"end":{"line":140,"column":45}},"41":{"start":{"line":141,"column":6},"end":{"line":143,"column":7}},"42":{"start":{"line":142,"column":8},"end":{"line":142,"column":19}},"43":{"start":{"line":145,"column":40},"end":{"line":152,"column":8}},"44":{"start":{"line":154,"column":23},"end":{"line":157,"column":16}},"45":{"start":{"line":158,"column":6},"end":{"line":158,"column":49}},"46":{"start":{"line":159,"column":6},"end":{"line":159,"column":27}},"47":{"start":{"line":164,"column":21},"end":{"line":164,"column":49}},"48":{"start":{"line":166,"column":4},"end":{"line":178,"column":7}},"49":{"start":{"line":167,"column":18},"end":{"line":167,"column":45}},"50":{"start":{"line":168,"column":6},"end":{"line":170,"column":7}},"51":{"start":{"line":169,"column":8},"end":{"line":169,"column":19}},"52":{"start":{"line":171,"column":6},"end":{"line":171,"column":38}},"53":{"start":{"line":173,"column":23},"end":{"line":175,"column":14}},"54":{"start":{"line":176,"column":6},"end":{"line":176,"column":49}},"55":{"start":{"line":177,"column":6},"end":{"line":177,"column":27}},"56":{"start":{"line":183,"column":21},"end":{"line":183,"column":88}},"57":{"start":{"line":185,"column":4},"end":{"line":209,"column":7}},"58":{"start":{"line":186,"column":18},"end":{"line":186,"column":45}},"59":{"start":{"line":187,"column":6},"end":{"line":189,"column":7}},"60":{"start":{"line":188,"column":8},"end":{"line":188,"column":19}},"61":{"start":{"line":191,"column":27},"end":{"line":196,"column":8}},"62":{"start":{"line":197,"column":6},"end":{"line":197,"column":44}},"63":{"start":{"line":199,"column":23},"end":{"line":202,"column":16}},"64":{"start":{"line":203,"column":6},"end":{"line":203,"column":49}},"65":{"start":{"line":205,"column":6},"end":{"line":205,"column":100}},"66":{"start":{"line":206,"column":6},"end":{"line":206,"column":99}},"67":{"start":{"line":208,"column":6},"end":{"line":208,"column":27}},"68":{"start":{"line":214,"column":21},"end":{"line":214,"column":81}},"69":{"start":{"line":216,"column":4},"end":{"line":229,"column":7}},"70":{"start":{"line":217,"column":18},"end":{"line":217,"column":45}},"71":{"start":{"line":218,"column":6},"end":{"line":220,"column":7}},"72":{"start":{"line":219,"column":8},"end":{"line":219,"column":19}},"73":{"start":{"line":221,"column":6},"end":{"line":221,"column":44}},"74":{"start":{"line":222,"column":6},"end":{"line":222,"column":44}},"75":{"start":{"line":224,"column":23},"end":{"line":226,"column":14}},"76":{"start":{"line":227,"column":6},"end":{"line":227,"column":49}},"77":{"start":{"line":228,"column":6},"end":{"line":228,"column":27}},"78":{"start":{"line":233,"column":4},"end":{"line":233,"column":11}},"79":{"start":{"line":238,"column":21},"end":{"line":238,"column":92}},"80":{"start":{"line":239,"column":22},"end":{"line":239,"column":49}},"81":{"start":{"line":240,"column":4},"end":{"line":240,"column":35}},"82":{"start":{"line":244,"column":9},"end":{"line":244,"column":26}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":66,"column":2},"end":{"line":66,"column":14}},"loc":{"start":{"line":66,"column":34},"end":{"line":78,"column":3}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":80,"column":2},"end":{"line":80,"column":8}},"loc":{"start":{"line":80,"column":39},"end":{"line":86,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":88,"column":2},"end":{"line":88,"column":8}},"loc":{"start":{"line":88,"column":46},"end":{"line":106,"column":3}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":108,"column":2},"end":{"line":108,"column":8}},"loc":{"start":{"line":108,"column":37},"end":{"line":126,"column":3}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":128,"column":2},"end":{"line":128,"column":8}},"loc":{"start":{"line":128,"column":58},"end":{"line":133,"column":3}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":135,"column":2},"end":{"line":135,"column":7}},"loc":{"start":{"line":136,"column":54},"end":{"line":161,"column":3}}},"6":{"name":"(anonymous_7)","decl":{"start":{"line":139,"column":44},"end":{"line":139,"column":49}},"loc":{"start":{"line":139,"column":55},"end":{"line":160,"column":5}}},"7":{"name":"(anonymous_8)","decl":{"start":{"line":163,"column":2},"end":{"line":163,"column":7}},"loc":{"start":{"line":163,"column":53},"end":{"line":179,"column":3}}},"8":{"name":"(anonymous_9)","decl":{"start":{"line":166,"column":44},"end":{"line":166,"column":49}},"loc":{"start":{"line":166,"column":55},"end":{"line":178,"column":5}}},"9":{"name":"(anonymous_10)","decl":{"start":{"line":181,"column":2},"end":{"line":181,"column":7}},"loc":{"start":{"line":182,"column":54},"end":{"line":210,"column":3}}},"10":{"name":"(anonymous_11)","decl":{"start":{"line":185,"column":44},"end":{"line":185,"column":49}},"loc":{"start":{"line":185,"column":55},"end":{"line":209,"column":5}}},"11":{"name":"(anonymous_12)","decl":{"start":{"line":212,"column":2},"end":{"line":212,"column":7}},"loc":{"start":{"line":213,"column":68},"end":{"line":230,"column":3}}},"12":{"name":"(anonymous_13)","decl":{"start":{"line":216,"column":44},"end":{"line":216,"column":49}},"loc":{"start":{"line":216,"column":55},"end":{"line":229,"column":5}}},"13":{"name":"(anonymous_14)","decl":{"start":{"line":232,"column":2},"end":{"line":232,"column":7}},"loc":{"start":{"line":232,"column":13},"end":{"line":234,"column":3}}},"14":{"name":"(anonymous_15)","decl":{"start":{"line":237,"column":2},"end":{"line":237,"column":7}},"loc":{"start":{"line":237,"column":81},"end":{"line":241,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":69,"column":10},"end":{"line":69,"column":97}},"type":"binary-expr","locations":[{"start":{"line":69,"column":10},"end":{"line":69,"column":49}},{"start":{"line":69,"column":53},"end":{"line":69,"column":97}}]},"1":{"loc":{"start":{"line":82,"column":4},"end":{"line":84,"column":5}},"type":"if","locations":[{"start":{"line":82,"column":4},"end":{"line":84,"column":5}}]},"2":{"loc":{"start":{"line":89,"column":4},"end":{"line":91,"column":5}},"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":91,"column":5}}]},"3":{"loc":{"start":{"line":93,"column":4},"end":{"line":103,"column":5}},"type":"if","locations":[{"start":{"line":93,"column":4},"end":{"line":103,"column":5}}]},"4":{"loc":{"start":{"line":98,"column":8},"end":{"line":100,"column":9}},"type":"if","locations":[{"start":{"line":98,"column":8},"end":{"line":100,"column":9}}]},"5":{"loc":{"start":{"line":109,"column":4},"end":{"line":111,"column":5}},"type":"if","locations":[{"start":{"line":109,"column":4},"end":{"line":111,"column":5}}]},"6":{"loc":{"start":{"line":113,"column":4},"end":{"line":123,"column":5}},"type":"if","locations":[{"start":{"line":113,"column":4},"end":{"line":123,"column":5}}]},"7":{"loc":{"start":{"line":118,"column":8},"end":{"line":120,"column":9}},"type":"if","locations":[{"start":{"line":118,"column":8},"end":{"line":120,"column":9}}]},"8":{"loc":{"start":{"line":129,"column":4},"end":{"line":132,"column":5}},"type":"if","locations":[{"start":{"line":129,"column":4},"end":{"line":132,"column":5}}]},"9":{"loc":{"start":{"line":141,"column":6},"end":{"line":143,"column":7}},"type":"if","locations":[{"start":{"line":141,"column":6},"end":{"line":143,"column":7}}]},"10":{"loc":{"start":{"line":149,"column":11},"end":{"line":149,"column":35}},"type":"binary-expr","locations":[{"start":{"line":149,"column":11},"end":{"line":149,"column":19}},{"start":{"line":149,"column":23},"end":{"line":149,"column":35}}]},"11":{"loc":{"start":{"line":150,"column":11},"end":{"line":150,"column":25}},"type":"binary-expr","locations":[{"start":{"line":150,"column":11},"end":{"line":150,"column":14}},{"start":{"line":150,"column":18},"end":{"line":150,"column":25}}]},"12":{"loc":{"start":{"line":163,"column":29},"end":{"line":163,"column":53}},"type":"default-arg","locations":[{"start":{"line":163,"column":48},"end":{"line":163,"column":53}}]},"13":{"loc":{"start":{"line":168,"column":6},"end":{"line":170,"column":7}},"type":"if","locations":[{"start":{"line":168,"column":6},"end":{"line":170,"column":7}}]},"14":{"loc":{"start":{"line":182,"column":4},"end":{"line":182,"column":23}},"type":"default-arg","locations":[{"start":{"line":182,"column":22},"end":{"line":182,"column":23}}]},"15":{"loc":{"start":{"line":187,"column":6},"end":{"line":189,"column":7}},"type":"if","locations":[{"start":{"line":187,"column":6},"end":{"line":189,"column":7}}]},"16":{"loc":{"start":{"line":195,"column":11},"end":{"line":195,"column":59}},"type":"binary-expr","locations":[{"start":{"line":195,"column":11},"end":{"line":195,"column":31}},{"start":{"line":195,"column":35},"end":{"line":195,"column":59}}]},"17":{"loc":{"start":{"line":213,"column":23},"end":{"line":213,"column":42}},"type":"default-arg","locations":[{"start":{"line":213,"column":41},"end":{"line":213,"column":42}}]},"18":{"loc":{"start":{"line":213,"column":44},"end":{"line":213,"column":68}},"type":"default-arg","locations":[{"start":{"line":213,"column":63},"end":{"line":213,"column":68}}]},"19":{"loc":{"start":{"line":218,"column":6},"end":{"line":220,"column":7}},"type":"if","locations":[{"start":{"line":218,"column":6},"end":{"line":220,"column":7}}]}},"s":{"0":4,"1":4,"2":4,"3":4,"4":4,"5":7,"6":7,"7":7,"8":7,"9":7,"10":7,"11":15,"12":15,"13":15,"14":0,"15":5,"16":0,"17":5,"18":5,"19":5,"20":5,"21":0,"22":0,"23":0,"24":5,"25":22,"26":5,"27":17,"28":5,"29":5,"30":5,"31":0,"32":0,"33":0,"34":17,"35":5,"36":5,"37":5,"38":6,"39":6,"40":6,"41":6,"42":2,"43":4,"44":4,"45":4,"46":4,"47":1,"48":1,"49":1,"50":1,"51":1,"52":0,"53":0,"54":0,"55":0,"56":7,"57":7,"58":7,"59":7,"60":2,"61":5,"62":5,"63":5,"64":5,"65":5,"66":5,"67":5,"68":3,"69":3,"70":3,"71":3,"72":2,"73":1,"74":1,"75":1,"76":1,"77":1,"78":0,"79":2,"80":2,"81":2,"82":4},"f":{"0":7,"1":15,"2":5,"3":22,"4":5,"5":6,"6":6,"7":1,"8":1,"9":7,"10":7,"11":3,"12":3,"13":0,"14":2},"b":{"0":[7,7],"1":[15],"2":[0],"3":[5],"4":[0],"5":[5],"6":[5],"7":[0],"8":[5],"9":[2],"10":[4,4],"11":[4,4],"12":[1],"13":[1],"14":[0],"15":[2],"16":[5,5],"17":[1],"18":[3],"19":[2]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/dekregistry/mock-dekregistry-client.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/dekregistry/mock-dekregistry-client.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":38}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":53}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"3":{"start":{"line":11,"column":4},"end":{"line":11,"column":43}},"4":{"start":{"line":12,"column":4},"end":{"line":12,"column":43}},"5":{"start":{"line":17,"column":21},"end":{"line":17,"column":56}},"6":{"start":{"line":18,"column":22},"end":{"line":18,"column":49}},"7":{"start":{"line":19,"column":4},"end":{"line":21,"column":5}},"8":{"start":{"line":20,"column":6},"end":{"line":20,"column":23}},"9":{"start":{"line":23,"column":21},"end":{"line":30,"column":6}},"10":{"start":{"line":32,"column":4},"end":{"line":32,"column":37}},"11":{"start":{"line":33,"column":4},"end":{"line":33,"column":15}},"12":{"start":{"line":37,"column":21},"end":{"line":37,"column":49}},"13":{"start":{"line":38,"column":22},"end":{"line":38,"column":49}},"14":{"start":{"line":39,"column":4},"end":{"line":41,"column":5}},"15":{"start":{"line":40,"column":6},"end":{"line":40,"column":23}},"16":{"start":{"line":43,"column":4},"end":{"line":43,"column":62}},"17":{"start":{"line":48,"column":21},"end":{"line":48,"column":88}},"18":{"start":{"line":49,"column":22},"end":{"line":49,"column":49}},"19":{"start":{"line":50,"column":4},"end":{"line":52,"column":5}},"20":{"start":{"line":51,"column":6},"end":{"line":51,"column":23}},"21":{"start":{"line":54,"column":21},"end":{"line":61,"column":6}},"22":{"start":{"line":63,"column":4},"end":{"line":63,"column":37}},"23":{"start":{"line":64,"column":4},"end":{"line":64,"column":15}},"24":{"start":{"line":69,"column":4},"end":{"line":82,"column":5}},"25":{"start":{"line":70,"column":26},"end":{"line":70,"column":27}},"26":{"start":{"line":71,"column":6},"end":{"line":77,"column":7}},"27":{"start":{"line":72,"column":26},"end":{"line":72,"column":41}},"28":{"start":{"line":73,"column":8},"end":{"line":76,"column":9}},"29":{"start":{"line":75,"column":10},"end":{"line":75,"column":69}},"30":{"start":{"line":78,"column":6},"end":{"line":80,"column":7}},"31":{"start":{"line":79,"column":8},"end":{"line":79,"column":69}},"32":{"start":{"line":81,"column":6},"end":{"line":81,"column":30}},"33":{"start":{"line":84,"column":21},"end":{"line":84,"column":88}},"34":{"start":{"line":85,"column":22},"end":{"line":85,"column":49}},"35":{"start":{"line":86,"column":4},"end":{"line":88,"column":5}},"36":{"start":{"line":87,"column":6},"end":{"line":87,"column":23}},"37":{"start":{"line":90,"column":4},"end":{"line":90,"column":65}},"38":{"start":{"line":94,"column":4},"end":{"line":94,"column":11}},"39":{"start":{"line":98,"column":9},"end":{"line":98,"column":30}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":null}},"loc":{"start":{"line":10,"column":2},"end":{"line":13,"column":3}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":7}},"loc":{"start":{"line":16,"column":54},"end":{"line":34,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":36,"column":2},"end":{"line":36,"column":7}},"loc":{"start":{"line":36,"column":53},"end":{"line":44,"column":3}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":46,"column":2},"end":{"line":46,"column":7}},"loc":{"start":{"line":47,"column":54},"end":{"line":65,"column":3}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":67,"column":2},"end":{"line":67,"column":7}},"loc":{"start":{"line":68,"column":68},"end":{"line":91,"column":3}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":93,"column":2},"end":{"line":93,"column":7}},"loc":{"start":{"line":93,"column":13},"end":{"line":95,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":4},"end":{"line":21,"column":5}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":21,"column":5}}]},"1":{"loc":{"start":{"line":27,"column":9},"end":{"line":27,"column":33}},"type":"binary-expr","locations":[{"start":{"line":27,"column":9},"end":{"line":27,"column":17}},{"start":{"line":27,"column":21},"end":{"line":27,"column":33}}]},"2":{"loc":{"start":{"line":28,"column":9},"end":{"line":28,"column":23}},"type":"binary-expr","locations":[{"start":{"line":28,"column":9},"end":{"line":28,"column":12}},{"start":{"line":28,"column":16},"end":{"line":28,"column":23}}]},"3":{"loc":{"start":{"line":36,"column":29},"end":{"line":36,"column":53}},"type":"default-arg","locations":[{"start":{"line":36,"column":48},"end":{"line":36,"column":53}}]},"4":{"loc":{"start":{"line":39,"column":4},"end":{"line":41,"column":5}},"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":41,"column":5}}]},"5":{"loc":{"start":{"line":39,"column":8},"end":{"line":39,"column":52}},"type":"binary-expr","locations":[{"start":{"line":39,"column":8},"end":{"line":39,"column":17}},{"start":{"line":39,"column":22},"end":{"line":39,"column":40}},{"start":{"line":39,"column":44},"end":{"line":39,"column":51}}]},"6":{"loc":{"start":{"line":47,"column":4},"end":{"line":47,"column":23}},"type":"default-arg","locations":[{"start":{"line":47,"column":22},"end":{"line":47,"column":23}}]},"7":{"loc":{"start":{"line":50,"column":4},"end":{"line":52,"column":5}},"type":"if","locations":[{"start":{"line":50,"column":4},"end":{"line":52,"column":5}}]},"8":{"loc":{"start":{"line":58,"column":9},"end":{"line":58,"column":57}},"type":"binary-expr","locations":[{"start":{"line":58,"column":9},"end":{"line":58,"column":29}},{"start":{"line":58,"column":33},"end":{"line":58,"column":57}}]},"9":{"loc":{"start":{"line":68,"column":23},"end":{"line":68,"column":42}},"type":"default-arg","locations":[{"start":{"line":68,"column":41},"end":{"line":68,"column":42}}]},"10":{"loc":{"start":{"line":68,"column":44},"end":{"line":68,"column":68}},"type":"default-arg","locations":[{"start":{"line":68,"column":63},"end":{"line":68,"column":68}}]},"11":{"loc":{"start":{"line":69,"column":4},"end":{"line":82,"column":5}},"type":"if","locations":[{"start":{"line":69,"column":4},"end":{"line":82,"column":5}}]},"12":{"loc":{"start":{"line":73,"column":8},"end":{"line":76,"column":9}},"type":"if","locations":[{"start":{"line":73,"column":8},"end":{"line":76,"column":9}}]},"13":{"loc":{"start":{"line":73,"column":12},"end":{"line":74,"column":79}},"type":"binary-expr","locations":[{"start":{"line":73,"column":12},"end":{"line":73,"column":41}},{"start":{"line":73,"column":45},"end":{"line":73,"column":74}},{"start":{"line":74,"column":13},"end":{"line":74,"column":46}},{"start":{"line":74,"column":50},"end":{"line":74,"column":79}}]},"14":{"loc":{"start":{"line":78,"column":6},"end":{"line":80,"column":7}},"type":"if","locations":[{"start":{"line":78,"column":6},"end":{"line":80,"column":7}}]},"15":{"loc":{"start":{"line":86,"column":4},"end":{"line":88,"column":5}},"type":"if","locations":[{"start":{"line":86,"column":4},"end":{"line":88,"column":5}}]}},"s":{"0":5,"1":5,"2":5,"3":20,"4":20,"5":7,"6":7,"7":7,"8":0,"9":7,"10":7,"11":7,"12":8,"13":8,"14":8,"15":6,"16":2,"17":9,"18":9,"19":9,"20":0,"21":9,"22":9,"23":9,"24":13,"25":1,"26":1,"27":2,"28":2,"29":2,"30":1,"31":0,"32":1,"33":13,"34":13,"35":13,"36":11,"37":2,"38":0,"39":5},"f":{"0":20,"1":7,"2":8,"3":9,"4":13,"5":0},"b":{"0":[0],"1":[7,2],"2":[7,2],"3":[1],"4":[6],"5":[8,6,0],"6":[0],"7":[0],"8":[9,9],"9":[0],"10":[2],"11":[1],"12":[2],"13":[2,2,2,2],"14":[0],"15":[11]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/calendar_period_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/calendar_period_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":66}},"1":{"start":{"line":25,"column":13},"end":{"line":26,"column":425}},"2":{"start":{"line":35,"column":0},"end":{"line":35,"column":null}},"3":{"start":{"line":41,"column":2},"end":{"line":41,"column":null}},"4":{"start":{"line":48,"column":2},"end":{"line":48,"column":null}},"5":{"start":{"line":56,"column":2},"end":{"line":56,"column":null}},"6":{"start":{"line":65,"column":2},"end":{"line":65,"column":null}},"7":{"start":{"line":72,"column":2},"end":{"line":72,"column":null}},"8":{"start":{"line":80,"column":2},"end":{"line":80,"column":null}},"9":{"start":{"line":87,"column":2},"end":{"line":87,"column":null}},"10":{"start":{"line":94,"column":2},"end":{"line":94,"column":null}},"11":{"start":{"line":100,"column":13},"end":{"line":101,"column":48}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":35,"column":0},"end":{"line":35,"column":12}},"loc":{"start":{"line":35,"column":26},"end":{"line":95,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":35,"column":12},"end":{"line":35,"column":null}},"type":"binary-expr","locations":[{"start":{"line":35,"column":12},"end":{"line":35,"column":26}},{"start":{"line":35,"column":26},"end":{"line":35,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"f":{"0":1},"b":{"0":[1,1]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/color_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/color_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":21,"column":0},"end":{"line":21,"column":71}},"2":{"start":{"line":27,"column":13},"end":{"line":28,"column":367}},"3":{"start":{"line":202,"column":13},"end":{"line":203,"column":41}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/date_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/date_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":26,"column":13},"end":{"line":27,"column":269}},"2":{"start":{"line":77,"column":13},"end":{"line":78,"column":40}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/datetime_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/datetime_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":22,"column":0},"end":{"line":22,"column":71}},"2":{"start":{"line":28,"column":13},"end":{"line":29,"column":614}},"3":{"start":{"line":149,"column":13},"end":{"line":150,"column":44}},"4":{"start":{"line":178,"column":13},"end":{"line":179,"column":44}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/dayofweek_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/dayofweek_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":66}},"1":{"start":{"line":25,"column":13},"end":{"line":26,"column":405}},"2":{"start":{"line":33,"column":0},"end":{"line":33,"column":null}},"3":{"start":{"line":39,"column":2},"end":{"line":39,"column":null}},"4":{"start":{"line":46,"column":2},"end":{"line":46,"column":null}},"5":{"start":{"line":53,"column":2},"end":{"line":53,"column":null}},"6":{"start":{"line":60,"column":2},"end":{"line":60,"column":null}},"7":{"start":{"line":67,"column":2},"end":{"line":67,"column":null}},"8":{"start":{"line":74,"column":2},"end":{"line":74,"column":null}},"9":{"start":{"line":81,"column":2},"end":{"line":81,"column":null}},"10":{"start":{"line":88,"column":2},"end":{"line":88,"column":null}},"11":{"start":{"line":94,"column":13},"end":{"line":95,"column":42}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":33,"column":0},"end":{"line":33,"column":12}},"loc":{"start":{"line":33,"column":21},"end":{"line":89,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":33,"column":12},"end":{"line":33,"column":null}},"type":"binary-expr","locations":[{"start":{"line":33,"column":12},"end":{"line":33,"column":21}},{"start":{"line":33,"column":21},"end":{"line":33,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"f":{"0":1},"b":{"0":[1,1]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/expr_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/expr_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":26,"column":13},"end":{"line":27,"column":307}},"2":{"start":{"line":103,"column":13},"end":{"line":104,"column":40}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/fraction_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/fraction_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":26,"column":13},"end":{"line":27,"column":289}},"2":{"start":{"line":55,"column":13},"end":{"line":56,"column":44}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/latlng_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/latlng_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":26,"column":13},"end":{"line":27,"column":275}},"2":{"start":{"line":58,"column":13},"end":{"line":59,"column":42}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/money_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/money_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":26,"column":13},"end":{"line":27,"column":290}},"2":{"start":{"line":67,"column":13},"end":{"line":68,"column":41}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/month_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/month_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":66}},"1":{"start":{"line":25,"column":13},"end":{"line":26,"column":442}},"2":{"start":{"line":33,"column":0},"end":{"line":33,"column":null}},"3":{"start":{"line":39,"column":2},"end":{"line":39,"column":null}},"4":{"start":{"line":46,"column":2},"end":{"line":46,"column":null}},"5":{"start":{"line":53,"column":2},"end":{"line":53,"column":null}},"6":{"start":{"line":60,"column":2},"end":{"line":60,"column":null}},"7":{"start":{"line":67,"column":2},"end":{"line":67,"column":null}},"8":{"start":{"line":74,"column":2},"end":{"line":74,"column":null}},"9":{"start":{"line":81,"column":2},"end":{"line":81,"column":null}},"10":{"start":{"line":88,"column":2},"end":{"line":88,"column":null}},"11":{"start":{"line":95,"column":2},"end":{"line":95,"column":null}},"12":{"start":{"line":102,"column":2},"end":{"line":102,"column":null}},"13":{"start":{"line":109,"column":2},"end":{"line":109,"column":null}},"14":{"start":{"line":116,"column":2},"end":{"line":116,"column":null}},"15":{"start":{"line":123,"column":2},"end":{"line":123,"column":null}},"16":{"start":{"line":129,"column":13},"end":{"line":130,"column":38}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":33,"column":0},"end":{"line":33,"column":12}},"loc":{"start":{"line":33,"column":17},"end":{"line":124,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":33,"column":12},"end":{"line":33,"column":null}},"type":"binary-expr","locations":[{"start":{"line":33,"column":12},"end":{"line":33,"column":17}},{"start":{"line":33,"column":17},"end":{"line":33,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1},"f":{"0":1},"b":{"0":[1,1]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/postal_address_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/postal_address_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":26,"column":13},"end":{"line":27,"column":593}},"2":{"start":{"line":191,"column":13},"end":{"line":192,"column":50}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/quaternion_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/quaternion_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":26,"column":13},"end":{"line":27,"column":311}},"2":{"start":{"line":123,"column":13},"end":{"line":124,"column":46}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/timeofday_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/timeofday_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":26,"column":13},"end":{"line":27,"column":331}},"2":{"start":{"line":73,"column":13},"end":{"line":74,"column":45}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/encrypt-executor.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/encrypt-executor.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":null}},"1":{"start":{"line":10,"column":0},"end":{"line":10,"column":54}},"2":{"start":{"line":11,"column":0},"end":{"line":11,"column":89}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":63}},"4":{"start":{"line":14,"column":0},"end":{"line":14,"column":43}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":40}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":42}},"7":{"start":{"line":18,"column":0},"end":{"line":18,"column":67}},"8":{"start":{"line":19,"column":0},"end":{"line":19,"column":67}},"9":{"start":{"line":20,"column":0},"end":{"line":20,"column":64}},"10":{"start":{"line":21,"column":0},"end":{"line":21,"column":62}},"11":{"start":{"line":22,"column":0},"end":{"line":22,"column":62}},"12":{"start":{"line":25,"column":25},"end":{"line":25,"column":43}},"13":{"start":{"line":27,"column":27},"end":{"line":27,"column":47}},"14":{"start":{"line":29,"column":25},"end":{"line":29,"column":43}},"15":{"start":{"line":31,"column":30},"end":{"line":31,"column":53}},"16":{"start":{"line":33,"column":32},"end":{"line":33,"column":57}},"17":{"start":{"line":36,"column":22},"end":{"line":36,"column":41}},"18":{"start":{"line":38,"column":0},"end":{"line":38,"column":null}},"19":{"start":{"line":39,"column":2},"end":{"line":39,"column":null}},"20":{"start":{"line":40,"column":2},"end":{"line":40,"column":null}},"21":{"start":{"line":41,"column":2},"end":{"line":41,"column":null}},"22":{"start":{"line":58,"column":2},"end":{"line":58,"column":null}},"23":{"start":{"line":61,"column":21},"end":{"line":61,"column":50}},"24":{"start":{"line":62,"column":4},"end":{"line":62,"column":null}},"25":{"start":{"line":63,"column":4},"end":{"line":63,"column":null}},"26":{"start":{"line":67,"column":4},"end":{"line":67,"column":null}},"27":{"start":{"line":68,"column":4},"end":{"line":68,"column":null}},"28":{"start":{"line":72,"column":4},"end":{"line":72,"column":null}},"29":{"start":{"line":76,"column":20},"end":{"line":76,"column":40}},"30":{"start":{"line":77,"column":20},"end":{"line":77,"column":40}},"31":{"start":{"line":78,"column":26},"end":{"line":78,"column":52}},"32":{"start":{"line":80,"column":6},"end":{"line":80,"column":81}},"33":{"start":{"line":81,"column":4},"end":{"line":81,"column":null}},"34":{"start":{"line":85,"column":4},"end":{"line":87,"column":5}},"35":{"start":{"line":86,"column":6},"end":{"line":86,"column":null}},"36":{"start":{"line":91,"column":23},"end":{"line":91,"column":43}},"37":{"start":{"line":92,"column":28},"end":{"line":92,"column":67}},"38":{"start":{"line":93,"column":4},"end":{"line":95,"column":5}},"39":{"start":{"line":94,"column":6},"end":{"line":94,"column":null}},"40":{"start":{"line":96,"column":20},"end":{"line":96,"column":45}},"41":{"start":{"line":97,"column":4},"end":{"line":97,"column":null}},"42":{"start":{"line":101,"column":20},"end":{"line":101,"column":54}},"43":{"start":{"line":102,"column":4},"end":{"line":104,"column":5}},"44":{"start":{"line":103,"column":6},"end":{"line":103,"column":null}},"45":{"start":{"line":105,"column":4},"end":{"line":107,"column":5}},"46":{"start":{"line":106,"column":6},"end":{"line":106,"column":null}},"47":{"start":{"line":108,"column":4},"end":{"line":108,"column":null}},"48":{"start":{"line":112,"column":26},"end":{"line":112,"column":67}},"49":{"start":{"line":113,"column":4},"end":{"line":115,"column":5}},"50":{"start":{"line":114,"column":6},"end":{"line":114,"column":null}},"51":{"start":{"line":116,"column":23},"end":{"line":116,"column":44}},"52":{"start":{"line":117,"column":4},"end":{"line":119,"column":5}},"53":{"start":{"line":118,"column":6},"end":{"line":118,"column":null}},"54":{"start":{"line":120,"column":4},"end":{"line":122,"column":5}},"55":{"start":{"line":121,"column":6},"end":{"line":121,"column":null}},"56":{"start":{"line":123,"column":4},"end":{"line":123,"column":null}},"57":{"start":{"line":57,"column":0},"end":{"line":57,"column":13}},"58":{"start":{"line":134,"column":4},"end":{"line":134,"column":null}},"59":{"start":{"line":135,"column":4},"end":{"line":135,"column":null}},"60":{"start":{"line":139,"column":4},"end":{"line":151,"column":5}},"61":{"start":{"line":142,"column":8},"end":{"line":142,"column":null}},"62":{"start":{"line":145,"column":8},"end":{"line":145,"column":null}},"63":{"start":{"line":148,"column":8},"end":{"line":148,"column":null}},"64":{"start":{"line":150,"column":8},"end":{"line":150,"column":null}},"65":{"start":{"line":155,"column":17},"end":{"line":155,"column":49}},"66":{"start":{"line":156,"column":4},"end":{"line":172,"column":5}},"67":{"start":{"line":158,"column":37},"end":{"line":161,"column":10}},"68":{"start":{"line":162,"column":8},"end":{"line":162,"column":null}},"69":{"start":{"line":165,"column":37},"end":{"line":168,"column":10}},"70":{"start":{"line":169,"column":8},"end":{"line":169,"column":null}},"71":{"start":{"line":171,"column":8},"end":{"line":171,"column":null}},"72":{"start":{"line":177,"column":4},"end":{"line":189,"column":5}},"73":{"start":{"line":179,"column":26},"end":{"line":179,"column":58}},"74":{"start":{"line":180,"column":8},"end":{"line":180,"column":null}},"75":{"start":{"line":181,"column":8},"end":{"line":181,"column":null}},"76":{"start":{"line":184,"column":26},"end":{"line":184,"column":58}},"77":{"start":{"line":185,"column":8},"end":{"line":185,"column":null}},"78":{"start":{"line":186,"column":8},"end":{"line":186,"column":null}},"79":{"start":{"line":188,"column":8},"end":{"line":188,"column":null}},"80":{"start":{"line":194,"column":4},"end":{"line":206,"column":5}},"81":{"start":{"line":196,"column":26},"end":{"line":196,"column":58}},"82":{"start":{"line":197,"column":8},"end":{"line":197,"column":null}},"83":{"start":{"line":198,"column":8},"end":{"line":198,"column":null}},"84":{"start":{"line":201,"column":26},"end":{"line":201,"column":58}},"85":{"start":{"line":202,"column":8},"end":{"line":202,"column":null}},"86":{"start":{"line":203,"column":8},"end":{"line":203,"column":null}},"87":{"start":{"line":205,"column":8},"end":{"line":205,"column":null}},"88":{"start":{"line":210,"column":17},"end":{"line":210,"column":44}},"89":{"start":{"line":211,"column":4},"end":{"line":211,"column":null}},"90":{"start":{"line":215,"column":17},"end":{"line":215,"column":44}},"91":{"start":{"line":216,"column":4},"end":{"line":216,"column":null}},"92":{"start":{"line":220,"column":17},"end":{"line":220,"column":44}},"93":{"start":{"line":221,"column":4},"end":{"line":221,"column":null}},"94":{"start":{"line":225,"column":17},"end":{"line":225,"column":44}},"95":{"start":{"line":226,"column":4},"end":{"line":226,"column":null}},"96":{"start":{"line":127,"column":0},"end":{"line":127,"column":13}},"97":{"start":{"line":128,"column":18},"end":{"line":128,"column":null}},"98":{"start":{"line":234,"column":10},"end":{"line":234,"column":null}},"99":{"start":{"line":243,"column":4},"end":{"line":243,"column":null}},"100":{"start":{"line":244,"column":4},"end":{"line":244,"column":null}},"101":{"start":{"line":245,"column":4},"end":{"line":245,"column":null}},"102":{"start":{"line":246,"column":4},"end":{"line":246,"column":null}},"103":{"start":{"line":250,"column":4},"end":{"line":250,"column":null}},"104":{"start":{"line":254,"column":4},"end":{"line":256,"column":5}},"105":{"start":{"line":255,"column":6},"end":{"line":255,"column":null}},"106":{"start":{"line":257,"column":4},"end":{"line":257,"column":null}},"107":{"start":{"line":261,"column":19},"end":{"line":261,"column":49}},"108":{"start":{"line":262,"column":20},"end":{"line":262,"column":54}},"109":{"start":{"line":263,"column":21},"end":{"line":263,"column":57}},"110":{"start":{"line":264,"column":25},"end":{"line":267,"column":null}},"111":{"start":{"line":268,"column":14},"end":{"line":268,"column":55}},"112":{"start":{"line":269,"column":4},"end":{"line":287,"column":5}},"113":{"start":{"line":270,"column":6},"end":{"line":272,"column":7}},"114":{"start":{"line":271,"column":8},"end":{"line":271,"column":null}},"115":{"start":{"line":273,"column":6},"end":{"line":275,"column":7}},"116":{"start":{"line":274,"column":8},"end":{"line":274,"column":null}},"117":{"start":{"line":276,"column":6},"end":{"line":278,"column":7}},"118":{"start":{"line":277,"column":8},"end":{"line":277,"column":null}},"119":{"start":{"line":279,"column":6},"end":{"line":279,"column":null}},"120":{"start":{"line":280,"column":6},"end":{"line":283,"column":7}},"121":{"start":{"line":282,"column":8},"end":{"line":282,"column":null}},"122":{"start":{"line":284,"column":6},"end":{"line":286,"column":7}},"123":{"start":{"line":285,"column":8},"end":{"line":285,"column":null}},"124":{"start":{"line":288,"column":4},"end":{"line":292,"column":5}},"125":{"start":{"line":289,"column":6},"end":{"line":291,"column":null}},"126":{"start":{"line":293,"column":4},"end":{"line":297,"column":5}},"127":{"start":{"line":294,"column":6},"end":{"line":296,"column":null}},"128":{"start":{"line":298,"column":4},"end":{"line":298,"column":null}},"129":{"start":{"line":302,"column":4},"end":{"line":309,"column":5}},"130":{"start":{"line":303,"column":6},"end":{"line":303,"column":null}},"131":{"start":{"line":305,"column":6},"end":{"line":307,"column":7}},"132":{"start":{"line":306,"column":8},"end":{"line":306,"column":null}},"133":{"start":{"line":308,"column":6},"end":{"line":308,"column":null}},"134":{"start":{"line":313,"column":4},"end":{"line":320,"column":5}},"135":{"start":{"line":314,"column":6},"end":{"line":314,"column":null}},"136":{"start":{"line":316,"column":6},"end":{"line":318,"column":7}},"137":{"start":{"line":317,"column":8},"end":{"line":317,"column":null}},"138":{"start":{"line":319,"column":6},"end":{"line":319,"column":null}},"139":{"start":{"line":324,"column":16},"end":{"line":324,"column":38}},"140":{"start":{"line":325,"column":19},"end":{"line":325,"column":49}},"141":{"start":{"line":326,"column":4},"end":{"line":328,"column":5}},"142":{"start":{"line":327,"column":6},"end":{"line":327,"column":null}},"143":{"start":{"line":329,"column":25},"end":{"line":335,"column":null}},"144":{"start":{"line":336,"column":14},"end":{"line":336,"column":55}},"145":{"start":{"line":337,"column":22},"end":{"line":337,"column":46}},"146":{"start":{"line":338,"column":38},"end":{"line":338,"column":42}},"147":{"start":{"line":339,"column":4},"end":{"line":367,"column":5}},"148":{"start":{"line":340,"column":6},"end":{"line":342,"column":7}},"149":{"start":{"line":341,"column":8},"end":{"line":341,"column":null}},"150":{"start":{"line":343,"column":40},"end":{"line":343,"column":44}},"151":{"start":{"line":344,"column":6},"end":{"line":349,"column":7}},"152":{"start":{"line":345,"column":8},"end":{"line":345,"column":null}},"153":{"start":{"line":347,"column":23},"end":{"line":347,"column":49}},"154":{"start":{"line":348,"column":8},"end":{"line":348,"column":null}},"155":{"start":{"line":350,"column":25},"end":{"line":350,"column":61}},"156":{"start":{"line":351,"column":30},"end":{"line":357,"column":null}},"157":{"start":{"line":359,"column":6},"end":{"line":359,"column":null}},"158":{"start":{"line":360,"column":6},"end":{"line":363,"column":7}},"159":{"start":{"line":362,"column":8},"end":{"line":362,"column":null}},"160":{"start":{"line":364,"column":6},"end":{"line":366,"column":7}},"161":{"start":{"line":365,"column":8},"end":{"line":365,"column":null}},"162":{"start":{"line":369,"column":4},"end":{"line":375,"column":5}},"163":{"start":{"line":370,"column":6},"end":{"line":372,"column":7}},"164":{"start":{"line":371,"column":8},"end":{"line":371,"column":null}},"165":{"start":{"line":373,"column":21},"end":{"line":373,"column":98}},"166":{"start":{"line":374,"column":6},"end":{"line":374,"column":null}},"167":{"start":{"line":377,"column":4},"end":{"line":377,"column":null}},"168":{"start":{"line":381,"column":4},"end":{"line":394,"column":7}},"169":{"start":{"line":383,"column":22},"end":{"line":383,"column":33}},"170":{"start":{"line":384,"column":8},"end":{"line":386,"column":9}},"171":{"start":{"line":385,"column":10},"end":{"line":385,"column":null}},"172":{"start":{"line":387,"column":8},"end":{"line":387,"column":null}},"173":{"start":{"line":388,"column":8},"end":{"line":388,"column":null}},"174":{"start":{"line":390,"column":8},"end":{"line":392,"column":9}},"175":{"start":{"line":391,"column":10},"end":{"line":391,"column":null}},"176":{"start":{"line":393,"column":8},"end":{"line":393,"column":null}},"177":{"start":{"line":398,"column":6},"end":{"line":415,"column":7}},"178":{"start":{"line":400,"column":50},"end":{"line":400,"column":59}},"179":{"start":{"line":401,"column":8},"end":{"line":403,"column":9}},"180":{"start":{"line":402,"column":10},"end":{"line":402,"column":null}},"181":{"start":{"line":404,"column":22},"end":{"line":404,"column":33}},"182":{"start":{"line":405,"column":8},"end":{"line":407,"column":9}},"183":{"start":{"line":406,"column":10},"end":{"line":406,"column":null}},"184":{"start":{"line":408,"column":8},"end":{"line":408,"column":null}},"185":{"start":{"line":409,"column":8},"end":{"line":409,"column":null}},"186":{"start":{"line":411,"column":8},"end":{"line":413,"column":9}},"187":{"start":{"line":412,"column":10},"end":{"line":412,"column":null}},"188":{"start":{"line":414,"column":8},"end":{"line":414,"column":null}},"189":{"start":{"line":419,"column":16},"end":{"line":419,"column":26}},"190":{"start":{"line":420,"column":4},"end":{"line":423,"column":null}},"191":{"start":{"line":427,"column":4},"end":{"line":429,"column":5}},"192":{"start":{"line":428,"column":6},"end":{"line":428,"column":null}},"193":{"start":{"line":430,"column":4},"end":{"line":477,"column":5}},"194":{"start":{"line":432,"column":24},"end":{"line":432,"column":63}},"195":{"start":{"line":433,"column":8},"end":{"line":435,"column":9}},"196":{"start":{"line":434,"column":10},"end":{"line":434,"column":null}},"197":{"start":{"line":436,"column":37},"end":{"line":436,"column":41}},"198":{"start":{"line":437,"column":8},"end":{"line":439,"column":9}},"199":{"start":{"line":438,"column":10},"end":{"line":438,"column":null}},"200":{"start":{"line":440,"column":18},"end":{"line":440,"column":57}},"201":{"start":{"line":441,"column":31},"end":{"line":441,"column":74}},"202":{"start":{"line":442,"column":25},"end":{"line":442,"column":80}},"203":{"start":{"line":443,"column":8},"end":{"line":445,"column":9}},"204":{"start":{"line":444,"column":10},"end":{"line":444,"column":null}},"205":{"start":{"line":446,"column":8},"end":{"line":450,"column":9}},"206":{"start":{"line":447,"column":10},"end":{"line":447,"column":null}},"207":{"start":{"line":449,"column":10},"end":{"line":449,"column":null}},"208":{"start":{"line":454,"column":8},"end":{"line":458,"column":9}},"209":{"start":{"line":455,"column":10},"end":{"line":455,"column":null}},"210":{"start":{"line":457,"column":10},"end":{"line":457,"column":null}},"211":{"start":{"line":459,"column":8},"end":{"line":461,"column":9}},"212":{"start":{"line":460,"column":10},"end":{"line":460,"column":null}},"213":{"start":{"line":462,"column":37},"end":{"line":462,"column":41}},"214":{"start":{"line":463,"column":8},"end":{"line":469,"column":9}},"215":{"start":{"line":464,"column":10},"end":{"line":464,"column":null}},"216":{"start":{"line":465,"column":10},"end":{"line":467,"column":11}},"217":{"start":{"line":466,"column":12},"end":{"line":466,"column":null}},"218":{"start":{"line":468,"column":10},"end":{"line":468,"column":null}},"219":{"start":{"line":470,"column":18},"end":{"line":470,"column":57}},"220":{"start":{"line":471,"column":31},"end":{"line":471,"column":74}},"221":{"start":{"line":472,"column":24},"end":{"line":472,"column":80}},"222":{"start":{"line":473,"column":8},"end":{"line":473,"column":null}},"223":{"start":{"line":476,"column":8},"end":{"line":476,"column":null}},"224":{"start":{"line":481,"column":23},"end":{"line":481,"column":38}},"225":{"start":{"line":482,"column":4},"end":{"line":482,"column":null}},"226":{"start":{"line":483,"column":4},"end":{"line":483,"column":null}},"227":{"start":{"line":487,"column":20},"end":{"line":487,"column":45}},"228":{"start":{"line":488,"column":4},"end":{"line":494,"column":5}},"229":{"start":{"line":489,"column":6},"end":{"line":493,"column":null}},"230":{"start":{"line":495,"column":4},"end":{"line":495,"column":null}},"231":{"start":{"line":499,"column":4},"end":{"line":506,"column":5}},"232":{"start":{"line":501,"column":8},"end":{"line":501,"column":null}},"233":{"start":{"line":503,"column":8},"end":{"line":503,"column":null}},"234":{"start":{"line":505,"column":8},"end":{"line":505,"column":null}},"235":{"start":{"line":510,"column":4},"end":{"line":517,"column":5}},"236":{"start":{"line":512,"column":8},"end":{"line":512,"column":null}},"237":{"start":{"line":514,"column":8},"end":{"line":514,"column":null}},"238":{"start":{"line":516,"column":8},"end":{"line":516,"column":null}},"239":{"start":{"line":230,"column":0},"end":{"line":230,"column":13}},"240":{"start":{"line":522,"column":15},"end":{"line":522,"column":49}},"241":{"start":{"line":523,"column":18},"end":{"line":523,"column":47}},"242":{"start":{"line":524,"column":2},"end":{"line":528,"column":3}},"243":{"start":{"line":525,"column":20},"end":{"line":525,"column":49}},"244":{"start":{"line":526,"column":4},"end":{"line":526,"column":null}},"245":{"start":{"line":527,"column":4},"end":{"line":527,"column":null}},"246":{"start":{"line":529,"column":2},"end":{"line":529,"column":null}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":38,"column":0},"end":{"line":38,"column":12}},"loc":{"start":{"line":38,"column":21},"end":{"line":42,"column":1}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":57,"column":0},"end":{"line":57,"column":13}},"loc":{"start":{"line":57,"column":0},"end":{"line":125,"column":1}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":60,"column":2},"end":{"line":60,"column":8}},"loc":{"start":{"line":60,"column":17},"end":{"line":64,"column":3}}},"3":{"name":"(anonymous_9)","decl":{"start":{"line":66,"column":11},"end":{"line":66,"column":20}},"loc":{"start":{"line":66,"column":76},"end":{"line":69,"column":3}}},"4":{"name":"(anonymous_10)","decl":{"start":{"line":71,"column":2},"end":{"line":71,"column":6}},"loc":{"start":{"line":71,"column":6},"end":{"line":73,"column":3}}},"5":{"name":"(anonymous_11)","decl":{"start":{"line":75,"column":2},"end":{"line":75,"column":14}},"loc":{"start":{"line":75,"column":31},"end":{"line":82,"column":3}}},"6":{"name":"(anonymous_12)","decl":{"start":{"line":84,"column":2},"end":{"line":84,"column":7}},"loc":{"start":{"line":84,"column":13},"end":{"line":88,"column":3}}},"7":{"name":"(anonymous_13)","decl":{"start":{"line":90,"column":10},"end":{"line":90,"column":20}},"loc":{"start":{"line":90,"column":37},"end":{"line":98,"column":3}}},"8":{"name":"(anonymous_14)","decl":{"start":{"line":100,"column":10},"end":{"line":100,"column":20}},"loc":{"start":{"line":100,"column":37},"end":{"line":109,"column":3}}},"9":{"name":"(anonymous_15)","decl":{"start":{"line":111,"column":10},"end":{"line":111,"column":26}},"loc":{"start":{"line":111,"column":43},"end":{"line":124,"column":3}}},"10":{"name":"(anonymous_16)","decl":{"start":{"line":133,"column":2},"end":{"line":133,"column":14}},"loc":{"start":{"line":133,"column":34},"end":{"line":136,"column":3}}},"11":{"name":"(anonymous_17)","decl":{"start":{"line":138,"column":10},"end":{"line":138,"column":17}},"loc":{"start":{"line":138,"column":17},"end":{"line":152,"column":3}}},"12":{"name":"(anonymous_18)","decl":{"start":{"line":154,"column":2},"end":{"line":154,"column":13}},"loc":{"start":{"line":154,"column":13},"end":{"line":173,"column":3}}},"13":{"name":"(anonymous_19)","decl":{"start":{"line":175,"column":2},"end":{"line":175,"column":7}},"loc":{"start":{"line":175,"column":46},"end":{"line":190,"column":3}}},"14":{"name":"(anonymous_20)","decl":{"start":{"line":192,"column":2},"end":{"line":192,"column":7}},"loc":{"start":{"line":192,"column":47},"end":{"line":207,"column":3}}},"15":{"name":"(anonymous_21)","decl":{"start":{"line":209,"column":2},"end":{"line":209,"column":7}},"loc":{"start":{"line":209,"column":64},"end":{"line":212,"column":3}}},"16":{"name":"(anonymous_22)","decl":{"start":{"line":214,"column":2},"end":{"line":214,"column":7}},"loc":{"start":{"line":214,"column":65},"end":{"line":217,"column":3}}},"17":{"name":"(anonymous_23)","decl":{"start":{"line":219,"column":2},"end":{"line":219,"column":7}},"loc":{"start":{"line":219,"column":64},"end":{"line":222,"column":3}}},"18":{"name":"(anonymous_24)","decl":{"start":{"line":224,"column":2},"end":{"line":224,"column":7}},"loc":{"start":{"line":224,"column":65},"end":{"line":227,"column":3}}},"19":{"name":"(anonymous_25)","decl":{"start":{"line":237,"column":2},"end":{"line":237,"column":null}},"loc":{"start":{"line":241,"column":25},"end":{"line":247,"column":3}}},"20":{"name":"(anonymous_26)","decl":{"start":{"line":249,"column":2},"end":{"line":249,"column":14}},"loc":{"start":{"line":249,"column":14},"end":{"line":251,"column":3}}},"21":{"name":"(anonymous_27)","decl":{"start":{"line":253,"column":2},"end":{"line":253,"column":7}},"loc":{"start":{"line":253,"column":31},"end":{"line":258,"column":3}}},"22":{"name":"(anonymous_28)","decl":{"start":{"line":260,"column":2},"end":{"line":260,"column":7}},"loc":{"start":{"line":260,"column":39},"end":{"line":299,"column":3}}},"23":{"name":"(anonymous_29)","decl":{"start":{"line":301,"column":2},"end":{"line":301,"column":7}},"loc":{"start":{"line":301,"column":42},"end":{"line":310,"column":3}}},"24":{"name":"(anonymous_30)","decl":{"start":{"line":312,"column":2},"end":{"line":312,"column":7}},"loc":{"start":{"line":312,"column":89},"end":{"line":321,"column":3}}},"25":{"name":"(anonymous_31)","decl":{"start":{"line":323,"column":2},"end":{"line":323,"column":7}},"loc":{"start":{"line":323,"column":63},"end":{"line":378,"column":3}}},"26":{"name":"(anonymous_32)","decl":{"start":{"line":380,"column":2},"end":{"line":380,"column":7}},"loc":{"start":{"line":380,"column":42},"end":{"line":395,"column":5}}},"27":{"name":"(anonymous_33)","decl":{"start":{"line":397,"column":4},"end":{"line":397,"column":9}},"loc":{"start":{"line":397,"column":68},"end":{"line":416,"column":3}}},"28":{"name":"(anonymous_34)","decl":{"start":{"line":418,"column":2},"end":{"line":418,"column":11}},"loc":{"start":{"line":418,"column":45},"end":{"line":424,"column":3}}},"29":{"name":"(anonymous_35)","decl":{"start":{"line":426,"column":2},"end":{"line":426,"column":7}},"loc":{"start":{"line":426,"column":75},"end":{"line":478,"column":3}}},"30":{"name":"(anonymous_36)","decl":{"start":{"line":480,"column":2},"end":{"line":480,"column":15}},"loc":{"start":{"line":480,"column":51},"end":{"line":484,"column":3}}},"31":{"name":"(anonymous_37)","decl":{"start":{"line":486,"column":2},"end":{"line":486,"column":16}},"loc":{"start":{"line":486,"column":35},"end":{"line":496,"column":3}}},"32":{"name":"(anonymous_38)","decl":{"start":{"line":498,"column":2},"end":{"line":498,"column":9}},"loc":{"start":{"line":498,"column":37},"end":{"line":507,"column":3}}},"33":{"name":"(anonymous_39)","decl":{"start":{"line":509,"column":2},"end":{"line":509,"column":10}},"loc":{"start":{"line":509,"column":41},"end":{"line":518,"column":3}}},"34":{"name":"getKmsClient","decl":{"start":{"line":521,"column":9},"end":{"line":521,"column":21}},"loc":{"start":{"line":521,"column":59},"end":{"line":530,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":38,"column":12},"end":{"line":38,"column":null}},"type":"binary-expr","locations":[{"start":{"line":38,"column":12},"end":{"line":38,"column":21}},{"start":{"line":38,"column":21},"end":{"line":38,"column":null}}]},"1":{"loc":{"start":{"line":85,"column":4},"end":{"line":87,"column":5}},"type":"if","locations":[{"start":{"line":85,"column":4},"end":{"line":87,"column":5}}]},"2":{"loc":{"start":{"line":93,"column":4},"end":{"line":95,"column":5}},"type":"if","locations":[{"start":{"line":93,"column":4},"end":{"line":95,"column":5}}]},"3":{"loc":{"start":{"line":102,"column":4},"end":{"line":104,"column":5}},"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":104,"column":5}}]},"4":{"loc":{"start":{"line":105,"column":4},"end":{"line":107,"column":5}},"type":"if","locations":[{"start":{"line":105,"column":4},"end":{"line":107,"column":5}}]},"5":{"loc":{"start":{"line":113,"column":4},"end":{"line":115,"column":5}},"type":"if","locations":[{"start":{"line":113,"column":4},"end":{"line":115,"column":5}}]},"6":{"loc":{"start":{"line":117,"column":4},"end":{"line":119,"column":5}},"type":"if","locations":[{"start":{"line":117,"column":4},"end":{"line":119,"column":5}}]},"7":{"loc":{"start":{"line":120,"column":4},"end":{"line":122,"column":5}},"type":"if","locations":[{"start":{"line":120,"column":4},"end":{"line":122,"column":5}}]},"8":{"loc":{"start":{"line":139,"column":4},"end":{"line":151,"column":5}},"type":"switch","locations":[{"start":{"line":140,"column":6},"end":{"line":142,"column":null}},{"start":{"line":143,"column":6},"end":{"line":145,"column":null}},{"start":{"line":146,"column":6},"end":{"line":148,"column":null}},{"start":{"line":149,"column":6},"end":{"line":150,"column":null}}]},"9":{"loc":{"start":{"line":156,"column":4},"end":{"line":172,"column":5}},"type":"switch","locations":[{"start":{"line":157,"column":6},"end":{"line":162,"column":null}},{"start":{"line":163,"column":6},"end":{"line":163,"column":32}},{"start":{"line":164,"column":6},"end":{"line":169,"column":null}},{"start":{"line":170,"column":6},"end":{"line":171,"column":null}}]},"10":{"loc":{"start":{"line":177,"column":4},"end":{"line":189,"column":5}},"type":"switch","locations":[{"start":{"line":178,"column":6},"end":{"line":181,"column":null}},{"start":{"line":182,"column":6},"end":{"line":182,"column":32}},{"start":{"line":183,"column":6},"end":{"line":186,"column":null}},{"start":{"line":187,"column":6},"end":{"line":188,"column":null}}]},"11":{"loc":{"start":{"line":194,"column":4},"end":{"line":206,"column":5}},"type":"switch","locations":[{"start":{"line":195,"column":6},"end":{"line":198,"column":null}},{"start":{"line":199,"column":6},"end":{"line":199,"column":32}},{"start":{"line":200,"column":6},"end":{"line":203,"column":null}},{"start":{"line":204,"column":6},"end":{"line":205,"column":null}}]},"12":{"loc":{"start":{"line":254,"column":4},"end":{"line":256,"column":5}},"type":"if","locations":[{"start":{"line":254,"column":4},"end":{"line":256,"column":5}}]},"13":{"loc":{"start":{"line":269,"column":4},"end":{"line":287,"column":5}},"type":"if","locations":[{"start":{"line":269,"column":4},"end":{"line":287,"column":5}}]},"14":{"loc":{"start":{"line":270,"column":6},"end":{"line":272,"column":7}},"type":"if","locations":[{"start":{"line":270,"column":6},"end":{"line":272,"column":7}}]},"15":{"loc":{"start":{"line":273,"column":6},"end":{"line":275,"column":7}},"type":"if","locations":[{"start":{"line":273,"column":6},"end":{"line":275,"column":7}}]},"16":{"loc":{"start":{"line":273,"column":10},"end":{"line":273,"column":49}},"type":"binary-expr","locations":[{"start":{"line":273,"column":10},"end":{"line":273,"column":25}},{"start":{"line":273,"column":29},"end":{"line":273,"column":49}}]},"17":{"loc":{"start":{"line":276,"column":6},"end":{"line":278,"column":7}},"type":"if","locations":[{"start":{"line":276,"column":6},"end":{"line":278,"column":7}}]},"18":{"loc":{"start":{"line":276,"column":10},"end":{"line":276,"column":51}},"type":"binary-expr","locations":[{"start":{"line":276,"column":10},"end":{"line":276,"column":26}},{"start":{"line":276,"column":30},"end":{"line":276,"column":51}}]},"19":{"loc":{"start":{"line":280,"column":6},"end":{"line":283,"column":7}},"type":"if","locations":[{"start":{"line":280,"column":6},"end":{"line":283,"column":7}}]},"20":{"loc":{"start":{"line":284,"column":6},"end":{"line":286,"column":7}},"type":"if","locations":[{"start":{"line":284,"column":6},"end":{"line":286,"column":7}}]},"21":{"loc":{"start":{"line":288,"column":4},"end":{"line":292,"column":5}},"type":"if","locations":[{"start":{"line":288,"column":4},"end":{"line":292,"column":5}}]},"22":{"loc":{"start":{"line":288,"column":8},"end":{"line":288,"column":74}},"type":"binary-expr","locations":[{"start":{"line":288,"column":8},"end":{"line":288,"column":23}},{"start":{"line":288,"column":27},"end":{"line":288,"column":47}},{"start":{"line":288,"column":51},"end":{"line":288,"column":74}}]},"23":{"loc":{"start":{"line":293,"column":4},"end":{"line":297,"column":5}},"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":297,"column":5}}]},"24":{"loc":{"start":{"line":293,"column":8},"end":{"line":293,"column":78}},"type":"binary-expr","locations":[{"start":{"line":293,"column":8},"end":{"line":293,"column":24}},{"start":{"line":293,"column":28},"end":{"line":293,"column":49}},{"start":{"line":293,"column":53},"end":{"line":293,"column":78}}]},"25":{"loc":{"start":{"line":305,"column":6},"end":{"line":307,"column":7}},"type":"if","locations":[{"start":{"line":305,"column":6},"end":{"line":307,"column":7}}]},"26":{"loc":{"start":{"line":305,"column":10},"end":{"line":305,"column":56}},"type":"binary-expr","locations":[{"start":{"line":305,"column":10},"end":{"line":305,"column":34}},{"start":{"line":305,"column":38},"end":{"line":305,"column":56}}]},"27":{"loc":{"start":{"line":316,"column":6},"end":{"line":318,"column":7}},"type":"if","locations":[{"start":{"line":316,"column":6},"end":{"line":318,"column":7}}]},"28":{"loc":{"start":{"line":316,"column":10},"end":{"line":316,"column":56}},"type":"binary-expr","locations":[{"start":{"line":316,"column":10},"end":{"line":316,"column":34}},{"start":{"line":316,"column":38},"end":{"line":316,"column":56}}]},"29":{"loc":{"start":{"line":326,"column":4},"end":{"line":328,"column":5}},"type":"if","locations":[{"start":{"line":326,"column":4},"end":{"line":328,"column":5}}]},"30":{"loc":{"start":{"line":326,"column":8},"end":{"line":326,"column":40}},"type":"binary-expr","locations":[{"start":{"line":326,"column":8},"end":{"line":326,"column":23}},{"start":{"line":326,"column":27},"end":{"line":326,"column":40}}]},"31":{"loc":{"start":{"line":339,"column":4},"end":{"line":367,"column":5}},"type":"if","locations":[{"start":{"line":339,"column":4},"end":{"line":367,"column":5}}]},"32":{"loc":{"start":{"line":339,"column":8},"end":{"line":339,"column":32}},"type":"binary-expr","locations":[{"start":{"line":339,"column":8},"end":{"line":339,"column":19}},{"start":{"line":339,"column":23},"end":{"line":339,"column":32}}]},"33":{"loc":{"start":{"line":340,"column":6},"end":{"line":342,"column":7}},"type":"if","locations":[{"start":{"line":340,"column":6},"end":{"line":342,"column":7}}]},"34":{"loc":{"start":{"line":344,"column":6},"end":{"line":349,"column":7}},"type":"if","locations":[{"start":{"line":344,"column":6},"end":{"line":349,"column":7}}]},"35":{"loc":{"start":{"line":350,"column":25},"end":{"line":350,"column":61}},"type":"cond-expr","locations":[{"start":{"line":350,"column":37},"end":{"line":350,"column":54}},{"start":{"line":350,"column":57},"end":{"line":350,"column":61}}]},"36":{"loc":{"start":{"line":360,"column":6},"end":{"line":363,"column":7}},"type":"if","locations":[{"start":{"line":360,"column":6},"end":{"line":363,"column":7}}]},"37":{"loc":{"start":{"line":364,"column":6},"end":{"line":366,"column":7}},"type":"if","locations":[{"start":{"line":364,"column":6},"end":{"line":366,"column":7}}]},"38":{"loc":{"start":{"line":369,"column":4},"end":{"line":375,"column":5}},"type":"if","locations":[{"start":{"line":369,"column":4},"end":{"line":375,"column":5}}]},"39":{"loc":{"start":{"line":370,"column":6},"end":{"line":372,"column":7}},"type":"if","locations":[{"start":{"line":370,"column":6},"end":{"line":372,"column":7}}]},"40":{"loc":{"start":{"line":384,"column":8},"end":{"line":386,"column":9}},"type":"if","locations":[{"start":{"line":384,"column":8},"end":{"line":386,"column":9}}]},"41":{"loc":{"start":{"line":384,"column":12},"end":{"line":384,"column":44}},"type":"binary-expr","locations":[{"start":{"line":384,"column":12},"end":{"line":384,"column":27}},{"start":{"line":384,"column":31},"end":{"line":384,"column":44}}]},"42":{"loc":{"start":{"line":388,"column":15},"end":{"line":388,"column":75}},"type":"cond-expr","locations":[{"start":{"line":388,"column":65},"end":{"line":388,"column":68}},{"start":{"line":388,"column":71},"end":{"line":388,"column":75}}]},"43":{"loc":{"start":{"line":388,"column":15},"end":{"line":388,"column":62}},"type":"binary-expr","locations":[{"start":{"line":388,"column":15},"end":{"line":388,"column":26}},{"start":{"line":388,"column":30},"end":{"line":388,"column":62}}]},"44":{"loc":{"start":{"line":390,"column":8},"end":{"line":392,"column":9}},"type":"if","locations":[{"start":{"line":390,"column":8},"end":{"line":392,"column":9}}]},"45":{"loc":{"start":{"line":390,"column":12},"end":{"line":390,"column":58}},"type":"binary-expr","locations":[{"start":{"line":390,"column":12},"end":{"line":390,"column":36}},{"start":{"line":390,"column":40},"end":{"line":390,"column":58}}]},"46":{"loc":{"start":{"line":401,"column":8},"end":{"line":403,"column":9}},"type":"if","locations":[{"start":{"line":401,"column":8},"end":{"line":403,"column":9}}]},"47":{"loc":{"start":{"line":405,"column":8},"end":{"line":407,"column":9}},"type":"if","locations":[{"start":{"line":405,"column":8},"end":{"line":407,"column":9}}]},"48":{"loc":{"start":{"line":405,"column":12},"end":{"line":405,"column":44}},"type":"binary-expr","locations":[{"start":{"line":405,"column":12},"end":{"line":405,"column":27}},{"start":{"line":405,"column":31},"end":{"line":405,"column":44}}]},"49":{"loc":{"start":{"line":411,"column":8},"end":{"line":413,"column":9}},"type":"if","locations":[{"start":{"line":411,"column":8},"end":{"line":413,"column":9}}]},"50":{"loc":{"start":{"line":411,"column":12},"end":{"line":411,"column":58}},"type":"binary-expr","locations":[{"start":{"line":411,"column":12},"end":{"line":411,"column":36}},{"start":{"line":411,"column":40},"end":{"line":411,"column":58}}]},"51":{"loc":{"start":{"line":420,"column":11},"end":{"line":423,"column":59}},"type":"binary-expr","locations":[{"start":{"line":420,"column":11},"end":{"line":420,"column":41}},{"start":{"line":421,"column":6},"end":{"line":421,"column":28}},{"start":{"line":422,"column":6},"end":{"line":422,"column":17}},{"start":{"line":423,"column":6},"end":{"line":423,"column":59}}]},"52":{"loc":{"start":{"line":427,"column":4},"end":{"line":429,"column":5}},"type":"if","locations":[{"start":{"line":427,"column":4},"end":{"line":429,"column":5}}]},"53":{"loc":{"start":{"line":430,"column":4},"end":{"line":477,"column":5}},"type":"switch","locations":[{"start":{"line":431,"column":6},"end":{"line":451,"column":7}},{"start":{"line":452,"column":6},"end":{"line":474,"column":7}},{"start":{"line":475,"column":6},"end":{"line":476,"column":null}}]},"54":{"loc":{"start":{"line":433,"column":8},"end":{"line":435,"column":9}},"type":"if","locations":[{"start":{"line":433,"column":8},"end":{"line":435,"column":9}}]},"55":{"loc":{"start":{"line":437,"column":8},"end":{"line":439,"column":9}},"type":"if","locations":[{"start":{"line":437,"column":8},"end":{"line":439,"column":9}}]},"56":{"loc":{"start":{"line":443,"column":8},"end":{"line":445,"column":9}},"type":"if","locations":[{"start":{"line":443,"column":8},"end":{"line":445,"column":9}}]},"57":{"loc":{"start":{"line":446,"column":8},"end":{"line":450,"column":9}},"type":"if","locations":[{"start":{"line":446,"column":8},"end":{"line":450,"column":9}},{"start":{"line":448,"column":15},"end":{"line":450,"column":9}}]},"58":{"loc":{"start":{"line":454,"column":8},"end":{"line":458,"column":9}},"type":"if","locations":[{"start":{"line":454,"column":8},"end":{"line":458,"column":9}},{"start":{"line":456,"column":15},"end":{"line":458,"column":9}}]},"59":{"loc":{"start":{"line":459,"column":8},"end":{"line":461,"column":9}},"type":"if","locations":[{"start":{"line":459,"column":8},"end":{"line":461,"column":9}}]},"60":{"loc":{"start":{"line":463,"column":8},"end":{"line":469,"column":9}},"type":"if","locations":[{"start":{"line":463,"column":8},"end":{"line":469,"column":9}}]},"61":{"loc":{"start":{"line":465,"column":10},"end":{"line":467,"column":11}},"type":"if","locations":[{"start":{"line":465,"column":10},"end":{"line":467,"column":11}}]},"62":{"loc":{"start":{"line":488,"column":4},"end":{"line":494,"column":5}},"type":"if","locations":[{"start":{"line":488,"column":4},"end":{"line":494,"column":5}}]},"63":{"loc":{"start":{"line":499,"column":4},"end":{"line":506,"column":5}},"type":"switch","locations":[{"start":{"line":500,"column":6},"end":{"line":501,"column":null}},{"start":{"line":502,"column":6},"end":{"line":503,"column":null}},{"start":{"line":504,"column":6},"end":{"line":505,"column":null}}]},"64":{"loc":{"start":{"line":510,"column":4},"end":{"line":517,"column":5}},"type":"switch","locations":[{"start":{"line":511,"column":6},"end":{"line":512,"column":null}},{"start":{"line":513,"column":6},"end":{"line":514,"column":null}},{"start":{"line":515,"column":6},"end":{"line":516,"column":null}}]},"65":{"loc":{"start":{"line":524,"column":2},"end":{"line":528,"column":3}},"type":"if","locations":[{"start":{"line":524,"column":2},"end":{"line":528,"column":3}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":3,"9":3,"10":3,"11":3,"12":3,"13":3,"14":3,"15":3,"16":3,"17":3,"18":3,"19":3,"20":3,"21":3,"22":3,"23":3,"24":3,"25":3,"26":15,"27":15,"28":3,"29":9,"30":9,"31":9,"32":9,"33":9,"34":0,"35":0,"36":9,"37":9,"38":9,"39":1,"40":9,"41":9,"42":9,"43":9,"44":0,"45":9,"46":0,"47":9,"48":9,"49":9,"50":8,"51":1,"52":1,"53":0,"54":1,"55":0,"56":1,"57":3,"58":11,"59":11,"60":2,"61":0,"62":0,"63":2,"64":0,"65":2,"66":2,"67":0,"68":0,"69":2,"70":2,"71":0,"72":6,"73":0,"74":0,"75":0,"76":6,"77":6,"78":6,"79":0,"80":12,"81":1,"82":1,"83":1,"84":11,"85":11,"86":11,"87":0,"88":0,"89":0,"90":1,"91":1,"92":6,"93":6,"94":11,"95":11,"96":3,"97":3,"98":9,"99":9,"100":9,"101":9,"102":9,"103":15,"104":11,"105":7,"106":11,"107":7,"108":7,"109":7,"110":7,"111":7,"112":7,"113":2,"114":0,"115":2,"116":0,"117":2,"118":0,"119":2,"120":2,"121":0,"122":2,"123":0,"124":7,"125":0,"126":7,"127":0,"128":7,"129":7,"130":7,"131":2,"132":2,"133":0,"134":2,"135":2,"136":0,"137":0,"138":0,"139":11,"140":11,"141":11,"142":10,"143":11,"144":11,"145":11,"146":11,"147":11,"148":2,"149":0,"150":2,"151":2,"152":2,"153":2,"154":2,"155":2,"156":2,"157":2,"158":2,"159":0,"160":2,"161":0,"162":11,"163":5,"164":3,"165":5,"166":5,"167":11,"168":11,"169":11,"170":11,"171":0,"172":11,"173":9,"174":2,"175":2,"176":0,"177":2,"178":2,"179":2,"180":2,"181":2,"182":2,"183":2,"184":2,"185":2,"186":0,"187":0,"188":0,"189":11,"190":11,"191":11,"192":0,"193":11,"194":4,"195":4,"196":0,"197":4,"198":4,"199":0,"200":4,"201":4,"202":4,"203":4,"204":0,"205":4,"206":2,"207":2,"208":7,"209":5,"210":2,"211":7,"212":0,"213":7,"214":7,"215":1,"216":1,"217":0,"218":1,"219":7,"220":7,"221":7,"222":7,"223":0,"224":0,"225":0,"226":0,"227":1,"228":1,"229":0,"230":1,"231":6,"232":4,"233":2,"234":0,"235":9,"236":4,"237":5,"238":0,"239":3,"240":5,"241":5,"242":5,"243":2,"244":2,"245":2,"246":5},"f":{"0":3,"1":3,"2":3,"3":15,"4":3,"5":9,"6":0,"7":9,"8":9,"9":9,"10":11,"11":2,"12":2,"13":6,"14":12,"15":0,"16":1,"17":6,"18":11,"19":9,"20":15,"21":11,"22":7,"23":7,"24":2,"25":11,"26":11,"27":2,"28":11,"29":11,"30":0,"31":1,"32":6,"33":9,"34":5},"b":{"0":[3,3],"1":[0],"2":[1],"3":[0],"4":[0],"5":[8],"6":[0],"7":[0],"8":[0,0,2,0],"9":[0,0,2,0],"10":[0,2,6,0],"11":[1,5,11,0],"12":[7],"13":[2],"14":[0],"15":[0],"16":[2,2],"17":[0],"18":[2,2],"19":[0],"20":[0],"21":[0],"22":[7,7,7],"23":[0],"24":[7,7,7],"25":[2],"26":[2,2],"27":[0],"28":[0,0],"29":[10],"30":[11,1],"31":[2],"32":[11,9],"33":[0],"34":[2],"35":[0,2],"36":[0],"37":[0],"38":[5],"39":[3],"40":[0],"41":[11,11],"42":[9,0],"43":[9,9],"44":[2],"45":[2,2],"46":[2],"47":[2],"48":[2,0],"49":[0],"50":[0,0],"51":[11,4,0,0],"52":[0],"53":[4,7,0],"54":[0],"55":[0],"56":[0],"57":[2,2],"58":[5,2],"59":[0],"60":[1],"61":[0],"62":[0],"63":[4,2,0],"64":[4,5,0],"65":[2]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/kms-registry.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/kms-registry.ts","statementMap":{"0":{"start":{"line":19,"column":0},"end":{"line":19,"column":16}},"1":{"start":{"line":23,"column":0},"end":{"line":23,"column":16}},"2":{"start":{"line":32,"column":0},"end":{"line":32,"column":16}},"3":{"start":{"line":36,"column":0},"end":{"line":36,"column":16}},"4":{"start":{"line":1,"column":0},"end":{"line":1,"column":70}},"5":{"start":{"line":14,"column":32},"end":{"line":14,"column":34}},"6":{"start":{"line":16,"column":32},"end":{"line":16,"column":34}},"7":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"8":{"start":{"line":24,"column":2},"end":{"line":28,"column":3}},"9":{"start":{"line":25,"column":4},"end":{"line":27,"column":5}},"10":{"start":{"line":26,"column":6},"end":{"line":26,"column":null}},"11":{"start":{"line":29,"column":2},"end":{"line":29,"column":null}},"12":{"start":{"line":33,"column":2},"end":{"line":33,"column":null}},"13":{"start":{"line":37,"column":2},"end":{"line":41,"column":3}},"14":{"start":{"line":38,"column":4},"end":{"line":40,"column":5}},"15":{"start":{"line":39,"column":6},"end":{"line":39,"column":null}},"16":{"start":{"line":42,"column":2},"end":{"line":42,"column":null}}},"fnMap":{"0":{"name":"registerKmsDriver","decl":{"start":{"line":19,"column":16},"end":{"line":19,"column":33}},"loc":{"start":{"line":19,"column":54},"end":{"line":21,"column":1}}},"1":{"name":"getKmsDriver","decl":{"start":{"line":23,"column":16},"end":{"line":23,"column":28}},"loc":{"start":{"line":23,"column":43},"end":{"line":30,"column":1}}},"2":{"name":"registerKmsClient","decl":{"start":{"line":32,"column":16},"end":{"line":32,"column":33}},"loc":{"start":{"line":32,"column":54},"end":{"line":34,"column":1}}},"3":{"name":"getKmsClient","decl":{"start":{"line":36,"column":16},"end":{"line":36,"column":28}},"loc":{"start":{"line":36,"column":43},"end":{"line":43,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":25,"column":4},"end":{"line":27,"column":5}},"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":27,"column":5}}]},"1":{"loc":{"start":{"line":38,"column":4},"end":{"line":40,"column":5}},"type":"if","locations":[{"start":{"line":38,"column":4},"end":{"line":40,"column":5}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":2,"9":2,"10":2,"11":0,"12":2,"13":5,"14":3,"15":3,"16":2},"f":{"0":3,"1":2,"2":2,"3":5},"b":{"0":[2],"1":[3]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/localkms/local-client.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/localkms/local-client.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":55}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":37}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":46}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":68}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":52}},"5":{"start":{"line":14,"column":4},"end":{"line":16,"column":5}},"6":{"start":{"line":15,"column":6},"end":{"line":15,"column":null}},"7":{"start":{"line":17,"column":4},"end":{"line":19,"column":5}},"8":{"start":{"line":18,"column":6},"end":{"line":18,"column":null}},"9":{"start":{"line":20,"column":4},"end":{"line":20,"column":null}},"10":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}},"11":{"start":{"line":25,"column":19},"end":{"line":25,"column":105}},"12":{"start":{"line":26,"column":33},"end":{"line":29,"column":6}},"13":{"start":{"line":30,"column":4},"end":{"line":30,"column":null}},"14":{"start":{"line":34,"column":4},"end":{"line":34,"column":null}},"15":{"start":{"line":38,"column":4},"end":{"line":38,"column":null}},"16":{"start":{"line":42,"column":4},"end":{"line":42,"column":null}},"17":{"start":{"line":8,"column":0},"end":{"line":8,"column":13}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":14}},"loc":{"start":{"line":13,"column":29},"end":{"line":22,"column":3}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":24,"column":2},"end":{"line":24,"column":7}},"loc":{"start":{"line":24,"column":14},"end":{"line":31,"column":3}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":33,"column":2},"end":{"line":33,"column":11}},"loc":{"start":{"line":33,"column":26},"end":{"line":35,"column":3}}},"3":{"name":"(anonymous_9)","decl":{"start":{"line":37,"column":2},"end":{"line":37,"column":7}},"loc":{"start":{"line":37,"column":33},"end":{"line":39,"column":3}}},"4":{"name":"(anonymous_10)","decl":{"start":{"line":41,"column":2},"end":{"line":41,"column":7}},"loc":{"start":{"line":41,"column":34},"end":{"line":43,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":4},"end":{"line":16,"column":5}},"type":"if","locations":[{"start":{"line":14,"column":4},"end":{"line":16,"column":5}}]},"1":{"loc":{"start":{"line":17,"column":4},"end":{"line":19,"column":5}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":19,"column":5}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":2,"6":0,"7":2,"8":0,"9":2,"10":2,"11":7,"12":7,"13":7,"14":3,"15":2,"16":5,"17":3},"f":{"0":2,"1":7,"2":3,"3":2,"4":5},"b":{"0":[0],"1":[0]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/localkms/local-driver.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/localkms/local-driver.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":72}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":46}},"2":{"start":{"line":10,"column":4},"end":{"line":10,"column":null}},"3":{"start":{"line":14,"column":4},"end":{"line":14,"column":null}},"4":{"start":{"line":18,"column":19},"end":{"line":18,"column":52}},"5":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"6":{"start":{"line":4,"column":0},"end":{"line":4,"column":13}},"7":{"start":{"line":6,"column":9},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":9},"end":{"line":7,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":8}},"loc":{"start":{"line":9,"column":17},"end":{"line":11,"column":3}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":17}},"loc":{"start":{"line":13,"column":17},"end":{"line":15,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":17,"column":2},"end":{"line":17,"column":14}},"loc":{"start":{"line":17,"column":58},"end":{"line":20,"column":3}}}},"branchMap":{},"s":{"0":3,"1":3,"2":3,"3":2,"4":2,"5":2,"6":3,"7":3,"8":3},"f":{"0":3,"1":2,"2":2},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/aead.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/aead.ts","statementMap":{"0":{"start":{"line":18,"column":0},"end":{"line":18,"column":22}}},"fnMap":{},"branchMap":{},"s":{"0":3},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/aes_gcm.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/aes_gcm.ts","statementMap":{"0":{"start":{"line":93,"column":0},"end":{"line":93,"column":7}},"1":{"start":{"line":7,"column":0},"end":{"line":7,"column":28}},"2":{"start":{"line":8,"column":0},"end":{"line":8,"column":65}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":33}},"4":{"start":{"line":11,"column":0},"end":{"line":11,"column":35}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":43}},"6":{"start":{"line":13,"column":0},"end":{"line":13,"column":33}},"7":{"start":{"line":19,"column":33},"end":{"line":19,"column":35}},"8":{"start":{"line":25,"column":33},"end":{"line":25,"column":36}},"9":{"start":{"line":34,"column":4},"end":{"line":34,"column":12}},"10":{"start":{"line":33,"column":31},"end":{"line":33,"column":45}},"11":{"start":{"line":41,"column":4},"end":{"line":41,"column":44}},"12":{"start":{"line":42,"column":4},"end":{"line":44,"column":5}},"13":{"start":{"line":43,"column":6},"end":{"line":43,"column":51}},"14":{"start":{"line":45,"column":15},"end":{"line":45,"column":49}},"15":{"start":{"line":46,"column":30},"end":{"line":50,"column":6}},"16":{"start":{"line":51,"column":4},"end":{"line":53,"column":5}},"17":{"start":{"line":52,"column":6},"end":{"line":52,"column":45}},"18":{"start":{"line":55,"column":8},"end":{"line":55,"column":61}},"19":{"start":{"line":56,"column":4},"end":{"line":56,"column":56}},"20":{"start":{"line":63,"column":4},"end":{"line":63,"column":45}},"21":{"start":{"line":64,"column":4},"end":{"line":66,"column":5}},"22":{"start":{"line":65,"column":6},"end":{"line":65,"column":58}},"23":{"start":{"line":67,"column":4},"end":{"line":69,"column":5}},"24":{"start":{"line":68,"column":6},"end":{"line":68,"column":51}},"25":{"start":{"line":70,"column":15},"end":{"line":70,"column":47}},"26":{"start":{"line":71,"column":4},"end":{"line":71,"column":53}},"27":{"start":{"line":72,"column":30},"end":{"line":76,"column":6}},"28":{"start":{"line":77,"column":4},"end":{"line":79,"column":5}},"29":{"start":{"line":78,"column":6},"end":{"line":78,"column":45}},"30":{"start":{"line":80,"column":4},"end":{"line":89,"column":5}},"31":{"start":{"line":81,"column":6},"end":{"line":83,"column":66}},"32":{"start":{"line":88,"column":6},"end":{"line":88,"column":48}},"33":{"start":{"line":32,"column":0},"end":{"line":32,"column":13}},"34":{"start":{"line":94,"column":2},"end":{"line":94,"column":36}},"35":{"start":{"line":95,"column":2},"end":{"line":95,"column":44}},"36":{"start":{"line":96,"column":23},"end":{"line":104,"column":29}},"37":{"start":{"line":107,"column":2},"end":{"line":107,"column":34}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":33,"column":2},"end":{"line":33,"column":31}},"loc":{"start":{"line":33,"column":45},"end":{"line":35,"column":3}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":39,"column":2},"end":{"line":39,"column":7}},"loc":{"start":{"line":39,"column":66},"end":{"line":57,"column":3}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":61,"column":2},"end":{"line":61,"column":7}},"loc":{"start":{"line":61,"column":67},"end":{"line":90,"column":3}}},"3":{"name":"fromRawKey","decl":{"start":{"line":93,"column":22},"end":{"line":93,"column":32}},"loc":{"start":{"line":93,"column":48},"end":{"line":108,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":42,"column":4},"end":{"line":44,"column":5}},"type":"if","locations":[{"start":{"line":42,"column":4},"end":{"line":44,"column":5}}]},"1":{"loc":{"start":{"line":51,"column":4},"end":{"line":53,"column":5}},"type":"if","locations":[{"start":{"line":51,"column":4},"end":{"line":53,"column":5}}]},"2":{"loc":{"start":{"line":64,"column":4},"end":{"line":66,"column":5}},"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":66,"column":5}}]},"3":{"loc":{"start":{"line":67,"column":4},"end":{"line":69,"column":5}},"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":69,"column":5}}]},"4":{"loc":{"start":{"line":77,"column":4},"end":{"line":79,"column":5}},"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":79,"column":5}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":3,"9":17,"10":17,"11":6,"12":6,"13":6,"14":6,"15":6,"16":6,"17":6,"18":6,"19":6,"20":11,"21":11,"22":0,"23":11,"24":11,"25":11,"26":11,"27":11,"28":11,"29":11,"30":11,"31":11,"32":0,"33":3,"34":17,"35":17,"36":17,"37":17},"f":{"0":17,"1":6,"2":11,"3":17},"b":{"0":[6],"1":[6],"2":[0],"3":[11],"4":[11]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/aes_siv.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/aes_siv.ts","statementMap":{"0":{"start":{"line":40,"column":0},"end":{"line":40,"column":7}},"1":{"start":{"line":7,"column":0},"end":{"line":7,"column":28}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":61}},"3":{"start":{"line":11,"column":0},"end":{"line":11,"column":33}},"4":{"start":{"line":20,"column":4},"end":{"line":20,"column":12}},"5":{"start":{"line":19,"column":31},"end":{"line":19,"column":46}},"6":{"start":{"line":27,"column":14},"end":{"line":27,"column":90}},"7":{"start":{"line":28,"column":4},"end":{"line":28,"column":49}},"8":{"start":{"line":35,"column":14},"end":{"line":35,"column":90}},"9":{"start":{"line":36,"column":4},"end":{"line":36,"column":50}},"10":{"start":{"line":18,"column":0},"end":{"line":18,"column":13}},"11":{"start":{"line":41,"column":2},"end":{"line":41,"column":25}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":19,"column":2},"end":{"line":19,"column":31}},"loc":{"start":{"line":19,"column":46},"end":{"line":21,"column":3}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":25,"column":2},"end":{"line":25,"column":7}},"loc":{"start":{"line":25,"column":66},"end":{"line":29,"column":3}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":33,"column":2},"end":{"line":33,"column":7}},"loc":{"start":{"line":33,"column":67},"end":{"line":37,"column":3}}},"3":{"name":"fromRawKey","decl":{"start":{"line":40,"column":22},"end":{"line":40,"column":32}},"loc":{"start":{"line":40,"column":48},"end":{"line":42,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":3,"3":3,"4":1,"5":1,"6":0,"7":0,"8":1,"9":1,"10":3,"11":1},"f":{"0":1,"1":0,"2":1,"3":1},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/bytes.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/bytes.ts","statementMap":{"0":{"start":{"line":15,"column":0},"end":{"line":15,"column":16}},"1":{"start":{"line":29,"column":0},"end":{"line":29,"column":16}},"2":{"start":{"line":53,"column":0},"end":{"line":53,"column":16}},"3":{"start":{"line":87,"column":0},"end":{"line":87,"column":16}},"4":{"start":{"line":106,"column":0},"end":{"line":106,"column":16}},"5":{"start":{"line":124,"column":0},"end":{"line":124,"column":16}},"6":{"start":{"line":141,"column":0},"end":{"line":141,"column":16}},"7":{"start":{"line":161,"column":0},"end":{"line":161,"column":16}},"8":{"start":{"line":180,"column":0},"end":{"line":180,"column":16}},"9":{"start":{"line":7,"column":0},"end":{"line":7,"column":82}},"10":{"start":{"line":16,"column":2},"end":{"line":18,"column":3}},"11":{"start":{"line":17,"column":4},"end":{"line":17,"column":17}},"12":{"start":{"line":19,"column":15},"end":{"line":19,"column":16}},"13":{"start":{"line":20,"column":2},"end":{"line":22,"column":3}},"14":{"start":{"line":20,"column":15},"end":{"line":20,"column":16}},"15":{"start":{"line":21,"column":4},"end":{"line":21,"column":30}},"16":{"start":{"line":23,"column":2},"end":{"line":23,"column":21}},"17":{"start":{"line":30,"column":15},"end":{"line":30,"column":16}},"18":{"start":{"line":31,"column":2},"end":{"line":34,"column":3}},"19":{"start":{"line":31,"column":15},"end":{"line":31,"column":16}},"20":{"start":{"line":33,"column":4},"end":{"line":33,"column":34}},"21":{"start":{"line":35,"column":17},"end":{"line":35,"column":39}},"22":{"start":{"line":36,"column":18},"end":{"line":36,"column":19}},"23":{"start":{"line":37,"column":2},"end":{"line":42,"column":3}},"24":{"start":{"line":37,"column":15},"end":{"line":37,"column":16}},"25":{"start":{"line":39,"column":4},"end":{"line":39,"column":40}},"26":{"start":{"line":41,"column":4},"end":{"line":41,"column":37}},"27":{"start":{"line":43,"column":2},"end":{"line":43,"column":16}},"28":{"start":{"line":54,"column":2},"end":{"line":56,"column":3}},"29":{"start":{"line":55,"column":4},"end":{"line":55,"column":76}},"30":{"start":{"line":57,"column":2},"end":{"line":59,"column":3}},"31":{"start":{"line":58,"column":4},"end":{"line":58,"column":74}},"32":{"start":{"line":60,"column":2},"end":{"line":63,"column":3}},"33":{"start":{"line":61,"column":4},"end":{"line":62,"column":72}},"34":{"start":{"line":64,"column":21},"end":{"line":64,"column":28}},"35":{"start":{"line":65,"column":12},"end":{"line":65,"column":30}},"36":{"start":{"line":66,"column":13},"end":{"line":66,"column":31}},"37":{"start":{"line":67,"column":17},"end":{"line":67,"column":34}},"38":{"start":{"line":68,"column":2},"end":{"line":71,"column":3}},"39":{"start":{"line":68,"column":15},"end":{"line":68,"column":16}},"40":{"start":{"line":69,"column":4},"end":{"line":69,"column":26}},"41":{"start":{"line":70,"column":4},"end":{"line":70,"column":15}},"42":{"start":{"line":72,"column":2},"end":{"line":75,"column":3}},"43":{"start":{"line":72,"column":15},"end":{"line":72,"column":16}},"44":{"start":{"line":73,"column":4},"end":{"line":73,"column":27}},"45":{"start":{"line":74,"column":4},"end":{"line":74,"column":16}},"46":{"start":{"line":76,"column":2},"end":{"line":76,"column":16}},"47":{"start":{"line":88,"column":2},"end":{"line":91,"column":3}},"48":{"start":{"line":89,"column":4},"end":{"line":90,"column":51}},"49":{"start":{"line":92,"column":14},"end":{"line":92,"column":44}},"50":{"start":{"line":93,"column":2},"end":{"line":95,"column":3}},"51":{"start":{"line":93,"column":15},"end":{"line":93,"column":16}},"52":{"start":{"line":94,"column":4},"end":{"line":94,"column":55}},"53":{"start":{"line":96,"column":2},"end":{"line":96,"column":13}},"54":{"start":{"line":107,"column":15},"end":{"line":107,"column":17}},"55":{"start":{"line":108,"column":2},"end":{"line":111,"column":3}},"56":{"start":{"line":108,"column":15},"end":{"line":108,"column":16}},"57":{"start":{"line":109,"column":20},"end":{"line":109,"column":41}},"58":{"start":{"line":110,"column":4},"end":{"line":110,"column":59}},"59":{"start":{"line":112,"column":2},"end":{"line":112,"column":16}},"60":{"start":{"line":125,"column":2},"end":{"line":128,"column":3}},"61":{"start":{"line":126,"column":25},"end":{"line":126,"column":70}},"62":{"start":{"line":127,"column":4},"end":{"line":127,"column":53}},"63":{"start":{"line":129,"column":2},"end":{"line":129,"column":46}},"64":{"start":{"line":142,"column":18},"end":{"line":146,"column":40}},"65":{"start":{"line":147,"column":2},"end":{"line":149,"column":3}},"66":{"start":{"line":148,"column":4},"end":{"line":148,"column":59}},"67":{"start":{"line":150,"column":2},"end":{"line":150,"column":17}},"68":{"start":{"line":162,"column":17},"end":{"line":162,"column":19}},"69":{"start":{"line":163,"column":10},"end":{"line":163,"column":11}},"70":{"start":{"line":164,"column":2},"end":{"line":167,"column":3}},"71":{"start":{"line":164,"column":15},"end":{"line":164,"column":16}},"72":{"start":{"line":165,"column":14},"end":{"line":165,"column":31}},"73":{"start":{"line":166,"column":4},"end":{"line":166,"column":20}},"74":{"start":{"line":168,"column":2},"end":{"line":168,"column":32}},"75":{"start":{"line":181,"column":12},"end":{"line":181,"column":14}},"76":{"start":{"line":182,"column":2},"end":{"line":184,"column":3}},"77":{"start":{"line":182,"column":15},"end":{"line":182,"column":16}},"78":{"start":{"line":183,"column":4},"end":{"line":183,"column":41}},"79":{"start":{"line":185,"column":2},"end":{"line":185,"column":13}}},"fnMap":{"0":{"name":"isEqual","decl":{"start":{"line":15,"column":16},"end":{"line":15,"column":23}},"loc":{"start":{"line":15,"column":56},"end":{"line":24,"column":1}}},"1":{"name":"concat","decl":{"start":{"line":29,"column":16},"end":{"line":29,"column":22}},"loc":{"start":{"line":29,"column":48},"end":{"line":44,"column":1}}},"2":{"name":"fromNumber","decl":{"start":{"line":53,"column":16},"end":{"line":53,"column":26}},"loc":{"start":{"line":53,"column":40},"end":{"line":77,"column":1}}},"3":{"name":"fromHex","decl":{"start":{"line":87,"column":16},"end":{"line":87,"column":23}},"loc":{"start":{"line":87,"column":35},"end":{"line":97,"column":1}}},"4":{"name":"toHex","decl":{"start":{"line":106,"column":16},"end":{"line":106,"column":21}},"loc":{"start":{"line":106,"column":39},"end":{"line":113,"column":1}}},"5":{"name":"fromBase64","decl":{"start":{"line":124,"column":16},"end":{"line":124,"column":26}},"loc":{"start":{"line":124,"column":65},"end":{"line":130,"column":1}}},"6":{"name":"toBase64","decl":{"start":{"line":141,"column":16},"end":{"line":141,"column":24}},"loc":{"start":{"line":141,"column":65},"end":{"line":151,"column":1}}},"7":{"name":"fromByteString","decl":{"start":{"line":161,"column":16},"end":{"line":161,"column":30}},"loc":{"start":{"line":161,"column":42},"end":{"line":169,"column":1}}},"8":{"name":"toByteString","decl":{"start":{"line":180,"column":16},"end":{"line":180,"column":28}},"loc":{"start":{"line":180,"column":46},"end":{"line":186,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":2},"end":{"line":18,"column":3}},"type":"if","locations":[{"start":{"line":16,"column":2},"end":{"line":18,"column":3}}]},"1":{"loc":{"start":{"line":54,"column":2},"end":{"line":56,"column":3}},"type":"if","locations":[{"start":{"line":54,"column":2},"end":{"line":56,"column":3}}]},"2":{"loc":{"start":{"line":54,"column":6},"end":{"line":54,"column":44}},"type":"binary-expr","locations":[{"start":{"line":54,"column":6},"end":{"line":54,"column":25}},{"start":{"line":54,"column":29},"end":{"line":54,"column":44}}]},"3":{"loc":{"start":{"line":57,"column":2},"end":{"line":59,"column":3}},"type":"if","locations":[{"start":{"line":57,"column":2},"end":{"line":59,"column":3}}]},"4":{"loc":{"start":{"line":60,"column":2},"end":{"line":63,"column":3}},"type":"if","locations":[{"start":{"line":60,"column":2},"end":{"line":63,"column":3}}]},"5":{"loc":{"start":{"line":88,"column":2},"end":{"line":91,"column":3}},"type":"if","locations":[{"start":{"line":88,"column":2},"end":{"line":91,"column":3}}]},"6":{"loc":{"start":{"line":110,"column":14},"end":{"line":110,"column":58}},"type":"cond-expr","locations":[{"start":{"line":110,"column":35},"end":{"line":110,"column":42}},{"start":{"line":110,"column":45},"end":{"line":110,"column":58}}]},"7":{"loc":{"start":{"line":125,"column":2},"end":{"line":128,"column":3}},"type":"if","locations":[{"start":{"line":125,"column":2},"end":{"line":128,"column":3}}]},"8":{"loc":{"start":{"line":147,"column":2},"end":{"line":149,"column":3}},"type":"if","locations":[{"start":{"line":147,"column":2},"end":{"line":149,"column":3}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":3,"9":3,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":6,"18":6,"19":6,"20":12,"21":6,"22":6,"23":6,"24":6,"25":12,"26":12,"27":6,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0},"f":{"0":0,"1":6,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0},"b":{"0":[0],"1":[0],"2":[0,0],"3":[0],"4":[0],"5":[0],"6":[0,0],"7":[0],"8":[0]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/hkdf.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/hkdf.ts","statementMap":{"0":{"start":{"line":31,"column":0},"end":{"line":31,"column":7}},"1":{"start":{"line":11,"column":0},"end":{"line":11,"column":82}},"2":{"start":{"line":13,"column":0},"end":{"line":13,"column":52}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":43}},"4":{"start":{"line":35,"column":2},"end":{"line":37,"column":3}},"5":{"start":{"line":36,"column":4},"end":{"line":36,"column":67}},"6":{"start":{"line":38,"column":2},"end":{"line":40,"column":3}},"7":{"start":{"line":39,"column":4},"end":{"line":39,"column":65}},"8":{"start":{"line":41,"column":2},"end":{"line":62,"column":3}},"9":{"start":{"line":43,"column":6},"end":{"line":43,"column":22}},"10":{"start":{"line":44,"column":6},"end":{"line":46,"column":7}},"11":{"start":{"line":45,"column":8},"end":{"line":45,"column":62}},"12":{"start":{"line":47,"column":6},"end":{"line":47,"column":12}},"13":{"start":{"line":49,"column":6},"end":{"line":49,"column":22}},"14":{"start":{"line":50,"column":6},"end":{"line":52,"column":7}},"15":{"start":{"line":51,"column":8},"end":{"line":51,"column":62}},"16":{"start":{"line":53,"column":6},"end":{"line":53,"column":12}},"17":{"start":{"line":55,"column":6},"end":{"line":55,"column":22}},"18":{"start":{"line":56,"column":6},"end":{"line":58,"column":7}},"19":{"start":{"line":57,"column":8},"end":{"line":57,"column":62}},"20":{"start":{"line":59,"column":6},"end":{"line":59,"column":12}},"21":{"start":{"line":61,"column":6},"end":{"line":61,"column":70}},"22":{"start":{"line":63,"column":2},"end":{"line":63,"column":36}},"23":{"start":{"line":64,"column":2},"end":{"line":64,"column":37}},"24":{"start":{"line":65,"column":13},"end":{"line":65,"column":21}},"25":{"start":{"line":66,"column":2},"end":{"line":68,"column":3}},"26":{"start":{"line":67,"column":4},"end":{"line":67,"column":38}},"27":{"start":{"line":69,"column":2},"end":{"line":69,"column":37}},"28":{"start":{"line":72,"column":13},"end":{"line":72,"column":57}},"29":{"start":{"line":73,"column":14},"end":{"line":75,"column":10}},"30":{"start":{"line":78,"column":2},"end":{"line":78,"column":53}},"31":{"start":{"line":79,"column":12},"end":{"line":79,"column":13}},"32":{"start":{"line":80,"column":12},"end":{"line":80,"column":13}},"33":{"start":{"line":81,"column":15},"end":{"line":81,"column":32}},"34":{"start":{"line":82,"column":17},"end":{"line":82,"column":37}},"35":{"start":{"line":83,"column":2},"end":{"line":97,"column":3}},"36":{"start":{"line":84,"column":18},"end":{"line":84,"column":65}},"37":{"start":{"line":85,"column":4},"end":{"line":85,"column":25}},"38":{"start":{"line":86,"column":4},"end":{"line":86,"column":35}},"39":{"start":{"line":87,"column":4},"end":{"line":87,"column":34}},"40":{"start":{"line":88,"column":4},"end":{"line":88,"column":42}},"41":{"start":{"line":89,"column":4},"end":{"line":96,"column":5}},"42":{"start":{"line":90,"column":6},"end":{"line":90,"column":30}},"43":{"start":{"line":91,"column":6},"end":{"line":91,"column":27}},"44":{"start":{"line":92,"column":6},"end":{"line":92,"column":12}},"45":{"start":{"line":94,"column":6},"end":{"line":94,"column":54}},"46":{"start":{"line":95,"column":6},"end":{"line":95,"column":12}},"47":{"start":{"line":98,"column":2},"end":{"line":98,"column":16}}},"fnMap":{"0":{"name":"compute","decl":{"start":{"line":31,"column":22},"end":{"line":31,"column":29}},"loc":{"start":{"line":33,"column":25},"end":{"line":99,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":35,"column":2},"end":{"line":37,"column":3}},"type":"if","locations":[{"start":{"line":35,"column":2},"end":{"line":37,"column":3}}]},"1":{"loc":{"start":{"line":38,"column":2},"end":{"line":40,"column":3}},"type":"if","locations":[{"start":{"line":38,"column":2},"end":{"line":40,"column":3}}]},"2":{"loc":{"start":{"line":41,"column":2},"end":{"line":62,"column":3}},"type":"switch","locations":[{"start":{"line":42,"column":4},"end":{"line":47,"column":12}},{"start":{"line":48,"column":4},"end":{"line":53,"column":12}},{"start":{"line":54,"column":4},"end":{"line":59,"column":12}},{"start":{"line":60,"column":4},"end":{"line":61,"column":70}}]},"3":{"loc":{"start":{"line":44,"column":6},"end":{"line":46,"column":7}},"type":"if","locations":[{"start":{"line":44,"column":6},"end":{"line":46,"column":7}}]},"4":{"loc":{"start":{"line":50,"column":6},"end":{"line":52,"column":7}},"type":"if","locations":[{"start":{"line":50,"column":6},"end":{"line":52,"column":7}}]},"5":{"loc":{"start":{"line":56,"column":6},"end":{"line":58,"column":7}},"type":"if","locations":[{"start":{"line":56,"column":6},"end":{"line":58,"column":7}}]},"6":{"loc":{"start":{"line":66,"column":2},"end":{"line":68,"column":3}},"type":"if","locations":[{"start":{"line":66,"column":2},"end":{"line":68,"column":3}}]},"7":{"loc":{"start":{"line":66,"column":6},"end":{"line":66,"column":64}},"type":"binary-expr","locations":[{"start":{"line":66,"column":6},"end":{"line":66,"column":22}},{"start":{"line":66,"column":26},"end":{"line":66,"column":44}},{"start":{"line":66,"column":48},"end":{"line":66,"column":64}}]},"8":{"loc":{"start":{"line":89,"column":4},"end":{"line":96,"column":5}},"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":96,"column":5}},{"start":{"line":93,"column":11},"end":{"line":96,"column":5}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":7,"5":0,"6":7,"7":0,"8":7,"9":0,"10":0,"11":0,"12":0,"13":7,"14":7,"15":0,"16":7,"17":0,"18":0,"19":0,"20":0,"21":0,"22":7,"23":7,"24":7,"25":7,"26":7,"27":7,"28":7,"29":7,"30":7,"31":7,"32":7,"33":7,"34":7,"35":7,"36":7,"37":7,"38":7,"39":7,"40":7,"41":7,"42":0,"43":0,"44":0,"45":7,"46":7,"47":7},"f":{"0":7},"b":{"0":[0],"1":[0],"2":[0,7,0,0],"3":[0],"4":[0],"5":[0],"6":[7],"7":[7,0,0],"8":[0,7]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/hmac.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/hmac.ts","statementMap":{"0":{"start":{"line":59,"column":0},"end":{"line":59,"column":7}},"1":{"start":{"line":7,"column":0},"end":{"line":7,"column":82}},"2":{"start":{"line":8,"column":0},"end":{"line":8,"column":26}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":33}},"4":{"start":{"line":11,"column":0},"end":{"line":11,"column":43}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":33}},"6":{"start":{"line":18,"column":38},"end":{"line":18,"column":40}},"7":{"start":{"line":33,"column":4},"end":{"line":33,"column":12}},"8":{"start":{"line":31,"column":23},"end":{"line":31,"column":35}},"9":{"start":{"line":31,"column":54},"end":{"line":31,"column":68}},"10":{"start":{"line":32,"column":23},"end":{"line":32,"column":38}},"11":{"start":{"line":39,"column":4},"end":{"line":39,"column":39}},"12":{"start":{"line":40,"column":16},"end":{"line":41,"column":70}},"13":{"start":{"line":42,"column":4},"end":{"line":42,"column":54}},"14":{"start":{"line":48,"column":4},"end":{"line":48,"column":38}},"15":{"start":{"line":49,"column":4},"end":{"line":49,"column":39}},"16":{"start":{"line":50,"column":24},"end":{"line":50,"column":51}},"17":{"start":{"line":51,"column":4},"end":{"line":51,"column":43}},"18":{"start":{"line":25,"column":0},"end":{"line":25,"column":13}},"19":{"start":{"line":61,"column":2},"end":{"line":61,"column":36}},"20":{"start":{"line":62,"column":2},"end":{"line":64,"column":3}},"21":{"start":{"line":63,"column":4},"end":{"line":63,"column":80}},"22":{"start":{"line":65,"column":2},"end":{"line":68,"column":3}},"23":{"start":{"line":66,"column":4},"end":{"line":67,"column":79}},"24":{"start":{"line":69,"column":2},"end":{"line":90,"column":3}},"25":{"start":{"line":71,"column":6},"end":{"line":74,"column":7}},"26":{"start":{"line":72,"column":8},"end":{"line":73,"column":62}},"27":{"start":{"line":75,"column":6},"end":{"line":75,"column":12}},"28":{"start":{"line":77,"column":6},"end":{"line":80,"column":7}},"29":{"start":{"line":78,"column":8},"end":{"line":79,"column":62}},"30":{"start":{"line":81,"column":6},"end":{"line":81,"column":12}},"31":{"start":{"line":83,"column":6},"end":{"line":86,"column":7}},"32":{"start":{"line":84,"column":8},"end":{"line":85,"column":62}},"33":{"start":{"line":87,"column":6},"end":{"line":87,"column":12}},"34":{"start":{"line":89,"column":6},"end":{"line":89,"column":70}},"35":{"start":{"line":93,"column":20},"end":{"line":96,"column":25}},"36":{"start":{"line":97,"column":2},"end":{"line":97,"column":44}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}},"loc":{"start":{"line":32,"column":38},"end":{"line":34,"column":3}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":38,"column":2},"end":{"line":38,"column":7}},"loc":{"start":{"line":38,"column":35},"end":{"line":43,"column":3}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":47,"column":2},"end":{"line":47,"column":7}},"loc":{"start":{"line":47,"column":51},"end":{"line":52,"column":3}}},"3":{"name":"fromRawKey","decl":{"start":{"line":59,"column":22},"end":{"line":59,"column":32}},"loc":{"start":{"line":60,"column":50},"end":{"line":98,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":62,"column":2},"end":{"line":64,"column":3}},"type":"if","locations":[{"start":{"line":62,"column":2},"end":{"line":64,"column":3}}]},"1":{"loc":{"start":{"line":65,"column":2},"end":{"line":68,"column":3}},"type":"if","locations":[{"start":{"line":65,"column":2},"end":{"line":68,"column":3}}]},"2":{"loc":{"start":{"line":69,"column":2},"end":{"line":90,"column":3}},"type":"switch","locations":[{"start":{"line":70,"column":4},"end":{"line":75,"column":12}},{"start":{"line":76,"column":4},"end":{"line":81,"column":12}},{"start":{"line":82,"column":4},"end":{"line":87,"column":12}},{"start":{"line":88,"column":4},"end":{"line":89,"column":70}}]},"3":{"loc":{"start":{"line":71,"column":6},"end":{"line":74,"column":7}},"type":"if","locations":[{"start":{"line":71,"column":6},"end":{"line":74,"column":7}}]},"4":{"loc":{"start":{"line":77,"column":6},"end":{"line":80,"column":7}},"type":"if","locations":[{"start":{"line":77,"column":6},"end":{"line":80,"column":7}}]},"5":{"loc":{"start":{"line":83,"column":6},"end":{"line":86,"column":7}},"type":"if","locations":[{"start":{"line":83,"column":6},"end":{"line":86,"column":7}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":14,"8":14,"9":14,"10":14,"11":14,"12":14,"13":14,"14":0,"15":0,"16":0,"17":0,"18":3,"19":14,"20":14,"21":0,"22":14,"23":0,"24":14,"25":0,"26":0,"27":0,"28":14,"29":0,"30":14,"31":0,"32":0,"33":0,"34":0,"35":14,"36":14},"f":{"0":14,"1":14,"2":0,"3":14},"b":{"0":[0],"1":[0],"2":[0,14,0,0],"3":[0],"4":[0],"5":[0]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/mac.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/mac.ts","statementMap":{"0":{"start":{"line":18,"column":0},"end":{"line":18,"column":22}}},"fnMap":{},"branchMap":{},"s":{"0":3},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/random.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/random.ts","statementMap":{"0":{"start":{"line":21,"column":0},"end":{"line":21,"column":16}},"1":{"start":{"line":11,"column":0},"end":{"line":11,"column":82}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":33}},"3":{"start":{"line":22,"column":2},"end":{"line":24,"column":3}},"4":{"start":{"line":23,"column":4},"end":{"line":23,"column":75}},"5":{"start":{"line":25,"column":17},"end":{"line":25,"column":34}},"6":{"start":{"line":26,"column":2},"end":{"line":26,"column":33}},"7":{"start":{"line":27,"column":2},"end":{"line":27,"column":16}}},"fnMap":{"0":{"name":"randBytes","decl":{"start":{"line":21,"column":16},"end":{"line":21,"column":25}},"loc":{"start":{"line":21,"column":35},"end":{"line":28,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":22,"column":2},"end":{"line":24,"column":3}},"type":"if","locations":[{"start":{"line":22,"column":2},"end":{"line":24,"column":3}}]},"1":{"loc":{"start":{"line":22,"column":6},"end":{"line":22,"column":35}},"type":"binary-expr","locations":[{"start":{"line":22,"column":6},"end":{"line":22,"column":26}},{"start":{"line":22,"column":30},"end":{"line":22,"column":35}}]}},"s":{"0":3,"1":3,"2":3,"3":8,"4":0,"5":8,"6":8,"7":8},"f":{"0":8},"b":{"0":[0],"1":[8,8]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/validators.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/validators.ts","statementMap":{"0":{"start":{"line":19,"column":0},"end":{"line":19,"column":16}},"1":{"start":{"line":31,"column":0},"end":{"line":31,"column":16}},"2":{"start":{"line":46,"column":0},"end":{"line":46,"column":16}},"3":{"start":{"line":59,"column":0},"end":{"line":59,"column":16}},"4":{"start":{"line":7,"column":0},"end":{"line":7,"column":82}},"5":{"start":{"line":8,"column":0},"end":{"line":8,"column":65}},"6":{"start":{"line":9,"column":42},"end":{"line":9,"column":50}},"7":{"start":{"line":20,"column":2},"end":{"line":22,"column":3}},"8":{"start":{"line":21,"column":4},"end":{"line":21,"column":74}},"9":{"start":{"line":32,"column":2},"end":{"line":34,"column":3}},"10":{"start":{"line":33,"column":4},"end":{"line":33,"column":79}},"11":{"start":{"line":47,"column":2},"end":{"line":51,"column":3}},"12":{"start":{"line":48,"column":4},"end":{"line":50,"column":45}},"13":{"start":{"line":60,"column":2},"end":{"line":82,"column":3}},"14":{"start":{"line":62,"column":6},"end":{"line":65,"column":7}},"15":{"start":{"line":63,"column":8},"end":{"line":64,"column":73}},"16":{"start":{"line":66,"column":6},"end":{"line":66,"column":12}},"17":{"start":{"line":68,"column":6},"end":{"line":72,"column":7}},"18":{"start":{"line":69,"column":8},"end":{"line":71,"column":18}},"19":{"start":{"line":73,"column":6},"end":{"line":73,"column":12}},"20":{"start":{"line":75,"column":6},"end":{"line":78,"column":7}},"21":{"start":{"line":76,"column":8},"end":{"line":77,"column":73}},"22":{"start":{"line":79,"column":6},"end":{"line":79,"column":12}},"23":{"start":{"line":81,"column":6},"end":{"line":81,"column":65}}},"fnMap":{"0":{"name":"validateAesKeySize","decl":{"start":{"line":19,"column":16},"end":{"line":19,"column":34}},"loc":{"start":{"line":19,"column":44},"end":{"line":23,"column":1}}},"1":{"name":"requireUint8Array","decl":{"start":{"line":31,"column":16},"end":{"line":31,"column":33}},"loc":{"start":{"line":31,"column":51},"end":{"line":35,"column":1}}},"2":{"name":"validateVersion","decl":{"start":{"line":46,"column":16},"end":{"line":46,"column":31}},"loc":{"start":{"line":46,"column":69},"end":{"line":52,"column":1}}},"3":{"name":"validateEcdsaParams","decl":{"start":{"line":59,"column":16},"end":{"line":59,"column":35}},"loc":{"start":{"line":59,"column":63},"end":{"line":83,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":20,"column":2},"end":{"line":22,"column":3}},"type":"if","locations":[{"start":{"line":20,"column":2},"end":{"line":22,"column":3}}]},"1":{"loc":{"start":{"line":32,"column":2},"end":{"line":34,"column":3}},"type":"if","locations":[{"start":{"line":32,"column":2},"end":{"line":34,"column":3}}]},"2":{"loc":{"start":{"line":32,"column":6},"end":{"line":32,"column":53}},"type":"binary-expr","locations":[{"start":{"line":32,"column":6},"end":{"line":32,"column":19}},{"start":{"line":32,"column":23},"end":{"line":32,"column":53}}]},"3":{"loc":{"start":{"line":47,"column":2},"end":{"line":51,"column":3}},"type":"if","locations":[{"start":{"line":47,"column":2},"end":{"line":51,"column":3}}]},"4":{"loc":{"start":{"line":47,"column":6},"end":{"line":47,"column":45}},"type":"binary-expr","locations":[{"start":{"line":47,"column":6},"end":{"line":47,"column":19}},{"start":{"line":47,"column":23},"end":{"line":47,"column":45}}]},"5":{"loc":{"start":{"line":60,"column":2},"end":{"line":82,"column":3}},"type":"switch","locations":[{"start":{"line":61,"column":4},"end":{"line":66,"column":12}},{"start":{"line":67,"column":4},"end":{"line":73,"column":12}},{"start":{"line":74,"column":4},"end":{"line":79,"column":12}},{"start":{"line":80,"column":4},"end":{"line":81,"column":65}}]},"6":{"loc":{"start":{"line":62,"column":6},"end":{"line":65,"column":7}},"type":"if","locations":[{"start":{"line":62,"column":6},"end":{"line":65,"column":7}}]},"7":{"loc":{"start":{"line":68,"column":6},"end":{"line":72,"column":7}},"type":"if","locations":[{"start":{"line":68,"column":6},"end":{"line":72,"column":7}}]},"8":{"loc":{"start":{"line":68,"column":10},"end":{"line":68,"column":48}},"type":"binary-expr","locations":[{"start":{"line":68,"column":10},"end":{"line":68,"column":27}},{"start":{"line":68,"column":31},"end":{"line":68,"column":48}}]},"9":{"loc":{"start":{"line":75,"column":6},"end":{"line":78,"column":7}},"type":"if","locations":[{"start":{"line":75,"column":6},"end":{"line":78,"column":7}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":17,"8":0,"9":100,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0},"f":{"0":17,"1":100,"2":0,"3":0},"b":{"0":[0],"1":[0],"2":[100,100],"3":[0],"4":[0,0],"5":[0,0,0,0],"6":[0],"7":[0],"8":[0,0],"9":[0]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/exception/invalid_arguments_exception.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/exception/invalid_arguments_exception.ts","statementMap":{"0":{"start":{"line":13,"column":4},"end":{"line":13,"column":19}},"1":{"start":{"line":14,"column":4},"end":{"line":14,"column":69}},"2":{"start":{"line":11,"column":0},"end":{"line":11,"column":13}},"3":{"start":{"line":17,"column":0},"end":{"line":17,"column":71}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":14}},"loc":{"start":{"line":12,"column":30},"end":{"line":15,"column":3}}}},"branchMap":{},"s":{"0":0,"1":0,"2":3,"3":3},"f":{"0":0},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/exception/security_exception.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/exception/security_exception.ts","statementMap":{"0":{"start":{"line":13,"column":4},"end":{"line":13,"column":19}},"1":{"start":{"line":14,"column":4},"end":{"line":14,"column":61}},"2":{"start":{"line":11,"column":0},"end":{"line":11,"column":13}},"3":{"start":{"line":17,"column":0},"end":{"line":17,"column":55}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":14}},"loc":{"start":{"line":12,"column":30},"end":{"line":15,"column":3}}}},"branchMap":{},"s":{"0":0,"1":0,"2":3,"3":3},"f":{"0":0},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/proto/aes_gcm_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/proto/aes_gcm_pb.ts","statementMap":{"0":{"start":{"line":22,"column":0},"end":{"line":22,"column":69}},"1":{"start":{"line":28,"column":13},"end":{"line":29,"column":367}},"2":{"start":{"line":50,"column":13},"end":{"line":51,"column":59}},"3":{"start":{"line":72,"column":13},"end":{"line":73,"column":59}}},"fnMap":{},"branchMap":{},"s":{"0":3,"1":3,"2":3,"3":3},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/proto/aes_siv_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/proto/aes_siv_pb.ts","statementMap":{"0":{"start":{"line":22,"column":0},"end":{"line":22,"column":69}},"1":{"start":{"line":28,"column":13},"end":{"line":29,"column":355}},"2":{"start":{"line":52,"column":13},"end":{"line":53,"column":59}},"3":{"start":{"line":78,"column":13},"end":{"line":79,"column":59}}},"fnMap":{},"branchMap":{},"s":{"0":3,"1":3,"2":3,"3":3},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/avro.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/avro.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":null}},"1":{"start":{"line":9,"column":0},"end":{"line":9,"column":null}},"2":{"start":{"line":13,"column":0},"end":{"line":13,"column":59}},"3":{"start":{"line":20,"column":0},"end":{"line":20,"column":36}},"4":{"start":{"line":21,"column":0},"end":{"line":21,"column":49}},"5":{"start":{"line":22,"column":0},"end":{"line":22,"column":53}},"6":{"start":{"line":38,"column":4},"end":{"line":38,"column":null}},"7":{"start":{"line":39,"column":4},"end":{"line":39,"column":null}},"8":{"start":{"line":40,"column":4},"end":{"line":42,"column":null}},"9":{"start":{"line":41,"column":6},"end":{"line":41,"column":null}},"10":{"start":{"line":43,"column":4},"end":{"line":45,"column":5}},"11":{"start":{"line":44,"column":6},"end":{"line":44,"column":null}},"12":{"start":{"line":49,"column":4},"end":{"line":51,"column":5}},"13":{"start":{"line":50,"column":6},"end":{"line":50,"column":null}},"14":{"start":{"line":52,"column":4},"end":{"line":54,"column":5}},"15":{"start":{"line":53,"column":6},"end":{"line":53,"column":null}},"16":{"start":{"line":56,"column":21},"end":{"line":56,"column":39}},"17":{"start":{"line":57,"column":31},"end":{"line":60,"column":null}},"18":{"start":{"line":61,"column":23},"end":{"line":61,"column":59}},"19":{"start":{"line":63,"column":4},"end":{"line":63,"column":null}},"20":{"start":{"line":64,"column":20},"end":{"line":64,"column":49}},"21":{"start":{"line":65,"column":4},"end":{"line":66,"column":null}},"22":{"start":{"line":67,"column":21},"end":{"line":67,"column":45}},"23":{"start":{"line":68,"column":4},"end":{"line":68,"column":null}},"24":{"start":{"line":72,"column":23},"end":{"line":72,"column":52}},"25":{"start":{"line":73,"column":4},"end":{"line":73,"column":null}},"26":{"start":{"line":77,"column":4},"end":{"line":81,"column":null}},"27":{"start":{"line":78,"column":19},"end":{"line":78,"column":44}},"28":{"start":{"line":79,"column":6},"end":{"line":79,"column":null}},"29":{"start":{"line":80,"column":6},"end":{"line":80,"column":null}},"30":{"start":{"line":34,"column":0},"end":{"line":34,"column":13}},"31":{"start":{"line":91,"column":4},"end":{"line":91,"column":null}},"32":{"start":{"line":92,"column":4},"end":{"line":92,"column":null}},"33":{"start":{"line":93,"column":4},"end":{"line":95,"column":null}},"34":{"start":{"line":94,"column":6},"end":{"line":94,"column":null}},"35":{"start":{"line":96,"column":4},"end":{"line":98,"column":5}},"36":{"start":{"line":97,"column":6},"end":{"line":97,"column":null}},"37":{"start":{"line":102,"column":4},"end":{"line":104,"column":5}},"38":{"start":{"line":103,"column":6},"end":{"line":103,"column":null}},"39":{"start":{"line":105,"column":4},"end":{"line":107,"column":5}},"40":{"start":{"line":106,"column":6},"end":{"line":106,"column":null}},"41":{"start":{"line":109,"column":17},"end":{"line":109,"column":53}},"42":{"start":{"line":110,"column":20},"end":{"line":110,"column":49}},"43":{"start":{"line":111,"column":23},"end":{"line":111,"column":58}},"44":{"start":{"line":112,"column":34},"end":{"line":112,"column":36}},"45":{"start":{"line":113,"column":4},"end":{"line":115,"column":5}},"46":{"start":{"line":114,"column":6},"end":{"line":114,"column":null}},"47":{"start":{"line":116,"column":27},"end":{"line":116,"column":50}},"48":{"start":{"line":119,"column":21},"end":{"line":119,"column":40}},"49":{"start":{"line":120,"column":4},"end":{"line":134,"column":5}},"50":{"start":{"line":121,"column":6},"end":{"line":121,"column":null}},"51":{"start":{"line":122,"column":6},"end":{"line":122,"column":null}},"52":{"start":{"line":124,"column":6},"end":{"line":133,"column":7}},"53":{"start":{"line":125,"column":27},"end":{"line":125,"column":56}},"54":{"start":{"line":126,"column":8},"end":{"line":130,"column":9}},"55":{"start":{"line":127,"column":10},"end":{"line":127,"column":null}},"56":{"start":{"line":129,"column":10},"end":{"line":129,"column":null}},"57":{"start":{"line":132,"column":8},"end":{"line":132,"column":null}},"58":{"start":{"line":136,"column":4},"end":{"line":140,"column":5}},"59":{"start":{"line":137,"column":6},"end":{"line":137,"column":null}},"60":{"start":{"line":139,"column":6},"end":{"line":139,"column":null}},"61":{"start":{"line":141,"column":4},"end":{"line":142,"column":null}},"62":{"start":{"line":143,"column":4},"end":{"line":143,"column":null}},"63":{"start":{"line":147,"column":23},"end":{"line":147,"column":52}},"64":{"start":{"line":148,"column":4},"end":{"line":148,"column":null}},"65":{"start":{"line":152,"column":4},"end":{"line":156,"column":null}},"66":{"start":{"line":153,"column":19},"end":{"line":153,"column":44}},"67":{"start":{"line":154,"column":6},"end":{"line":154,"column":null}},"68":{"start":{"line":155,"column":6},"end":{"line":155,"column":null}},"69":{"start":{"line":87,"column":0},"end":{"line":87,"column":13}},"70":{"start":{"line":167,"column":14},"end":{"line":167,"column":65}},"71":{"start":{"line":168,"column":2},"end":{"line":170,"column":3}},"72":{"start":{"line":169,"column":4},"end":{"line":169,"column":null}},"73":{"start":{"line":172,"column":15},"end":{"line":172,"column":46}},"74":{"start":{"line":174,"column":31},"end":{"line":185,"column":3}},"75":{"start":{"line":174,"column":78},"end":{"line":185,"column":3}},"76":{"start":{"line":178,"column":4},"end":{"line":180,"column":null}},"77":{"start":{"line":179,"column":6},"end":{"line":179,"column":null}},"78":{"start":{"line":181,"column":4},"end":{"line":183,"column":5}},"79":{"start":{"line":182,"column":6},"end":{"line":182,"column":null}},"80":{"start":{"line":184,"column":4},"end":{"line":184,"column":10}},"81":{"start":{"line":187,"column":19},"end":{"line":187,"column":23}},"82":{"start":{"line":188,"column":13},"end":{"line":191,"column":4}},"83":{"start":{"line":192,"column":2},"end":{"line":192,"column":null}},"84":{"start":{"line":193,"column":2},"end":{"line":193,"column":null}},"85":{"start":{"line":197,"column":2},"end":{"line":199,"column":3}},"86":{"start":{"line":198,"column":4},"end":{"line":198,"column":null}},"87":{"start":{"line":200,"column":19},"end":{"line":200,"column":37}},"88":{"start":{"line":201,"column":2},"end":{"line":203,"column":3}},"89":{"start":{"line":202,"column":4},"end":{"line":202,"column":null}},"90":{"start":{"line":204,"column":2},"end":{"line":238,"column":3}},"91":{"start":{"line":207,"column":24},"end":{"line":207,"column":49}},"92":{"start":{"line":208,"column":6},"end":{"line":210,"column":7}},"93":{"start":{"line":209,"column":8},"end":{"line":209,"column":null}},"94":{"start":{"line":211,"column":6},"end":{"line":211,"column":null}},"95":{"start":{"line":213,"column":26},"end":{"line":213,"column":45}},"96":{"start":{"line":214,"column":20},"end":{"line":214,"column":32}},"97":{"start":{"line":215,"column":6},"end":{"line":215,"column":null}},"98":{"start":{"line":215,"column":49},"end":{"line":215,"column":108}},"99":{"start":{"line":217,"column":24},"end":{"line":217,"column":41}},"100":{"start":{"line":218,"column":18},"end":{"line":218,"column":41}},"101":{"start":{"line":219,"column":6},"end":{"line":221,"column":7}},"102":{"start":{"line":220,"column":8},"end":{"line":220,"column":null}},"103":{"start":{"line":222,"column":6},"end":{"line":222,"column":null}},"104":{"start":{"line":224,"column":27},"end":{"line":224,"column":47}},"105":{"start":{"line":225,"column":21},"end":{"line":225,"column":47}},"106":{"start":{"line":226,"column":6},"end":{"line":228,"column":7}},"107":{"start":{"line":227,"column":8},"end":{"line":227,"column":null}},"108":{"start":{"line":229,"column":6},"end":{"line":229,"column":null}},"109":{"start":{"line":231,"column":6},"end":{"line":236,"column":7}},"110":{"start":{"line":232,"column":25},"end":{"line":232,"column":44}},"111":{"start":{"line":233,"column":8},"end":{"line":235,"column":9}},"112":{"start":{"line":234,"column":10},"end":{"line":234,"column":null}},"113":{"start":{"line":237,"column":6},"end":{"line":237,"column":null}},"114":{"start":{"line":249,"column":19},"end":{"line":249,"column":55}},"115":{"start":{"line":250,"column":2},"end":{"line":268,"column":3}},"116":{"start":{"line":251,"column":4},"end":{"line":257,"column":null}},"117":{"start":{"line":258,"column":19},"end":{"line":258,"column":87}},"118":{"start":{"line":259,"column":4},"end":{"line":265,"column":5}},"119":{"start":{"line":260,"column":6},"end":{"line":262,"column":7}},"120":{"start":{"line":261,"column":8},"end":{"line":261,"column":null}},"121":{"start":{"line":264,"column":6},"end":{"line":264,"column":null}},"122":{"start":{"line":267,"column":4},"end":{"line":267,"column":null}},"123":{"start":{"line":272,"column":2},"end":{"line":305,"column":3}},"124":{"start":{"line":274,"column":6},"end":{"line":274,"column":null}},"125":{"start":{"line":276,"column":6},"end":{"line":276,"column":null}},"126":{"start":{"line":278,"column":6},"end":{"line":278,"column":null}},"127":{"start":{"line":280,"column":6},"end":{"line":280,"column":null}},"128":{"start":{"line":283,"column":6},"end":{"line":283,"column":null}},"129":{"start":{"line":285,"column":6},"end":{"line":285,"column":null}},"130":{"start":{"line":287,"column":6},"end":{"line":287,"column":null}},"131":{"start":{"line":289,"column":6},"end":{"line":289,"column":null}},"132":{"start":{"line":291,"column":6},"end":{"line":291,"column":null}},"133":{"start":{"line":294,"column":6},"end":{"line":294,"column":null}},"134":{"start":{"line":296,"column":6},"end":{"line":296,"column":null}},"135":{"start":{"line":298,"column":6},"end":{"line":298,"column":null}},"136":{"start":{"line":300,"column":6},"end":{"line":300,"column":null}},"137":{"start":{"line":302,"column":6},"end":{"line":302,"column":null}},"138":{"start":{"line":304,"column":6},"end":{"line":304,"column":null}},"139":{"start":{"line":309,"column":2},"end":{"line":313,"column":3}},"140":{"start":{"line":310,"column":4},"end":{"line":312,"column":5}},"141":{"start":{"line":311,"column":6},"end":{"line":311,"column":null}},"142":{"start":{"line":314,"column":2},"end":{"line":314,"column":null}},"143":{"start":{"line":318,"column":19},"end":{"line":318,"column":23}},"144":{"start":{"line":319,"column":2},"end":{"line":325,"column":3}},"145":{"start":{"line":320,"column":18},"end":{"line":320,"column":46}},"146":{"start":{"line":321,"column":4},"end":{"line":321,"column":null}},"147":{"start":{"line":322,"column":9},"end":{"line":325,"column":3}},"148":{"start":{"line":323,"column":18},"end":{"line":323,"column":44}},"149":{"start":{"line":324,"column":4},"end":{"line":324,"column":null}},"150":{"start":{"line":326,"column":2},"end":{"line":332,"column":3}},"151":{"start":{"line":327,"column":4},"end":{"line":331,"column":5}},"152":{"start":{"line":327,"column":17},"end":{"line":327,"column":18}},"153":{"start":{"line":328,"column":6},"end":{"line":330,"column":7}},"154":{"start":{"line":329,"column":8},"end":{"line":329,"column":null}},"155":{"start":{"line":333,"column":2},"end":{"line":333,"column":null}},"156":{"start":{"line":337,"column":21},"end":{"line":337,"column":51}},"157":{"start":{"line":338,"column":2},"end":{"line":338,"column":null}},"158":{"start":{"line":339,"column":2},"end":{"line":341,"column":3}},"159":{"start":{"line":340,"column":4},"end":{"line":340,"column":null}},"160":{"start":{"line":342,"column":2},"end":{"line":342,"column":null}},"161":{"start":{"line":347,"column":2},"end":{"line":380,"column":3}},"162":{"start":{"line":348,"column":4},"end":{"line":348,"column":10}},"163":{"start":{"line":349,"column":9},"end":{"line":380,"column":3}},"164":{"start":{"line":350,"column":4},"end":{"line":352,"column":5}},"165":{"start":{"line":350,"column":17},"end":{"line":350,"column":18}},"166":{"start":{"line":351,"column":6},"end":{"line":351,"column":null}},"167":{"start":{"line":353,"column":9},"end":{"line":380,"column":3}},"168":{"start":{"line":354,"column":17},"end":{"line":354,"column":31}},"169":{"start":{"line":355,"column":4},"end":{"line":379,"column":5}},"170":{"start":{"line":356,"column":21},"end":{"line":356,"column":40}},"171":{"start":{"line":357,"column":23},"end":{"line":357,"column":37}},"172":{"start":{"line":358,"column":6},"end":{"line":360,"column":7}},"173":{"start":{"line":359,"column":8},"end":{"line":359,"column":null}},"174":{"start":{"line":361,"column":6},"end":{"line":363,"column":7}},"175":{"start":{"line":362,"column":8},"end":{"line":362,"column":null}},"176":{"start":{"line":364,"column":6},"end":{"line":366,"column":7}},"177":{"start":{"line":365,"column":8},"end":{"line":365,"column":null}},"178":{"start":{"line":367,"column":21},"end":{"line":367,"column":37}},"179":{"start":{"line":368,"column":6},"end":{"line":378,"column":7}},"180":{"start":{"line":369,"column":26},"end":{"line":369,"column":49}},"181":{"start":{"line":370,"column":26},"end":{"line":370,"column":39}},"182":{"start":{"line":371,"column":8},"end":{"line":373,"column":9}},"183":{"start":{"line":372,"column":10},"end":{"line":372,"column":null}},"184":{"start":{"line":374,"column":26},"end":{"line":374,"column":39}},"185":{"start":{"line":375,"column":8},"end":{"line":377,"column":9}},"186":{"start":{"line":376,"column":10},"end":{"line":376,"column":null}},"187":{"start":{"line":384,"column":16},"end":{"line":384,"column":42}},"188":{"start":{"line":385,"column":2},"end":{"line":385,"column":null}}},"fnMap":{"0":{"name":"(anonymous_7)","decl":{"start":{"line":37,"column":2},"end":{"line":37,"column":14}},"loc":{"start":{"line":37,"column":78},"end":{"line":46,"column":3}}},"1":{"name":"(anonymous_8)","decl":{"start":{"line":40,"column":28},"end":{"line":40,"column":33}},"loc":{"start":{"line":40,"column":97},"end":{"line":42,"column":5}}},"2":{"name":"(anonymous_9)","decl":{"start":{"line":48,"column":2},"end":{"line":48,"column":7}},"loc":{"start":{"line":48,"column":41},"end":{"line":69,"column":3}}},"3":{"name":"(anonymous_10)","decl":{"start":{"line":71,"column":2},"end":{"line":71,"column":7}},"loc":{"start":{"line":71,"column":81},"end":{"line":74,"column":3}}},"4":{"name":"(anonymous_11)","decl":{"start":{"line":76,"column":2},"end":{"line":76,"column":7}},"loc":{"start":{"line":76,"column":31},"end":{"line":82,"column":3}}},"5":{"name":"(anonymous_12)","decl":{"start":{"line":77,"column":80},"end":{"line":77,"column":85}},"loc":{"start":{"line":77,"column":103},"end":{"line":81,"column":5}}},"6":{"name":"(anonymous_13)","decl":{"start":{"line":90,"column":2},"end":{"line":90,"column":14}},"loc":{"start":{"line":90,"column":80},"end":{"line":99,"column":3}}},"7":{"name":"(anonymous_14)","decl":{"start":{"line":93,"column":28},"end":{"line":93,"column":33}},"loc":{"start":{"line":93,"column":97},"end":{"line":95,"column":5}}},"8":{"name":"(anonymous_15)","decl":{"start":{"line":101,"column":2},"end":{"line":101,"column":7}},"loc":{"start":{"line":101,"column":50},"end":{"line":144,"column":3}}},"9":{"name":"(anonymous_16)","decl":{"start":{"line":146,"column":2},"end":{"line":146,"column":7}},"loc":{"start":{"line":146,"column":81},"end":{"line":149,"column":3}}},"10":{"name":"(anonymous_17)","decl":{"start":{"line":151,"column":2},"end":{"line":151,"column":7}},"loc":{"start":{"line":151,"column":31},"end":{"line":157,"column":3}}},"11":{"name":"(anonymous_18)","decl":{"start":{"line":152,"column":80},"end":{"line":152,"column":85}},"loc":{"start":{"line":152,"column":103},"end":{"line":156,"column":5}}},"12":{"name":"toType","decl":{"start":{"line":160,"column":15},"end":{"line":160,"column":21}},"loc":{"start":{"line":165,"column":26},"end":{"line":194,"column":1}}},"13":{"name":"(anonymous_20)","decl":{"start":{"line":174,"column":31},"end":{"line":174,"column":32}},"loc":{"start":{"line":174,"column":78},"end":{"line":185,"column":3}}},"14":{"name":"(anonymous_21)","decl":{"start":{"line":174,"column":78},"end":{"line":174,"column":null}},"loc":{"start":{"line":177,"column":6},"end":{"line":185,"column":3}}},"15":{"name":"(anonymous_22)","decl":{"start":{"line":178,"column":17},"end":{"line":178,"column":18}},"loc":{"start":{"line":178,"column":35},"end":{"line":180,"column":5}}},"16":{"name":"transform","decl":{"start":{"line":196,"column":15},"end":{"line":196,"column":24}},"loc":{"start":{"line":196,"column":97},"end":{"line":239,"column":1}}},"17":{"name":"(anonymous_24)","decl":{"start":{"line":215,"column":41},"end":{"line":215,"column":45}},"loc":{"start":{"line":215,"column":49},"end":{"line":215,"column":108}}},"18":{"name":"transformField","decl":{"start":{"line":241,"column":15},"end":{"line":241,"column":29}},"loc":{"start":{"line":247,"column":32},"end":{"line":269,"column":1}}},"19":{"name":"getType","decl":{"start":{"line":271,"column":9},"end":{"line":271,"column":16}},"loc":{"start":{"line":271,"column":29},"end":{"line":306,"column":1}}},"20":{"name":"disjoint","decl":{"start":{"line":308,"column":9},"end":{"line":308,"column":17}},"loc":{"start":{"line":308,"column":56},"end":{"line":315,"column":1}}},"21":{"name":"resolveUnion","decl":{"start":{"line":317,"column":9},"end":{"line":317,"column":21}},"loc":{"start":{"line":317,"column":44},"end":{"line":334,"column":1}}},"22":{"name":"getInlineTags","decl":{"start":{"line":336,"column":9},"end":{"line":336,"column":22}},"loc":{"start":{"line":336,"column":66},"end":{"line":343,"column":1}}},"23":{"name":"getInlineTagsRecursively","decl":{"start":{"line":346,"column":9},"end":{"line":346,"column":33}},"loc":{"start":{"line":346,"column":103},"end":{"line":381,"column":1}}},"24":{"name":"impliedNamespace","decl":{"start":{"line":383,"column":9},"end":{"line":383,"column":25}},"loc":{"start":{"line":383,"column":38},"end":{"line":386,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":39,"column":86},"end":{"line":39,"column":117}},"type":"binary-expr","locations":[{"start":{"line":39,"column":86},"end":{"line":39,"column":109}},{"start":{"line":39,"column":113},"end":{"line":39,"column":117}}]},"1":{"loc":{"start":{"line":44,"column":77},"end":{"line":44,"column":98}},"type":"binary-expr","locations":[{"start":{"line":44,"column":77},"end":{"line":44,"column":92}},{"start":{"line":44,"column":96},"end":{"line":44,"column":98}}]},"2":{"loc":{"start":{"line":49,"column":4},"end":{"line":51,"column":5}},"type":"if","locations":[{"start":{"line":49,"column":4},"end":{"line":51,"column":5}}]},"3":{"loc":{"start":{"line":52,"column":4},"end":{"line":54,"column":5}},"type":"if","locations":[{"start":{"line":52,"column":4},"end":{"line":54,"column":5}}]},"4":{"loc":{"start":{"line":92,"column":86},"end":{"line":92,"column":117}},"type":"binary-expr","locations":[{"start":{"line":92,"column":86},"end":{"line":92,"column":109}},{"start":{"line":92,"column":113},"end":{"line":92,"column":117}}]},"5":{"loc":{"start":{"line":97,"column":77},"end":{"line":97,"column":98}},"type":"binary-expr","locations":[{"start":{"line":97,"column":77},"end":{"line":97,"column":92}},{"start":{"line":97,"column":96},"end":{"line":97,"column":98}}]},"6":{"loc":{"start":{"line":102,"column":4},"end":{"line":104,"column":5}},"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":104,"column":5}}]},"7":{"loc":{"start":{"line":105,"column":4},"end":{"line":107,"column":5}},"type":"if","locations":[{"start":{"line":105,"column":4},"end":{"line":107,"column":5}}]},"8":{"loc":{"start":{"line":113,"column":4},"end":{"line":115,"column":5}},"type":"if","locations":[{"start":{"line":113,"column":4},"end":{"line":115,"column":5}}]},"9":{"loc":{"start":{"line":120,"column":4},"end":{"line":134,"column":5}},"type":"if","locations":[{"start":{"line":120,"column":4},"end":{"line":134,"column":5}},{"start":{"line":123,"column":11},"end":{"line":134,"column":5}}]},"10":{"loc":{"start":{"line":124,"column":6},"end":{"line":133,"column":7}},"type":"if","locations":[{"start":{"line":124,"column":6},"end":{"line":133,"column":7}},{"start":{"line":131,"column":13},"end":{"line":133,"column":7}}]},"11":{"loc":{"start":{"line":126,"column":8},"end":{"line":130,"column":9}},"type":"if","locations":[{"start":{"line":126,"column":8},"end":{"line":130,"column":9}},{"start":{"line":128,"column":15},"end":{"line":130,"column":9}}]},"12":{"loc":{"start":{"line":136,"column":4},"end":{"line":140,"column":5}},"type":"if","locations":[{"start":{"line":136,"column":4},"end":{"line":140,"column":5}},{"start":{"line":138,"column":11},"end":{"line":140,"column":5}}]},"13":{"loc":{"start":{"line":168,"column":2},"end":{"line":170,"column":3}},"type":"if","locations":[{"start":{"line":168,"column":2},"end":{"line":170,"column":3}}]},"14":{"loc":{"start":{"line":181,"column":4},"end":{"line":183,"column":5}},"type":"if","locations":[{"start":{"line":181,"column":4},"end":{"line":183,"column":5}}]},"15":{"loc":{"start":{"line":197,"column":2},"end":{"line":199,"column":3}},"type":"if","locations":[{"start":{"line":197,"column":2},"end":{"line":199,"column":3}}]},"16":{"loc":{"start":{"line":197,"column":6},"end":{"line":197,"column":35}},"type":"binary-expr","locations":[{"start":{"line":197,"column":6},"end":{"line":197,"column":17}},{"start":{"line":197,"column":21},"end":{"line":197,"column":35}}]},"17":{"loc":{"start":{"line":201,"column":2},"end":{"line":203,"column":3}},"type":"if","locations":[{"start":{"line":201,"column":2},"end":{"line":203,"column":3}}]},"18":{"loc":{"start":{"line":204,"column":2},"end":{"line":238,"column":3}},"type":"switch","locations":[{"start":{"line":205,"column":4},"end":{"line":205,"column":27}},{"start":{"line":206,"column":4},"end":{"line":211,"column":null}},{"start":{"line":212,"column":4},"end":{"line":215,"column":null}},{"start":{"line":216,"column":4},"end":{"line":222,"column":null}},{"start":{"line":223,"column":4},"end":{"line":229,"column":null}},{"start":{"line":230,"column":4},"end":{"line":237,"column":null}}]},"19":{"loc":{"start":{"line":208,"column":6},"end":{"line":210,"column":7}},"type":"if","locations":[{"start":{"line":208,"column":6},"end":{"line":210,"column":7}}]},"20":{"loc":{"start":{"line":231,"column":6},"end":{"line":236,"column":7}},"type":"if","locations":[{"start":{"line":231,"column":6},"end":{"line":236,"column":7}}]},"21":{"loc":{"start":{"line":232,"column":25},"end":{"line":232,"column":44}},"type":"binary-expr","locations":[{"start":{"line":232,"column":25},"end":{"line":232,"column":38}},{"start":{"line":232,"column":42},"end":{"line":232,"column":44}}]},"22":{"loc":{"start":{"line":233,"column":8},"end":{"line":235,"column":9}},"type":"if","locations":[{"start":{"line":233,"column":8},"end":{"line":235,"column":9}}]},"23":{"loc":{"start":{"line":233,"column":12},"end":{"line":233,"column":108}},"type":"binary-expr","locations":[{"start":{"line":233,"column":12},"end":{"line":233,"column":28}},{"start":{"line":233,"column":32},"end":{"line":233,"column":53}},{"start":{"line":233,"column":57},"end":{"line":233,"column":108}}]},"24":{"loc":{"start":{"line":259,"column":4},"end":{"line":265,"column":5}},"type":"if","locations":[{"start":{"line":259,"column":4},"end":{"line":265,"column":5}},{"start":{"line":263,"column":11},"end":{"line":265,"column":5}}]},"25":{"loc":{"start":{"line":260,"column":6},"end":{"line":262,"column":7}},"type":"if","locations":[{"start":{"line":260,"column":6},"end":{"line":262,"column":7}}]},"26":{"loc":{"start":{"line":272,"column":2},"end":{"line":305,"column":3}},"type":"switch","locations":[{"start":{"line":273,"column":4},"end":{"line":274,"column":null}},{"start":{"line":275,"column":4},"end":{"line":276,"column":null}},{"start":{"line":277,"column":4},"end":{"line":278,"column":null}},{"start":{"line":279,"column":4},"end":{"line":280,"column":null}},{"start":{"line":281,"column":4},"end":{"line":281,"column":27}},{"start":{"line":282,"column":4},"end":{"line":283,"column":null}},{"start":{"line":284,"column":4},"end":{"line":285,"column":null}},{"start":{"line":286,"column":4},"end":{"line":287,"column":null}},{"start":{"line":288,"column":4},"end":{"line":289,"column":null}},{"start":{"line":290,"column":4},"end":{"line":291,"column":null}},{"start":{"line":292,"column":4},"end":{"line":292,"column":25}},{"start":{"line":293,"column":4},"end":{"line":294,"column":null}},{"start":{"line":295,"column":4},"end":{"line":296,"column":null}},{"start":{"line":297,"column":4},"end":{"line":298,"column":null}},{"start":{"line":299,"column":4},"end":{"line":300,"column":null}},{"start":{"line":301,"column":4},"end":{"line":302,"column":null}},{"start":{"line":303,"column":4},"end":{"line":304,"column":null}}]},"27":{"loc":{"start":{"line":310,"column":4},"end":{"line":312,"column":5}},"type":"if","locations":[{"start":{"line":310,"column":4},"end":{"line":312,"column":5}}]},"28":{"loc":{"start":{"line":319,"column":2},"end":{"line":325,"column":3}},"type":"if","locations":[{"start":{"line":319,"column":2},"end":{"line":325,"column":3}},{"start":{"line":322,"column":9},"end":{"line":325,"column":3}}]},"29":{"loc":{"start":{"line":322,"column":9},"end":{"line":325,"column":3}},"type":"if","locations":[{"start":{"line":322,"column":9},"end":{"line":325,"column":3}}]},"30":{"loc":{"start":{"line":326,"column":2},"end":{"line":332,"column":3}},"type":"if","locations":[{"start":{"line":326,"column":2},"end":{"line":332,"column":3}}]},"31":{"loc":{"start":{"line":328,"column":6},"end":{"line":330,"column":7}},"type":"if","locations":[{"start":{"line":328,"column":6},"end":{"line":330,"column":7}}]},"32":{"loc":{"start":{"line":347,"column":2},"end":{"line":380,"column":3}},"type":"if","locations":[{"start":{"line":347,"column":2},"end":{"line":380,"column":3}},{"start":{"line":349,"column":9},"end":{"line":380,"column":3}}]},"33":{"loc":{"start":{"line":347,"column":6},"end":{"line":347,"column":50}},"type":"binary-expr","locations":[{"start":{"line":347,"column":6},"end":{"line":347,"column":20}},{"start":{"line":347,"column":24},"end":{"line":347,"column":50}}]},"34":{"loc":{"start":{"line":349,"column":9},"end":{"line":380,"column":3}},"type":"if","locations":[{"start":{"line":349,"column":9},"end":{"line":380,"column":3}},{"start":{"line":353,"column":9},"end":{"line":380,"column":3}}]},"35":{"loc":{"start":{"line":353,"column":9},"end":{"line":380,"column":3}},"type":"if","locations":[{"start":{"line":353,"column":9},"end":{"line":380,"column":3}}]},"36":{"loc":{"start":{"line":355,"column":4},"end":{"line":379,"column":5}},"type":"if","locations":[{"start":{"line":355,"column":4},"end":{"line":379,"column":5}}]},"37":{"loc":{"start":{"line":358,"column":6},"end":{"line":360,"column":7}},"type":"if","locations":[{"start":{"line":358,"column":6},"end":{"line":360,"column":7}}]},"38":{"loc":{"start":{"line":361,"column":6},"end":{"line":363,"column":7}},"type":"if","locations":[{"start":{"line":361,"column":6},"end":{"line":363,"column":7}}]},"39":{"loc":{"start":{"line":364,"column":6},"end":{"line":366,"column":7}},"type":"if","locations":[{"start":{"line":364,"column":6},"end":{"line":366,"column":7}}]},"40":{"loc":{"start":{"line":364,"column":10},"end":{"line":364,"column":61}},"type":"binary-expr","locations":[{"start":{"line":364,"column":10},"end":{"line":364,"column":25}},{"start":{"line":364,"column":29},"end":{"line":364,"column":61}}]},"41":{"loc":{"start":{"line":371,"column":8},"end":{"line":373,"column":9}},"type":"if","locations":[{"start":{"line":371,"column":8},"end":{"line":373,"column":9}}]},"42":{"loc":{"start":{"line":371,"column":12},"end":{"line":371,"column":62}},"type":"binary-expr","locations":[{"start":{"line":371,"column":12},"end":{"line":371,"column":35}},{"start":{"line":371,"column":39},"end":{"line":371,"column":62}}]},"43":{"loc":{"start":{"line":375,"column":8},"end":{"line":377,"column":9}},"type":"if","locations":[{"start":{"line":375,"column":8},"end":{"line":377,"column":9}}]},"44":{"loc":{"start":{"line":385,"column":9},"end":{"line":385,"column":32}},"type":"cond-expr","locations":[{"start":{"line":385,"column":17},"end":{"line":385,"column":25}},{"start":{"line":385,"column":28},"end":{"line":385,"column":32}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":2,"7":2,"8":2,"9":1,"10":2,"11":2,"12":2,"13":0,"14":2,"15":0,"16":2,"17":2,"18":2,"19":2,"20":2,"21":2,"22":2,"23":2,"24":1,"25":1,"26":3,"27":2,"28":2,"29":2,"30":1,"31":5,"32":5,"33":5,"34":4,"35":5,"36":5,"37":5,"38":0,"39":5,"40":0,"41":5,"42":5,"43":5,"44":5,"45":5,"46":0,"47":5,"48":5,"49":5,"50":0,"51":0,"52":5,"53":0,"54":0,"55":0,"56":0,"57":5,"58":5,"59":0,"60":5,"61":5,"62":5,"63":4,"64":4,"65":9,"66":5,"67":5,"68":5,"69":1,"70":12,"71":12,"72":5,"73":7,"74":7,"75":7,"76":53,"77":0,"78":53,"79":0,"80":53,"81":7,"82":7,"83":7,"84":7,"85":18,"86":0,"87":18,"88":18,"89":13,"90":18,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":5,"105":5,"106":5,"107":13,"108":5,"109":13,"110":13,"111":13,"112":7,"113":6,"114":13,"115":13,"116":13,"117":13,"118":13,"119":0,"120":0,"121":13,"122":13,"123":26,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":10,"131":4,"132":4,"133":0,"134":0,"135":4,"136":4,"137":0,"138":0,"139":13,"140":13,"141":7,"142":6,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":7,"157":7,"158":7,"159":0,"160":7,"161":30,"162":23,"163":7,"164":0,"165":0,"166":0,"167":7,"168":7,"169":7,"170":7,"171":7,"172":7,"173":7,"174":7,"175":7,"176":7,"177":0,"178":7,"179":7,"180":23,"181":23,"182":23,"183":7,"184":23,"185":23,"186":23,"187":7,"188":7},"f":{"0":2,"1":1,"2":2,"3":1,"4":3,"5":2,"6":5,"7":4,"8":5,"9":4,"10":9,"11":5,"12":12,"13":7,"14":53,"15":0,"16":18,"17":0,"18":13,"19":26,"20":13,"21":0,"22":7,"23":30,"24":7},"b":{"0":[2,2],"1":[2,1],"2":[0],"3":[0],"4":[5,5],"5":[5,1],"6":[0],"7":[0],"8":[0],"9":[0,5],"10":[0,5],"11":[0,0],"12":[0,5],"13":[5],"14":[0],"15":[0],"16":[18,18],"17":[13],"18":[0,0,0,0,5,13],"19":[0],"20":[13],"21":[13,0],"22":[7],"23":[13,13,13],"24":[0,13],"25":[0],"26":[0,0,0,0,0,0,0,10,4,4,0,0,0,4,4,0,0],"27":[7],"28":[0,0],"29":[0],"30":[0],"31":[0],"32":[23,7],"33":[30,30],"34":[0,7],"35":[7],"36":[7],"37":[7],"38":[7],"39":[0],"40":[7,0],"41":[7],"42":[23,7],"43":[23],"44":[0,7]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/buffer-wrapper.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/buffer-wrapper.ts","statementMap":{"0":{"start":{"line":1,"column":13},"end":{"line":1,"column":null}},"1":{"start":{"line":2,"column":13},"end":{"line":2,"column":null}},"2":{"start":{"line":3,"column":13},"end":{"line":3,"column":null}},"3":{"start":{"line":10,"column":4},"end":{"line":10,"column":null}},"4":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"5":{"start":{"line":18,"column":4},"end":{"line":32,"column":5}},"6":{"start":{"line":20,"column":6},"end":{"line":20,"column":null}},"7":{"start":{"line":21,"column":6},"end":{"line":24,"column":51}},"8":{"start":{"line":22,"column":8},"end":{"line":22,"column":null}},"9":{"start":{"line":23,"column":8},"end":{"line":23,"column":null}},"10":{"start":{"line":27,"column":6},"end":{"line":27,"column":null}},"11":{"start":{"line":28,"column":6},"end":{"line":31,"column":56}},"12":{"start":{"line":29,"column":8},"end":{"line":29,"column":null}},"13":{"start":{"line":30,"column":8},"end":{"line":30,"column":null}},"14":{"start":{"line":33,"column":4},"end":{"line":33,"column":null}},"15":{"start":{"line":38,"column":12},"end":{"line":38,"column":13}},"16":{"start":{"line":39,"column":12},"end":{"line":39,"column":13}},"17":{"start":{"line":42,"column":4},"end":{"line":47,"column":25}},"18":{"start":{"line":43,"column":6},"end":{"line":43,"column":null}},"19":{"start":{"line":44,"column":6},"end":{"line":44,"column":null}},"20":{"start":{"line":45,"column":6},"end":{"line":45,"column":null}},"21":{"start":{"line":46,"column":6},"end":{"line":46,"column":null}},"22":{"start":{"line":49,"column":4},"end":{"line":59,"column":5}},"23":{"start":{"line":51,"column":6},"end":{"line":51,"column":null}},"24":{"start":{"line":52,"column":6},"end":{"line":52,"column":21}},"25":{"start":{"line":53,"column":6},"end":{"line":57,"column":24}},"26":{"start":{"line":54,"column":8},"end":{"line":54,"column":null}},"27":{"start":{"line":55,"column":8},"end":{"line":55,"column":null}},"28":{"start":{"line":56,"column":8},"end":{"line":56,"column":null}},"29":{"start":{"line":58,"column":6},"end":{"line":58,"column":null}},"30":{"start":{"line":61,"column":4},"end":{"line":61,"column":null}},"31":{"start":{"line":5,"column":0},"end":{"line":5,"column":13}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":14}},"loc":{"start":{"line":9,"column":25},"end":{"line":12,"column":3}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":13}},"loc":{"start":{"line":15,"column":23},"end":{"line":34,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":37,"column":2},"end":{"line":37,"column":12}},"loc":{"start":{"line":37,"column":12},"end":{"line":62,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":4},"end":{"line":32,"column":5}},"type":"if","locations":[{"start":{"line":18,"column":4},"end":{"line":32,"column":5}},{"start":{"line":25,"column":11},"end":{"line":32,"column":5}}]},"1":{"loc":{"start":{"line":18,"column":8},"end":{"line":18,"column":42}},"type":"binary-expr","locations":[{"start":{"line":18,"column":8},"end":{"line":18,"column":24}},{"start":{"line":18,"column":28},"end":{"line":18,"column":42}}]},"2":{"loc":{"start":{"line":20,"column":10},"end":{"line":20,"column":41}},"type":"cond-expr","locations":[{"start":{"line":20,"column":19},"end":{"line":20,"column":25}},{"start":{"line":20,"column":28},"end":{"line":20,"column":41}}]},"3":{"loc":{"start":{"line":24,"column":15},"end":{"line":24,"column":50}},"type":"binary-expr","locations":[{"start":{"line":24,"column":15},"end":{"line":24,"column":16}},{"start":{"line":24,"column":21},"end":{"line":24,"column":49}}]},"4":{"loc":{"start":{"line":27,"column":10},"end":{"line":27,"column":37}},"type":"cond-expr","locations":[{"start":{"line":27,"column":19},"end":{"line":27,"column":24}},{"start":{"line":27,"column":27},"end":{"line":27,"column":37}}]},"5":{"loc":{"start":{"line":31,"column":15},"end":{"line":31,"column":55}},"type":"binary-expr","locations":[{"start":{"line":31,"column":15},"end":{"line":31,"column":21}},{"start":{"line":31,"column":26},"end":{"line":31,"column":54}}]},"6":{"loc":{"start":{"line":47,"column":13},"end":{"line":47,"column":24}},"type":"binary-expr","locations":[{"start":{"line":47,"column":13},"end":{"line":47,"column":14}},{"start":{"line":47,"column":18},"end":{"line":47,"column":24}}]},"7":{"loc":{"start":{"line":49,"column":4},"end":{"line":59,"column":5}},"type":"if","locations":[{"start":{"line":49,"column":4},"end":{"line":59,"column":5}}]},"8":{"loc":{"start":{"line":58,"column":14},"end":{"line":58,"column":34}},"type":"cond-expr","locations":[{"start":{"line":58,"column":22},"end":{"line":58,"column":30}},{"start":{"line":58,"column":33},"end":{"line":58,"column":34}}]}},"s":{"0":2,"1":2,"2":2,"3":10,"4":10,"5":7,"6":5,"7":5,"8":6,"9":6,"10":2,"11":2,"12":10,"13":10,"14":7,"15":7,"16":7,"17":7,"18":14,"19":14,"20":14,"21":14,"22":7,"23":2,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":5,"31":2},"f":{"0":10,"1":7,"2":7},"b":{"0":[5,2],"1":[7,6],"2":[5,0],"3":[6,1],"4":[1,1],"5":[10,8],"6":[14,9],"7":[2],"8":[1,1]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/json-util.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/json-util.ts","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":16}},"1":{"start":{"line":110,"column":0},"end":{"line":110,"column":16}},"2":{"start":{"line":8,"column":0},"end":{"line":8,"column":34}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":41}},"4":{"start":{"line":18,"column":2},"end":{"line":104,"column":3}},"5":{"start":{"line":24,"column":6},"end":{"line":24,"column":66}},"6":{"start":{"line":30,"column":6},"end":{"line":30,"column":30}},"7":{"start":{"line":36,"column":6},"end":{"line":36,"column":70}},"8":{"start":{"line":42,"column":6},"end":{"line":42,"column":33}},"9":{"start":{"line":48,"column":6},"end":{"line":53,"column":7}},"10":{"start":{"line":49,"column":8},"end":{"line":52,"column":10}},"11":{"start":{"line":55,"column":6},"end":{"line":57,"column":7}},"12":{"start":{"line":56,"column":8},"end":{"line":56,"column":50}},"13":{"start":{"line":59,"column":6},"end":{"line":61,"column":7}},"14":{"start":{"line":60,"column":8},"end":{"line":60,"column":51}},"15":{"start":{"line":63,"column":6},"end":{"line":63,"column":32}},"16":{"start":{"line":69,"column":6},"end":{"line":71,"column":7}},"17":{"start":{"line":70,"column":8},"end":{"line":70,"column":66}},"18":{"start":{"line":73,"column":6},"end":{"line":78,"column":7}},"19":{"start":{"line":74,"column":22},"end":{"line":74,"column":47}},"20":{"start":{"line":75,"column":8},"end":{"line":77,"column":9}},"21":{"start":{"line":76,"column":10},"end":{"line":76,"column":52}},"22":{"start":{"line":80,"column":6},"end":{"line":80,"column":31}},"23":{"start":{"line":86,"column":6},"end":{"line":88,"column":7}},"24":{"start":{"line":87,"column":8},"end":{"line":87,"column":34}},"25":{"start":{"line":90,"column":6},"end":{"line":99,"column":8}},"26":{"start":{"line":94,"column":12},"end":{"line":94,"column":53}},"27":{"start":{"line":95,"column":12},"end":{"line":95,"column":31}},"28":{"start":{"line":111,"column":2},"end":{"line":121,"column":3}},"29":{"start":{"line":112,"column":4},"end":{"line":117,"column":5}},"30":{"start":{"line":112,"column":21},"end":{"line":112,"column":22}},"31":{"start":{"line":112,"column":32},"end":{"line":112,"column":43}},"32":{"start":{"line":113,"column":6},"end":{"line":115,"column":7}},"33":{"start":{"line":114,"column":8},"end":{"line":114,"column":17}},"34":{"start":{"line":116,"column":6},"end":{"line":116,"column":52}},"35":{"start":{"line":118,"column":4},"end":{"line":118,"column":16}},"36":{"start":{"line":120,"column":4},"end":{"line":120,"column":17}}},"fnMap":{"0":{"name":"generateSchema","decl":{"start":{"line":17,"column":16},"end":{"line":17,"column":30}},"loc":{"start":{"line":17,"column":41},"end":{"line":105,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":93,"column":10},"end":{"line":93,"column":11}},"loc":{"start":{"line":93,"column":40},"end":{"line":96,"column":11}}},"2":{"name":"deepEqual","decl":{"start":{"line":110,"column":16},"end":{"line":110,"column":25}},"loc":{"start":{"line":110,"column":44},"end":{"line":122,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":2},"end":{"line":104,"column":3}},"type":"switch","locations":[{"start":{"line":19,"column":4},"end":{"line":19,"column":29}},{"start":{"line":20,"column":4},"end":{"line":20,"column":38}},{"start":{"line":21,"column":4},"end":{"line":21,"column":37}},{"start":{"line":22,"column":4},"end":{"line":22,"column":35}},{"start":{"line":23,"column":4},"end":{"line":24,"column":66}},{"start":{"line":29,"column":4},"end":{"line":30,"column":30}},{"start":{"line":35,"column":4},"end":{"line":36,"column":70}},{"start":{"line":41,"column":4},"end":{"line":42,"column":33}},{"start":{"line":47,"column":4},"end":{"line":63,"column":32}},{"start":{"line":68,"column":4},"end":{"line":80,"column":31}},{"start":{"line":85,"column":4},"end":{"line":99,"column":8}}]},"1":{"loc":{"start":{"line":36,"column":21},"end":{"line":36,"column":67}},"type":"cond-expr","locations":[{"start":{"line":36,"column":47},"end":{"line":36,"column":56}},{"start":{"line":36,"column":59},"end":{"line":36,"column":67}}]},"2":{"loc":{"start":{"line":48,"column":6},"end":{"line":53,"column":7}},"type":"if","locations":[{"start":{"line":48,"column":6},"end":{"line":53,"column":7}}]},"3":{"loc":{"start":{"line":51,"column":18},"end":{"line":51,"column":60}},"type":"cond-expr","locations":[{"start":{"line":51,"column":40},"end":{"line":51,"column":51}},{"start":{"line":51,"column":54},"end":{"line":51,"column":60}}]},"4":{"loc":{"start":{"line":55,"column":6},"end":{"line":57,"column":7}},"type":"if","locations":[{"start":{"line":55,"column":6},"end":{"line":57,"column":7}}]},"5":{"loc":{"start":{"line":59,"column":6},"end":{"line":61,"column":7}},"type":"if","locations":[{"start":{"line":59,"column":6},"end":{"line":61,"column":7}}]},"6":{"loc":{"start":{"line":69,"column":6},"end":{"line":71,"column":7}},"type":"if","locations":[{"start":{"line":69,"column":6},"end":{"line":71,"column":7}}]},"7":{"loc":{"start":{"line":73,"column":6},"end":{"line":78,"column":7}},"type":"if","locations":[{"start":{"line":73,"column":6},"end":{"line":78,"column":7}}]},"8":{"loc":{"start":{"line":75,"column":8},"end":{"line":77,"column":9}},"type":"if","locations":[{"start":{"line":75,"column":8},"end":{"line":77,"column":9}}]},"9":{"loc":{"start":{"line":86,"column":6},"end":{"line":88,"column":7}},"type":"if","locations":[{"start":{"line":86,"column":6},"end":{"line":88,"column":7}}]},"10":{"loc":{"start":{"line":113,"column":6},"end":{"line":115,"column":7}},"type":"if","locations":[{"start":{"line":113,"column":6},"end":{"line":115,"column":7}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":12,"5":0,"6":0,"7":4,"8":2,"9":4,"10":0,"11":4,"12":0,"13":4,"14":0,"15":4,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":2,"24":0,"25":2,"26":10,"27":10,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0},"f":{"0":12,"1":10,"2":0},"b":{"0":[0,0,0,0,0,0,4,2,4,0,2],"1":[2,2],"2":[0],"3":[0,0],"4":[0],"5":[0],"6":[0],"7":[0],"8":[0],"9":[0],"10":[0]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/json.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/json.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":null}},"1":{"start":{"line":9,"column":0},"end":{"line":9,"column":null}},"2":{"start":{"line":14,"column":0},"end":{"line":14,"column":36}},"3":{"start":{"line":15,"column":0},"end":{"line":15,"column":36}},"4":{"start":{"line":16,"column":0},"end":{"line":16,"column":75}},"5":{"start":{"line":17,"column":0},"end":{"line":17,"column":75}},"6":{"start":{"line":22,"column":0},"end":{"line":22,"column":null}},"7":{"start":{"line":25,"column":0},"end":{"line":25,"column":null}},"8":{"start":{"line":28,"column":0},"end":{"line":28,"column":63}},"9":{"start":{"line":29,"column":0},"end":{"line":29,"column":37}},"10":{"start":{"line":30,"column":0},"end":{"line":30,"column":45}},"11":{"start":{"line":31,"column":0},"end":{"line":31,"column":49}},"12":{"start":{"line":32,"column":0},"end":{"line":32,"column":53}},"13":{"start":{"line":57,"column":4},"end":{"line":57,"column":null}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":null}},"15":{"start":{"line":59,"column":4},"end":{"line":59,"column":null}},"16":{"start":{"line":60,"column":4},"end":{"line":62,"column":null}},"17":{"start":{"line":61,"column":6},"end":{"line":61,"column":null}},"18":{"start":{"line":63,"column":4},"end":{"line":65,"column":5}},"19":{"start":{"line":64,"column":6},"end":{"line":64,"column":null}},"20":{"start":{"line":69,"column":4},"end":{"line":71,"column":5}},"21":{"start":{"line":70,"column":6},"end":{"line":70,"column":null}},"22":{"start":{"line":72,"column":4},"end":{"line":74,"column":5}},"23":{"start":{"line":73,"column":6},"end":{"line":73,"column":null}},"24":{"start":{"line":76,"column":23},"end":{"line":76,"column":42}},"25":{"start":{"line":77,"column":31},"end":{"line":80,"column":null}},"26":{"start":{"line":81,"column":23},"end":{"line":81,"column":59}},"27":{"start":{"line":82,"column":20},"end":{"line":82,"column":49}},"28":{"start":{"line":83,"column":4},"end":{"line":83,"column":null}},"29":{"start":{"line":84,"column":21},"end":{"line":84,"column":53}},"30":{"start":{"line":85,"column":4},"end":{"line":90,"column":5}},"31":{"start":{"line":86,"column":23},"end":{"line":86,"column":58}},"32":{"start":{"line":87,"column":6},"end":{"line":89,"column":7}},"33":{"start":{"line":88,"column":8},"end":{"line":88,"column":null}},"34":{"start":{"line":91,"column":4},"end":{"line":91,"column":null}},"35":{"start":{"line":95,"column":19},"end":{"line":95,"column":42}},"36":{"start":{"line":96,"column":4},"end":{"line":98,"column":5}},"37":{"start":{"line":97,"column":6},"end":{"line":97,"column":null}},"38":{"start":{"line":99,"column":4},"end":{"line":99,"column":null}},"39":{"start":{"line":103,"column":4},"end":{"line":107,"column":null}},"40":{"start":{"line":104,"column":19},"end":{"line":104,"column":44}},"41":{"start":{"line":105,"column":6},"end":{"line":105,"column":null}},"42":{"start":{"line":106,"column":6},"end":{"line":106,"column":null}},"43":{"start":{"line":111,"column":4},"end":{"line":116,"column":null}},"44":{"start":{"line":112,"column":21},"end":{"line":112,"column":46}},"45":{"start":{"line":113,"column":8},"end":{"line":113,"column":null}},"46":{"start":{"line":114,"column":8},"end":{"line":114,"column":null}},"47":{"start":{"line":52,"column":0},"end":{"line":52,"column":13}},"48":{"start":{"line":127,"column":4},"end":{"line":127,"column":null}},"49":{"start":{"line":128,"column":4},"end":{"line":128,"column":null}},"50":{"start":{"line":129,"column":4},"end":{"line":129,"column":null}},"51":{"start":{"line":130,"column":4},"end":{"line":132,"column":null}},"52":{"start":{"line":131,"column":6},"end":{"line":131,"column":null}},"53":{"start":{"line":133,"column":4},"end":{"line":135,"column":5}},"54":{"start":{"line":134,"column":6},"end":{"line":134,"column":null}},"55":{"start":{"line":139,"column":4},"end":{"line":141,"column":5}},"56":{"start":{"line":140,"column":6},"end":{"line":140,"column":null}},"57":{"start":{"line":142,"column":4},"end":{"line":144,"column":5}},"58":{"start":{"line":143,"column":6},"end":{"line":143,"column":null}},"59":{"start":{"line":146,"column":17},"end":{"line":146,"column":53}},"60":{"start":{"line":147,"column":4},"end":{"line":153,"column":5}},"61":{"start":{"line":148,"column":23},"end":{"line":148,"column":58}},"62":{"start":{"line":149,"column":6},"end":{"line":151,"column":7}},"63":{"start":{"line":150,"column":8},"end":{"line":150,"column":null}},"64":{"start":{"line":154,"column":20},"end":{"line":154,"column":49}},"65":{"start":{"line":155,"column":23},"end":{"line":155,"column":58}},"66":{"start":{"line":156,"column":34},"end":{"line":156,"column":36}},"67":{"start":{"line":157,"column":4},"end":{"line":159,"column":5}},"68":{"start":{"line":158,"column":6},"end":{"line":158,"column":null}},"69":{"start":{"line":160,"column":21},"end":{"line":160,"column":40}},"70":{"start":{"line":161,"column":14},"end":{"line":161,"column":45}},"71":{"start":{"line":162,"column":4},"end":{"line":164,"column":5}},"72":{"start":{"line":163,"column":6},"end":{"line":163,"column":null}},"73":{"start":{"line":166,"column":4},"end":{"line":170,"column":5}},"74":{"start":{"line":167,"column":6},"end":{"line":167,"column":null}},"75":{"start":{"line":169,"column":6},"end":{"line":169,"column":null}},"76":{"start":{"line":171,"column":4},"end":{"line":171,"column":null}},"77":{"start":{"line":172,"column":4},"end":{"line":172,"column":null}},"78":{"start":{"line":176,"column":19},"end":{"line":176,"column":42}},"79":{"start":{"line":177,"column":4},"end":{"line":177,"column":null}},"80":{"start":{"line":181,"column":4},"end":{"line":185,"column":null}},"81":{"start":{"line":182,"column":19},"end":{"line":182,"column":44}},"82":{"start":{"line":183,"column":6},"end":{"line":183,"column":null}},"83":{"start":{"line":184,"column":6},"end":{"line":184,"column":null}},"84":{"start":{"line":189,"column":4},"end":{"line":194,"column":null}},"85":{"start":{"line":190,"column":21},"end":{"line":190,"column":46}},"86":{"start":{"line":191,"column":8},"end":{"line":191,"column":null}},"87":{"start":{"line":192,"column":8},"end":{"line":192,"column":null}},"88":{"start":{"line":122,"column":0},"end":{"line":122,"column":13}},"89":{"start":{"line":205,"column":11},"end":{"line":205,"column":66}},"90":{"start":{"line":206,"column":2},"end":{"line":208,"column":3}},"91":{"start":{"line":207,"column":4},"end":{"line":207,"column":null}},"92":{"start":{"line":210,"column":15},"end":{"line":210,"column":46}},"93":{"start":{"line":212,"column":15},"end":{"line":212,"column":38}},"94":{"start":{"line":213,"column":15},"end":{"line":213,"column":27}},"95":{"start":{"line":214,"column":2},"end":{"line":228,"column":3}},"96":{"start":{"line":215,"column":20},"end":{"line":215,"column":56}},"97":{"start":{"line":216,"column":4},"end":{"line":218,"column":null}},"98":{"start":{"line":217,"column":6},"end":{"line":217,"column":null}},"99":{"start":{"line":219,"column":4},"end":{"line":219,"column":null}},"100":{"start":{"line":221,"column":16},"end":{"line":221,"column":52}},"101":{"start":{"line":222,"column":4},"end":{"line":222,"column":null}},"102":{"start":{"line":223,"column":4},"end":{"line":223,"column":null}},"103":{"start":{"line":224,"column":4},"end":{"line":226,"column":null}},"104":{"start":{"line":225,"column":6},"end":{"line":225,"column":null}},"105":{"start":{"line":227,"column":4},"end":{"line":227,"column":null}},"106":{"start":{"line":229,"column":2},"end":{"line":229,"column":null}},"107":{"start":{"line":230,"column":2},"end":{"line":230,"column":null}},"108":{"start":{"line":240,"column":13},"end":{"line":240,"column":64}},"109":{"start":{"line":241,"column":2},"end":{"line":243,"column":3}},"110":{"start":{"line":242,"column":4},"end":{"line":242,"column":null}},"111":{"start":{"line":245,"column":15},"end":{"line":245,"column":46}},"112":{"start":{"line":247,"column":19},"end":{"line":253,"column":3}},"113":{"start":{"line":248,"column":17},"end":{"line":248,"column":30}},"114":{"start":{"line":249,"column":4},"end":{"line":251,"column":5}},"115":{"start":{"line":250,"column":6},"end":{"line":250,"column":null}},"116":{"start":{"line":252,"column":4},"end":{"line":252,"column":null}},"117":{"start":{"line":255,"column":15},"end":{"line":255,"column":38}},"118":{"start":{"line":256,"column":15},"end":{"line":256,"column":27}},"119":{"start":{"line":258,"column":2},"end":{"line":262,"column":3}},"120":{"start":{"line":259,"column":4},"end":{"line":259,"column":null}},"121":{"start":{"line":261,"column":4},"end":{"line":261,"column":null}},"122":{"start":{"line":263,"column":2},"end":{"line":263,"column":null}},"123":{"start":{"line":264,"column":2},"end":{"line":264,"column":null}},"124":{"start":{"line":268,"column":2},"end":{"line":270,"column":3}},"125":{"start":{"line":269,"column":4},"end":{"line":269,"column":null}},"126":{"start":{"line":271,"column":17},"end":{"line":271,"column":35}},"127":{"start":{"line":272,"column":2},"end":{"line":274,"column":3}},"128":{"start":{"line":273,"column":4},"end":{"line":273,"column":null}},"129":{"start":{"line":275,"column":2},"end":{"line":280,"column":3}},"130":{"start":{"line":276,"column":20},"end":{"line":276,"column":57}},"131":{"start":{"line":277,"column":4},"end":{"line":279,"column":5}},"132":{"start":{"line":278,"column":6},"end":{"line":278,"column":null}},"133":{"start":{"line":281,"column":2},"end":{"line":286,"column":3}},"134":{"start":{"line":282,"column":20},"end":{"line":282,"column":57}},"135":{"start":{"line":283,"column":4},"end":{"line":285,"column":5}},"136":{"start":{"line":284,"column":6},"end":{"line":284,"column":null}},"137":{"start":{"line":287,"column":2},"end":{"line":292,"column":3}},"138":{"start":{"line":288,"column":20},"end":{"line":288,"column":57}},"139":{"start":{"line":289,"column":4},"end":{"line":291,"column":5}},"140":{"start":{"line":290,"column":6},"end":{"line":290,"column":null}},"141":{"start":{"line":293,"column":2},"end":{"line":299,"column":3}},"142":{"start":{"line":294,"column":4},"end":{"line":298,"column":5}},"143":{"start":{"line":295,"column":6},"end":{"line":297,"column":7}},"144":{"start":{"line":295,"column":19},"end":{"line":295,"column":20}},"145":{"start":{"line":296,"column":8},"end":{"line":296,"column":null}},"146":{"start":{"line":300,"column":2},"end":{"line":302,"column":3}},"147":{"start":{"line":301,"column":4},"end":{"line":301,"column":null}},"148":{"start":{"line":303,"column":13},"end":{"line":303,"column":28}},"149":{"start":{"line":304,"column":2},"end":{"line":324,"column":3}},"150":{"start":{"line":306,"column":6},"end":{"line":311,"column":7}},"151":{"start":{"line":307,"column":8},"end":{"line":310,"column":9}},"152":{"start":{"line":308,"column":22},"end":{"line":308,"column":35}},"153":{"start":{"line":309,"column":10},"end":{"line":309,"column":null}},"154":{"start":{"line":312,"column":6},"end":{"line":312,"column":null}},"155":{"start":{"line":318,"column":6},"end":{"line":323,"column":7}},"156":{"start":{"line":319,"column":25},"end":{"line":319,"column":38}},"157":{"start":{"line":320,"column":8},"end":{"line":322,"column":9}},"158":{"start":{"line":321,"column":10},"end":{"line":321,"column":null}},"159":{"start":{"line":326,"column":2},"end":{"line":326,"column":null}},"160":{"start":{"line":332,"column":19},"end":{"line":332,"column":40}},"161":{"start":{"line":333,"column":2},"end":{"line":345,"column":3}},"162":{"start":{"line":334,"column":4},"end":{"line":334,"column":null}},"163":{"start":{"line":335,"column":19},"end":{"line":335,"column":84}},"164":{"start":{"line":336,"column":4},"end":{"line":342,"column":5}},"165":{"start":{"line":337,"column":6},"end":{"line":339,"column":7}},"166":{"start":{"line":338,"column":8},"end":{"line":338,"column":null}},"167":{"start":{"line":341,"column":6},"end":{"line":341,"column":null}},"168":{"start":{"line":344,"column":4},"end":{"line":344,"column":null}},"169":{"start":{"line":349,"column":2},"end":{"line":356,"column":3}},"170":{"start":{"line":350,"column":4},"end":{"line":355,"column":5}},"171":{"start":{"line":351,"column":6},"end":{"line":351,"column":null}},"172":{"start":{"line":352,"column":6},"end":{"line":352,"column":null}},"173":{"start":{"line":357,"column":2},"end":{"line":357,"column":null}},"174":{"start":{"line":361,"column":2},"end":{"line":363,"column":3}},"175":{"start":{"line":362,"column":4},"end":{"line":362,"column":null}},"176":{"start":{"line":364,"column":2},"end":{"line":366,"column":3}},"177":{"start":{"line":365,"column":4},"end":{"line":365,"column":null}},"178":{"start":{"line":367,"column":2},"end":{"line":369,"column":3}},"179":{"start":{"line":368,"column":4},"end":{"line":368,"column":null}},"180":{"start":{"line":370,"column":2},"end":{"line":372,"column":3}},"181":{"start":{"line":371,"column":4},"end":{"line":371,"column":null}},"182":{"start":{"line":373,"column":2},"end":{"line":393,"column":3}},"183":{"start":{"line":375,"column":6},"end":{"line":377,"column":7}},"184":{"start":{"line":376,"column":8},"end":{"line":376,"column":null}},"185":{"start":{"line":378,"column":6},"end":{"line":378,"column":null}},"186":{"start":{"line":380,"column":6},"end":{"line":380,"column":null}},"187":{"start":{"line":382,"column":6},"end":{"line":382,"column":null}},"188":{"start":{"line":384,"column":6},"end":{"line":384,"column":null}},"189":{"start":{"line":386,"column":6},"end":{"line":386,"column":null}},"190":{"start":{"line":388,"column":6},"end":{"line":388,"column":null}},"191":{"start":{"line":390,"column":6},"end":{"line":390,"column":null}},"192":{"start":{"line":392,"column":6},"end":{"line":392,"column":null}},"193":{"start":{"line":397,"column":16},"end":{"line":397,"column":64}},"194":{"start":{"line":398,"column":2},"end":{"line":398,"column":null}},"195":{"start":{"line":402,"column":2},"end":{"line":406,"column":3}},"196":{"start":{"line":403,"column":4},"end":{"line":405,"column":5}},"197":{"start":{"line":404,"column":6},"end":{"line":404,"column":null}},"198":{"start":{"line":407,"column":2},"end":{"line":407,"column":null}}},"fnMap":{"0":{"name":"(anonymous_7)","decl":{"start":{"line":56,"column":2},"end":{"line":56,"column":14}},"loc":{"start":{"line":56,"column":78},"end":{"line":66,"column":3}}},"1":{"name":"(anonymous_8)","decl":{"start":{"line":60,"column":28},"end":{"line":60,"column":33}},"loc":{"start":{"line":60,"column":97},"end":{"line":62,"column":5}}},"2":{"name":"(anonymous_9)","decl":{"start":{"line":68,"column":2},"end":{"line":68,"column":7}},"loc":{"start":{"line":68,"column":41},"end":{"line":92,"column":3}}},"3":{"name":"(anonymous_10)","decl":{"start":{"line":94,"column":2},"end":{"line":94,"column":7}},"loc":{"start":{"line":94,"column":81},"end":{"line":100,"column":3}}},"4":{"name":"(anonymous_11)","decl":{"start":{"line":102,"column":2},"end":{"line":102,"column":8}},"loc":{"start":{"line":102,"column":25},"end":{"line":108,"column":3}}},"5":{"name":"(anonymous_12)","decl":{"start":{"line":103,"column":80},"end":{"line":103,"column":85}},"loc":{"start":{"line":103,"column":103},"end":{"line":107,"column":5}}},"6":{"name":"(anonymous_13)","decl":{"start":{"line":110,"column":2},"end":{"line":110,"column":7}},"loc":{"start":{"line":110,"column":43},"end":{"line":117,"column":3}}},"7":{"name":"(anonymous_14)","decl":{"start":{"line":111,"column":98},"end":{"line":111,"column":103}},"loc":{"start":{"line":111,"column":121},"end":{"line":115,"column":7}}},"8":{"name":"(anonymous_15)","decl":{"start":{"line":126,"column":2},"end":{"line":126,"column":14}},"loc":{"start":{"line":126,"column":80},"end":{"line":136,"column":3}}},"9":{"name":"(anonymous_16)","decl":{"start":{"line":130,"column":28},"end":{"line":130,"column":33}},"loc":{"start":{"line":130,"column":97},"end":{"line":132,"column":5}}},"10":{"name":"(anonymous_17)","decl":{"start":{"line":138,"column":2},"end":{"line":138,"column":7}},"loc":{"start":{"line":138,"column":50},"end":{"line":173,"column":3}}},"11":{"name":"(anonymous_18)","decl":{"start":{"line":175,"column":2},"end":{"line":175,"column":7}},"loc":{"start":{"line":175,"column":81},"end":{"line":178,"column":3}}},"12":{"name":"(anonymous_19)","decl":{"start":{"line":180,"column":2},"end":{"line":180,"column":8}},"loc":{"start":{"line":180,"column":25},"end":{"line":186,"column":3}}},"13":{"name":"(anonymous_20)","decl":{"start":{"line":181,"column":80},"end":{"line":181,"column":85}},"loc":{"start":{"line":181,"column":103},"end":{"line":185,"column":5}}},"14":{"name":"(anonymous_21)","decl":{"start":{"line":188,"column":2},"end":{"line":188,"column":7}},"loc":{"start":{"line":188,"column":43},"end":{"line":195,"column":3}}},"15":{"name":"(anonymous_22)","decl":{"start":{"line":189,"column":98},"end":{"line":189,"column":103}},"loc":{"start":{"line":189,"column":121},"end":{"line":193,"column":7}}},"16":{"name":"toValidateFunction","decl":{"start":{"line":198,"column":15},"end":{"line":198,"column":33}},"loc":{"start":{"line":203,"column":28},"end":{"line":231,"column":1}}},"17":{"name":"(anonymous_24)","decl":{"start":{"line":216,"column":17},"end":{"line":216,"column":18}},"loc":{"start":{"line":216,"column":34},"end":{"line":218,"column":5}}},"18":{"name":"(anonymous_25)","decl":{"start":{"line":224,"column":17},"end":{"line":224,"column":18}},"loc":{"start":{"line":224,"column":34},"end":{"line":226,"column":5}}},"19":{"name":"toType","decl":{"start":{"line":233,"column":15},"end":{"line":233,"column":21}},"loc":{"start":{"line":238,"column":26},"end":{"line":265,"column":1}}},"20":{"name":"(anonymous_27)","decl":{"start":{"line":247,"column":19},"end":{"line":247,"column":20}},"loc":{"start":{"line":247,"column":35},"end":{"line":253,"column":3}}},"21":{"name":"transform","decl":{"start":{"line":267,"column":15},"end":{"line":267,"column":24}},"loc":{"start":{"line":267,"column":128},"end":{"line":327,"column":1}}},"22":{"name":"transformField","decl":{"start":{"line":329,"column":15},"end":{"line":329,"column":29}},"loc":{"start":{"line":331,"column":54},"end":{"line":346,"column":1}}},"23":{"name":"validateSubschemas","decl":{"start":{"line":348,"column":9},"end":{"line":348,"column":27}},"loc":{"start":{"line":348,"column":74},"end":{"line":358,"column":1}}},"24":{"name":"getType","decl":{"start":{"line":360,"column":9},"end":{"line":360,"column":16}},"loc":{"start":{"line":360,"column":47},"end":{"line":394,"column":1}}},"25":{"name":"getInlineTags","decl":{"start":{"line":396,"column":9},"end":{"line":396,"column":22}},"loc":{"start":{"line":396,"column":53},"end":{"line":399,"column":1}}},"26":{"name":"disjoint","decl":{"start":{"line":401,"column":9},"end":{"line":401,"column":17}},"loc":{"start":{"line":401,"column":56},"end":{"line":408,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":58,"column":81},"end":{"line":58,"column":116}},"type":"binary-expr","locations":[{"start":{"line":58,"column":81},"end":{"line":58,"column":108}},{"start":{"line":58,"column":112},"end":{"line":58,"column":116}}]},"1":{"loc":{"start":{"line":59,"column":79},"end":{"line":59,"column":114}},"type":"binary-expr","locations":[{"start":{"line":59,"column":79},"end":{"line":59,"column":106}},{"start":{"line":59,"column":110},"end":{"line":59,"column":114}}]},"2":{"loc":{"start":{"line":64,"column":77},"end":{"line":64,"column":98}},"type":"binary-expr","locations":[{"start":{"line":64,"column":77},"end":{"line":64,"column":92}},{"start":{"line":64,"column":96},"end":{"line":64,"column":98}}]},"3":{"loc":{"start":{"line":69,"column":4},"end":{"line":71,"column":5}},"type":"if","locations":[{"start":{"line":69,"column":4},"end":{"line":71,"column":5}}]},"4":{"loc":{"start":{"line":72,"column":4},"end":{"line":74,"column":5}},"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":74,"column":5}}]},"5":{"loc":{"start":{"line":85,"column":4},"end":{"line":90,"column":5}},"type":"if","locations":[{"start":{"line":85,"column":4},"end":{"line":90,"column":5}}]},"6":{"loc":{"start":{"line":87,"column":6},"end":{"line":89,"column":7}},"type":"if","locations":[{"start":{"line":87,"column":6},"end":{"line":89,"column":7}}]},"7":{"loc":{"start":{"line":87,"column":10},"end":{"line":87,"column":44}},"type":"binary-expr","locations":[{"start":{"line":87,"column":10},"end":{"line":87,"column":26}},{"start":{"line":87,"column":30},"end":{"line":87,"column":44}}]},"8":{"loc":{"start":{"line":96,"column":4},"end":{"line":98,"column":5}},"type":"if","locations":[{"start":{"line":96,"column":4},"end":{"line":98,"column":5}}]},"9":{"loc":{"start":{"line":128,"column":81},"end":{"line":128,"column":116}},"type":"binary-expr","locations":[{"start":{"line":128,"column":81},"end":{"line":128,"column":108}},{"start":{"line":128,"column":112},"end":{"line":128,"column":116}}]},"10":{"loc":{"start":{"line":129,"column":79},"end":{"line":129,"column":114}},"type":"binary-expr","locations":[{"start":{"line":129,"column":79},"end":{"line":129,"column":106}},{"start":{"line":129,"column":110},"end":{"line":129,"column":114}}]},"11":{"loc":{"start":{"line":134,"column":77},"end":{"line":134,"column":98}},"type":"binary-expr","locations":[{"start":{"line":134,"column":77},"end":{"line":134,"column":92}},{"start":{"line":134,"column":96},"end":{"line":134,"column":98}}]},"12":{"loc":{"start":{"line":139,"column":4},"end":{"line":141,"column":5}},"type":"if","locations":[{"start":{"line":139,"column":4},"end":{"line":141,"column":5}}]},"13":{"loc":{"start":{"line":142,"column":4},"end":{"line":144,"column":5}},"type":"if","locations":[{"start":{"line":142,"column":4},"end":{"line":144,"column":5}}]},"14":{"loc":{"start":{"line":147,"column":4},"end":{"line":153,"column":5}},"type":"if","locations":[{"start":{"line":147,"column":4},"end":{"line":153,"column":5}}]},"15":{"loc":{"start":{"line":149,"column":6},"end":{"line":151,"column":7}},"type":"if","locations":[{"start":{"line":149,"column":6},"end":{"line":151,"column":7}}]},"16":{"loc":{"start":{"line":149,"column":10},"end":{"line":149,"column":83}},"type":"binary-expr","locations":[{"start":{"line":149,"column":10},"end":{"line":149,"column":26}},{"start":{"line":149,"column":30},"end":{"line":149,"column":83}}]},"17":{"loc":{"start":{"line":157,"column":4},"end":{"line":159,"column":5}},"type":"if","locations":[{"start":{"line":157,"column":4},"end":{"line":159,"column":5}}]},"18":{"loc":{"start":{"line":162,"column":4},"end":{"line":164,"column":5}},"type":"if","locations":[{"start":{"line":162,"column":4},"end":{"line":164,"column":5}}]},"19":{"loc":{"start":{"line":166,"column":4},"end":{"line":170,"column":5}},"type":"if","locations":[{"start":{"line":166,"column":4},"end":{"line":170,"column":5}},{"start":{"line":168,"column":11},"end":{"line":170,"column":5}}]},"20":{"loc":{"start":{"line":206,"column":2},"end":{"line":208,"column":3}},"type":"if","locations":[{"start":{"line":206,"column":2},"end":{"line":208,"column":3}}]},"21":{"loc":{"start":{"line":214,"column":2},"end":{"line":228,"column":3}},"type":"if","locations":[{"start":{"line":214,"column":2},"end":{"line":228,"column":3}},{"start":{"line":220,"column":9},"end":{"line":228,"column":3}}]},"22":{"loc":{"start":{"line":241,"column":2},"end":{"line":243,"column":3}},"type":"if","locations":[{"start":{"line":241,"column":2},"end":{"line":243,"column":3}}]},"23":{"loc":{"start":{"line":249,"column":4},"end":{"line":251,"column":5}},"type":"if","locations":[{"start":{"line":249,"column":4},"end":{"line":251,"column":5}}]},"24":{"loc":{"start":{"line":258,"column":2},"end":{"line":262,"column":3}},"type":"if","locations":[{"start":{"line":258,"column":2},"end":{"line":262,"column":3}},{"start":{"line":260,"column":9},"end":{"line":262,"column":3}}]},"25":{"loc":{"start":{"line":268,"column":2},"end":{"line":270,"column":3}},"type":"if","locations":[{"start":{"line":268,"column":2},"end":{"line":270,"column":3}}]},"26":{"loc":{"start":{"line":268,"column":6},"end":{"line":268,"column":66}},"type":"binary-expr","locations":[{"start":{"line":268,"column":6},"end":{"line":268,"column":17}},{"start":{"line":268,"column":21},"end":{"line":268,"column":35}},{"start":{"line":268,"column":39},"end":{"line":268,"column":66}}]},"27":{"loc":{"start":{"line":272,"column":2},"end":{"line":274,"column":3}},"type":"if","locations":[{"start":{"line":272,"column":2},"end":{"line":274,"column":3}}]},"28":{"loc":{"start":{"line":275,"column":2},"end":{"line":280,"column":3}},"type":"if","locations":[{"start":{"line":275,"column":2},"end":{"line":280,"column":3}}]},"29":{"loc":{"start":{"line":275,"column":6},"end":{"line":275,"column":53}},"type":"binary-expr","locations":[{"start":{"line":275,"column":6},"end":{"line":275,"column":26}},{"start":{"line":275,"column":30},"end":{"line":275,"column":53}}]},"30":{"loc":{"start":{"line":277,"column":4},"end":{"line":279,"column":5}},"type":"if","locations":[{"start":{"line":277,"column":4},"end":{"line":279,"column":5}}]},"31":{"loc":{"start":{"line":281,"column":2},"end":{"line":286,"column":3}},"type":"if","locations":[{"start":{"line":281,"column":2},"end":{"line":286,"column":3}}]},"32":{"loc":{"start":{"line":281,"column":6},"end":{"line":281,"column":53}},"type":"binary-expr","locations":[{"start":{"line":281,"column":6},"end":{"line":281,"column":26}},{"start":{"line":281,"column":30},"end":{"line":281,"column":53}}]},"33":{"loc":{"start":{"line":283,"column":4},"end":{"line":285,"column":5}},"type":"if","locations":[{"start":{"line":283,"column":4},"end":{"line":285,"column":5}}]},"34":{"loc":{"start":{"line":287,"column":2},"end":{"line":292,"column":3}},"type":"if","locations":[{"start":{"line":287,"column":2},"end":{"line":292,"column":3}}]},"35":{"loc":{"start":{"line":287,"column":6},"end":{"line":287,"column":53}},"type":"binary-expr","locations":[{"start":{"line":287,"column":6},"end":{"line":287,"column":26}},{"start":{"line":287,"column":30},"end":{"line":287,"column":53}}]},"36":{"loc":{"start":{"line":289,"column":4},"end":{"line":291,"column":5}},"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":291,"column":5}}]},"37":{"loc":{"start":{"line":293,"column":2},"end":{"line":299,"column":3}},"type":"if","locations":[{"start":{"line":293,"column":2},"end":{"line":299,"column":3}}]},"38":{"loc":{"start":{"line":294,"column":4},"end":{"line":298,"column":5}},"type":"if","locations":[{"start":{"line":294,"column":4},"end":{"line":298,"column":5}}]},"39":{"loc":{"start":{"line":300,"column":2},"end":{"line":302,"column":3}},"type":"if","locations":[{"start":{"line":300,"column":2},"end":{"line":302,"column":3}}]},"40":{"loc":{"start":{"line":304,"column":2},"end":{"line":324,"column":3}},"type":"switch","locations":[{"start":{"line":305,"column":4},"end":{"line":312,"column":null}},{"start":{"line":313,"column":4},"end":{"line":313,"column":24}},{"start":{"line":314,"column":4},"end":{"line":314,"column":26}},{"start":{"line":315,"column":4},"end":{"line":315,"column":23}},{"start":{"line":316,"column":4},"end":{"line":316,"column":26}},{"start":{"line":317,"column":4},"end":{"line":323,"column":7}}]},"41":{"loc":{"start":{"line":306,"column":6},"end":{"line":311,"column":7}},"type":"if","locations":[{"start":{"line":306,"column":6},"end":{"line":311,"column":7}}]},"42":{"loc":{"start":{"line":318,"column":6},"end":{"line":323,"column":7}},"type":"if","locations":[{"start":{"line":318,"column":6},"end":{"line":323,"column":7}}]},"43":{"loc":{"start":{"line":320,"column":8},"end":{"line":322,"column":9}},"type":"if","locations":[{"start":{"line":320,"column":8},"end":{"line":322,"column":9}}]},"44":{"loc":{"start":{"line":320,"column":12},"end":{"line":320,"column":108}},"type":"binary-expr","locations":[{"start":{"line":320,"column":12},"end":{"line":320,"column":28}},{"start":{"line":320,"column":32},"end":{"line":320,"column":53}},{"start":{"line":320,"column":57},"end":{"line":320,"column":108}}]},"45":{"loc":{"start":{"line":336,"column":4},"end":{"line":342,"column":5}},"type":"if","locations":[{"start":{"line":336,"column":4},"end":{"line":342,"column":5}},{"start":{"line":340,"column":11},"end":{"line":342,"column":5}}]},"46":{"loc":{"start":{"line":337,"column":6},"end":{"line":339,"column":7}},"type":"if","locations":[{"start":{"line":337,"column":6},"end":{"line":339,"column":7}}]},"47":{"loc":{"start":{"line":361,"column":2},"end":{"line":363,"column":3}},"type":"if","locations":[{"start":{"line":361,"column":2},"end":{"line":363,"column":3}}]},"48":{"loc":{"start":{"line":364,"column":2},"end":{"line":366,"column":3}},"type":"if","locations":[{"start":{"line":364,"column":2},"end":{"line":366,"column":3}}]},"49":{"loc":{"start":{"line":367,"column":2},"end":{"line":369,"column":3}},"type":"if","locations":[{"start":{"line":367,"column":2},"end":{"line":369,"column":3}}]},"50":{"loc":{"start":{"line":370,"column":2},"end":{"line":372,"column":3}},"type":"if","locations":[{"start":{"line":370,"column":2},"end":{"line":372,"column":3}}]},"51":{"loc":{"start":{"line":370,"column":6},"end":{"line":370,"column":49}},"type":"binary-expr","locations":[{"start":{"line":370,"column":6},"end":{"line":370,"column":26}},{"start":{"line":370,"column":30},"end":{"line":370,"column":49}}]},"52":{"loc":{"start":{"line":373,"column":2},"end":{"line":393,"column":3}},"type":"switch","locations":[{"start":{"line":374,"column":4},"end":{"line":378,"column":null}},{"start":{"line":379,"column":4},"end":{"line":380,"column":null}},{"start":{"line":381,"column":4},"end":{"line":382,"column":null}},{"start":{"line":383,"column":4},"end":{"line":384,"column":null}},{"start":{"line":385,"column":4},"end":{"line":386,"column":null}},{"start":{"line":387,"column":4},"end":{"line":388,"column":null}},{"start":{"line":389,"column":4},"end":{"line":390,"column":null}},{"start":{"line":391,"column":4},"end":{"line":392,"column":null}}]},"53":{"loc":{"start":{"line":375,"column":6},"end":{"line":377,"column":7}},"type":"if","locations":[{"start":{"line":375,"column":6},"end":{"line":377,"column":7}}]},"54":{"loc":{"start":{"line":375,"column":10},"end":{"line":375,"column":82}},"type":"binary-expr","locations":[{"start":{"line":375,"column":10},"end":{"line":375,"column":35}},{"start":{"line":375,"column":39},"end":{"line":375,"column":82}}]},"55":{"loc":{"start":{"line":403,"column":4},"end":{"line":405,"column":5}},"type":"if","locations":[{"start":{"line":403,"column":4},"end":{"line":405,"column":5}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":2,"14":2,"15":2,"16":2,"17":1,"18":2,"19":2,"20":2,"21":0,"22":2,"23":0,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":2,"31":0,"32":0,"33":0,"34":2,"35":1,"36":1,"37":0,"38":1,"39":1,"40":1,"41":1,"42":1,"43":0,"44":0,"45":0,"46":0,"47":1,"48":2,"49":2,"50":2,"51":2,"52":1,"53":2,"54":2,"55":2,"56":0,"57":2,"58":0,"59":2,"60":2,"61":0,"62":0,"63":0,"64":2,"65":2,"66":2,"67":2,"68":0,"69":2,"70":2,"71":2,"72":0,"73":2,"74":0,"75":2,"76":2,"77":2,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":0,"85":0,"86":0,"87":0,"88":1,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":2,"109":2,"110":0,"111":2,"112":2,"113":0,"114":0,"115":0,"116":0,"117":2,"118":2,"119":2,"120":0,"121":2,"122":2,"123":2,"124":2,"125":0,"126":2,"127":2,"128":0,"129":2,"130":0,"131":0,"132":0,"133":2,"134":0,"135":0,"136":0,"137":2,"138":0,"139":0,"140":0,"141":2,"142":0,"143":0,"144":0,"145":0,"146":2,"147":0,"148":2,"149":2,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":2,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":2,"175":0,"176":2,"177":2,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0},"f":{"0":2,"1":1,"2":2,"3":1,"4":1,"5":1,"6":0,"7":0,"8":2,"9":1,"10":2,"11":1,"12":1,"13":1,"14":0,"15":0,"16":0,"17":0,"18":0,"19":2,"20":0,"21":2,"22":0,"23":0,"24":2,"25":0,"26":0},"b":{"0":[2,2],"1":[2,2],"2":[2,1],"3":[0],"4":[0],"5":[0],"6":[0],"7":[0,0],"8":[0],"9":[2,2],"10":[2,2],"11":[2,1],"12":[0],"13":[0],"14":[0],"15":[0],"16":[0,0],"17":[0],"18":[0],"19":[0,2],"20":[0],"21":[0,0],"22":[0],"23":[0],"24":[0,2],"25":[0],"26":[2,2,2],"27":[0],"28":[0],"29":[2,0],"30":[0],"31":[0],"32":[2,0],"33":[0],"34":[0],"35":[2,0],"36":[0],"37":[0],"38":[0],"39":[0],"40":[0,0,0,0,0,0],"41":[0],"42":[0],"43":[0],"44":[0,0,0],"45":[0,0],"46":[0],"47":[0],"48":[2],"49":[0],"50":[0],"51":[0,0],"52":[0,0,0,0,0,0,0,0],"53":[0],"54":[0,0],"55":[0]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/protobuf.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/protobuf.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":null}},"1":{"start":{"line":11,"column":0},"end":{"line":11,"column":null}},"2":{"start":{"line":16,"column":0},"end":{"line":16,"column":null}},"3":{"start":{"line":26,"column":0},"end":{"line":26,"column":null}},"4":{"start":{"line":38,"column":0},"end":{"line":38,"column":68}},"5":{"start":{"line":39,"column":0},"end":{"line":39,"column":37}},"6":{"start":{"line":40,"column":0},"end":{"line":40,"column":75}},"7":{"start":{"line":41,"column":0},"end":{"line":41,"column":49}},"8":{"start":{"line":42,"column":0},"end":{"line":42,"column":53}},"9":{"start":{"line":43,"column":0},"end":{"line":43,"column":75}},"10":{"start":{"line":44,"column":0},"end":{"line":44,"column":83}},"11":{"start":{"line":45,"column":0},"end":{"line":45,"column":63}},"12":{"start":{"line":46,"column":0},"end":{"line":46,"column":61}},"13":{"start":{"line":47,"column":0},"end":{"line":47,"column":69}},"14":{"start":{"line":48,"column":0},"end":{"line":48,"column":71}},"15":{"start":{"line":49,"column":0},"end":{"line":49,"column":69}},"16":{"start":{"line":50,"column":0},"end":{"line":50,"column":61}},"17":{"start":{"line":51,"column":0},"end":{"line":51,"column":65}},"18":{"start":{"line":52,"column":0},"end":{"line":52,"column":63}},"19":{"start":{"line":53,"column":0},"end":{"line":53,"column":81}},"20":{"start":{"line":54,"column":0},"end":{"line":54,"column":73}},"21":{"start":{"line":55,"column":0},"end":{"line":55,"column":71}},"22":{"start":{"line":56,"column":0},"end":{"line":56,"column":63}},"23":{"start":{"line":58,"column":20},"end":{"line":85,"column":2}},"24":{"start":{"line":101,"column":4},"end":{"line":101,"column":null}},"25":{"start":{"line":102,"column":4},"end":{"line":102,"column":null}},"26":{"start":{"line":103,"column":4},"end":{"line":103,"column":null}},"27":{"start":{"line":104,"column":4},"end":{"line":104,"column":null}},"28":{"start":{"line":105,"column":4},"end":{"line":107,"column":null}},"29":{"start":{"line":106,"column":6},"end":{"line":106,"column":null}},"30":{"start":{"line":108,"column":4},"end":{"line":110,"column":5}},"31":{"start":{"line":109,"column":6},"end":{"line":109,"column":null}},"32":{"start":{"line":114,"column":4},"end":{"line":116,"column":5}},"33":{"start":{"line":115,"column":6},"end":{"line":115,"column":null}},"34":{"start":{"line":117,"column":4},"end":{"line":119,"column":5}},"35":{"start":{"line":118,"column":6},"end":{"line":118,"column":null}},"36":{"start":{"line":121,"column":21},"end":{"line":121,"column":34}},"37":{"start":{"line":122,"column":4},"end":{"line":124,"column":5}},"38":{"start":{"line":123,"column":6},"end":{"line":123,"column":null}},"39":{"start":{"line":125,"column":24},"end":{"line":125,"column":58}},"40":{"start":{"line":126,"column":4},"end":{"line":128,"column":5}},"41":{"start":{"line":127,"column":6},"end":{"line":127,"column":null}},"42":{"start":{"line":129,"column":21},"end":{"line":129,"column":37}},"43":{"start":{"line":130,"column":19},"end":{"line":130,"column":53}},"44":{"start":{"line":131,"column":23},"end":{"line":131,"column":73}},"45":{"start":{"line":132,"column":20},"end":{"line":132,"column":49}},"46":{"start":{"line":133,"column":4},"end":{"line":133,"column":null}},"47":{"start":{"line":134,"column":26},"end":{"line":134,"column":63}},"48":{"start":{"line":135,"column":21},"end":{"line":135,"column":60}},"49":{"start":{"line":136,"column":4},"end":{"line":136,"column":null}},"50":{"start":{"line":140,"column":18},"end":{"line":140,"column":59}},"51":{"start":{"line":141,"column":4},"end":{"line":143,"column":5}},"52":{"start":{"line":142,"column":6},"end":{"line":142,"column":null}},"53":{"start":{"line":144,"column":17},"end":{"line":144,"column":48}},"54":{"start":{"line":145,"column":25},"end":{"line":145,"column":58}},"55":{"start":{"line":146,"column":22},"end":{"line":146,"column":52}},"56":{"start":{"line":147,"column":21},"end":{"line":148,"column":68}},"57":{"start":{"line":149,"column":17},"end":{"line":155,"column":null}},"58":{"start":{"line":156,"column":4},"end":{"line":156,"column":null}},"59":{"start":{"line":157,"column":4},"end":{"line":157,"column":null}},"60":{"start":{"line":161,"column":17},"end":{"line":161,"column":42}},"61":{"start":{"line":162,"column":4},"end":{"line":162,"column":null}},"62":{"start":{"line":163,"column":4},"end":{"line":163,"column":null}},"63":{"start":{"line":167,"column":4},"end":{"line":167,"column":null}},"64":{"start":{"line":168,"column":4},"end":{"line":172,"column":null}},"65":{"start":{"line":169,"column":6},"end":{"line":171,"column":7}},"66":{"start":{"line":170,"column":8},"end":{"line":170,"column":null}},"67":{"start":{"line":177,"column":30},"end":{"line":177,"column":32}},"68":{"start":{"line":178,"column":4},"end":{"line":188,"column":5}},"69":{"start":{"line":178,"column":17},"end":{"line":178,"column":18}},"70":{"start":{"line":179,"column":18},"end":{"line":179,"column":42}},"71":{"start":{"line":180,"column":6},"end":{"line":182,"column":7}},"72":{"start":{"line":181,"column":8},"end":{"line":181,"column":16}},"73":{"start":{"line":183,"column":18},"end":{"line":183,"column":94}},"74":{"start":{"line":184,"column":6},"end":{"line":186,"column":7}},"75":{"start":{"line":185,"column":8},"end":{"line":185,"column":null}},"76":{"start":{"line":187,"column":6},"end":{"line":187,"column":null}},"77":{"start":{"line":189,"column":29},"end":{"line":193,"column":null}},"78":{"start":{"line":194,"column":13},"end":{"line":194,"column":15}},"79":{"start":{"line":195,"column":18},"end":{"line":195,"column":19}},"80":{"start":{"line":196,"column":4},"end":{"line":204,"column":5}},"81":{"start":{"line":197,"column":6},"end":{"line":202,"column":7}},"82":{"start":{"line":198,"column":8},"end":{"line":198,"column":null}},"83":{"start":{"line":200,"column":8},"end":{"line":200,"column":null}},"84":{"start":{"line":203,"column":6},"end":{"line":203,"column":null}},"85":{"start":{"line":205,"column":4},"end":{"line":214,"column":null}},"86":{"start":{"line":218,"column":33},"end":{"line":218,"column":70}},"87":{"start":{"line":219,"column":19},"end":{"line":219,"column":76}},"88":{"start":{"line":220,"column":15},"end":{"line":220,"column":40}},"89":{"start":{"line":221,"column":4},"end":{"line":221,"column":null}},"90":{"start":{"line":222,"column":4},"end":{"line":224,"column":5}},"91":{"start":{"line":222,"column":17},"end":{"line":222,"column":18}},"92":{"start":{"line":223,"column":6},"end":{"line":223,"column":null}},"93":{"start":{"line":225,"column":4},"end":{"line":225,"column":null}},"94":{"start":{"line":229,"column":18},"end":{"line":229,"column":43}},"95":{"start":{"line":230,"column":19},"end":{"line":230,"column":37}},"96":{"start":{"line":231,"column":4},"end":{"line":243,"column":5}},"97":{"start":{"line":235,"column":35},"end":{"line":235,"column":37}},"98":{"start":{"line":236,"column":6},"end":{"line":236,"column":null}},"99":{"start":{"line":237,"column":6},"end":{"line":237,"column":null}},"100":{"start":{"line":238,"column":6},"end":{"line":238,"column":null}},"101":{"start":{"line":240,"column":25},"end":{"line":240,"column":65}},"102":{"start":{"line":241,"column":6},"end":{"line":241,"column":null}},"103":{"start":{"line":242,"column":6},"end":{"line":242,"column":null}},"104":{"start":{"line":247,"column":19},"end":{"line":247,"column":37}},"105":{"start":{"line":248,"column":4},"end":{"line":261,"column":5}},"106":{"start":{"line":249,"column":23},"end":{"line":249,"column":39}},"107":{"start":{"line":250,"column":6},"end":{"line":254,"column":7}},"108":{"start":{"line":250,"column":19},"end":{"line":250,"column":20}},"109":{"start":{"line":251,"column":8},"end":{"line":253,"column":9}},"110":{"start":{"line":252,"column":10},"end":{"line":252,"column":null}},"111":{"start":{"line":256,"column":6},"end":{"line":260,"column":7}},"112":{"start":{"line":256,"column":19},"end":{"line":256,"column":20}},"113":{"start":{"line":257,"column":8},"end":{"line":259,"column":9}},"114":{"start":{"line":258,"column":10},"end":{"line":258,"column":null}},"115":{"start":{"line":262,"column":4},"end":{"line":262,"column":84}},"116":{"start":{"line":266,"column":21},"end":{"line":266,"column":34}},"117":{"start":{"line":267,"column":4},"end":{"line":269,"column":5}},"118":{"start":{"line":268,"column":6},"end":{"line":268,"column":null}},"119":{"start":{"line":270,"column":24},"end":{"line":270,"column":58}},"120":{"start":{"line":271,"column":4},"end":{"line":273,"column":5}},"121":{"start":{"line":272,"column":6},"end":{"line":272,"column":null}},"122":{"start":{"line":274,"column":4},"end":{"line":274,"column":null}},"123":{"start":{"line":95,"column":0},"end":{"line":95,"column":13}},"124":{"start":{"line":285,"column":4},"end":{"line":285,"column":null}},"125":{"start":{"line":286,"column":4},"end":{"line":286,"column":null}},"126":{"start":{"line":287,"column":4},"end":{"line":287,"column":null}},"127":{"start":{"line":288,"column":4},"end":{"line":290,"column":null}},"128":{"start":{"line":289,"column":6},"end":{"line":289,"column":null}},"129":{"start":{"line":291,"column":4},"end":{"line":293,"column":5}},"130":{"start":{"line":292,"column":6},"end":{"line":292,"column":null}},"131":{"start":{"line":297,"column":4},"end":{"line":299,"column":5}},"132":{"start":{"line":298,"column":6},"end":{"line":298,"column":null}},"133":{"start":{"line":300,"column":4},"end":{"line":302,"column":5}},"134":{"start":{"line":301,"column":6},"end":{"line":301,"column":null}},"135":{"start":{"line":304,"column":17},"end":{"line":304,"column":67}},"136":{"start":{"line":305,"column":15},"end":{"line":305,"column":55}},"137":{"start":{"line":306,"column":36},"end":{"line":306,"column":80}},"138":{"start":{"line":307,"column":24},"end":{"line":307,"column":58}},"139":{"start":{"line":309,"column":20},"end":{"line":309,"column":49}},"140":{"start":{"line":310,"column":23},"end":{"line":310,"column":58}},"141":{"start":{"line":312,"column":21},"end":{"line":312,"column":52}},"142":{"start":{"line":313,"column":14},"end":{"line":313,"column":47}},"143":{"start":{"line":318,"column":4},"end":{"line":322,"column":5}},"144":{"start":{"line":319,"column":6},"end":{"line":319,"column":null}},"145":{"start":{"line":321,"column":6},"end":{"line":321,"column":null}},"146":{"start":{"line":323,"column":4},"end":{"line":323,"column":null}},"147":{"start":{"line":324,"column":4},"end":{"line":324,"column":null}},"148":{"start":{"line":328,"column":21},"end":{"line":328,"column":34}},"149":{"start":{"line":329,"column":4},"end":{"line":331,"column":5}},"150":{"start":{"line":330,"column":6},"end":{"line":330,"column":null}},"151":{"start":{"line":332,"column":24},"end":{"line":332,"column":58}},"152":{"start":{"line":333,"column":4},"end":{"line":335,"column":5}},"153":{"start":{"line":334,"column":6},"end":{"line":334,"column":null}},"154":{"start":{"line":336,"column":4},"end":{"line":336,"column":null}},"155":{"start":{"line":340,"column":18},"end":{"line":340,"column":68}},"156":{"start":{"line":341,"column":4},"end":{"line":343,"column":5}},"157":{"start":{"line":342,"column":6},"end":{"line":342,"column":null}},"158":{"start":{"line":344,"column":21},"end":{"line":344,"column":59}},"159":{"start":{"line":345,"column":4},"end":{"line":347,"column":5}},"160":{"start":{"line":346,"column":6},"end":{"line":346,"column":null}},"161":{"start":{"line":348,"column":4},"end":{"line":348,"column":null}},"162":{"start":{"line":349,"column":4},"end":{"line":349,"column":null}},"163":{"start":{"line":353,"column":17},"end":{"line":353,"column":42}},"164":{"start":{"line":354,"column":4},"end":{"line":354,"column":null}},"165":{"start":{"line":355,"column":21},"end":{"line":355,"column":94}},"166":{"start":{"line":356,"column":20},"end":{"line":370,"column":5}},"167":{"start":{"line":357,"column":6},"end":{"line":369,"column":7}},"168":{"start":{"line":358,"column":20},"end":{"line":358,"column":44}},"169":{"start":{"line":359,"column":8},"end":{"line":361,"column":9}},"170":{"start":{"line":360,"column":10},"end":{"line":360,"column":null}},"171":{"start":{"line":362,"column":8},"end":{"line":362,"column":null}},"172":{"start":{"line":364,"column":20},"end":{"line":364,"column":37}},"173":{"start":{"line":365,"column":8},"end":{"line":367,"column":9}},"174":{"start":{"line":366,"column":10},"end":{"line":366,"column":null}},"175":{"start":{"line":368,"column":8},"end":{"line":368,"column":null}},"176":{"start":{"line":372,"column":25},"end":{"line":372,"column":62}},"177":{"start":{"line":373,"column":4},"end":{"line":373,"column":null}},"178":{"start":{"line":374,"column":4},"end":{"line":374,"column":null}},"179":{"start":{"line":378,"column":15},"end":{"line":378,"column":41}},"180":{"start":{"line":379,"column":18},"end":{"line":379,"column":33}},"181":{"start":{"line":380,"column":23},"end":{"line":380,"column":25}},"182":{"start":{"line":381,"column":4},"end":{"line":381,"column":null}},"183":{"start":{"line":382,"column":4},"end":{"line":384,"column":5}},"184":{"start":{"line":382,"column":17},"end":{"line":382,"column":18}},"185":{"start":{"line":383,"column":6},"end":{"line":383,"column":null}},"186":{"start":{"line":385,"column":4},"end":{"line":385,"column":null}},"187":{"start":{"line":389,"column":16},"end":{"line":389,"column":29}},"188":{"start":{"line":390,"column":4},"end":{"line":392,"column":5}},"189":{"start":{"line":391,"column":6},"end":{"line":391,"column":null}},"190":{"start":{"line":393,"column":4},"end":{"line":393,"column":null}},"191":{"start":{"line":397,"column":16},"end":{"line":397,"column":29}},"192":{"start":{"line":398,"column":4},"end":{"line":400,"column":5}},"193":{"start":{"line":399,"column":6},"end":{"line":399,"column":null}},"194":{"start":{"line":401,"column":4},"end":{"line":401,"column":null}},"195":{"start":{"line":280,"column":0},"end":{"line":280,"column":13}},"196":{"start":{"line":406,"column":2},"end":{"line":408,"column":3}},"197":{"start":{"line":407,"column":4},"end":{"line":407,"column":null}},"198":{"start":{"line":409,"column":2},"end":{"line":413,"column":3}},"199":{"start":{"line":410,"column":4},"end":{"line":412,"column":5}},"200":{"start":{"line":410,"column":17},"end":{"line":410,"column":18}},"201":{"start":{"line":411,"column":6},"end":{"line":411,"column":null}},"202":{"start":{"line":414,"column":2},"end":{"line":416,"column":3}},"203":{"start":{"line":415,"column":4},"end":{"line":415,"column":null}},"204":{"start":{"line":417,"column":19},"end":{"line":417,"column":32}},"205":{"start":{"line":418,"column":2},"end":{"line":425,"column":3}},"206":{"start":{"line":419,"column":19},"end":{"line":419,"column":36}},"207":{"start":{"line":420,"column":4},"end":{"line":423,"column":5}},"208":{"start":{"line":420,"column":17},"end":{"line":420,"column":18}},"209":{"start":{"line":421,"column":17},"end":{"line":421,"column":26}},"210":{"start":{"line":422,"column":6},"end":{"line":422,"column":null}},"211":{"start":{"line":424,"column":4},"end":{"line":424,"column":null}},"212":{"start":{"line":426,"column":19},"end":{"line":426,"column":37}},"213":{"start":{"line":427,"column":2},"end":{"line":432,"column":3}},"214":{"start":{"line":428,"column":21},"end":{"line":428,"column":40}},"215":{"start":{"line":429,"column":4},"end":{"line":431,"column":5}},"216":{"start":{"line":430,"column":6},"end":{"line":430,"column":null}},"217":{"start":{"line":433,"column":2},"end":{"line":433,"column":null}},"218":{"start":{"line":438,"column":2},"end":{"line":457,"column":3}},"219":{"start":{"line":439,"column":4},"end":{"line":445,"column":null}},"220":{"start":{"line":446,"column":18},"end":{"line":446,"column":30}},"221":{"start":{"line":447,"column":21},"end":{"line":447,"column":70}},"222":{"start":{"line":448,"column":4},"end":{"line":454,"column":5}},"223":{"start":{"line":449,"column":6},"end":{"line":451,"column":7}},"224":{"start":{"line":450,"column":8},"end":{"line":450,"column":null}},"225":{"start":{"line":453,"column":6},"end":{"line":453,"column":null}},"226":{"start":{"line":456,"column":4},"end":{"line":456,"column":null}},"227":{"start":{"line":461,"column":2},"end":{"line":496,"column":3}},"228":{"start":{"line":463,"column":6},"end":{"line":463,"column":null}},"229":{"start":{"line":465,"column":6},"end":{"line":465,"column":null}},"230":{"start":{"line":467,"column":6},"end":{"line":467,"column":null}},"231":{"start":{"line":469,"column":6},"end":{"line":469,"column":null}},"232":{"start":{"line":471,"column":6},"end":{"line":493,"column":7}},"233":{"start":{"line":473,"column":10},"end":{"line":473,"column":null}},"234":{"start":{"line":475,"column":10},"end":{"line":475,"column":null}},"235":{"start":{"line":481,"column":10},"end":{"line":481,"column":null}},"236":{"start":{"line":487,"column":10},"end":{"line":487,"column":null}},"237":{"start":{"line":490,"column":10},"end":{"line":490,"column":null}},"238":{"start":{"line":492,"column":10},"end":{"line":492,"column":null}},"239":{"start":{"line":495,"column":6},"end":{"line":495,"column":null}},"240":{"start":{"line":500,"column":18},"end":{"line":500,"column":34}},"241":{"start":{"line":501,"column":2},"end":{"line":504,"column":3}},"242":{"start":{"line":502,"column":25},"end":{"line":502,"column":58}},"243":{"start":{"line":503,"column":4},"end":{"line":503,"column":null}},"244":{"start":{"line":505,"column":2},"end":{"line":505,"column":null}},"245":{"start":{"line":509,"column":2},"end":{"line":513,"column":3}},"246":{"start":{"line":510,"column":4},"end":{"line":512,"column":5}},"247":{"start":{"line":511,"column":6},"end":{"line":511,"column":null}},"248":{"start":{"line":514,"column":2},"end":{"line":514,"column":null}},"249":{"start":{"line":518,"column":2},"end":{"line":520,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":100,"column":2},"end":{"line":100,"column":14}},"loc":{"start":{"line":100,"column":82},"end":{"line":111,"column":3}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":105,"column":28},"end":{"line":105,"column":33}},"loc":{"start":{"line":105,"column":97},"end":{"line":107,"column":5}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":113,"column":2},"end":{"line":113,"column":7}},"loc":{"start":{"line":113,"column":41},"end":{"line":137,"column":3}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":139,"column":2},"end":{"line":139,"column":7}},"loc":{"start":{"line":139,"column":40},"end":{"line":158,"column":3}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":160,"column":2},"end":{"line":160,"column":18}},"loc":{"start":{"line":160,"column":37},"end":{"line":164,"column":3}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":166,"column":2},"end":{"line":166,"column":16}},"loc":{"start":{"line":166,"column":62},"end":{"line":173,"column":3}}},"6":{"name":"(anonymous_7)","decl":{"start":{"line":168,"column":34},"end":{"line":168,"column":35}},"loc":{"start":{"line":168,"column":42},"end":{"line":172,"column":5}}},"7":{"name":"(anonymous_8)","decl":{"start":{"line":175,"column":2},"end":{"line":175,"column":7}},"loc":{"start":{"line":176,"column":69},"end":{"line":215,"column":3}}},"8":{"name":"(anonymous_9)","decl":{"start":{"line":217,"column":2},"end":{"line":217,"column":21}},"loc":{"start":{"line":217,"column":46},"end":{"line":226,"column":3}}},"9":{"name":"(anonymous_10)","decl":{"start":{"line":228,"column":2},"end":{"line":228,"column":18}},"loc":{"start":{"line":228,"column":58},"end":{"line":244,"column":3}}},"10":{"name":"(anonymous_11)","decl":{"start":{"line":246,"column":2},"end":{"line":246,"column":9}},"loc":{"start":{"line":246,"column":34},"end":{"line":263,"column":3}}},"11":{"name":"(anonymous_12)","decl":{"start":{"line":265,"column":2},"end":{"line":265,"column":7}},"loc":{"start":{"line":265,"column":81},"end":{"line":275,"column":3}}},"12":{"name":"(anonymous_13)","decl":{"start":{"line":284,"column":2},"end":{"line":284,"column":14}},"loc":{"start":{"line":284,"column":84},"end":{"line":294,"column":3}}},"13":{"name":"(anonymous_14)","decl":{"start":{"line":288,"column":28},"end":{"line":288,"column":33}},"loc":{"start":{"line":288,"column":97},"end":{"line":290,"column":5}}},"14":{"name":"(anonymous_15)","decl":{"start":{"line":296,"column":2},"end":{"line":296,"column":7}},"loc":{"start":{"line":296,"column":50},"end":{"line":325,"column":3}}},"15":{"name":"(anonymous_16)","decl":{"start":{"line":327,"column":2},"end":{"line":327,"column":7}},"loc":{"start":{"line":327,"column":81},"end":{"line":337,"column":3}}},"16":{"name":"(anonymous_17)","decl":{"start":{"line":339,"column":2},"end":{"line":339,"column":7}},"loc":{"start":{"line":339,"column":51},"end":{"line":350,"column":3}}},"17":{"name":"(anonymous_18)","decl":{"start":{"line":352,"column":2},"end":{"line":352,"column":7}},"loc":{"start":{"line":352,"column":54},"end":{"line":375,"column":3}}},"18":{"name":"(anonymous_19)","decl":{"start":{"line":356,"column":20},"end":{"line":356,"column":21}},"loc":{"start":{"line":356,"column":40},"end":{"line":370,"column":5}}},"19":{"name":"(anonymous_20)","decl":{"start":{"line":377,"column":2},"end":{"line":377,"column":20}},"loc":{"start":{"line":377,"column":36},"end":{"line":386,"column":3}}},"20":{"name":"(anonymous_21)","decl":{"start":{"line":388,"column":2},"end":{"line":388,"column":15}},"loc":{"start":{"line":388,"column":50},"end":{"line":394,"column":3}}},"21":{"name":"(anonymous_22)","decl":{"start":{"line":396,"column":2},"end":{"line":396,"column":21}},"loc":{"start":{"line":396,"column":63},"end":{"line":402,"column":3}}},"22":{"name":"transform","decl":{"start":{"line":405,"column":15},"end":{"line":405,"column":24}},"loc":{"start":{"line":405,"column":108},"end":{"line":434,"column":1}}},"23":{"name":"transformField","decl":{"start":{"line":436,"column":15},"end":{"line":436,"column":29}},"loc":{"start":{"line":437,"column":64},"end":{"line":458,"column":1}}},"24":{"name":"getType","decl":{"start":{"line":460,"column":9},"end":{"line":460,"column":16}},"loc":{"start":{"line":460,"column":30},"end":{"line":497,"column":1}}},"25":{"name":"getInlineTags","decl":{"start":{"line":499,"column":9},"end":{"line":499,"column":22}},"loc":{"start":{"line":499,"column":36},"end":{"line":506,"column":1}}},"26":{"name":"disjoint","decl":{"start":{"line":508,"column":9},"end":{"line":508,"column":17}},"loc":{"start":{"line":508,"column":56},"end":{"line":515,"column":1}}},"27":{"name":"isBuiltin","decl":{"start":{"line":517,"column":9},"end":{"line":517,"column":18}},"loc":{"start":{"line":517,"column":31},"end":{"line":521,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":102,"column":20},"end":{"line":102,"column":60}},"type":"binary-expr","locations":[{"start":{"line":102,"column":20},"end":{"line":102,"column":33}},{"start":{"line":102,"column":37},"end":{"line":102,"column":60}}]},"1":{"loc":{"start":{"line":103,"column":67},"end":{"line":103,"column":102}},"type":"binary-expr","locations":[{"start":{"line":103,"column":67},"end":{"line":103,"column":94}},{"start":{"line":103,"column":98},"end":{"line":103,"column":102}}]},"2":{"loc":{"start":{"line":104,"column":69},"end":{"line":104,"column":104}},"type":"binary-expr","locations":[{"start":{"line":104,"column":69},"end":{"line":104,"column":96}},{"start":{"line":104,"column":100},"end":{"line":104,"column":104}}]},"3":{"loc":{"start":{"line":109,"column":77},"end":{"line":109,"column":98}},"type":"binary-expr","locations":[{"start":{"line":109,"column":77},"end":{"line":109,"column":92}},{"start":{"line":109,"column":96},"end":{"line":109,"column":98}}]},"4":{"loc":{"start":{"line":114,"column":4},"end":{"line":116,"column":5}},"type":"if","locations":[{"start":{"line":114,"column":4},"end":{"line":116,"column":5}}]},"5":{"loc":{"start":{"line":117,"column":4},"end":{"line":119,"column":5}},"type":"if","locations":[{"start":{"line":117,"column":4},"end":{"line":119,"column":5}}]},"6":{"loc":{"start":{"line":122,"column":4},"end":{"line":124,"column":5}},"type":"if","locations":[{"start":{"line":122,"column":4},"end":{"line":124,"column":5}}]},"7":{"loc":{"start":{"line":126,"column":4},"end":{"line":128,"column":5}},"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":128,"column":5}}]},"8":{"loc":{"start":{"line":141,"column":4},"end":{"line":143,"column":5}},"type":"if","locations":[{"start":{"line":141,"column":4},"end":{"line":143,"column":5}}]},"9":{"loc":{"start":{"line":169,"column":6},"end":{"line":171,"column":7}},"type":"if","locations":[{"start":{"line":169,"column":6},"end":{"line":171,"column":7}}]},"10":{"loc":{"start":{"line":180,"column":6},"end":{"line":182,"column":7}},"type":"if","locations":[{"start":{"line":180,"column":6},"end":{"line":182,"column":7}}]},"11":{"loc":{"start":{"line":184,"column":6},"end":{"line":186,"column":7}},"type":"if","locations":[{"start":{"line":184,"column":6},"end":{"line":186,"column":7}}]},"12":{"loc":{"start":{"line":196,"column":4},"end":{"line":204,"column":5}},"type":"if","locations":[{"start":{"line":196,"column":4},"end":{"line":204,"column":5}}]},"13":{"loc":{"start":{"line":197,"column":6},"end":{"line":202,"column":7}},"type":"if","locations":[{"start":{"line":197,"column":6},"end":{"line":202,"column":7}},{"start":{"line":199,"column":13},"end":{"line":202,"column":7}}]},"14":{"loc":{"start":{"line":231,"column":4},"end":{"line":243,"column":5}},"type":"if","locations":[{"start":{"line":231,"column":4},"end":{"line":243,"column":5}},{"start":{"line":239,"column":11},"end":{"line":243,"column":5}}]},"15":{"loc":{"start":{"line":248,"column":4},"end":{"line":261,"column":5}},"type":"if","locations":[{"start":{"line":248,"column":4},"end":{"line":261,"column":5}},{"start":{"line":255,"column":11},"end":{"line":261,"column":5}}]},"16":{"loc":{"start":{"line":251,"column":8},"end":{"line":253,"column":9}},"type":"if","locations":[{"start":{"line":251,"column":8},"end":{"line":253,"column":9}}]},"17":{"loc":{"start":{"line":257,"column":8},"end":{"line":259,"column":9}},"type":"if","locations":[{"start":{"line":257,"column":8},"end":{"line":259,"column":9}}]},"18":{"loc":{"start":{"line":267,"column":4},"end":{"line":269,"column":5}},"type":"if","locations":[{"start":{"line":267,"column":4},"end":{"line":269,"column":5}}]},"19":{"loc":{"start":{"line":271,"column":4},"end":{"line":273,"column":5}},"type":"if","locations":[{"start":{"line":271,"column":4},"end":{"line":273,"column":5}}]},"20":{"loc":{"start":{"line":287,"column":67},"end":{"line":287,"column":102}},"type":"binary-expr","locations":[{"start":{"line":287,"column":67},"end":{"line":287,"column":94}},{"start":{"line":287,"column":98},"end":{"line":287,"column":102}}]},"21":{"loc":{"start":{"line":292,"column":77},"end":{"line":292,"column":98}},"type":"binary-expr","locations":[{"start":{"line":292,"column":77},"end":{"line":292,"column":92}},{"start":{"line":292,"column":96},"end":{"line":292,"column":98}}]},"22":{"loc":{"start":{"line":297,"column":4},"end":{"line":299,"column":5}},"type":"if","locations":[{"start":{"line":297,"column":4},"end":{"line":299,"column":5}}]},"23":{"loc":{"start":{"line":300,"column":4},"end":{"line":302,"column":5}},"type":"if","locations":[{"start":{"line":300,"column":4},"end":{"line":302,"column":5}}]},"24":{"loc":{"start":{"line":318,"column":4},"end":{"line":322,"column":5}},"type":"if","locations":[{"start":{"line":318,"column":4},"end":{"line":322,"column":5}},{"start":{"line":320,"column":11},"end":{"line":322,"column":5}}]},"25":{"loc":{"start":{"line":329,"column":4},"end":{"line":331,"column":5}},"type":"if","locations":[{"start":{"line":329,"column":4},"end":{"line":331,"column":5}}]},"26":{"loc":{"start":{"line":333,"column":4},"end":{"line":335,"column":5}},"type":"if","locations":[{"start":{"line":333,"column":4},"end":{"line":335,"column":5}}]},"27":{"loc":{"start":{"line":341,"column":4},"end":{"line":343,"column":5}},"type":"if","locations":[{"start":{"line":341,"column":4},"end":{"line":343,"column":5}}]},"28":{"loc":{"start":{"line":345,"column":4},"end":{"line":347,"column":5}},"type":"if","locations":[{"start":{"line":345,"column":4},"end":{"line":347,"column":5}}]},"29":{"loc":{"start":{"line":357,"column":6},"end":{"line":369,"column":7}},"type":"if","locations":[{"start":{"line":357,"column":6},"end":{"line":369,"column":7}},{"start":{"line":363,"column":13},"end":{"line":369,"column":7}}]},"30":{"loc":{"start":{"line":359,"column":8},"end":{"line":361,"column":9}},"type":"if","locations":[{"start":{"line":359,"column":8},"end":{"line":361,"column":9}}]},"31":{"loc":{"start":{"line":365,"column":8},"end":{"line":367,"column":9}},"type":"if","locations":[{"start":{"line":365,"column":8},"end":{"line":367,"column":9}}]},"32":{"loc":{"start":{"line":390,"column":4},"end":{"line":392,"column":5}},"type":"if","locations":[{"start":{"line":390,"column":4},"end":{"line":392,"column":5}}]},"33":{"loc":{"start":{"line":398,"column":4},"end":{"line":400,"column":5}},"type":"if","locations":[{"start":{"line":398,"column":4},"end":{"line":400,"column":5}}]},"34":{"loc":{"start":{"line":406,"column":2},"end":{"line":408,"column":3}},"type":"if","locations":[{"start":{"line":406,"column":2},"end":{"line":408,"column":3}}]},"35":{"loc":{"start":{"line":406,"column":6},"end":{"line":406,"column":39}},"type":"binary-expr","locations":[{"start":{"line":406,"column":6},"end":{"line":406,"column":17}},{"start":{"line":406,"column":21},"end":{"line":406,"column":39}}]},"36":{"loc":{"start":{"line":409,"column":2},"end":{"line":413,"column":3}},"type":"if","locations":[{"start":{"line":409,"column":2},"end":{"line":413,"column":3}}]},"37":{"loc":{"start":{"line":414,"column":2},"end":{"line":416,"column":3}},"type":"if","locations":[{"start":{"line":414,"column":2},"end":{"line":416,"column":3}}]},"38":{"loc":{"start":{"line":418,"column":2},"end":{"line":425,"column":3}},"type":"if","locations":[{"start":{"line":418,"column":2},"end":{"line":425,"column":3}}]},"39":{"loc":{"start":{"line":427,"column":2},"end":{"line":432,"column":3}},"type":"if","locations":[{"start":{"line":427,"column":2},"end":{"line":432,"column":3}}]},"40":{"loc":{"start":{"line":428,"column":21},"end":{"line":428,"column":40}},"type":"binary-expr","locations":[{"start":{"line":428,"column":21},"end":{"line":428,"column":34}},{"start":{"line":428,"column":38},"end":{"line":428,"column":40}}]},"41":{"loc":{"start":{"line":429,"column":4},"end":{"line":431,"column":5}},"type":"if","locations":[{"start":{"line":429,"column":4},"end":{"line":431,"column":5}}]},"42":{"loc":{"start":{"line":429,"column":8},"end":{"line":429,"column":104}},"type":"binary-expr","locations":[{"start":{"line":429,"column":8},"end":{"line":429,"column":24}},{"start":{"line":429,"column":28},"end":{"line":429,"column":49}},{"start":{"line":429,"column":53},"end":{"line":429,"column":104}}]},"43":{"loc":{"start":{"line":448,"column":4},"end":{"line":454,"column":5}},"type":"if","locations":[{"start":{"line":448,"column":4},"end":{"line":454,"column":5}},{"start":{"line":452,"column":11},"end":{"line":454,"column":5}}]},"44":{"loc":{"start":{"line":449,"column":6},"end":{"line":451,"column":7}},"type":"if","locations":[{"start":{"line":449,"column":6},"end":{"line":451,"column":7}}]},"45":{"loc":{"start":{"line":461,"column":2},"end":{"line":496,"column":3}},"type":"switch","locations":[{"start":{"line":462,"column":4},"end":{"line":463,"column":null}},{"start":{"line":464,"column":4},"end":{"line":465,"column":null}},{"start":{"line":466,"column":4},"end":{"line":467,"column":null}},{"start":{"line":468,"column":4},"end":{"line":469,"column":null}},{"start":{"line":470,"column":4},"end":{"line":493,"column":7}},{"start":{"line":494,"column":4},"end":{"line":495,"column":null}}]},"46":{"loc":{"start":{"line":471,"column":6},"end":{"line":493,"column":7}},"type":"switch","locations":[{"start":{"line":472,"column":8},"end":{"line":473,"column":null}},{"start":{"line":474,"column":8},"end":{"line":475,"column":null}},{"start":{"line":476,"column":8},"end":{"line":476,"column":30}},{"start":{"line":477,"column":8},"end":{"line":477,"column":31}},{"start":{"line":478,"column":8},"end":{"line":478,"column":31}},{"start":{"line":479,"column":8},"end":{"line":479,"column":32}},{"start":{"line":480,"column":8},"end":{"line":481,"column":null}},{"start":{"line":482,"column":8},"end":{"line":482,"column":30}},{"start":{"line":483,"column":8},"end":{"line":483,"column":31}},{"start":{"line":484,"column":8},"end":{"line":484,"column":31}},{"start":{"line":485,"column":8},"end":{"line":485,"column":32}},{"start":{"line":486,"column":8},"end":{"line":487,"column":null}},{"start":{"line":488,"column":8},"end":{"line":488,"column":30}},{"start":{"line":489,"column":8},"end":{"line":490,"column":null}},{"start":{"line":491,"column":8},"end":{"line":492,"column":null}}]},"47":{"loc":{"start":{"line":501,"column":2},"end":{"line":504,"column":3}},"type":"if","locations":[{"start":{"line":501,"column":2},"end":{"line":504,"column":3}}]},"48":{"loc":{"start":{"line":501,"column":6},"end":{"line":501,"column":58}},"type":"binary-expr","locations":[{"start":{"line":501,"column":6},"end":{"line":501,"column":21}},{"start":{"line":501,"column":25},"end":{"line":501,"column":58}}]},"49":{"loc":{"start":{"line":510,"column":4},"end":{"line":512,"column":5}},"type":"if","locations":[{"start":{"line":510,"column":4},"end":{"line":512,"column":5}}]},"50":{"loc":{"start":{"line":518,"column":9},"end":{"line":520,"column":35}},"type":"binary-expr","locations":[{"start":{"line":518,"column":9},"end":{"line":518,"column":38}},{"start":{"line":519,"column":4},"end":{"line":519,"column":39}},{"start":{"line":520,"column":4},"end":{"line":520,"column":35}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":2,"25":2,"26":2,"27":2,"28":2,"29":1,"30":2,"31":2,"32":2,"33":0,"34":2,"35":0,"36":2,"37":2,"38":0,"39":2,"40":2,"41":0,"42":2,"43":2,"44":2,"45":2,"46":2,"47":2,"48":2,"49":2,"50":2,"51":2,"52":0,"53":2,"54":2,"55":2,"56":2,"57":2,"58":2,"59":2,"60":2,"61":2,"62":2,"63":2,"64":2,"65":2,"66":0,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"73":0,"74":0,"75":0,"76":0,"77":2,"78":2,"79":2,"80":2,"81":0,"82":0,"83":0,"84":0,"85":2,"86":2,"87":2,"88":2,"89":2,"90":2,"91":2,"92":2,"93":2,"94":2,"95":2,"96":2,"97":2,"98":2,"99":2,"100":2,"101":0,"102":0,"103":0,"104":2,"105":2,"106":2,"107":2,"108":2,"109":2,"110":2,"111":0,"112":0,"113":0,"114":0,"115":0,"116":1,"117":1,"118":0,"119":1,"120":1,"121":0,"122":1,"123":1,"124":2,"125":2,"126":2,"127":2,"128":1,"129":2,"130":2,"131":2,"132":0,"133":2,"134":0,"135":2,"136":2,"137":2,"138":2,"139":2,"140":2,"141":2,"142":2,"143":2,"144":0,"145":2,"146":2,"147":2,"148":1,"149":1,"150":0,"151":1,"152":1,"153":0,"154":1,"155":2,"156":2,"157":0,"158":2,"159":2,"160":0,"161":2,"162":2,"163":2,"164":2,"165":2,"166":2,"167":2,"168":2,"169":2,"170":0,"171":2,"172":0,"173":0,"174":0,"175":0,"176":2,"177":2,"178":2,"179":2,"180":2,"181":2,"182":2,"183":2,"184":2,"185":2,"186":2,"187":2,"188":2,"189":2,"190":0,"191":0,"192":0,"193":0,"194":0,"195":1,"196":14,"197":0,"198":14,"199":2,"200":2,"201":4,"202":14,"203":0,"204":14,"205":14,"206":2,"207":2,"208":2,"209":8,"210":8,"211":2,"212":12,"213":12,"214":12,"215":12,"216":4,"217":8,"218":8,"219":8,"220":8,"221":8,"222":8,"223":0,"224":0,"225":8,"226":8,"227":8,"228":0,"229":2,"230":0,"231":0,"232":6,"233":2,"234":2,"235":2,"236":0,"237":0,"238":0,"239":0,"240":8,"241":8,"242":4,"243":4,"244":4,"245":12,"246":12,"247":4,"248":8,"249":6},"f":{"0":2,"1":1,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":1,"12":2,"13":1,"14":2,"15":1,"16":2,"17":2,"18":2,"19":2,"20":2,"21":0,"22":14,"23":8,"24":8,"25":8,"26":12,"27":6},"b":{"0":[2,2],"1":[2,2],"2":[2,2],"3":[2,1],"4":[0],"5":[0],"6":[0],"7":[0],"8":[0],"9":[0],"10":[2],"11":[0],"12":[0],"13":[0,0],"14":[2,0],"15":[2,0],"16":[2],"17":[0],"18":[0],"19":[0],"20":[2,2],"21":[2,1],"22":[0],"23":[0],"24":[0,2],"25":[0],"26":[0],"27":[0],"28":[0],"29":[2,0],"30":[0],"31":[0],"32":[2],"33":[0],"34":[0],"35":[14,14],"36":[2],"37":[0],"38":[2],"39":[12],"40":[12,0],"41":[4],"42":[12,12,12],"43":[0,8],"44":[0],"45":[0,2,0,0,6,0],"46":[2,2,2,2,2,2,2,0,0,0,0,0,0,0,0],"47":[4],"48":[8,4],"49":[4],"50":[6,0,0]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/rule-registry.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/rule-registry.ts","statementMap":{"0":{"start":{"line":9,"column":0},"end":{"line":9,"column":16}},"1":{"start":{"line":14,"column":0},"end":{"line":14,"column":16}},"2":{"start":{"line":19,"column":0},"end":{"line":19,"column":16}},"3":{"start":{"line":24,"column":0},"end":{"line":24,"column":16}},"4":{"start":{"line":29,"column":0},"end":{"line":29,"column":16}},"5":{"start":{"line":34,"column":0},"end":{"line":34,"column":16}},"6":{"start":{"line":39,"column":0},"end":{"line":39,"column":16}},"7":{"start":{"line":3,"column":22},"end":{"line":3,"column":51}},"8":{"start":{"line":5,"column":20},"end":{"line":5,"column":47}},"9":{"start":{"line":10,"column":2},"end":{"line":10,"column":null}},"10":{"start":{"line":15,"column":2},"end":{"line":15,"column":null}},"11":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"12":{"start":{"line":25,"column":2},"end":{"line":25,"column":null}},"13":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}},"14":{"start":{"line":35,"column":2},"end":{"line":35,"column":null}},"15":{"start":{"line":40,"column":2},"end":{"line":40,"column":null}},"16":{"start":{"line":41,"column":2},"end":{"line":41,"column":null}}},"fnMap":{"0":{"name":"registerRuleExecutor","decl":{"start":{"line":9,"column":16},"end":{"line":9,"column":36}},"loc":{"start":{"line":9,"column":63},"end":{"line":11,"column":1}}},"1":{"name":"getRuleExecutor","decl":{"start":{"line":14,"column":16},"end":{"line":14,"column":31}},"loc":{"start":{"line":14,"column":44},"end":{"line":16,"column":1}}},"2":{"name":"getRuleExecutors","decl":{"start":{"line":19,"column":16},"end":{"line":19,"column":32}},"loc":{"start":{"line":19,"column":32},"end":{"line":21,"column":1}}},"3":{"name":"registerRuleAction","decl":{"start":{"line":24,"column":16},"end":{"line":24,"column":34}},"loc":{"start":{"line":24,"column":57},"end":{"line":26,"column":1}}},"4":{"name":"getRuleAction","decl":{"start":{"line":29,"column":16},"end":{"line":29,"column":29}},"loc":{"start":{"line":29,"column":42},"end":{"line":31,"column":1}}},"5":{"name":"getRuleActions","decl":{"start":{"line":34,"column":16},"end":{"line":34,"column":30}},"loc":{"start":{"line":34,"column":30},"end":{"line":36,"column":1}}},"6":{"name":"clearRules","decl":{"start":{"line":39,"column":16},"end":{"line":39,"column":26}},"loc":{"start":{"line":39,"column":26},"end":{"line":42,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":3,"9":3,"10":9,"11":15,"12":0,"13":0,"14":0,"15":0,"16":0},"f":{"0":3,"1":9,"2":15,"3":0,"4":0,"5":0,"6":0},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/serde.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/serde.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":41}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":null}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":63}},"3":{"start":{"line":13,"column":0},"end":{"line":13,"column":null}},"4":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"5":{"start":{"line":15,"column":2},"end":{"line":15,"column":null}},"6":{"start":{"line":18,"column":13},"end":{"line":18,"column":null}},"7":{"start":{"line":23,"column":4},"end":{"line":23,"column":null}},"8":{"start":{"line":20,"column":0},"end":{"line":20,"column":13}},"9":{"start":{"line":48,"column":2},"end":{"line":48,"column":null}},"10":{"start":{"line":51,"column":4},"end":{"line":51,"column":null}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":null}},"12":{"start":{"line":53,"column":4},"end":{"line":53,"column":null}},"13":{"start":{"line":59,"column":4},"end":{"line":59,"column":10}},"14":{"start":{"line":63,"column":21},"end":{"line":63,"column":71}},"15":{"start":{"line":64,"column":4},"end":{"line":64,"column":null}},"16":{"start":{"line":68,"column":21},"end":{"line":68,"column":38}},"17":{"start":{"line":69,"column":4},"end":{"line":71,"column":5}},"18":{"start":{"line":70,"column":6},"end":{"line":70,"column":12}},"19":{"start":{"line":72,"column":4},"end":{"line":83,"column":5}},"20":{"start":{"line":73,"column":21},"end":{"line":73,"column":83}},"21":{"start":{"line":74,"column":17},"end":{"line":80,"column":null}},"22":{"start":{"line":81,"column":6},"end":{"line":81,"column":null}},"23":{"start":{"line":82,"column":6},"end":{"line":82,"column":null}},"24":{"start":{"line":89,"column":4},"end":{"line":91,"column":5}},"25":{"start":{"line":90,"column":6},"end":{"line":90,"column":null}},"26":{"start":{"line":93,"column":4},"end":{"line":107,"column":5}},"27":{"start":{"line":95,"column":8},"end":{"line":95,"column":null}},"28":{"start":{"line":96,"column":8},"end":{"line":96,"column":13}},"29":{"start":{"line":98,"column":8},"end":{"line":98,"column":null}},"30":{"start":{"line":99,"column":8},"end":{"line":99,"column":13}},"31":{"start":{"line":101,"column":8},"end":{"line":101,"column":null}},"32":{"start":{"line":102,"column":8},"end":{"line":105,"column":9}},"33":{"start":{"line":104,"column":10},"end":{"line":104,"column":null}},"34":{"start":{"line":106,"column":8},"end":{"line":106,"column":13}},"35":{"start":{"line":108,"column":4},"end":{"line":110,"column":5}},"36":{"start":{"line":109,"column":6},"end":{"line":109,"column":null}},"37":{"start":{"line":111,"column":4},"end":{"line":162,"column":5}},"38":{"start":{"line":111,"column":17},"end":{"line":111,"column":18}},"39":{"start":{"line":112,"column":17},"end":{"line":112,"column":25}},"40":{"start":{"line":113,"column":6},"end":{"line":115,"column":7}},"41":{"start":{"line":114,"column":8},"end":{"line":114,"column":16}},"42":{"start":{"line":116,"column":17},"end":{"line":116,"column":26}},"43":{"start":{"line":117,"column":6},"end":{"line":133,"column":7}},"44":{"start":{"line":119,"column":10},"end":{"line":121,"column":11}},"45":{"start":{"line":120,"column":12},"end":{"line":120,"column":20}},"46":{"start":{"line":122,"column":10},"end":{"line":122,"column":15}},"47":{"start":{"line":124,"column":10},"end":{"line":126,"column":11}},"48":{"start":{"line":125,"column":12},"end":{"line":125,"column":20}},"49":{"start":{"line":127,"column":10},"end":{"line":127,"column":15}},"50":{"start":{"line":129,"column":10},"end":{"line":131,"column":11}},"51":{"start":{"line":130,"column":12},"end":{"line":130,"column":20}},"52":{"start":{"line":132,"column":10},"end":{"line":132,"column":15}},"53":{"start":{"line":134,"column":16},"end":{"line":135,"column":103}},"54":{"start":{"line":136,"column":25},"end":{"line":136,"column":51}},"55":{"start":{"line":137,"column":6},"end":{"line":141,"column":7}},"56":{"start":{"line":138,"column":8},"end":{"line":139,"column":null}},"57":{"start":{"line":140,"column":8},"end":{"line":140,"column":null}},"58":{"start":{"line":142,"column":6},"end":{"line":161,"column":7}},"59":{"start":{"line":143,"column":21},"end":{"line":143,"column":59}},"60":{"start":{"line":144,"column":8},"end":{"line":153,"column":9}},"61":{"start":{"line":146,"column":12},"end":{"line":148,"column":13}},"62":{"start":{"line":147,"column":14},"end":{"line":147,"column":null}},"63":{"start":{"line":149,"column":12},"end":{"line":149,"column":17}},"64":{"start":{"line":151,"column":12},"end":{"line":151,"column":null}},"65":{"start":{"line":152,"column":12},"end":{"line":152,"column":17}},"66":{"start":{"line":154,"column":8},"end":{"line":155,"column":null}},"67":{"start":{"line":157,"column":8},"end":{"line":159,"column":9}},"68":{"start":{"line":158,"column":10},"end":{"line":158,"column":null}},"69":{"start":{"line":160,"column":8},"end":{"line":160,"column":null}},"70":{"start":{"line":163,"column":4},"end":{"line":163,"column":null}},"71":{"start":{"line":168,"column":21},"end":{"line":168,"column":67}},"72":{"start":{"line":169,"column":4},"end":{"line":171,"column":5}},"73":{"start":{"line":170,"column":6},"end":{"line":170,"column":null}},"74":{"start":{"line":172,"column":21},"end":{"line":172,"column":56}},"75":{"start":{"line":173,"column":4},"end":{"line":175,"column":5}},"76":{"start":{"line":174,"column":6},"end":{"line":174,"column":null}},"77":{"start":{"line":176,"column":4},"end":{"line":183,"column":5}},"78":{"start":{"line":177,"column":6},"end":{"line":177,"column":null}},"79":{"start":{"line":179,"column":6},"end":{"line":181,"column":7}},"80":{"start":{"line":180,"column":8},"end":{"line":180,"column":null}},"81":{"start":{"line":182,"column":6},"end":{"line":182,"column":null}},"82":{"start":{"line":187,"column":4},"end":{"line":189,"column":5}},"83":{"start":{"line":188,"column":6},"end":{"line":188,"column":null}},"84":{"start":{"line":190,"column":4},"end":{"line":200,"column":5}},"85":{"start":{"line":191,"column":18},"end":{"line":191,"column":39}},"86":{"start":{"line":192,"column":6},"end":{"line":199,"column":7}},"87":{"start":{"line":195,"column":10},"end":{"line":195,"column":null}},"88":{"start":{"line":198,"column":10},"end":{"line":198,"column":null}},"89":{"start":{"line":201,"column":4},"end":{"line":201,"column":null}},"90":{"start":{"line":205,"column":4},"end":{"line":209,"column":5}},"91":{"start":{"line":206,"column":6},"end":{"line":206,"column":31}},"92":{"start":{"line":207,"column":11},"end":{"line":209,"column":5}},"93":{"start":{"line":208,"column":6},"end":{"line":208,"column":null}},"94":{"start":{"line":210,"column":4},"end":{"line":210,"column":null}},"95":{"start":{"line":44,"column":0},"end":{"line":44,"column":22}},"96":{"start":{"line":225,"column":4},"end":{"line":225,"column":null}},"97":{"start":{"line":229,"column":4},"end":{"line":229,"column":null}},"98":{"start":{"line":237,"column":23},"end":{"line":237,"column":56}},"99":{"start":{"line":238,"column":22},"end":{"line":238,"column":47}},"100":{"start":{"line":239,"column":32},"end":{"line":239,"column":63}},"101":{"start":{"line":240,"column":20},"end":{"line":240,"column":50}},"102":{"start":{"line":241,"column":26},"end":{"line":241,"column":56}},"103":{"start":{"line":243,"column":13},"end":{"line":243,"column":15}},"104":{"start":{"line":244,"column":18},"end":{"line":244,"column":47}},"105":{"start":{"line":245,"column":4},"end":{"line":261,"column":5}},"106":{"start":{"line":246,"column":6},"end":{"line":246,"column":null}},"107":{"start":{"line":247,"column":11},"end":{"line":261,"column":5}},"108":{"start":{"line":248,"column":6},"end":{"line":248,"column":null}},"109":{"start":{"line":249,"column":6},"end":{"line":249,"column":null}},"110":{"start":{"line":250,"column":6},"end":{"line":252,"column":7}},"111":{"start":{"line":251,"column":8},"end":{"line":251,"column":null}},"112":{"start":{"line":253,"column":11},"end":{"line":261,"column":5}},"113":{"start":{"line":254,"column":6},"end":{"line":254,"column":null}},"114":{"start":{"line":255,"column":6},"end":{"line":255,"column":null}},"115":{"start":{"line":256,"column":11},"end":{"line":261,"column":5}},"116":{"start":{"line":257,"column":6},"end":{"line":257,"column":null}},"117":{"start":{"line":258,"column":6},"end":{"line":258,"column":null}},"118":{"start":{"line":260,"column":6},"end":{"line":260,"column":null}},"119":{"start":{"line":262,"column":4},"end":{"line":262,"column":null}},"120":{"start":{"line":266,"column":21},"end":{"line":266,"column":36}},"121":{"start":{"line":267,"column":4},"end":{"line":267,"column":null}},"122":{"start":{"line":268,"column":4},"end":{"line":268,"column":null}},"123":{"start":{"line":223,"column":0},"end":{"line":223,"column":22}},"124":{"start":{"line":283,"column":4},"end":{"line":283,"column":null}},"125":{"start":{"line":287,"column":4},"end":{"line":287,"column":null}},"126":{"start":{"line":291,"column":22},"end":{"line":291,"column":44}},"127":{"start":{"line":292,"column":4},"end":{"line":298,"column":5}},"128":{"start":{"line":293,"column":6},"end":{"line":297,"column":null}},"129":{"start":{"line":299,"column":15},"end":{"line":299,"column":52}},"130":{"start":{"line":300,"column":18},"end":{"line":300,"column":41}},"131":{"start":{"line":301,"column":4},"end":{"line":301,"column":null}},"132":{"start":{"line":305,"column":32},"end":{"line":305,"column":67}},"133":{"start":{"line":306,"column":20},"end":{"line":306,"column":50}},"134":{"start":{"line":307,"column":4},"end":{"line":309,"column":5}},"135":{"start":{"line":308,"column":6},"end":{"line":308,"column":null}},"136":{"start":{"line":310,"column":4},"end":{"line":312,"column":5}},"137":{"start":{"line":311,"column":6},"end":{"line":311,"column":null}},"138":{"start":{"line":313,"column":4},"end":{"line":313,"column":null}},"139":{"start":{"line":317,"column":4},"end":{"line":332,"column":5}},"140":{"start":{"line":320,"column":8},"end":{"line":321,"column":null}},"141":{"start":{"line":321,"column":10},"end":{"line":321,"column":59}},"142":{"start":{"line":323,"column":8},"end":{"line":324,"column":null}},"143":{"start":{"line":324,"column":10},"end":{"line":324,"column":27}},"144":{"start":{"line":327,"column":8},"end":{"line":328,"column":null}},"145":{"start":{"line":328,"column":10},"end":{"line":328,"column":62}},"146":{"start":{"line":330,"column":8},"end":{"line":331,"column":null}},"147":{"start":{"line":331,"column":10},"end":{"line":331,"column":27}},"148":{"start":{"line":336,"column":4},"end":{"line":338,"column":5}},"149":{"start":{"line":337,"column":6},"end":{"line":337,"column":null}},"150":{"start":{"line":339,"column":4},"end":{"line":344,"column":5}},"151":{"start":{"line":340,"column":21},"end":{"line":340,"column":30}},"152":{"start":{"line":341,"column":6},"end":{"line":343,"column":7}},"153":{"start":{"line":342,"column":8},"end":{"line":342,"column":null}},"154":{"start":{"line":345,"column":4},"end":{"line":345,"column":null}},"155":{"start":{"line":350,"column":18},"end":{"line":350,"column":74}},"156":{"start":{"line":351,"column":33},"end":{"line":358,"column":null}},"157":{"start":{"line":360,"column":34},"end":{"line":360,"column":36}},"158":{"start":{"line":363,"column":4},"end":{"line":373,"column":5}},"159":{"start":{"line":364,"column":6},"end":{"line":364,"column":null}},"160":{"start":{"line":365,"column":6},"end":{"line":365,"column":null}},"161":{"start":{"line":366,"column":6},"end":{"line":366,"column":null}},"162":{"start":{"line":367,"column":11},"end":{"line":373,"column":5}},"163":{"start":{"line":368,"column":6},"end":{"line":368,"column":null}},"164":{"start":{"line":369,"column":6},"end":{"line":369,"column":null}},"165":{"start":{"line":370,"column":6},"end":{"line":370,"column":null}},"166":{"start":{"line":372,"column":6},"end":{"line":372,"column":null}},"167":{"start":{"line":374,"column":42},"end":{"line":374,"column":46}},"168":{"start":{"line":375,"column":19},"end":{"line":375,"column":69}},"169":{"start":{"line":376,"column":4},"end":{"line":400,"column":5}},"170":{"start":{"line":376,"column":17},"end":{"line":376,"column":18}},"171":{"start":{"line":377,"column":20},"end":{"line":377,"column":31}},"172":{"start":{"line":378,"column":6},"end":{"line":381,"column":7}},"173":{"start":{"line":379,"column":8},"end":{"line":379,"column":null}},"174":{"start":{"line":380,"column":8},"end":{"line":380,"column":16}},"175":{"start":{"line":382,"column":6},"end":{"line":398,"column":7}},"176":{"start":{"line":384,"column":8},"end":{"line":396,"column":9}},"177":{"start":{"line":385,"column":10},"end":{"line":389,"column":null}},"178":{"start":{"line":391,"column":10},"end":{"line":395,"column":null}},"179":{"start":{"line":397,"column":8},"end":{"line":397,"column":null}},"180":{"start":{"line":399,"column":6},"end":{"line":399,"column":null}},"181":{"start":{"line":401,"column":4},"end":{"line":403,"column":5}},"182":{"start":{"line":402,"column":6},"end":{"line":402,"column":null}},"183":{"start":{"line":404,"column":4},"end":{"line":404,"column":null}},"184":{"start":{"line":409,"column":4},"end":{"line":411,"column":5}},"185":{"start":{"line":410,"column":6},"end":{"line":410,"column":null}},"186":{"start":{"line":412,"column":19},"end":{"line":412,"column":33}},"187":{"start":{"line":413,"column":19},"end":{"line":413,"column":32}},"188":{"start":{"line":414,"column":17},"end":{"line":414,"column":24}},"189":{"start":{"line":415,"column":4},"end":{"line":418,"column":5}},"190":{"start":{"line":415,"column":17},"end":{"line":415,"column":29}},"191":{"start":{"line":416,"column":17},"end":{"line":416,"column":70}},"192":{"start":{"line":417,"column":6},"end":{"line":417,"column":null}},"193":{"start":{"line":419,"column":4},"end":{"line":419,"column":null}},"194":{"start":{"line":420,"column":4},"end":{"line":420,"column":null}},"195":{"start":{"line":424,"column":4},"end":{"line":427,"column":5}},"196":{"start":{"line":426,"column":6},"end":{"line":426,"column":null}},"197":{"start":{"line":428,"column":4},"end":{"line":428,"column":null}},"198":{"start":{"line":281,"column":0},"end":{"line":281,"column":22}},"199":{"start":{"line":439,"column":58},"end":{"line":445,"column":1}},"200":{"start":{"line":440,"column":15},"end":{"line":440,"column":23}},"201":{"start":{"line":441,"column":2},"end":{"line":443,"column":3}},"202":{"start":{"line":442,"column":4},"end":{"line":442,"column":null}},"203":{"start":{"line":444,"column":2},"end":{"line":444,"column":null}},"204":{"start":{"line":439,"column":13},"end":{"line":439,"column":58}},"205":{"start":{"line":465,"column":4},"end":{"line":465,"column":null}},"206":{"start":{"line":466,"column":4},"end":{"line":466,"column":null}},"207":{"start":{"line":467,"column":4},"end":{"line":467,"column":null}},"208":{"start":{"line":468,"column":4},"end":{"line":468,"column":null}},"209":{"start":{"line":469,"column":4},"end":{"line":469,"column":null}},"210":{"start":{"line":470,"column":4},"end":{"line":470,"column":null}},"211":{"start":{"line":471,"column":4},"end":{"line":471,"column":null}},"212":{"start":{"line":472,"column":4},"end":{"line":472,"column":null}},"213":{"start":{"line":473,"column":4},"end":{"line":473,"column":null}},"214":{"start":{"line":474,"column":4},"end":{"line":474,"column":null}},"215":{"start":{"line":475,"column":4},"end":{"line":475,"column":null}},"216":{"start":{"line":476,"column":4},"end":{"line":476,"column":null}},"217":{"start":{"line":480,"column":19},"end":{"line":480,"column":35}},"218":{"start":{"line":481,"column":4},"end":{"line":483,"column":5}},"219":{"start":{"line":482,"column":6},"end":{"line":482,"column":null}},"220":{"start":{"line":484,"column":16},"end":{"line":484,"column":28}},"221":{"start":{"line":485,"column":4},"end":{"line":487,"column":5}},"222":{"start":{"line":486,"column":6},"end":{"line":486,"column":null}},"223":{"start":{"line":488,"column":19},"end":{"line":488,"column":39}},"224":{"start":{"line":489,"column":4},"end":{"line":494,"column":5}},"225":{"start":{"line":490,"column":6},"end":{"line":490,"column":null}},"226":{"start":{"line":491,"column":6},"end":{"line":493,"column":7}},"227":{"start":{"line":492,"column":8},"end":{"line":492,"column":null}},"228":{"start":{"line":495,"column":4},"end":{"line":495,"column":null}},"229":{"start":{"line":499,"column":15},"end":{"line":499,"column":41}},"230":{"start":{"line":500,"column":4},"end":{"line":502,"column":5}},"231":{"start":{"line":501,"column":6},"end":{"line":501,"column":null}},"232":{"start":{"line":503,"column":4},"end":{"line":503,"column":null}},"233":{"start":{"line":507,"column":15},"end":{"line":507,"column":40}},"234":{"start":{"line":508,"column":4},"end":{"line":510,"column":5}},"235":{"start":{"line":509,"column":6},"end":{"line":509,"column":null}},"236":{"start":{"line":511,"column":4},"end":{"line":511,"column":null}},"237":{"start":{"line":515,"column":18},"end":{"line":515,"column":39}},"238":{"start":{"line":516,"column":4},"end":{"line":518,"column":5}},"239":{"start":{"line":517,"column":6},"end":{"line":517,"column":null}},"240":{"start":{"line":519,"column":23},"end":{"line":524,"column":null}},"241":{"start":{"line":526,"column":4},"end":{"line":526,"column":null}},"242":{"start":{"line":527,"column":4},"end":{"line":527,"column":null}},"243":{"start":{"line":531,"column":15},"end":{"line":531,"column":32}},"244":{"start":{"line":532,"column":19},"end":{"line":532,"column":39}},"245":{"start":{"line":533,"column":4},"end":{"line":541,"column":5}},"246":{"start":{"line":534,"column":6},"end":{"line":540,"column":7}},"247":{"start":{"line":535,"column":8},"end":{"line":539,"column":9}},"248":{"start":{"line":536,"column":10},"end":{"line":538,"column":11}},"249":{"start":{"line":537,"column":12},"end":{"line":537,"column":null}},"250":{"start":{"line":542,"column":4},"end":{"line":542,"column":null}},"251":{"start":{"line":546,"column":15},"end":{"line":546,"column":44}},"252":{"start":{"line":547,"column":4},"end":{"line":547,"column":null}},"253":{"start":{"line":448,"column":0},"end":{"line":448,"column":13}},"254":{"start":{"line":575,"column":2},"end":{"line":575,"column":null}},"255":{"start":{"line":585,"column":4},"end":{"line":606,"column":5}},"256":{"start":{"line":588,"column":8},"end":{"line":594,"column":9}},"257":{"start":{"line":588,"column":21},"end":{"line":588,"column":22}},"258":{"start":{"line":589,"column":26},"end":{"line":589,"column":38}},"259":{"start":{"line":590,"column":10},"end":{"line":593,"column":11}},"260":{"start":{"line":592,"column":12},"end":{"line":592,"column":null}},"261":{"start":{"line":595,"column":8},"end":{"line":595,"column":13}},"262":{"start":{"line":598,"column":8},"end":{"line":604,"column":9}},"263":{"start":{"line":598,"column":21},"end":{"line":598,"column":34}},"264":{"start":{"line":599,"column":26},"end":{"line":599,"column":38}},"265":{"start":{"line":600,"column":10},"end":{"line":603,"column":11}},"266":{"start":{"line":602,"column":12},"end":{"line":602,"column":null}},"267":{"start":{"line":605,"column":8},"end":{"line":605,"column":13}},"268":{"start":{"line":607,"column":25},"end":{"line":607,"column":47}},"269":{"start":{"line":608,"column":4},"end":{"line":608,"column":null}},"270":{"start":{"line":574,"column":0},"end":{"line":574,"column":22}},"271":{"start":{"line":615,"column":2},"end":{"line":620,"column":null}},"272":{"start":{"line":632,"column":4},"end":{"line":632,"column":null}},"273":{"start":{"line":633,"column":4},"end":{"line":633,"column":null}},"274":{"start":{"line":634,"column":4},"end":{"line":634,"column":null}},"275":{"start":{"line":635,"column":4},"end":{"line":635,"column":null}},"276":{"start":{"line":636,"column":4},"end":{"line":636,"column":null}},"277":{"start":{"line":640,"column":12},"end":{"line":640,"column":21}},"278":{"start":{"line":641,"column":4},"end":{"line":643,"column":null}},"279":{"start":{"line":647,"column":4},"end":{"line":647,"column":null}},"280":{"start":{"line":624,"column":0},"end":{"line":624,"column":13}},"281":{"start":{"line":652,"column":0},"end":{"line":652,"column":null}},"282":{"start":{"line":653,"column":2},"end":{"line":653,"column":null}},"283":{"start":{"line":654,"column":2},"end":{"line":654,"column":null}},"284":{"start":{"line":655,"column":2},"end":{"line":655,"column":null}},"285":{"start":{"line":656,"column":2},"end":{"line":656,"column":null}},"286":{"start":{"line":657,"column":2},"end":{"line":657,"column":null}},"287":{"start":{"line":658,"column":2},"end":{"line":658,"column":null}},"288":{"start":{"line":659,"column":2},"end":{"line":659,"column":null}},"289":{"start":{"line":660,"column":2},"end":{"line":660,"column":null}},"290":{"start":{"line":661,"column":2},"end":{"line":661,"column":null}},"291":{"start":{"line":662,"column":2},"end":{"line":662,"column":null}},"292":{"start":{"line":663,"column":2},"end":{"line":663,"column":null}},"293":{"start":{"line":664,"column":2},"end":{"line":664,"column":null}},"294":{"start":{"line":665,"column":2},"end":{"line":665,"column":null}},"295":{"start":{"line":666,"column":2},"end":{"line":666,"column":null}},"296":{"start":{"line":680,"column":4},"end":{"line":680,"column":null}},"297":{"start":{"line":684,"column":4},"end":{"line":684,"column":null}},"298":{"start":{"line":675,"column":0},"end":{"line":675,"column":13}},"299":{"start":{"line":697,"column":4},"end":{"line":697,"column":null}},"300":{"start":{"line":701,"column":4},"end":{"line":701,"column":10}},"301":{"start":{"line":692,"column":0},"end":{"line":692,"column":13}},"302":{"start":{"line":712,"column":4},"end":{"line":712,"column":null}},"303":{"start":{"line":709,"column":0},"end":{"line":709,"column":13}},"304":{"start":{"line":721,"column":4},"end":{"line":721,"column":null}},"305":{"start":{"line":722,"column":4},"end":{"line":722,"column":null}},"306":{"start":{"line":726,"column":17},"end":{"line":726,"column":25}},"307":{"start":{"line":727,"column":4},"end":{"line":732,"column":5}},"308":{"start":{"line":728,"column":6},"end":{"line":730,"column":7}},"309":{"start":{"line":729,"column":8},"end":{"line":729,"column":null}},"310":{"start":{"line":731,"column":6},"end":{"line":731,"column":null}},"311":{"start":{"line":733,"column":4},"end":{"line":733,"column":null}},"312":{"start":{"line":717,"column":0},"end":{"line":717,"column":13}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":13,"column":0},"end":{"line":13,"column":12}},"loc":{"start":{"line":13,"column":21},"end":{"line":16,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":22,"column":2},"end":{"line":22,"column":14}},"loc":{"start":{"line":22,"column":30},"end":{"line":24,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":50,"column":2},"end":{"line":50,"column":24}},"loc":{"start":{"line":50,"column":79},"end":{"line":54,"column":3}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":58,"column":2},"end":{"line":58,"column":7}},"loc":{"start":{"line":58,"column":7},"end":{"line":60,"column":3}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":62,"column":2},"end":{"line":62,"column":13}},"loc":{"start":{"line":62,"column":46},"end":{"line":65,"column":3}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":67,"column":2},"end":{"line":67,"column":7}},"loc":{"start":{"line":67,"column":87},"end":{"line":84,"column":3}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":86,"column":2},"end":{"line":86,"column":7}},"loc":{"start":{"line":88,"column":58},"end":{"line":164,"column":3}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":166,"column":2},"end":{"line":166,"column":7}},"loc":{"start":{"line":167,"column":62},"end":{"line":184,"column":3}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":186,"column":2},"end":{"line":186,"column":19}},"loc":{"start":{"line":186,"column":82},"end":{"line":202,"column":3}}},"9":{"name":"(anonymous_9)","decl":{"start":{"line":204,"column":2},"end":{"line":204,"column":15}},"loc":{"start":{"line":204,"column":52},"end":{"line":211,"column":3}}},"10":{"name":"(anonymous_10)","decl":{"start":{"line":224,"column":2},"end":{"line":224,"column":24}},"loc":{"start":{"line":224,"column":84},"end":{"line":226,"column":3}}},"11":{"name":"(anonymous_11)","decl":{"start":{"line":228,"column":11},"end":{"line":228,"column":17}},"loc":{"start":{"line":228,"column":17},"end":{"line":230,"column":3}}},"12":{"name":"(anonymous_12)","decl":{"start":{"line":236,"column":2},"end":{"line":236,"column":7}},"loc":{"start":{"line":236,"column":72},"end":{"line":263,"column":3}}},"13":{"name":"(anonymous_13)","decl":{"start":{"line":265,"column":2},"end":{"line":265,"column":12}},"loc":{"start":{"line":265,"column":41},"end":{"line":269,"column":3}}},"14":{"name":"(anonymous_14)","decl":{"start":{"line":282,"column":2},"end":{"line":282,"column":24}},"loc":{"start":{"line":282,"column":86},"end":{"line":284,"column":3}}},"15":{"name":"(anonymous_15)","decl":{"start":{"line":286,"column":11},"end":{"line":286,"column":17}},"loc":{"start":{"line":286,"column":17},"end":{"line":288,"column":3}}},"16":{"name":"(anonymous_16)","decl":{"start":{"line":290,"column":2},"end":{"line":290,"column":7}},"loc":{"start":{"line":290,"column":65},"end":{"line":302,"column":3}}},"17":{"name":"(anonymous_17)","decl":{"start":{"line":304,"column":2},"end":{"line":304,"column":7}},"loc":{"start":{"line":304,"column":39},"end":{"line":314,"column":3}}},"18":{"name":"(anonymous_18)","decl":{"start":{"line":316,"column":2},"end":{"line":316,"column":10}},"loc":{"start":{"line":316,"column":43},"end":{"line":333,"column":3}}},"19":{"name":"(anonymous_19)","decl":{"start":{"line":320,"column":56},"end":{"line":320,"column":57}},"loc":{"start":{"line":321,"column":10},"end":{"line":321,"column":59}}},"20":{"name":"(anonymous_20)","decl":{"start":{"line":323,"column":56},"end":{"line":323,"column":57}},"loc":{"start":{"line":324,"column":10},"end":{"line":324,"column":27}}},"21":{"name":"(anonymous_21)","decl":{"start":{"line":327,"column":53},"end":{"line":327,"column":54}},"loc":{"start":{"line":328,"column":10},"end":{"line":328,"column":62}}},"22":{"name":"(anonymous_22)","decl":{"start":{"line":330,"column":53},"end":{"line":330,"column":54}},"loc":{"start":{"line":331,"column":10},"end":{"line":331,"column":27}}},"23":{"name":"(anonymous_23)","decl":{"start":{"line":335,"column":2},"end":{"line":335,"column":12}},"loc":{"start":{"line":335,"column":79},"end":{"line":346,"column":3}}},"24":{"name":"(anonymous_24)","decl":{"start":{"line":348,"column":2},"end":{"line":348,"column":7}},"loc":{"start":{"line":349,"column":38},"end":{"line":405,"column":3}}},"25":{"name":"(anonymous_25)","decl":{"start":{"line":407,"column":2},"end":{"line":407,"column":7}},"loc":{"start":{"line":408,"column":40},"end":{"line":421,"column":3}}},"26":{"name":"(anonymous_26)","decl":{"start":{"line":423,"column":2},"end":{"line":423,"column":7}},"loc":{"start":{"line":423,"column":91},"end":{"line":429,"column":3}}},"27":{"name":"(anonymous_27)","decl":{"start":{"line":439,"column":58},"end":{"line":439,"column":59}},"loc":{"start":{"line":439,"column":98},"end":{"line":445,"column":1}}},"28":{"name":"(anonymous_28)","decl":{"start":{"line":462,"column":2},"end":{"line":462,"column":14}},"loc":{"start":{"line":464,"column":93},"end":{"line":477,"column":3}}},"29":{"name":"(anonymous_29)","decl":{"start":{"line":479,"column":2},"end":{"line":479,"column":14}},"loc":{"start":{"line":479,"column":27},"end":{"line":496,"column":3}}},"30":{"name":"(anonymous_30)","decl":{"start":{"line":498,"column":2},"end":{"line":498,"column":15}},"loc":{"start":{"line":498,"column":28},"end":{"line":504,"column":3}}},"31":{"name":"(anonymous_31)","decl":{"start":{"line":506,"column":2},"end":{"line":506,"column":14}},"loc":{"start":{"line":506,"column":14},"end":{"line":512,"column":3}}},"32":{"name":"(anonymous_32)","decl":{"start":{"line":514,"column":2},"end":{"line":514,"column":12}},"loc":{"start":{"line":514,"column":108},"end":{"line":528,"column":3}}},"33":{"name":"(anonymous_33)","decl":{"start":{"line":530,"column":2},"end":{"line":530,"column":9}},"loc":{"start":{"line":530,"column":26},"end":{"line":543,"column":3}}},"34":{"name":"(anonymous_34)","decl":{"start":{"line":545,"column":2},"end":{"line":545,"column":12}},"loc":{"start":{"line":545,"column":12},"end":{"line":548,"column":3}}},"35":{"name":"(anonymous_35)","decl":{"start":{"line":574,"column":0},"end":{"line":574,"column":22}},"loc":{"start":{"line":574,"column":0},"end":{"line":612,"column":1}}},"36":{"name":"(anonymous_36)","decl":{"start":{"line":583,"column":2},"end":{"line":583,"column":7}},"loc":{"start":{"line":583,"column":44},"end":{"line":609,"column":3}}},"37":{"name":"areTransformsWithSameTag","decl":{"start":{"line":614,"column":9},"end":{"line":614,"column":33}},"loc":{"start":{"line":614,"column":58},"end":{"line":621,"column":1}}},"38":{"name":"(anonymous_38)","decl":{"start":{"line":631,"column":2},"end":{"line":631,"column":14}},"loc":{"start":{"line":631,"column":109},"end":{"line":637,"column":3}}},"39":{"name":"(anonymous_39)","decl":{"start":{"line":639,"column":2},"end":{"line":639,"column":13}},"loc":{"start":{"line":639,"column":13},"end":{"line":644,"column":3}}},"40":{"name":"(anonymous_40)","decl":{"start":{"line":646,"column":2},"end":{"line":646,"column":10}},"loc":{"start":{"line":646,"column":10},"end":{"line":648,"column":3}}},"41":{"name":"(anonymous_41)","decl":{"start":{"line":652,"column":0},"end":{"line":652,"column":12}},"loc":{"start":{"line":652,"column":21},"end":{"line":667,"column":1}}},"42":{"name":"(anonymous_42)","decl":{"start":{"line":676,"column":2},"end":{"line":676,"column":11}},"loc":{"start":{"line":676,"column":67},"end":{"line":677,"column":3}}},"43":{"name":"(anonymous_43)","decl":{"start":{"line":679,"column":2},"end":{"line":679,"column":6}},"loc":{"start":{"line":679,"column":6},"end":{"line":681,"column":3}}},"44":{"name":"(anonymous_44)","decl":{"start":{"line":683,"column":2},"end":{"line":683,"column":7}},"loc":{"start":{"line":683,"column":50},"end":{"line":685,"column":3}}},"45":{"name":"(anonymous_45)","decl":{"start":{"line":687,"column":2},"end":{"line":687,"column":7}},"loc":{"start":{"line":687,"column":7},"end":{"line":688,"column":3}}},"46":{"name":"(anonymous_46)","decl":{"start":{"line":693,"column":2},"end":{"line":693,"column":11}},"loc":{"start":{"line":693,"column":67},"end":{"line":694,"column":3}}},"47":{"name":"(anonymous_47)","decl":{"start":{"line":696,"column":2},"end":{"line":696,"column":6}},"loc":{"start":{"line":696,"column":6},"end":{"line":698,"column":3}}},"48":{"name":"(anonymous_48)","decl":{"start":{"line":700,"column":2},"end":{"line":700,"column":7}},"loc":{"start":{"line":700,"column":50},"end":{"line":702,"column":3}}},"49":{"name":"(anonymous_49)","decl":{"start":{"line":704,"column":2},"end":{"line":704,"column":7}},"loc":{"start":{"line":704,"column":7},"end":{"line":705,"column":3}}},"50":{"name":"(anonymous_50)","decl":{"start":{"line":711,"column":2},"end":{"line":711,"column":14}},"loc":{"start":{"line":711,"column":30},"end":{"line":713,"column":3}}},"51":{"name":"(anonymous_51)","decl":{"start":{"line":720,"column":2},"end":{"line":720,"column":14}},"loc":{"start":{"line":720,"column":24},"end":{"line":723,"column":3}}},"52":{"name":"(anonymous_52)","decl":{"start":{"line":725,"column":2},"end":{"line":725,"column":8}},"loc":{"start":{"line":725,"column":25},"end":{"line":734,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":12},"end":{"line":13,"column":null}},"type":"binary-expr","locations":[{"start":{"line":13,"column":12},"end":{"line":13,"column":21}},{"start":{"line":13,"column":21},"end":{"line":13,"column":null}}]},"1":{"loc":{"start":{"line":63,"column":21},"end":{"line":63,"column":71}},"type":"binary-expr","locations":[{"start":{"line":63,"column":21},"end":{"line":63,"column":50}},{"start":{"line":63,"column":54},"end":{"line":63,"column":71}}]},"2":{"loc":{"start":{"line":69,"column":4},"end":{"line":71,"column":5}},"type":"if","locations":[{"start":{"line":69,"column":4},"end":{"line":71,"column":5}}]},"3":{"loc":{"start":{"line":89,"column":4},"end":{"line":91,"column":5}},"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":91,"column":5}}]},"4":{"loc":{"start":{"line":89,"column":8},"end":{"line":89,"column":37}},"type":"binary-expr","locations":[{"start":{"line":89,"column":8},"end":{"line":89,"column":19}},{"start":{"line":89,"column":23},"end":{"line":89,"column":37}}]},"5":{"loc":{"start":{"line":93,"column":4},"end":{"line":107,"column":5}},"type":"switch","locations":[{"start":{"line":94,"column":6},"end":{"line":96,"column":13}},{"start":{"line":97,"column":6},"end":{"line":99,"column":13}},{"start":{"line":100,"column":6},"end":{"line":106,"column":13}}]},"6":{"loc":{"start":{"line":102,"column":8},"end":{"line":105,"column":9}},"type":"if","locations":[{"start":{"line":102,"column":8},"end":{"line":105,"column":9}}]},"7":{"loc":{"start":{"line":108,"column":4},"end":{"line":110,"column":5}},"type":"if","locations":[{"start":{"line":108,"column":4},"end":{"line":110,"column":5}}]},"8":{"loc":{"start":{"line":113,"column":6},"end":{"line":115,"column":7}},"type":"if","locations":[{"start":{"line":113,"column":6},"end":{"line":115,"column":7}}]},"9":{"loc":{"start":{"line":117,"column":6},"end":{"line":133,"column":7}},"type":"switch","locations":[{"start":{"line":118,"column":8},"end":{"line":122,"column":15}},{"start":{"line":123,"column":8},"end":{"line":127,"column":15}},{"start":{"line":128,"column":8},"end":{"line":132,"column":15}}]},"10":{"loc":{"start":{"line":119,"column":10},"end":{"line":121,"column":11}},"type":"if","locations":[{"start":{"line":119,"column":10},"end":{"line":121,"column":11}}]},"11":{"loc":{"start":{"line":119,"column":14},"end":{"line":119,"column":71}},"type":"binary-expr","locations":[{"start":{"line":119,"column":14},"end":{"line":119,"column":41}},{"start":{"line":119,"column":45},"end":{"line":119,"column":71}}]},"12":{"loc":{"start":{"line":124,"column":10},"end":{"line":126,"column":11}},"type":"if","locations":[{"start":{"line":124,"column":10},"end":{"line":126,"column":11}}]},"13":{"loc":{"start":{"line":124,"column":14},"end":{"line":124,"column":78}},"type":"binary-expr","locations":[{"start":{"line":124,"column":14},"end":{"line":124,"column":43}},{"start":{"line":124,"column":47},"end":{"line":124,"column":78}}]},"14":{"loc":{"start":{"line":129,"column":10},"end":{"line":131,"column":11}},"type":"if","locations":[{"start":{"line":129,"column":10},"end":{"line":131,"column":11}}]},"15":{"loc":{"start":{"line":137,"column":6},"end":{"line":141,"column":7}},"type":"if","locations":[{"start":{"line":137,"column":6},"end":{"line":141,"column":7}}]},"16":{"loc":{"start":{"line":144,"column":8},"end":{"line":153,"column":9}},"type":"switch","locations":[{"start":{"line":145,"column":10},"end":{"line":149,"column":17}},{"start":{"line":150,"column":10},"end":{"line":152,"column":17}}]},"17":{"loc":{"start":{"line":146,"column":12},"end":{"line":148,"column":13}},"type":"if","locations":[{"start":{"line":146,"column":12},"end":{"line":148,"column":13}}]},"18":{"loc":{"start":{"line":154,"column":50},"end":{"line":154,"column":95}},"type":"cond-expr","locations":[{"start":{"line":154,"column":64},"end":{"line":154,"column":78}},{"start":{"line":154,"column":81},"end":{"line":154,"column":95}}]},"19":{"loc":{"start":{"line":155,"column":21},"end":{"line":155,"column":51}},"type":"cond-expr","locations":[{"start":{"line":155,"column":35},"end":{"line":155,"column":41}},{"start":{"line":155,"column":44},"end":{"line":155,"column":51}}]},"20":{"loc":{"start":{"line":157,"column":8},"end":{"line":159,"column":9}},"type":"if","locations":[{"start":{"line":157,"column":8},"end":{"line":159,"column":9}}]},"21":{"loc":{"start":{"line":169,"column":4},"end":{"line":171,"column":5}},"type":"if","locations":[{"start":{"line":169,"column":4},"end":{"line":171,"column":5}}]},"22":{"loc":{"start":{"line":173,"column":4},"end":{"line":175,"column":5}},"type":"if","locations":[{"start":{"line":173,"column":4},"end":{"line":175,"column":5}}]},"23":{"loc":{"start":{"line":179,"column":6},"end":{"line":181,"column":7}},"type":"if","locations":[{"start":{"line":179,"column":6},"end":{"line":181,"column":7}}]},"24":{"loc":{"start":{"line":187,"column":4},"end":{"line":189,"column":5}},"type":"if","locations":[{"start":{"line":187,"column":4},"end":{"line":189,"column":5}}]},"25":{"loc":{"start":{"line":187,"column":8},"end":{"line":187,"column":47}},"type":"binary-expr","locations":[{"start":{"line":187,"column":8},"end":{"line":187,"column":26}},{"start":{"line":187,"column":30},"end":{"line":187,"column":47}}]},"26":{"loc":{"start":{"line":190,"column":4},"end":{"line":200,"column":5}},"type":"if","locations":[{"start":{"line":190,"column":4},"end":{"line":200,"column":5}}]},"27":{"loc":{"start":{"line":190,"column":8},"end":{"line":190,"column":103}},"type":"binary-expr","locations":[{"start":{"line":190,"column":9},"end":{"line":190,"column":41}},{"start":{"line":190,"column":45},"end":{"line":190,"column":74}},{"start":{"line":190,"column":79},"end":{"line":190,"column":103}}]},"28":{"loc":{"start":{"line":192,"column":6},"end":{"line":199,"column":7}},"type":"switch","locations":[{"start":{"line":193,"column":8},"end":{"line":193,"column":28}},{"start":{"line":194,"column":8},"end":{"line":195,"column":null}},{"start":{"line":196,"column":8},"end":{"line":196,"column":27}},{"start":{"line":197,"column":8},"end":{"line":198,"column":null}}]},"29":{"loc":{"start":{"line":205,"column":4},"end":{"line":209,"column":5}},"type":"if","locations":[{"start":{"line":205,"column":4},"end":{"line":209,"column":5}},{"start":{"line":207,"column":11},"end":{"line":209,"column":5}}]},"30":{"loc":{"start":{"line":207,"column":11},"end":{"line":209,"column":5}},"type":"if","locations":[{"start":{"line":207,"column":11},"end":{"line":209,"column":5}}]},"31":{"loc":{"start":{"line":245,"column":4},"end":{"line":261,"column":5}},"type":"if","locations":[{"start":{"line":245,"column":4},"end":{"line":261,"column":5}},{"start":{"line":247,"column":11},"end":{"line":261,"column":5}}]},"32":{"loc":{"start":{"line":247,"column":11},"end":{"line":261,"column":5}},"type":"if","locations":[{"start":{"line":247,"column":11},"end":{"line":261,"column":5}},{"start":{"line":253,"column":11},"end":{"line":261,"column":5}}]},"33":{"loc":{"start":{"line":247,"column":15},"end":{"line":247,"column":54}},"type":"binary-expr","locations":[{"start":{"line":247,"column":15},"end":{"line":247,"column":34}},{"start":{"line":247,"column":38},"end":{"line":247,"column":54}}]},"34":{"loc":{"start":{"line":250,"column":6},"end":{"line":252,"column":7}},"type":"if","locations":[{"start":{"line":250,"column":6},"end":{"line":252,"column":7}}]},"35":{"loc":{"start":{"line":253,"column":11},"end":{"line":261,"column":5}},"type":"if","locations":[{"start":{"line":253,"column":11},"end":{"line":261,"column":5}},{"start":{"line":256,"column":11},"end":{"line":261,"column":5}}]},"36":{"loc":{"start":{"line":253,"column":15},"end":{"line":253,"column":95}},"type":"binary-expr","locations":[{"start":{"line":253,"column":15},"end":{"line":253,"column":44}},{"start":{"line":253,"column":48},"end":{"line":253,"column":95}}]},"37":{"loc":{"start":{"line":256,"column":11},"end":{"line":261,"column":5}},"type":"if","locations":[{"start":{"line":256,"column":11},"end":{"line":261,"column":5}},{"start":{"line":259,"column":11},"end":{"line":261,"column":5}}]},"38":{"loc":{"start":{"line":292,"column":4},"end":{"line":298,"column":5}},"type":"if","locations":[{"start":{"line":292,"column":4},"end":{"line":298,"column":5}}]},"39":{"loc":{"start":{"line":307,"column":4},"end":{"line":309,"column":5}},"type":"if","locations":[{"start":{"line":307,"column":4},"end":{"line":309,"column":5}}]},"40":{"loc":{"start":{"line":307,"column":8},"end":{"line":307,"column":88}},"type":"binary-expr","locations":[{"start":{"line":307,"column":8},"end":{"line":307,"column":37}},{"start":{"line":307,"column":41},"end":{"line":307,"column":88}}]},"41":{"loc":{"start":{"line":310,"column":4},"end":{"line":312,"column":5}},"type":"if","locations":[{"start":{"line":310,"column":4},"end":{"line":312,"column":5}}]},"42":{"loc":{"start":{"line":317,"column":4},"end":{"line":332,"column":5}},"type":"switch","locations":[{"start":{"line":318,"column":6},"end":{"line":318,"column":28}},{"start":{"line":319,"column":6},"end":{"line":321,"column":null}},{"start":{"line":322,"column":6},"end":{"line":324,"column":null}},{"start":{"line":325,"column":6},"end":{"line":325,"column":26}},{"start":{"line":326,"column":6},"end":{"line":328,"column":null}},{"start":{"line":329,"column":6},"end":{"line":331,"column":null}}]},"43":{"loc":{"start":{"line":321,"column":10},"end":{"line":321,"column":59}},"type":"binary-expr","locations":[{"start":{"line":321,"column":10},"end":{"line":321,"column":27}},{"start":{"line":321,"column":31},"end":{"line":321,"column":59}}]},"44":{"loc":{"start":{"line":328,"column":10},"end":{"line":328,"column":62}},"type":"binary-expr","locations":[{"start":{"line":328,"column":10},"end":{"line":328,"column":27}},{"start":{"line":328,"column":31},"end":{"line":328,"column":62}}]},"45":{"loc":{"start":{"line":336,"column":4},"end":{"line":338,"column":5}},"type":"if","locations":[{"start":{"line":336,"column":4},"end":{"line":338,"column":5}}]},"46":{"loc":{"start":{"line":341,"column":6},"end":{"line":343,"column":7}},"type":"if","locations":[{"start":{"line":341,"column":6},"end":{"line":343,"column":7}}]},"47":{"loc":{"start":{"line":341,"column":10},"end":{"line":341,"column":38}},"type":"binary-expr","locations":[{"start":{"line":341,"column":10},"end":{"line":341,"column":18}},{"start":{"line":341,"column":22},"end":{"line":341,"column":38}}]},"48":{"loc":{"start":{"line":363,"column":4},"end":{"line":373,"column":5}},"type":"if","locations":[{"start":{"line":363,"column":4},"end":{"line":373,"column":5}},{"start":{"line":367,"column":11},"end":{"line":373,"column":5}}]},"49":{"loc":{"start":{"line":367,"column":11},"end":{"line":373,"column":5}},"type":"if","locations":[{"start":{"line":367,"column":11},"end":{"line":373,"column":5}},{"start":{"line":371,"column":11},"end":{"line":373,"column":5}}]},"50":{"loc":{"start":{"line":378,"column":6},"end":{"line":381,"column":7}},"type":"if","locations":[{"start":{"line":378,"column":6},"end":{"line":381,"column":7}}]},"51":{"loc":{"start":{"line":382,"column":6},"end":{"line":398,"column":7}},"type":"if","locations":[{"start":{"line":382,"column":6},"end":{"line":398,"column":7}}]},"52":{"loc":{"start":{"line":382,"column":10},"end":{"line":382,"column":82}},"type":"binary-expr","locations":[{"start":{"line":382,"column":10},"end":{"line":382,"column":33}},{"start":{"line":382,"column":37},"end":{"line":382,"column":82}}]},"53":{"loc":{"start":{"line":384,"column":8},"end":{"line":396,"column":9}},"type":"if","locations":[{"start":{"line":384,"column":8},"end":{"line":396,"column":9}},{"start":{"line":390,"column":15},"end":{"line":396,"column":9}}]},"54":{"loc":{"start":{"line":401,"column":4},"end":{"line":403,"column":5}},"type":"if","locations":[{"start":{"line":401,"column":4},"end":{"line":403,"column":5}}]},"55":{"loc":{"start":{"line":409,"column":4},"end":{"line":411,"column":5}},"type":"if","locations":[{"start":{"line":409,"column":4},"end":{"line":411,"column":5}}]},"56":{"loc":{"start":{"line":441,"column":2},"end":{"line":443,"column":3}},"type":"if","locations":[{"start":{"line":441,"column":2},"end":{"line":443,"column":3}}]},"57":{"loc":{"start":{"line":481,"column":4},"end":{"line":483,"column":5}},"type":"if","locations":[{"start":{"line":481,"column":4},"end":{"line":483,"column":5}}]},"58":{"loc":{"start":{"line":485,"column":4},"end":{"line":487,"column":5}},"type":"if","locations":[{"start":{"line":485,"column":4},"end":{"line":487,"column":5}}]},"59":{"loc":{"start":{"line":489,"column":4},"end":{"line":494,"column":5}},"type":"if","locations":[{"start":{"line":489,"column":4},"end":{"line":494,"column":5}}]},"60":{"loc":{"start":{"line":489,"column":8},"end":{"line":489,"column":55}},"type":"binary-expr","locations":[{"start":{"line":489,"column":8},"end":{"line":489,"column":24}},{"start":{"line":489,"column":28},"end":{"line":489,"column":55}}]},"61":{"loc":{"start":{"line":491,"column":6},"end":{"line":493,"column":7}},"type":"if","locations":[{"start":{"line":491,"column":6},"end":{"line":493,"column":7}}]},"62":{"loc":{"start":{"line":500,"column":4},"end":{"line":502,"column":5}},"type":"if","locations":[{"start":{"line":500,"column":4},"end":{"line":502,"column":5}}]},"63":{"loc":{"start":{"line":508,"column":4},"end":{"line":510,"column":5}},"type":"if","locations":[{"start":{"line":508,"column":4},"end":{"line":510,"column":5}}]},"64":{"loc":{"start":{"line":533,"column":4},"end":{"line":541,"column":5}},"type":"if","locations":[{"start":{"line":533,"column":4},"end":{"line":541,"column":5}}]},"65":{"loc":{"start":{"line":535,"column":8},"end":{"line":539,"column":9}},"type":"if","locations":[{"start":{"line":535,"column":8},"end":{"line":539,"column":9}}]},"66":{"loc":{"start":{"line":585,"column":4},"end":{"line":606,"column":5}},"type":"switch","locations":[{"start":{"line":586,"column":6},"end":{"line":586,"column":26}},{"start":{"line":587,"column":6},"end":{"line":595,"column":13}},{"start":{"line":596,"column":6},"end":{"line":596,"column":25}},{"start":{"line":597,"column":6},"end":{"line":605,"column":13}}]},"67":{"loc":{"start":{"line":590,"column":10},"end":{"line":593,"column":11}},"type":"if","locations":[{"start":{"line":590,"column":10},"end":{"line":593,"column":11}}]},"68":{"loc":{"start":{"line":600,"column":10},"end":{"line":603,"column":11}},"type":"if","locations":[{"start":{"line":600,"column":10},"end":{"line":603,"column":11}}]},"69":{"loc":{"start":{"line":615,"column":9},"end":{"line":620,"column":32}},"type":"binary-expr","locations":[{"start":{"line":615,"column":9},"end":{"line":615,"column":27}},{"start":{"line":615,"column":31},"end":{"line":615,"column":52}},{"start":{"line":616,"column":7},"end":{"line":616,"column":33}},{"start":{"line":617,"column":7},"end":{"line":617,"column":32}},{"start":{"line":618,"column":7},"end":{"line":618,"column":32}},{"start":{"line":619,"column":7},"end":{"line":619,"column":32}},{"start":{"line":620,"column":7},"end":{"line":620,"column":32}}]},"70":{"loc":{"start":{"line":641,"column":11},"end":{"line":643,"column":56}},"type":"binary-expr","locations":[{"start":{"line":641,"column":11},"end":{"line":641,"column":33}},{"start":{"line":641,"column":37},"end":{"line":641,"column":58}},{"start":{"line":641,"column":62},"end":{"line":641,"column":81}},{"start":{"line":642,"column":9},"end":{"line":642,"column":29}},{"start":{"line":642,"column":33},"end":{"line":642,"column":54}},{"start":{"line":642,"column":58},"end":{"line":642,"column":80}},{"start":{"line":643,"column":9},"end":{"line":643,"column":32}},{"start":{"line":643,"column":36},"end":{"line":643,"column":56}}]},"71":{"loc":{"start":{"line":652,"column":12},"end":{"line":652,"column":null}},"type":"binary-expr","locations":[{"start":{"line":652,"column":12},"end":{"line":652,"column":21}},{"start":{"line":652,"column":21},"end":{"line":652,"column":null}}]},"72":{"loc":{"start":{"line":727,"column":4},"end":{"line":732,"column":5}},"type":"if","locations":[{"start":{"line":727,"column":4},"end":{"line":732,"column":5}}]},"73":{"loc":{"start":{"line":728,"column":6},"end":{"line":730,"column":7}},"type":"if","locations":[{"start":{"line":728,"column":6},"end":{"line":730,"column":7}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":0,"8":3,"9":15,"10":15,"11":15,"12":15,"13":0,"14":30,"15":30,"16":11,"17":11,"18":10,"19":1,"20":0,"21":0,"22":0,"23":0,"24":15,"25":0,"26":15,"27":0,"28":0,"29":0,"30":0,"31":15,"32":15,"33":9,"34":15,"35":15,"36":6,"37":9,"38":9,"39":9,"40":9,"41":0,"42":9,"43":9,"44":9,"45":0,"46":9,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":9,"54":9,"55":9,"56":0,"57":0,"58":9,"59":9,"60":9,"61":0,"62":0,"63":0,"64":9,"65":9,"66":9,"67":0,"68":0,"69":0,"70":9,"71":9,"72":9,"73":9,"74":9,"75":9,"76":0,"77":9,"78":9,"79":0,"80":0,"81":0,"82":9,"83":9,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":9,"91":0,"92":9,"93":9,"94":0,"95":3,"96":6,"97":36,"98":6,"99":6,"100":6,"101":6,"102":6,"103":6,"104":6,"105":6,"106":3,"107":3,"108":0,"109":0,"110":0,"111":0,"112":3,"113":0,"114":0,"115":3,"116":3,"117":3,"118":0,"119":6,"120":6,"121":6,"122":6,"123":3,"124":9,"125":24,"126":9,"127":9,"128":0,"129":9,"130":9,"131":9,"132":9,"133":9,"134":9,"135":0,"136":9,"137":0,"138":9,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":3,"199":3,"200":30,"201":30,"202":0,"203":30,"204":3,"205":9,"206":9,"207":9,"208":9,"209":9,"210":9,"211":9,"212":9,"213":9,"214":9,"215":9,"216":9,"217":41,"218":41,"219":0,"220":41,"221":41,"222":25,"223":16,"224":16,"225":0,"226":0,"227":0,"228":16,"229":13,"230":13,"231":7,"232":6,"233":32,"234":32,"235":7,"236":25,"237":21,"238":21,"239":0,"240":21,"241":21,"242":21,"243":21,"244":21,"245":21,"246":0,"247":0,"248":0,"249":0,"250":21,"251":21,"252":21,"253":3,"254":3,"255":9,"256":3,"257":3,"258":0,"259":0,"260":0,"261":3,"262":6,"263":6,"264":0,"265":0,"266":0,"267":6,"268":9,"269":9,"270":3,"271":0,"272":21,"273":21,"274":21,"275":21,"276":21,"277":0,"278":0,"279":0,"280":3,"281":3,"282":3,"283":3,"284":3,"285":3,"286":3,"287":3,"288":3,"289":3,"290":3,"291":3,"292":3,"293":3,"294":3,"295":3,"296":0,"297":0,"298":3,"299":0,"300":9,"301":3,"302":0,"303":3,"304":0,"305":0,"306":0,"307":0,"308":0,"309":0,"310":0,"311":0,"312":3},"f":{"0":3,"1":0,"2":15,"3":0,"4":30,"5":11,"6":15,"7":9,"8":9,"9":9,"10":6,"11":36,"12":6,"13":6,"14":9,"15":24,"16":9,"17":9,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":30,"28":9,"29":41,"30":13,"31":32,"32":21,"33":21,"34":21,"35":3,"36":9,"37":0,"38":21,"39":0,"40":0,"41":3,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":9,"49":0,"50":0,"51":0,"52":0},"b":{"0":[3,3],"1":[30,30],"2":[10],"3":[0],"4":[15,15],"5":[0,0,15],"6":[9],"7":[6],"8":[0],"9":[9,0,0],"10":[0],"11":[9,6],"12":[0],"13":[0,0],"14":[0],"15":[0],"16":[0,9],"17":[0],"18":[9,0],"19":[9,0],"20":[0],"21":[9],"22":[0],"23":[0],"24":[9],"25":[9,0],"26":[0],"27":[0,0,0],"28":[0,0,0,0],"29":[0,9],"30":[9],"31":[3,3],"32":[0,3],"33":[3,0],"34":[0],"35":[0,3],"36":[3,0],"37":[3,0],"38":[0],"39":[0],"40":[9,0],"41":[0],"42":[0,0,0,0,0,0],"43":[0,0],"44":[0,0],"45":[0],"46":[0],"47":[0,0],"48":[0,0],"49":[0,0],"50":[0],"51":[0],"52":[0,0],"53":[0,0],"54":[0],"55":[0],"56":[0],"57":[0],"58":[25],"59":[0],"60":[16,0],"61":[0],"62":[7],"63":[7],"64":[0],"65":[0],"66":[3,3,6,6],"67":[0],"68":[0],"69":[0,0,0,0,0,0,0],"70":[0,0,0,0,0,0,0,0],"71":[3,3],"72":[0],"73":[0]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/wildcard-matcher.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/wildcard-matcher.ts","statementMap":{"0":{"start":{"line":23,"column":0},"end":{"line":23,"column":16}},"1":{"start":{"line":24,"column":11},"end":{"line":24,"column":49}},"2":{"start":{"line":26,"column":2},"end":{"line":30,"column":3}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":null}},"4":{"start":{"line":29,"column":4},"end":{"line":29,"column":null}},"5":{"start":{"line":31,"column":14},"end":{"line":31,"column":32}},"6":{"start":{"line":32,"column":2},"end":{"line":32,"column":null}},"7":{"start":{"line":36,"column":12},"end":{"line":36,"column":14}},"8":{"start":{"line":37,"column":12},"end":{"line":37,"column":56}},"9":{"start":{"line":38,"column":10},"end":{"line":38,"column":11}},"10":{"start":{"line":39,"column":13},"end":{"line":39,"column":23}},"11":{"start":{"line":40,"column":2},"end":{"line":75,"column":3}},"12":{"start":{"line":41,"column":12},"end":{"line":41,"column":18}},"13":{"start":{"line":42,"column":4},"end":{"line":42,"column":null}},"14":{"start":{"line":43,"column":4},"end":{"line":74,"column":5}},"15":{"start":{"line":46,"column":6},"end":{"line":51,"column":7}},"16":{"start":{"line":47,"column":8},"end":{"line":47,"column":null}},"17":{"start":{"line":48,"column":8},"end":{"line":48,"column":null}},"18":{"start":{"line":50,"column":8},"end":{"line":50,"column":null}},"19":{"start":{"line":52,"column":6},"end":{"line":52,"column":11}},"20":{"start":{"line":54,"column":6},"end":{"line":54,"column":null}},"21":{"start":{"line":55,"column":6},"end":{"line":55,"column":11}},"22":{"start":{"line":66,"column":6},"end":{"line":66,"column":null}},"23":{"start":{"line":67,"column":6},"end":{"line":67,"column":11}},"24":{"start":{"line":69,"column":6},"end":{"line":69,"column":null}},"25":{"start":{"line":70,"column":6},"end":{"line":70,"column":11}},"26":{"start":{"line":72,"column":6},"end":{"line":72,"column":null}},"27":{"start":{"line":73,"column":6},"end":{"line":73,"column":11}},"28":{"start":{"line":76,"column":2},"end":{"line":76,"column":null}},"29":{"start":{"line":81,"column":2},"end":{"line":81,"column":null}},"30":{"start":{"line":82,"column":2},"end":{"line":88,"column":3}},"31":{"start":{"line":83,"column":4},"end":{"line":83,"column":null}},"32":{"start":{"line":84,"column":4},"end":{"line":84,"column":null}},"33":{"start":{"line":87,"column":4},"end":{"line":87,"column":null}},"34":{"start":{"line":89,"column":2},"end":{"line":89,"column":null}}},"fnMap":{"0":{"name":"match","decl":{"start":{"line":23,"column":16},"end":{"line":23,"column":21}},"loc":{"start":{"line":23,"column":58},"end":{"line":33,"column":1}}},"1":{"name":"wildcardToRegexp","decl":{"start":{"line":35,"column":9},"end":{"line":35,"column":25}},"loc":{"start":{"line":35,"column":60},"end":{"line":77,"column":1}}},"2":{"name":"doubleSlashes","decl":{"start":{"line":79,"column":9},"end":{"line":79,"column":22}},"loc":{"start":{"line":79,"column":58},"end":{"line":90,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":32,"column":9},"end":{"line":32,"column":42}},"type":"binary-expr","locations":[{"start":{"line":32,"column":9},"end":{"line":32,"column":22}},{"start":{"line":32,"column":26},"end":{"line":32,"column":42}}]},"1":{"loc":{"start":{"line":43,"column":4},"end":{"line":74,"column":5}},"type":"switch","locations":[{"start":{"line":44,"column":4},"end":{"line":52,"column":11}},{"start":{"line":53,"column":4},"end":{"line":55,"column":11}},{"start":{"line":56,"column":4},"end":{"line":56,"column":13}},{"start":{"line":57,"column":4},"end":{"line":57,"column":13}},{"start":{"line":58,"column":4},"end":{"line":58,"column":13}},{"start":{"line":59,"column":4},"end":{"line":59,"column":13}},{"start":{"line":60,"column":4},"end":{"line":60,"column":13}},{"start":{"line":61,"column":4},"end":{"line":61,"column":13}},{"start":{"line":62,"column":4},"end":{"line":62,"column":13}},{"start":{"line":63,"column":4},"end":{"line":63,"column":13}},{"start":{"line":64,"column":4},"end":{"line":67,"column":11}},{"start":{"line":68,"column":4},"end":{"line":70,"column":11}},{"start":{"line":71,"column":4},"end":{"line":73,"column":11}}]},"2":{"loc":{"start":{"line":46,"column":6},"end":{"line":51,"column":7}},"type":"if","locations":[{"start":{"line":46,"column":6},"end":{"line":51,"column":7}},{"start":{"line":49,"column":13},"end":{"line":51,"column":7}}]},"3":{"loc":{"start":{"line":46,"column":10},"end":{"line":46,"column":41}},"type":"binary-expr","locations":[{"start":{"line":46,"column":10},"end":{"line":46,"column":24}},{"start":{"line":46,"column":28},"end":{"line":46,"column":41}}]},"4":{"loc":{"start":{"line":82,"column":2},"end":{"line":88,"column":3}},"type":"if","locations":[{"start":{"line":82,"column":2},"end":{"line":88,"column":3}},{"start":{"line":85,"column":9},"end":{"line":88,"column":3}}]}},"s":{"0":4,"1":27,"2":27,"3":27,"4":0,"5":27,"6":27,"7":27,"8":27,"9":27,"10":27,"11":27,"12":121,"13":121,"14":121,"15":21,"16":2,"17":2,"18":19,"19":21,"20":8,"21":8,"22":6,"23":6,"24":0,"25":0,"26":86,"27":86,"28":27,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0},"f":{"0":27,"1":27,"2":0},"b":{"0":[27,20],"1":[21,8,6,6,6,6,6,6,6,6,6,0,86],"2":[2,19],"3":[21,10],"4":[0,0]}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/test/schemaregistry/test-constants.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/test/schemaregistry/test-constants.ts","statementMap":{"0":{"start":{"line":4,"column":17},"end":{"line":4,"column":42}},"1":{"start":{"line":6,"column":21},"end":{"line":6,"column":42}},"2":{"start":{"line":8,"column":49},"end":{"line":17,"column":2}},"3":{"start":{"line":19,"column":35},"end":{"line":25,"column":2}},"4":{"start":{"line":35,"column":9},"end":{"line":35,"column":21}},"5":{"start":{"line":27,"column":39},"end":{"line":33,"column":2}},"6":{"start":{"line":35,"column":23},"end":{"line":35,"column":39}}},"fnMap":{},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/test/schemaregistry/dekregistry/test-constants.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/test/schemaregistry/dekregistry/test-constants.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":72}},"1":{"start":{"line":4,"column":30},"end":{"line":4,"column":45}},"2":{"start":{"line":71,"column":2},"end":{"line":71,"column":15}},"3":{"start":{"line":5,"column":32},"end":{"line":5,"column":48}},"4":{"start":{"line":71,"column":17},"end":{"line":71,"column":32}},"5":{"start":{"line":6,"column":30},"end":{"line":6,"column":45}},"6":{"start":{"line":71,"column":34},"end":{"line":71,"column":47}},"7":{"start":{"line":7,"column":32},"end":{"line":7,"column":49}},"8":{"start":{"line":71,"column":49},"end":{"line":71,"column":64}},"9":{"start":{"line":8,"column":23},"end":{"line":8,"column":47}},"10":{"start":{"line":71,"column":66},"end":{"line":71,"column":80}},"11":{"start":{"line":9,"column":25},"end":{"line":9,"column":35}},"12":{"start":{"line":71,"column":82},"end":{"line":71,"column":90}},"13":{"start":{"line":11,"column":29},"end":{"line":11,"column":43}},"14":{"start":{"line":72,"column":2},"end":{"line":72,"column":14}},"15":{"start":{"line":12,"column":31},"end":{"line":12,"column":47}},"16":{"start":{"line":72,"column":16},"end":{"line":72,"column":30}},"17":{"start":{"line":13,"column":44},"end":{"line":13,"column":73}},"18":{"start":{"line":72,"column":32},"end":{"line":72,"column":59}},"19":{"start":{"line":14,"column":29},"end":{"line":14,"column":30}},"20":{"start":{"line":72,"column":61},"end":{"line":72,"column":73}},"21":{"start":{"line":16,"column":22},"end":{"line":23,"column":2}},"22":{"start":{"line":73,"column":2},"end":{"line":73,"column":10}},"23":{"start":{"line":25,"column":24},"end":{"line":32,"column":2}},"24":{"start":{"line":73,"column":12},"end":{"line":73,"column":22}},"25":{"start":{"line":34,"column":22},"end":{"line":41,"column":2}},"26":{"start":{"line":73,"column":24},"end":{"line":73,"column":32}},"27":{"start":{"line":43,"column":25},"end":{"line":50,"column":2}},"28":{"start":{"line":73,"column":34},"end":{"line":73,"column":45}},"29":{"start":{"line":52,"column":24},"end":{"line":59,"column":2}},"30":{"start":{"line":73,"column":47},"end":{"line":73,"column":57}},"31":{"start":{"line":61,"column":29},"end":{"line":68,"column":2}},"32":{"start":{"line":73,"column":59},"end":{"line":73,"column":74}}},"fnMap":{},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2,"16":2,"17":2,"18":2,"19":2,"20":2,"21":2,"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":2,"31":2,"32":2},"f":{},"b":{}} +,"/Users/robertyokota/code/work/confluent-kafka-javascript/test/schemaregistry/serde/author_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/test/schemaregistry/serde/author_pb.ts","statementMap":{"0":{"start":{"line":6,"column":0},"end":{"line":6,"column":69}},"1":{"start":{"line":7,"column":0},"end":{"line":7,"column":80}},"2":{"start":{"line":13,"column":13},"end":{"line":14,"column":297}},"3":{"start":{"line":45,"column":13},"end":{"line":46,"column":56}},"4":{"start":{"line":67,"column":13},"end":{"line":68,"column":56}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"f":{},"b":{}} +} diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css new file mode 100644 index 00000000..f418035b --- /dev/null +++ b/coverage/lcov-report/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js new file mode 100644 index 00000000..cc121302 --- /dev/null +++ b/coverage/lcov-report/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/coverage/lcov-report/favicon.png b/coverage/lcov-report/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1525b811a167671e9de1fa78aab9f5c0b61cef7 GIT binary patch literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 71.69% + Statements + 1662/2318 +
+ + +
+ 49.81% + Branches + 403/809 +
+ + +
+ 76.32% + Functions + 274/359 +
+ + +
+ 71.88% + Lines + 1634/2273 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
schemaregistry +
+
81.79%355/43472.3%94/13081.81%90/11081.98%355/433
schemaregistry/confluent +
+
100%9/9100%0/0100%0/0100%9/9
schemaregistry/confluent/types +
+
100%3/3100%0/0100%0/0100%3/3
schemaregistry/dekregistry +
+
86.4%108/12579.16%38/4890.47%19/2186.4%108/125
schemaregistry/google/type +
+
100%74/74100%6/6100%3/3100%74/74
schemaregistry/rules/encryption +
+
80.3%212/26457.79%63/10992.3%36/3980.3%212/264
schemaregistry/rules/encryption/localkms +
+
92.59%25/270%0/2100%8/892.59%25/27
schemaregistry/rules/encryption/tink +
+
56.62%141/24922.03%13/5955.55%15/2757.74%138/239
schemaregistry/rules/encryption/tink/exception +
+
50%4/8100%0/00%0/250%4/8
schemaregistry/rules/encryption/tink/proto +
+
100%8/8100%0/0100%0/0100%8/8
schemaregistry/serde +
+
63.24%678/107241.53%189/45569.12%103/14963.4%667/1052
test/schemaregistry +
+
100%7/7100%0/0100%0/0100%6/6
test/schemaregistry/dekregistry +
+
100%33/33100%0/0100%0/0100%20/20
test/schemaregistry/serde +
+
100%5/5100%0/0100%0/0100%5/5
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css new file mode 100644 index 00000000..b317a7cd --- /dev/null +++ b/coverage/lcov-report/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js new file mode 100644 index 00000000..b3225238 --- /dev/null +++ b/coverage/lcov-report/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/lcov-report/schemaregistry/confluent/index.html b/coverage/lcov-report/schemaregistry/confluent/index.html new file mode 100644 index 00000000..a066f12b --- /dev/null +++ b/coverage/lcov-report/schemaregistry/confluent/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for schemaregistry/confluent + + + + + + + + + +
+
+

All files schemaregistry/confluent

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 9/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
meta_pb.ts +
+
100%9/9100%0/0100%0/0100%9/9
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/confluent/meta_pb.ts.html b/coverage/lcov-report/schemaregistry/confluent/meta_pb.ts.html new file mode 100644 index 00000000..fadc1154 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/confluent/meta_pb.ts.html @@ -0,0 +1,304 @@ + + + + + + Code coverage report for schemaregistry/confluent/meta_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/confluent meta_pb.ts

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 9/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74  +  +  +  +  +1x +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  + 
// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file confluent/meta.proto (package confluent, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenExtension, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
+import { extDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
+import type { EnumOptions, EnumValueOptions, FieldOptions, FileOptions, MessageOptions } from "@bufbuild/protobuf/wkt";
+import { file_google_protobuf_descriptor } from "@bufbuild/protobuf/wkt";
+import type { Message } from "@bufbuild/protobuf";
+ 
+/**
+ * Describes the file confluent/meta.proto.
+ */
+export const file_confluent_meta: GenFile = /*@__PURE__*/
+  fileDesc("ChRjb25mbHVlbnQvbWV0YS5wcm90bxIJY29uZmx1ZW50In0KBE1ldGESCwoDZG9jGAEgASgJEisKBnBhcmFtcxgCIAMoCzIbLmNvbmZsdWVudC5NZXRhLlBhcmFtc0VudHJ5EgwKBHRhZ3MYAyADKAkaLQoLUGFyYW1zRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ATpLCglmaWxlX21ldGESHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMYwAggASgLMg8uY29uZmx1ZW50Lk1ldGFSCGZpbGVNZXRhOlQKDG1lc3NhZ2VfbWV0YRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjACCABKAsyDy5jb25mbHVlbnQuTWV0YVILbWVzc2FnZU1ldGE6TgoKZmllbGRfbWV0YRIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYwAggASgLMg8uY29uZmx1ZW50Lk1ldGFSCWZpZWxkTWV0YTpLCgllbnVtX21ldGESHC5nb29nbGUucHJvdG9idWYuRW51bU9wdGlvbnMYwAggASgLMg8uY29uZmx1ZW50Lk1ldGFSCGVudW1NZXRhOlsKD2VudW1fdmFsdWVfbWV0YRIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zGMAIIAEoCzIPLmNvbmZsdWVudC5NZXRhUg1lbnVtVmFsdWVNZXRhQg5aDC4uL2NvbmZsdWVudGIGcHJvdG8z", [file_google_protobuf_descriptor]);
+ 
+/**
+ * @generated from message confluent.Meta
+ */
+export type Meta = Message<"confluent.Meta"> & {
+  /**
+   * @generated from field: string doc = 1;
+   */
+  doc: string;
+ 
+  /**
+   * @generated from field: map<string, string> params = 2;
+   */
+  params: { [key: string]: string };
+ 
+  /**
+   * @generated from field: repeated string tags = 3;
+   */
+  tags: string[];
+};
+ 
+/**
+ * Describes the message confluent.Meta.
+ * Use `create(MetaSchema)` to create a new message.
+ */
+export const MetaSchema: GenMessage<Meta> = /*@__PURE__*/
+  messageDesc(file_confluent_meta, 0);
+ 
+/**
+ * @generated from extension: confluent.Meta file_meta = 1088;
+ */
+export const file_meta: GenExtension<FileOptions, Meta> = /*@__PURE__*/
+  extDesc(file_confluent_meta, 0);
+ 
+/**
+ * @generated from extension: confluent.Meta message_meta = 1088;
+ */
+export const message_meta: GenExtension<MessageOptions, Meta> = /*@__PURE__*/
+  extDesc(file_confluent_meta, 1);
+ 
+/**
+ * @generated from extension: confluent.Meta field_meta = 1088;
+ */
+export const field_meta: GenExtension<FieldOptions, Meta> = /*@__PURE__*/
+  extDesc(file_confluent_meta, 2);
+ 
+/**
+ * @generated from extension: confluent.Meta enum_meta = 1088;
+ */
+export const enum_meta: GenExtension<EnumOptions, Meta> = /*@__PURE__*/
+  extDesc(file_confluent_meta, 3);
+ 
+/**
+ * @generated from extension: confluent.Meta enum_value_meta = 1088;
+ */
+export const enum_value_meta: GenExtension<EnumValueOptions, Meta> = /*@__PURE__*/
+  extDesc(file_confluent_meta, 4);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/confluent/types/decimal_pb.ts.html b/coverage/lcov-report/schemaregistry/confluent/types/decimal_pb.ts.html new file mode 100644 index 00000000..ca396ab6 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/confluent/types/decimal_pb.ts.html @@ -0,0 +1,226 @@ + + + + + + Code coverage report for schemaregistry/confluent/types/decimal_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/confluent/types decimal_pb.ts

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  + 
// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file confluent/types/decimal.proto (package confluent.type, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
+import type { Message } from "@bufbuild/protobuf";
+ 
+/**
+ * Describes the file confluent/types/decimal.proto.
+ */
+export const file_confluent_types_decimal: GenFile = /*@__PURE__*/
+  fileDesc("Ch1jb25mbHVlbnQvdHlwZXMvZGVjaW1hbC5wcm90bxIOY29uZmx1ZW50LnR5cGUiOgoHRGVjaW1hbBINCgV2YWx1ZRgBIAEoDBIRCglwcmVjaXNpb24YAiABKA0SDQoFc2NhbGUYAyABKAVCCloILi4vdHlwZXNiBnByb3RvMw");
+ 
+/**
+ * @generated from message confluent.type.Decimal
+ */
+export type Decimal = Message<"confluent.type.Decimal"> & {
+  /**
+   * The two's-complement representation of the unscaled integer value in big-endian byte order
+   *
+   * @generated from field: bytes value = 1;
+   */
+  value: Uint8Array;
+ 
+  /**
+   * The precision
+   *
+   * @generated from field: uint32 precision = 2;
+   */
+  precision: number;
+ 
+  /**
+   * The scale
+   *
+   * @generated from field: int32 scale = 3;
+   */
+  scale: number;
+};
+ 
+/**
+ * Describes the message confluent.type.Decimal.
+ * Use `create(DecimalSchema)` to create a new message.
+ */
+export const DecimalSchema: GenMessage<Decimal> = /*@__PURE__*/
+  messageDesc(file_confluent_types_decimal, 0);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/confluent/types/index.html b/coverage/lcov-report/schemaregistry/confluent/types/index.html new file mode 100644 index 00000000..c1b95ce3 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/confluent/types/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for schemaregistry/confluent/types + + + + + + + + + +
+
+

All files schemaregistry/confluent/types

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
decimal_pb.ts +
+
100%3/3100%0/0100%0/0100%3/3
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/dekregistry/constants.ts.html b/coverage/lcov-report/schemaregistry/dekregistry/constants.ts.html new file mode 100644 index 00000000..2d2d599f --- /dev/null +++ b/coverage/lcov-report/schemaregistry/dekregistry/constants.ts.html @@ -0,0 +1,97 @@ + + + + + + Code coverage report for schemaregistry/dekregistry/constants.ts + + + + + + + + + +
+
+

All files / schemaregistry/dekregistry constants.ts

+
+ +
+ 100% + Statements + 2/2 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 2/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +55x +  +  +5x + 
const MOCK_TS = 11112223334;
+ 
+export {
+    MOCK_TS
+};
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/dekregistry/dekregistry-client.ts.html b/coverage/lcov-report/schemaregistry/dekregistry/dekregistry-client.ts.html new file mode 100644 index 00000000..0bc5addf --- /dev/null +++ b/coverage/lcov-report/schemaregistry/dekregistry/dekregistry-client.ts.html @@ -0,0 +1,820 @@ + + + + + + Code coverage report for schemaregistry/dekregistry/dekregistry-client.ts + + + + + + + + + +
+
+

All files / schemaregistry/dekregistry dekregistry-client.ts

+
+ +
+ 84.33% + Statements + 70/83 +
+ + +
+ 83.33% + Branches + 20/24 +
+ + +
+ 93.33% + Functions + 14/15 +
+ + +
+ 84.33% + Lines + 70/83 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +2464x +4x +4x +4x +4x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +7x +  +  +  +  +  +7x +7x +7x +7x +7x +  +  +  +15x +15x +15x +  +  +  +  +  +5x +  +  +  +5x +5x +5x +5x +  +  +  +  +  +  +  +  +5x +  +  +  +22x +5x +  +  +17x +5x +5x +5x +  +  +  +  +  +  +  +  +17x +  +  +  +5x +5x +5x +  +  +  +  +  +6x +  +6x +6x +6x +2x +  +  +4x +  +  +  +  +  +  +  +  +4x +  +  +  +4x +4x +  +  +  +  +1x +  +1x +1x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +7x +  +7x +7x +7x +2x +  +  +5x +  +  +  +  +  +5x +  +5x +  +  +  +5x +  +5x +5x +  +5x +  +  +  +  +  +3x +  +3x +3x +3x +2x +  +1x +1x +  +1x +  +  +1x +1x +  +  +  +  +  +  +  +  +  +2x +2x +2x +  +  +  +4x +  + 
import { LRUCache } from 'lru-cache';
+import { Mutex } from 'async-mutex';
+import { ClientConfig, RestService } from '../rest-service';
+import stringify from 'json-stringify-deterministic';
+import {MockDekRegistryClient} from "./mock-dekregistry-client";
+ 
+/*
+ * Confluent-Schema-Registry-TypeScript - Node.js wrapper for Confluent Schema Registry
+ *
+ * Copyright (c) 2024 Confluent, Inc.
+ *
+ * This software may be modified and distributed under the terms
+ * of the MIT license.  See the LICENSE.txt file for details.
+ */
+ 
+interface Kek {
+  name?: string;
+  kmsType?: string;
+  kmsKeyId?: string;
+  kmsProps?: { [key: string]: string };
+  doc?: string;
+  shared?: boolean;
+  ts?: number;
+  deleted?: boolean;
+}
+ 
+interface CreateKekRequest {
+  name?: string;
+  kmsType?: string;
+  kmsKeyId?: string;
+  kmsProps?: { [key: string]: string };
+  doc?: string;
+  shared?: boolean;
+}
+ 
+interface Dek {
+  kekName?: string;
+  subject?: string;
+  version?: number;
+  algorithm?: string;
+  encryptedKeyMaterial?: string;
+  encryptedKeyMaterialBytes?: Buffer;
+  keyMaterial?: string;
+  keyMaterialBytes?: Buffer;
+  ts?: number;
+  deleted?: boolean;
+}
+ 
+interface Client {
+  registerKek(name: string, kmsType: string, kmsKeyId: string, shared: boolean,
+              kmsProps?: { [key: string]: string }, doc?: string): Promise<Kek>;
+  getKek(name: string, deleted: boolean): Promise<Kek>;
+  registerDek(kekName: string, subject: string, algorithm: string, version: number,
+              encryptedKeyMaterial?: string): Promise<Dek>;
+  getDek(kekName: string, subject: string, algorithm: string, version: number, deleted: boolean): Promise<Dek>;
+  close(): Promise<void>;
+}
+ 
+class DekRegistryClient implements Client {
+  private restService: RestService;
+  private kekCache: LRUCache<string, Kek>;
+  private dekCache: LRUCache<string, Dek>;
+  private kekMutex: Mutex;
+  private dekMutex: Mutex;
+ 
+  constructor(config: ClientConfig) {
+    const cacheOptions = {
+      max: config.cacheCapacity,
+      ...(config.cacheLatestTtlSecs !== undefined && { maxAge: config.cacheLatestTtlSecs * 1000 }),
+    };
+ 
+ 
+    this.restService = new RestService(config.baseURLs, config.isForward, config.createAxiosDefaults);
+    this.kekCache = new LRUCache<string, Kek>(cacheOptions);
+    this.dekCache = new LRUCache<string, Dek>(cacheOptions);
+    this.kekMutex = new Mutex();
+    this.dekMutex = new Mutex();
+  }
+ 
+  static newClient(config: ClientConfig): Client {
+    let url = config.baseURLs[0]
+    if (url.startsWith("mock://")) {
+      return new MockDekRegistryClient()
+    }
+    return new DekRegistryClient(config)
+  }
+ 
+  static getEncryptedKeyMaterialBytes(dek: Dek): Buffer | null {
+    Iif (!dek.encryptedKeyMaterial) {
+      return null;
+    }
+ 
+    if (!dek.encryptedKeyMaterialBytes) {
+      try {
+        const bytes = Buffer.from(dek.encryptedKeyMaterial, 'base64');
+        dek.encryptedKeyMaterialBytes = bytes;
+      } catch (err) {
+        Iif (err instanceof Error) {
+          throw new Error(`Failed to decode base64 string: ${err.message}`);
+        }
+        throw new Error(`Unknown error: ${err}`);
+      }
+    }
+ 
+    return dek.encryptedKeyMaterialBytes;
+  }
+ 
+  static getKeyMaterialBytes(dek: Dek): Buffer | null {
+    if (!dek.keyMaterial) {
+      return null;
+    }
+ 
+    if (!dek.keyMaterialBytes) {
+      try {
+        const bytes = Buffer.from(dek.keyMaterial, 'base64');
+        dek.keyMaterialBytes = bytes;
+      } catch (err) {
+        Iif (err instanceof Error) {
+          throw new Error(`Failed to decode base64 string: ${err.message}`);
+        }
+        throw new Error(`Unknown error: ${err}`);
+      }
+    }
+ 
+    return dek.keyMaterialBytes;
+  }
+ 
+  static setKeyMaterial(dek: Dek, keyMaterialBytes: Buffer): void {
+    if (keyMaterialBytes) {
+      const str = keyMaterialBytes.toString('base64');
+      dek.keyMaterial = str;
+    }
+  }
+ 
+  async registerKek(name: string, kmsType: string, kmsKeyId: string, shared: boolean,
+    kmsProps?: { [key: string]: string }, doc?: string): Promise<Kek> {
+    const cacheKey = stringify({ name, deleted: false });
+ 
+    return await this.kekMutex.runExclusive(async () => {
+      const kek = this.kekCache.get(cacheKey);
+      if (kek) {
+        return kek;
+      }
+ 
+      const request: CreateKekRequest = {
+        name,
+        kmsType,
+        kmsKeyId,
+        ...kmsProps && { kmsProps },
+        ...doc && { doc },
+        shared,
+      };
+ 
+      const response = await this.restService.handleRequest<Kek>(
+        '/dek-registry/v1/keks',
+        'POST',
+        request);
+      this.kekCache.set(cacheKey, response.data);
+      return response.data;
+    });
+  }
+ 
+  async getKek(name: string, deleted: boolean = false): Promise<Kek> {
+    const cacheKey = stringify({ name, deleted });
+ 
+    return await this.kekMutex.runExclusive(async () => {
+      const kek = this.kekCache.get(cacheKey);
+      if (kek) {
+        return kek;
+      }
+      name = encodeURIComponent(name);
+ 
+      const response = await this.restService.handleRequest<Kek>(
+        `/dek-registry/v1/keks/${name}?deleted=${deleted}`,
+        'GET');
+      this.kekCache.set(cacheKey, response.data);
+      return response.data;
+    });
+  }
+ 
+  async registerDek(kekName: string, subject: string, algorithm: string,
+    version: number = 1, encryptedKeyMaterial?: string): Promise<Dek> {
+    const cacheKey = stringify({ kekName, subject, version, algorithm, deleted: false });
+ 
+    return await this.dekMutex.runExclusive(async () => {
+      const dek = this.dekCache.get(cacheKey);
+      if (dek) {
+        return dek;
+      }
+ 
+      const request: Dek = {
+        subject,
+        version,
+        algorithm,
+        ...encryptedKeyMaterial && { encryptedKeyMaterial },
+      };
+      kekName = encodeURIComponent(kekName);
+ 
+      const response = await this.restService.handleRequest<Dek>(
+        `/dek-registry/v1/keks/${kekName}/deks`,
+        'POST',
+        request);
+      this.dekCache.set(cacheKey, response.data);
+ 
+      this.dekCache.delete(stringify({ kekName, subject, version: -1, algorithm, deleted: false }));
+      this.dekCache.delete(stringify({ kekName, subject, version: -1, algorithm, deleted: true }));
+ 
+      return response.data;
+    });
+  }
+ 
+  async getDek(kekName: string, subject: string,
+    algorithm: string, version: number = 1, deleted: boolean = false): Promise<Dek> {
+    const cacheKey = stringify({ kekName, subject, version, algorithm, deleted });
+ 
+    return await this.dekMutex.runExclusive(async () => {
+      const dek = this.dekCache.get(cacheKey);
+      if (dek) {
+        return dek;
+      }
+      kekName = encodeURIComponent(kekName);
+      subject = encodeURIComponent(subject);
+ 
+      const response = await this.restService.handleRequest<Dek>(
+        `/dek-registry/v1/keks/${kekName}/deks/${subject}/versions/${version}?deleted=${deleted}`,
+        'GET');
+      this.dekCache.set(cacheKey, response.data);
+      return response.data;
+    });
+  }
+ 
+  async close(): Promise<void> {
+    return;
+  }
+ 
+  //Cache methods for testing
+  async checkLatestDekInCache(kekName: string, subject: string, algorithm: string): Promise<boolean> {
+    const cacheKey = stringify({ kekName, subject, version: -1, algorithm, deleted: false });
+    const cachedDek = this.dekCache.get(cacheKey);
+    return cachedDek !== undefined;
+  }
+}
+ 
+export { DekRegistryClient, Client, Kek, Dek };
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/dekregistry/index.html b/coverage/lcov-report/schemaregistry/dekregistry/index.html new file mode 100644 index 00000000..9fe7b076 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/dekregistry/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for schemaregistry/dekregistry + + + + + + + + + +
+
+

All files schemaregistry/dekregistry

+
+ +
+ 86.4% + Statements + 108/125 +
+ + +
+ 79.16% + Branches + 38/48 +
+ + +
+ 90.47% + Functions + 19/21 +
+ + +
+ 86.4% + Lines + 108/125 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
constants.ts +
+
100%2/2100%0/0100%0/0100%2/2
dekregistry-client.ts +
+
84.33%70/8383.33%20/2493.33%14/1584.33%70/83
mock-dekregistry-client.ts +
+
90%36/4075%18/2483.33%5/690%36/40
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/dekregistry/mock-dekregistry-client.ts.html b/coverage/lcov-report/schemaregistry/dekregistry/mock-dekregistry-client.ts.html new file mode 100644 index 00000000..e4b97053 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/dekregistry/mock-dekregistry-client.ts.html @@ -0,0 +1,379 @@ + + + + + + Code coverage report for schemaregistry/dekregistry/mock-dekregistry-client.ts + + + + + + + + + +
+
+

All files / schemaregistry/dekregistry mock-dekregistry-client.ts

+
+ +
+ 90% + Statements + 36/40 +
+ + +
+ 75% + Branches + 18/24 +
+ + +
+ 83.33% + Functions + 5/6 +
+ + +
+ 90% + Lines + 36/40 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99  +5x +5x +5x +  +  +  +  +  +  +20x +20x +  +  +  +  +7x +7x +7x +  +  +  +7x +  +  +  +  +  +  +  +  +7x +7x +  +  +  +8x +8x +8x +6x +  +  +2x +  +  +  +  +9x +9x +9x +  +  +  +9x +  +  +  +  +  +  +  +  +9x +9x +  +  +  +  +13x +1x +1x +2x +2x +  +2x +  +  +1x +  +  +1x +  +  +13x +13x +13x +11x +  +  +2x +  +  +  +  +  +  +  +5x + 
import { Client, Dek, Kek } from "./dekregistry-client";
+import { MOCK_TS } from "./constants";
+import stringify from "json-stringify-deterministic";
+import {RestError} from "../rest-error";
+ 
+class MockDekRegistryClient implements Client {
+  private kekCache: Map<string, Kek>;
+  private dekCache: Map<string, Dek>;
+ 
+  constructor() {
+    this.kekCache = new Map<string, Kek>();
+    this.dekCache = new Map<string, Dek>();
+  }
+ 
+  async registerKek(name: string, kmsType: string, kmsKeyId: string, shared: boolean,
+    kmsProps?: { [key: string]: string }, doc?: string): Promise<Kek> {
+    const cacheKey = stringify({ name, deleted: false });
+    const cachedKek = this.kekCache.get(cacheKey);
+    Iif (cachedKek) {
+      return cachedKek;
+    }
+ 
+    const kek: Kek = {
+      name,
+      kmsType,
+      kmsKeyId,
+      ...kmsProps && { kmsProps },
+      ...doc && { doc },
+      shared
+    };
+ 
+    this.kekCache.set(cacheKey, kek);
+    return kek;
+  }
+ 
+  async getKek(name: string, deleted: boolean = false): Promise<Kek> {
+    const cacheKey = stringify({ name, deleted });
+    const cachedKek = this.kekCache.get(cacheKey);
+    if (cachedKek && (!cachedKek.deleted || deleted)) {
+      return cachedKek;
+    }
+ 
+    throw new RestError(`Kek not found: ${name}`, 404, 40400);
+  }
+ 
+  async registerDek(kekName: string, subject: string, algorithm: string,
+    version: number = 1, encryptedKeyMaterial?: string): Promise<Dek> {
+    const cacheKey = stringify({ kekName, subject, version, algorithm, deleted: false });
+    const cachedDek = this.dekCache.get(cacheKey);
+    Iif (cachedDek) {
+      return cachedDek;
+    }
+ 
+    const dek: Dek = {
+      kekName,
+      subject,
+      algorithm,
+      ...encryptedKeyMaterial && { encryptedKeyMaterial },
+      version,
+      ts: MOCK_TS
+    };
+ 
+    this.dekCache.set(cacheKey, dek);
+    return dek;
+  }
+ 
+  async getDek(kekName: string, subject: string,
+    algorithm: string, version: number = 1, deleted: boolean = false): Promise<Dek> {
+    if (version === -1) {
+      let latestVersion = 0;
+      for (let key of this.dekCache.keys()) {
+        const parsedKey = JSON.parse(key);
+        if (parsedKey.kekName === kekName && parsedKey.subject === subject
+          && parsedKey.algorithm === algorithm && parsedKey.deleted === deleted) {
+          latestVersion = Math.max(latestVersion, parsedKey.version);
+        }
+      }
+      Iif (latestVersion === 0) {
+        throw new RestError(`Dek not found: ${subject}`, 404, 40400);
+      }
+      version = latestVersion;
+    }
+ 
+    const cacheKey = stringify({ kekName, subject, version, algorithm, deleted: false });
+    const cachedDek = this.dekCache.get(cacheKey);
+    if (cachedDek) {
+      return cachedDek;
+    }
+ 
+    throw new RestError(`Dek not found: ${subject}`, 404, 40400);
+  }
+ 
+  async close() {
+    return;
+  }
+}
+ 
+export { MockDekRegistryClient };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/calendar_period_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/calendar_period_pb.ts.html new file mode 100644 index 00000000..5791068c --- /dev/null +++ b/coverage/lcov-report/schemaregistry/google/type/calendar_period_pb.ts.html @@ -0,0 +1,391 @@ + + + + + + Code coverage report for schemaregistry/google/type/calendar_period_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/google/type calendar_period_pb.ts

+
+ +
+ 100% + Statements + 12/12 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  + 
// Copyright 2021-2024 Buf Technologies, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+ 
+// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file google/type/calendar_period.proto (package google.type, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenEnum, GenFile } from "@bufbuild/protobuf/codegenv1";
+import { enumDesc, fileDesc } from "@bufbuild/protobuf/codegenv1";
+ 
+/**
+ * Describes the file google/type/calendar_period.proto.
+ */
+export const file_google_type_calendar_period: GenFile = /*@__PURE__*/
+  fileDesc("CiFnb29nbGUvdHlwZS9jYWxlbmRhcl9wZXJpb2QucHJvdG8SC2dvb2dsZS50eXBlKn8KDkNhbGVuZGFyUGVyaW9kEh8KG0NBTEVOREFSX1BFUklPRF9VTlNQRUNJRklFRBAAEgcKA0RBWRABEggKBFdFRUsQAhINCglGT1JUTklHSFQQAxIJCgVNT05USBAEEgsKB1FVQVJURVIQBRIICgRIQUxGEAYSCAoEWUVBUhAHQngKD2NvbS5nb29nbGUudHlwZUITQ2FsZW5kYXJQZXJpb2RQcm90b1ABWkhnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvY2FsZW5kYXJwZXJpb2Q7Y2FsZW5kYXJwZXJpb2SiAgNHVFBiBnByb3RvMw");
+ 
+/**
+ * A `CalendarPeriod` represents the abstract concept of a time period that has
+ * a canonical start. Grammatically, "the start of the current
+ * `CalendarPeriod`." All calendar times begin at midnight UTC.
+ *
+ * @generated from enum google.type.CalendarPeriod
+ */
+export enum CalendarPeriod {
+  /**
+   * Undefined period, raises an error.
+   *
+   * @generated from enum value: CALENDAR_PERIOD_UNSPECIFIED = 0;
+   */
+  CALENDAR_PERIOD_UNSPECIFIED = 0,
+ 
+  /**
+   * A day.
+   *
+   * @generated from enum value: DAY = 1;
+   */
+  DAY = 1,
+ 
+  /**
+   * A week. Weeks begin on Monday, following
+   * [ISO 8601](https://en.wikipedia.org/wiki/ISO_week_date).
+   *
+   * @generated from enum value: WEEK = 2;
+   */
+  WEEK = 2,
+ 
+  /**
+   * A fortnight. The first calendar fortnight of the year begins at the start
+   * of week 1 according to
+   * [ISO 8601](https://en.wikipedia.org/wiki/ISO_week_date).
+   *
+   * @generated from enum value: FORTNIGHT = 3;
+   */
+  FORTNIGHT = 3,
+ 
+  /**
+   * A month.
+   *
+   * @generated from enum value: MONTH = 4;
+   */
+  MONTH = 4,
+ 
+  /**
+   * A quarter. Quarters start on dates 1-Jan, 1-Apr, 1-Jul, and 1-Oct of each
+   * year.
+   *
+   * @generated from enum value: QUARTER = 5;
+   */
+  QUARTER = 5,
+ 
+  /**
+   * A half-year. Half-years start on dates 1-Jan and 1-Jul.
+   *
+   * @generated from enum value: HALF = 6;
+   */
+  HALF = 6,
+ 
+  /**
+   * A year.
+   *
+   * @generated from enum value: YEAR = 7;
+   */
+  YEAR = 7,
+}
+ 
+/**
+ * Describes the enum google.type.CalendarPeriod.
+ */
+export const CalendarPeriodSchema: GenEnum<CalendarPeriod> = /*@__PURE__*/
+  enumDesc(file_google_type_calendar_period, 0);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/color_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/color_pb.ts.html new file mode 100644 index 00000000..8891f6f2 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/google/type/color_pb.ts.html @@ -0,0 +1,697 @@ + + + + + + Code coverage report for schemaregistry/google/type/color_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/google/type color_pb.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  + 
// Copyright 2021-2024 Buf Technologies, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+ 
+// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file google/type/color.proto (package google.type, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
+import { file_google_protobuf_wrappers } from "@bufbuild/protobuf/wkt";
+import type { Message } from "@bufbuild/protobuf";
+ 
+/**
+ * Describes the file google/type/color.proto.
+ */
+export const file_google_type_color: GenFile = /*@__PURE__*/
+  fileDesc("Chdnb29nbGUvdHlwZS9jb2xvci5wcm90bxILZ29vZ2xlLnR5cGUiXQoFQ29sb3ISCwoDcmVkGAEgASgCEg0KBWdyZWVuGAIgASgCEgwKBGJsdWUYAyABKAISKgoFYWxwaGEYBCABKAsyGy5nb29nbGUucHJvdG9idWYuRmxvYXRWYWx1ZUJgCg9jb20uZ29vZ2xlLnR5cGVCCkNvbG9yUHJvdG9QAVo2Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL2NvbG9yO2NvbG9y+AEBogIDR1RQYgZwcm90bzM", [file_google_protobuf_wrappers]);
+ 
+/**
+ * Represents a color in the RGBA color space. This representation is designed
+ * for simplicity of conversion to/from color representations in various
+ * languages over compactness. For example, the fields of this representation
+ * can be trivially provided to the constructor of `java.awt.Color` in Java; it
+ * can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha`
+ * method in iOS; and, with just a little work, it can be easily formatted into
+ * a CSS `rgba()` string in JavaScript.
+ *
+ * This reference page doesn't carry information about the absolute color
+ * space
+ * that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
+ * DCI-P3, BT.2020, etc.). By default, applications should assume the sRGB color
+ * space.
+ *
+ * When color equality needs to be decided, implementations, unless
+ * documented otherwise, treat two colors as equal if all their red,
+ * green, blue, and alpha values each differ by at most 1e-5.
+ *
+ * Example (Java):
+ *
+ *      import com.google.type.Color;
+ *
+ *      // ...
+ *      public static java.awt.Color fromProto(Color protocolor) {
+ *        float alpha = protocolor.hasAlpha()
+ *            ? protocolor.getAlpha().getValue()
+ *            : 1.0;
+ *
+ *        return new java.awt.Color(
+ *            protocolor.getRed(),
+ *            protocolor.getGreen(),
+ *            protocolor.getBlue(),
+ *            alpha);
+ *      }
+ *
+ *      public static Color toProto(java.awt.Color color) {
+ *        float red = (float) color.getRed();
+ *        float green = (float) color.getGreen();
+ *        float blue = (float) color.getBlue();
+ *        float denominator = 255.0;
+ *        Color.Builder resultBuilder =
+ *            Color
+ *                .newBuilder()
+ *                .setRed(red / denominator)
+ *                .setGreen(green / denominator)
+ *                .setBlue(blue / denominator);
+ *        int alpha = color.getAlpha();
+ *        if (alpha != 255) {
+ *          result.setAlpha(
+ *              FloatValue
+ *                  .newBuilder()
+ *                  .setValue(((float) alpha) / denominator)
+ *                  .build());
+ *        }
+ *        return resultBuilder.build();
+ *      }
+ *      // ...
+ *
+ * Example (iOS / Obj-C):
+ *
+ *      // ...
+ *      static UIColor* fromProto(Color* protocolor) {
+ *         float red = [protocolor red];
+ *         float green = [protocolor green];
+ *         float blue = [protocolor blue];
+ *         FloatValue* alpha_wrapper = [protocolor alpha];
+ *         float alpha = 1.0;
+ *         if (alpha_wrapper != nil) {
+ *           alpha = [alpha_wrapper value];
+ *         }
+ *         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ *      }
+ *
+ *      static Color* toProto(UIColor* color) {
+ *          CGFloat red, green, blue, alpha;
+ *          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ *            return nil;
+ *          }
+ *          Color* result = [[Color alloc] init];
+ *          [result setRed:red];
+ *          [result setGreen:green];
+ *          [result setBlue:blue];
+ *          if (alpha <= 0.9999) {
+ *            [result setAlpha:floatWrapperWithValue(alpha)];
+ *          }
+ *          [result autorelease];
+ *          return result;
+ *     }
+ *     // ...
+ *
+ *  Example (JavaScript):
+ *
+ *     // ...
+ *
+ *     var protoToCssColor = function(rgb_color) {
+ *        var redFrac = rgb_color.red || 0.0;
+ *        var greenFrac = rgb_color.green || 0.0;
+ *        var blueFrac = rgb_color.blue || 0.0;
+ *        var red = Math.floor(redFrac * 255);
+ *        var green = Math.floor(greenFrac * 255);
+ *        var blue = Math.floor(blueFrac * 255);
+ *
+ *        if (!('alpha' in rgb_color)) {
+ *           return rgbToCssColor(red, green, blue);
+ *        }
+ *
+ *        var alphaFrac = rgb_color.alpha.value || 0.0;
+ *        var rgbParams = [red, green, blue].join(',');
+ *        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ *     };
+ *
+ *     var rgbToCssColor = function(red, green, blue) {
+ *       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ *       var hexString = rgbNumber.toString(16);
+ *       var missingZeros = 6 - hexString.length;
+ *       var resultBuilder = ['#'];
+ *       for (var i = 0; i < missingZeros; i++) {
+ *          resultBuilder.push('0');
+ *       }
+ *       resultBuilder.push(hexString);
+ *       return resultBuilder.join('');
+ *     };
+ *
+ *     // ...
+ *
+ * @generated from message google.type.Color
+ */
+export type Color = Message<"google.type.Color"> & {
+  /**
+   * The amount of red in the color as a value in the interval [0, 1].
+   *
+   * @generated from field: float red = 1;
+   */
+  red: number;
+ 
+  /**
+   * The amount of green in the color as a value in the interval [0, 1].
+   *
+   * @generated from field: float green = 2;
+   */
+  green: number;
+ 
+  /**
+   * The amount of blue in the color as a value in the interval [0, 1].
+   *
+   * @generated from field: float blue = 3;
+   */
+  blue: number;
+ 
+  /**
+   * The fraction of this color that should be applied to the pixel. That is,
+   * the final pixel color is defined by the equation:
+   *
+   *   `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)`
+   *
+   * This means that a value of 1.0 corresponds to a solid color, whereas
+   * a value of 0.0 corresponds to a completely transparent color. This
+   * uses a wrapper message rather than a simple float scalar so that it is
+   * possible to distinguish between a default value and the value being unset.
+   * If omitted, this color object is rendered as a solid color
+   * (as if the alpha value had been explicitly given a value of 1.0).
+   *
+   * @generated from field: google.protobuf.FloatValue alpha = 4;
+   */
+  alpha?: number;
+};
+ 
+/**
+ * Describes the message google.type.Color.
+ * Use `create(ColorSchema)` to create a new message.
+ */
+export const ColorSchema: GenMessage<Color> = /*@__PURE__*/
+  messageDesc(file_google_type_color, 0);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/date_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/date_pb.ts.html new file mode 100644 index 00000000..bb1f2e9d --- /dev/null +++ b/coverage/lcov-report/schemaregistry/google/type/date_pb.ts.html @@ -0,0 +1,322 @@ + + + + + + Code coverage report for schemaregistry/google/type/date_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/google/type date_pb.ts

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  + 
// Copyright 2021-2024 Buf Technologies, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+ 
+// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file google/type/date.proto (package google.type, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
+import type { Message } from "@bufbuild/protobuf";
+ 
+/**
+ * Describes the file google/type/date.proto.
+ */
+export const file_google_type_date: GenFile = /*@__PURE__*/
+  fileDesc("ChZnb29nbGUvdHlwZS9kYXRlLnByb3RvEgtnb29nbGUudHlwZSIwCgREYXRlEgwKBHllYXIYASABKAUSDQoFbW9udGgYAiABKAUSCwoDZGF5GAMgASgFQl0KD2NvbS5nb29nbGUudHlwZUIJRGF0ZVByb3RvUAFaNGdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvdHlwZS9kYXRlO2RhdGX4AQGiAgNHVFBiBnByb3RvMw");
+ 
+/**
+ * Represents a whole or partial calendar date, such as a birthday. The time of
+ * day and time zone are either specified elsewhere or are insignificant. The
+ * date is relative to the Gregorian Calendar. This can represent one of the
+ * following:
+ *
+ * * A full date, with non-zero year, month, and day values
+ * * A month and day value, with a zero year, such as an anniversary
+ * * A year on its own, with zero month and day values
+ * * A year and month value, with a zero day, such as a credit card expiration
+ * date
+ *
+ * Related types are [google.type.TimeOfDay][google.type.TimeOfDay] and
+ * `google.protobuf.Timestamp`.
+ *
+ * @generated from message google.type.Date
+ */
+export type Date = Message<"google.type.Date"> & {
+  /**
+   * Year of the date. Must be from 1 to 9999, or 0 to specify a date without
+   * a year.
+   *
+   * @generated from field: int32 year = 1;
+   */
+  year: number;
+ 
+  /**
+   * Month of a year. Must be from 1 to 12, or 0 to specify a year without a
+   * month and day.
+   *
+   * @generated from field: int32 month = 2;
+   */
+  month: number;
+ 
+  /**
+   * Day of a month. Must be from 1 to 31 and valid for the year and month, or 0
+   * to specify a year by itself or a year and month where the day isn't
+   * significant.
+   *
+   * @generated from field: int32 day = 3;
+   */
+  day: number;
+};
+ 
+/**
+ * Describes the message google.type.Date.
+ * Use `create(DateSchema)` to create a new message.
+ */
+export const DateSchema: GenMessage<Date> = /*@__PURE__*/
+  messageDesc(file_google_type_date, 0);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/datetime_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/datetime_pb.ts.html new file mode 100644 index 00000000..708b91b7 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/google/type/datetime_pb.ts.html @@ -0,0 +1,625 @@ + + + + + + Code coverage report for schemaregistry/google/type/datetime_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/google/type datetime_pb.ts

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  + 
// Copyright 2021-2024 Buf Technologies, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+ 
+// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file google/type/datetime.proto (package google.type, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
+import type { Duration } from "@bufbuild/protobuf/wkt";
+import { file_google_protobuf_duration } from "@bufbuild/protobuf/wkt";
+import type { Message } from "@bufbuild/protobuf";
+ 
+/**
+ * Describes the file google/type/datetime.proto.
+ */
+export const file_google_type_datetime: GenFile = /*@__PURE__*/
+  fileDesc("Chpnb29nbGUvdHlwZS9kYXRldGltZS5wcm90bxILZ29vZ2xlLnR5cGUi4AEKCERhdGVUaW1lEgwKBHllYXIYASABKAUSDQoFbW9udGgYAiABKAUSCwoDZGF5GAMgASgFEg0KBWhvdXJzGAQgASgFEg8KB21pbnV0ZXMYBSABKAUSDwoHc2Vjb25kcxgGIAEoBRINCgVuYW5vcxgHIAEoBRIvCgp1dGNfb2Zmc2V0GAggASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uSAASKgoJdGltZV96b25lGAkgASgLMhUuZ29vZ2xlLnR5cGUuVGltZVpvbmVIAEINCgt0aW1lX29mZnNldCInCghUaW1lWm9uZRIKCgJpZBgBIAEoCRIPCgd2ZXJzaW9uGAIgASgJQmkKD2NvbS5nb29nbGUudHlwZUINRGF0ZVRpbWVQcm90b1ABWjxnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvZGF0ZXRpbWU7ZGF0ZXRpbWX4AQGiAgNHVFBiBnByb3RvMw", [file_google_protobuf_duration]);
+ 
+/**
+ * Represents civil time (or occasionally physical time).
+ *
+ * This type can represent a civil time in one of a few possible ways:
+ *
+ *  * When utc_offset is set and time_zone is unset: a civil time on a calendar
+ *    day with a particular offset from UTC.
+ *  * When time_zone is set and utc_offset is unset: a civil time on a calendar
+ *    day in a particular time zone.
+ *  * When neither time_zone nor utc_offset is set: a civil time on a calendar
+ *    day in local time.
+ *
+ * The date is relative to the Proleptic Gregorian Calendar.
+ *
+ * If year is 0, the DateTime is considered not to have a specific year. month
+ * and day must have valid, non-zero values.
+ *
+ * This type may also be used to represent a physical time if all the date and
+ * time fields are set and either case of the `time_offset` oneof is set.
+ * Consider using `Timestamp` message for physical time instead. If your use
+ * case also would like to store the user's timezone, that can be done in
+ * another field.
+ *
+ * This type is more flexible than some applications may want. Make sure to
+ * document and validate your application's limitations.
+ *
+ * @generated from message google.type.DateTime
+ */
+export type DateTime = Message<"google.type.DateTime"> & {
+  /**
+   * Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a
+   * datetime without a year.
+   *
+   * @generated from field: int32 year = 1;
+   */
+  year: number;
+ 
+  /**
+   * Required. Month of year. Must be from 1 to 12.
+   *
+   * @generated from field: int32 month = 2;
+   */
+  month: number;
+ 
+  /**
+   * Required. Day of month. Must be from 1 to 31 and valid for the year and
+   * month.
+   *
+   * @generated from field: int32 day = 3;
+   */
+  day: number;
+ 
+  /**
+   * Required. Hours of day in 24 hour format. Should be from 0 to 23. An API
+   * may choose to allow the value "24:00:00" for scenarios like business
+   * closing time.
+   *
+   * @generated from field: int32 hours = 4;
+   */
+  hours: number;
+ 
+  /**
+   * Required. Minutes of hour of day. Must be from 0 to 59.
+   *
+   * @generated from field: int32 minutes = 5;
+   */
+  minutes: number;
+ 
+  /**
+   * Required. Seconds of minutes of the time. Must normally be from 0 to 59. An
+   * API may allow the value 60 if it allows leap-seconds.
+   *
+   * @generated from field: int32 seconds = 6;
+   */
+  seconds: number;
+ 
+  /**
+   * Required. Fractions of seconds in nanoseconds. Must be from 0 to
+   * 999,999,999.
+   *
+   * @generated from field: int32 nanos = 7;
+   */
+  nanos: number;
+ 
+  /**
+   * Optional. Specifies either the UTC offset or the time zone of the DateTime.
+   * Choose carefully between them, considering that time zone data may change
+   * in the future (for example, a country modifies their DST start/end dates,
+   * and future DateTimes in the affected range had already been stored).
+   * If omitted, the DateTime is considered to be in local time.
+   *
+   * @generated from oneof google.type.DateTime.time_offset
+   */
+  timeOffset: {
+    /**
+     * UTC offset. Must be whole seconds, between -18 hours and +18 hours.
+     * For example, a UTC offset of -4:00 would be represented as
+     * { seconds: -14400 }.
+     *
+     * @generated from field: google.protobuf.Duration utc_offset = 8;
+     */
+    value: Duration;
+    case: "utcOffset";
+  } | {
+    /**
+     * Time zone.
+     *
+     * @generated from field: google.type.TimeZone time_zone = 9;
+     */
+    value: TimeZone;
+    case: "timeZone";
+  } | { case: undefined; value?: undefined };
+};
+ 
+/**
+ * Describes the message google.type.DateTime.
+ * Use `create(DateTimeSchema)` to create a new message.
+ */
+export const DateTimeSchema: GenMessage<DateTime> = /*@__PURE__*/
+  messageDesc(file_google_type_datetime, 0);
+ 
+/**
+ * Represents a time zone from the
+ * [IANA Time Zone Database](https://www.iana.org/time-zones).
+ *
+ * @generated from message google.type.TimeZone
+ */
+export type TimeZone = Message<"google.type.TimeZone"> & {
+  /**
+   * IANA Time Zone Database time zone, e.g. "America/New_York".
+   *
+   * @generated from field: string id = 1;
+   */
+  id: string;
+ 
+  /**
+   * Optional. IANA Time Zone Database version number, e.g. "2019a".
+   *
+   * @generated from field: string version = 2;
+   */
+  version: string;
+};
+ 
+/**
+ * Describes the message google.type.TimeZone.
+ * Use `create(TimeZoneSchema)` to create a new message.
+ */
+export const TimeZoneSchema: GenMessage<TimeZone> = /*@__PURE__*/
+  messageDesc(file_google_type_datetime, 1);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/dayofweek_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/dayofweek_pb.ts.html new file mode 100644 index 00000000..4aa928ca --- /dev/null +++ b/coverage/lcov-report/schemaregistry/google/type/dayofweek_pb.ts.html @@ -0,0 +1,373 @@ + + + + + + Code coverage report for schemaregistry/google/type/dayofweek_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/google/type dayofweek_pb.ts

+
+ +
+ 100% + Statements + 12/12 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +1x +  +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  + 
// Copyright 2021-2024 Buf Technologies, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+ 
+// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file google/type/dayofweek.proto (package google.type, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenEnum, GenFile } from "@bufbuild/protobuf/codegenv1";
+import { enumDesc, fileDesc } from "@bufbuild/protobuf/codegenv1";
+ 
+/**
+ * Describes the file google/type/dayofweek.proto.
+ */
+export const file_google_type_dayofweek: GenFile = /*@__PURE__*/
+  fileDesc("Chtnb29nbGUvdHlwZS9kYXlvZndlZWsucHJvdG8SC2dvb2dsZS50eXBlKoQBCglEYXlPZldlZWsSGwoXREFZX09GX1dFRUtfVU5TUEVDSUZJRUQQABIKCgZNT05EQVkQARILCgdUVUVTREFZEAISDQoJV0VETkVTREFZEAMSDAoIVEhVUlNEQVkQBBIKCgZGUklEQVkQBRIMCghTQVRVUkRBWRAGEgoKBlNVTkRBWRAHQmkKD2NvbS5nb29nbGUudHlwZUIORGF5T2ZXZWVrUHJvdG9QAVo+Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL2RheW9md2VlaztkYXlvZndlZWuiAgNHVFBiBnByb3RvMw");
+ 
+/**
+ * Represents a day of the week.
+ *
+ * @generated from enum google.type.DayOfWeek
+ */
+export enum DayOfWeek {
+  /**
+   * The day of the week is unspecified.
+   *
+   * @generated from enum value: DAY_OF_WEEK_UNSPECIFIED = 0;
+   */
+  DAY_OF_WEEK_UNSPECIFIED = 0,
+ 
+  /**
+   * Monday
+   *
+   * @generated from enum value: MONDAY = 1;
+   */
+  MONDAY = 1,
+ 
+  /**
+   * Tuesday
+   *
+   * @generated from enum value: TUESDAY = 2;
+   */
+  TUESDAY = 2,
+ 
+  /**
+   * Wednesday
+   *
+   * @generated from enum value: WEDNESDAY = 3;
+   */
+  WEDNESDAY = 3,
+ 
+  /**
+   * Thursday
+   *
+   * @generated from enum value: THURSDAY = 4;
+   */
+  THURSDAY = 4,
+ 
+  /**
+   * Friday
+   *
+   * @generated from enum value: FRIDAY = 5;
+   */
+  FRIDAY = 5,
+ 
+  /**
+   * Saturday
+   *
+   * @generated from enum value: SATURDAY = 6;
+   */
+  SATURDAY = 6,
+ 
+  /**
+   * Sunday
+   *
+   * @generated from enum value: SUNDAY = 7;
+   */
+  SUNDAY = 7,
+}
+ 
+/**
+ * Describes the enum google.type.DayOfWeek.
+ */
+export const DayOfWeekSchema: GenEnum<DayOfWeek> = /*@__PURE__*/
+  enumDesc(file_google_type_dayofweek, 0);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/expr_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/expr_pb.ts.html new file mode 100644 index 00000000..e149a430 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/google/type/expr_pb.ts.html @@ -0,0 +1,400 @@ + + + + + + Code coverage report for schemaregistry/google/type/expr_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/google/type expr_pb.ts

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  + 
// Copyright 2021-2024 Buf Technologies, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+ 
+// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file google/type/expr.proto (package google.type, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
+import type { Message } from "@bufbuild/protobuf";
+ 
+/**
+ * Describes the file google/type/expr.proto.
+ */
+export const file_google_type_expr: GenFile = /*@__PURE__*/
+  fileDesc("ChZnb29nbGUvdHlwZS9leHByLnByb3RvEgtnb29nbGUudHlwZSJQCgRFeHByEhIKCmV4cHJlc3Npb24YASABKAkSDQoFdGl0bGUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSEAoIbG9jYXRpb24YBCABKAlCWgoPY29tLmdvb2dsZS50eXBlQglFeHByUHJvdG9QAVo0Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL2V4cHI7ZXhwcqICA0dUUGIGcHJvdG8z");
+ 
+/**
+ * Represents a textual expression in the Common Expression Language (CEL)
+ * syntax. CEL is a C-like expression language. The syntax and semantics of CEL
+ * are documented at https://github.com/google/cel-spec.
+ *
+ * Example (Comparison):
+ *
+ *     title: "Summary size limit"
+ *     description: "Determines if a summary is less than 100 chars"
+ *     expression: "document.summary.size() < 100"
+ *
+ * Example (Equality):
+ *
+ *     title: "Requestor is owner"
+ *     description: "Determines if requestor is the document owner"
+ *     expression: "document.owner == request.auth.claims.email"
+ *
+ * Example (Logic):
+ *
+ *     title: "Public documents"
+ *     description: "Determine whether the document should be publicly visible"
+ *     expression: "document.type != 'private' && document.type != 'internal'"
+ *
+ * Example (Data Manipulation):
+ *
+ *     title: "Notification string"
+ *     description: "Create a notification string with a timestamp."
+ *     expression: "'New message received at ' + string(document.create_time)"
+ *
+ * The exact variables and functions that may be referenced within an expression
+ * are determined by the service that evaluates it. See the service
+ * documentation for additional information.
+ *
+ * @generated from message google.type.Expr
+ */
+export type Expr = Message<"google.type.Expr"> & {
+  /**
+   * Textual representation of an expression in Common Expression Language
+   * syntax.
+   *
+   * @generated from field: string expression = 1;
+   */
+  expression: string;
+ 
+  /**
+   * Optional. Title for the expression, i.e. a short string describing
+   * its purpose. This can be used e.g. in UIs which allow to enter the
+   * expression.
+   *
+   * @generated from field: string title = 2;
+   */
+  title: string;
+ 
+  /**
+   * Optional. Description of the expression. This is a longer text which
+   * describes the expression, e.g. when hovered over it in a UI.
+   *
+   * @generated from field: string description = 3;
+   */
+  description: string;
+ 
+  /**
+   * Optional. String indicating the location of the expression for error
+   * reporting, e.g. a file name and a position in the file.
+   *
+   * @generated from field: string location = 4;
+   */
+  location: string;
+};
+ 
+/**
+ * Describes the message google.type.Expr.
+ * Use `create(ExprSchema)` to create a new message.
+ */
+export const ExprSchema: GenMessage<Expr> = /*@__PURE__*/
+  messageDesc(file_google_type_expr, 0);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/fraction_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/fraction_pb.ts.html new file mode 100644 index 00000000..ca5bce75 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/google/type/fraction_pb.ts.html @@ -0,0 +1,256 @@ + + + + + + Code coverage report for schemaregistry/google/type/fraction_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/google/type fraction_pb.ts

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  + 
// Copyright 2021-2024 Buf Technologies, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+ 
+// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file google/type/fraction.proto (package google.type, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
+import type { Message } from "@bufbuild/protobuf";
+ 
+/**
+ * Describes the file google/type/fraction.proto.
+ */
+export const file_google_type_fraction: GenFile = /*@__PURE__*/
+  fileDesc("Chpnb29nbGUvdHlwZS9mcmFjdGlvbi5wcm90bxILZ29vZ2xlLnR5cGUiMgoIRnJhY3Rpb24SEQoJbnVtZXJhdG9yGAEgASgDEhMKC2Rlbm9taW5hdG9yGAIgASgDQmYKD2NvbS5nb29nbGUudHlwZUINRnJhY3Rpb25Qcm90b1ABWjxnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvZnJhY3Rpb247ZnJhY3Rpb26iAgNHVFBiBnByb3RvMw");
+ 
+/**
+ * Represents a fraction in terms of a numerator divided by a denominator.
+ *
+ * @generated from message google.type.Fraction
+ */
+export type Fraction = Message<"google.type.Fraction"> & {
+  /**
+   * The numerator in the fraction, e.g. 2 in 2/3.
+   *
+   * @generated from field: int64 numerator = 1;
+   */
+  numerator: bigint;
+ 
+  /**
+   * The value by which the numerator is divided, e.g. 3 in 2/3. Must be
+   * positive.
+   *
+   * @generated from field: int64 denominator = 2;
+   */
+  denominator: bigint;
+};
+ 
+/**
+ * Describes the message google.type.Fraction.
+ * Use `create(FractionSchema)` to create a new message.
+ */
+export const FractionSchema: GenMessage<Fraction> = /*@__PURE__*/
+  messageDesc(file_google_type_fraction, 0);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/index.html b/coverage/lcov-report/schemaregistry/google/type/index.html new file mode 100644 index 00000000..bc65b926 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/google/type/index.html @@ -0,0 +1,296 @@ + + + + + + Code coverage report for schemaregistry/google/type + + + + + + + + + +
+
+

All files schemaregistry/google/type

+
+ +
+ 100% + Statements + 74/74 +
+ + +
+ 100% + Branches + 6/6 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 74/74 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
calendar_period_pb.ts +
+
100%12/12100%2/2100%1/1100%12/12
color_pb.ts +
+
100%4/4100%0/0100%0/0100%4/4
date_pb.ts +
+
100%3/3100%0/0100%0/0100%3/3
datetime_pb.ts +
+
100%5/5100%0/0100%0/0100%5/5
dayofweek_pb.ts +
+
100%12/12100%2/2100%1/1100%12/12
expr_pb.ts +
+
100%3/3100%0/0100%0/0100%3/3
fraction_pb.ts +
+
100%3/3100%0/0100%0/0100%3/3
latlng_pb.ts +
+
100%3/3100%0/0100%0/0100%3/3
money_pb.ts +
+
100%3/3100%0/0100%0/0100%3/3
month_pb.ts +
+
100%17/17100%2/2100%1/1100%17/17
postal_address_pb.ts +
+
100%3/3100%0/0100%0/0100%3/3
quaternion_pb.ts +
+
100%3/3100%0/0100%0/0100%3/3
timeofday_pb.ts +
+
100%3/3100%0/0100%0/0100%3/3
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/latlng_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/latlng_pb.ts.html new file mode 100644 index 00000000..a8d23891 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/google/type/latlng_pb.ts.html @@ -0,0 +1,265 @@ + + + + + + Code coverage report for schemaregistry/google/type/latlng_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/google/type latlng_pb.ts

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  + 
// Copyright 2021-2024 Buf Technologies, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+ 
+// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file google/type/latlng.proto (package google.type, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
+import type { Message } from "@bufbuild/protobuf";
+ 
+/**
+ * Describes the file google/type/latlng.proto.
+ */
+export const file_google_type_latlng: GenFile = /*@__PURE__*/
+  fileDesc("Chhnb29nbGUvdHlwZS9sYXRsbmcucHJvdG8SC2dvb2dsZS50eXBlIi0KBkxhdExuZxIQCghsYXRpdHVkZRgBIAEoARIRCglsb25naXR1ZGUYAiABKAFCYwoPY29tLmdvb2dsZS50eXBlQgtMYXRMbmdQcm90b1ABWjhnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvbGF0bG5nO2xhdGxuZ/gBAaICA0dUUGIGcHJvdG8z");
+ 
+/**
+ * An object that represents a latitude/longitude pair. This is expressed as a
+ * pair of doubles to represent degrees latitude and degrees longitude. Unless
+ * specified otherwise, this must conform to the
+ * <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
+ * standard</a>. Values must be within normalized ranges.
+ *
+ * @generated from message google.type.LatLng
+ */
+export type LatLng = Message<"google.type.LatLng"> & {
+  /**
+   * The latitude in degrees. It must be in the range [-90.0, +90.0].
+   *
+   * @generated from field: double latitude = 1;
+   */
+  latitude: number;
+ 
+  /**
+   * The longitude in degrees. It must be in the range [-180.0, +180.0].
+   *
+   * @generated from field: double longitude = 2;
+   */
+  longitude: number;
+};
+ 
+/**
+ * Describes the message google.type.LatLng.
+ * Use `create(LatLngSchema)` to create a new message.
+ */
+export const LatLngSchema: GenMessage<LatLng> = /*@__PURE__*/
+  messageDesc(file_google_type_latlng, 0);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/money_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/money_pb.ts.html new file mode 100644 index 00000000..a477d4b5 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/google/type/money_pb.ts.html @@ -0,0 +1,292 @@ + + + + + + Code coverage report for schemaregistry/google/type/money_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/google/type money_pb.ts

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  + 
// Copyright 2021-2024 Buf Technologies, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+ 
+// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file google/type/money.proto (package google.type, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
+import type { Message } from "@bufbuild/protobuf";
+ 
+/**
+ * Describes the file google/type/money.proto.
+ */
+export const file_google_type_money: GenFile = /*@__PURE__*/
+  fileDesc("Chdnb29nbGUvdHlwZS9tb25leS5wcm90bxILZ29vZ2xlLnR5cGUiPAoFTW9uZXkSFQoNY3VycmVuY3lfY29kZRgBIAEoCRINCgV1bml0cxgCIAEoAxINCgVuYW5vcxgDIAEoBUJgCg9jb20uZ29vZ2xlLnR5cGVCCk1vbmV5UHJvdG9QAVo2Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL21vbmV5O21vbmV5+AEBogIDR1RQYgZwcm90bzM");
+ 
+/**
+ * Represents an amount of money with its currency type.
+ *
+ * @generated from message google.type.Money
+ */
+export type Money = Message<"google.type.Money"> & {
+  /**
+   * The three-letter currency code defined in ISO 4217.
+   *
+   * @generated from field: string currency_code = 1;
+   */
+  currencyCode: string;
+ 
+  /**
+   * The whole units of the amount.
+   * For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
+   *
+   * @generated from field: int64 units = 2;
+   */
+  units: bigint;
+ 
+  /**
+   * Number of nano (10^-9) units of the amount.
+   * The value must be between -999,999,999 and +999,999,999 inclusive.
+   * If `units` is positive, `nanos` must be positive or zero.
+   * If `units` is zero, `nanos` can be positive, zero, or negative.
+   * If `units` is negative, `nanos` must be negative or zero.
+   * For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
+   *
+   * @generated from field: int32 nanos = 3;
+   */
+  nanos: number;
+};
+ 
+/**
+ * Describes the message google.type.Money.
+ * Use `create(MoneySchema)` to create a new message.
+ */
+export const MoneySchema: GenMessage<Money> = /*@__PURE__*/
+  messageDesc(file_google_type_money, 0);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/month_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/month_pb.ts.html new file mode 100644 index 00000000..d42e09e7 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/google/type/month_pb.ts.html @@ -0,0 +1,478 @@ + + + + + + Code coverage report for schemaregistry/google/type/month_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/google/type month_pb.ts

+
+ +
+ 100% + Statements + 17/17 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 17/17 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +1x +  +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  + 
// Copyright 2021-2024 Buf Technologies, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+ 
+// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file google/type/month.proto (package google.type, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenEnum, GenFile } from "@bufbuild/protobuf/codegenv1";
+import { enumDesc, fileDesc } from "@bufbuild/protobuf/codegenv1";
+ 
+/**
+ * Describes the file google/type/month.proto.
+ */
+export const file_google_type_month: GenFile = /*@__PURE__*/
+  fileDesc("Chdnb29nbGUvdHlwZS9tb250aC5wcm90bxILZ29vZ2xlLnR5cGUqsAEKBU1vbnRoEhUKEU1PTlRIX1VOU1BFQ0lGSUVEEAASCwoHSkFOVUFSWRABEgwKCEZFQlJVQVJZEAISCQoFTUFSQ0gQAxIJCgVBUFJJTBAEEgcKA01BWRAFEggKBEpVTkUQBhIICgRKVUxZEAcSCgoGQVVHVVNUEAgSDQoJU0VQVEVNQkVSEAkSCwoHT0NUT0JFUhAKEgwKCE5PVkVNQkVSEAsSDAoIREVDRU1CRVIQDEJdCg9jb20uZ29vZ2xlLnR5cGVCCk1vbnRoUHJvdG9QAVo2Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL21vbnRoO21vbnRoogIDR1RQYgZwcm90bzM");
+ 
+/**
+ * Represents a month in the Gregorian calendar.
+ *
+ * @generated from enum google.type.Month
+ */
+export enum Month {
+  /**
+   * The unspecified month.
+   *
+   * @generated from enum value: MONTH_UNSPECIFIED = 0;
+   */
+  MONTH_UNSPECIFIED = 0,
+ 
+  /**
+   * The month of January.
+   *
+   * @generated from enum value: JANUARY = 1;
+   */
+  JANUARY = 1,
+ 
+  /**
+   * The month of February.
+   *
+   * @generated from enum value: FEBRUARY = 2;
+   */
+  FEBRUARY = 2,
+ 
+  /**
+   * The month of March.
+   *
+   * @generated from enum value: MARCH = 3;
+   */
+  MARCH = 3,
+ 
+  /**
+   * The month of April.
+   *
+   * @generated from enum value: APRIL = 4;
+   */
+  APRIL = 4,
+ 
+  /**
+   * The month of May.
+   *
+   * @generated from enum value: MAY = 5;
+   */
+  MAY = 5,
+ 
+  /**
+   * The month of June.
+   *
+   * @generated from enum value: JUNE = 6;
+   */
+  JUNE = 6,
+ 
+  /**
+   * The month of July.
+   *
+   * @generated from enum value: JULY = 7;
+   */
+  JULY = 7,
+ 
+  /**
+   * The month of August.
+   *
+   * @generated from enum value: AUGUST = 8;
+   */
+  AUGUST = 8,
+ 
+  /**
+   * The month of September.
+   *
+   * @generated from enum value: SEPTEMBER = 9;
+   */
+  SEPTEMBER = 9,
+ 
+  /**
+   * The month of October.
+   *
+   * @generated from enum value: OCTOBER = 10;
+   */
+  OCTOBER = 10,
+ 
+  /**
+   * The month of November.
+   *
+   * @generated from enum value: NOVEMBER = 11;
+   */
+  NOVEMBER = 11,
+ 
+  /**
+   * The month of December.
+   *
+   * @generated from enum value: DECEMBER = 12;
+   */
+  DECEMBER = 12,
+}
+ 
+/**
+ * Describes the enum google.type.Month.
+ */
+export const MonthSchema: GenEnum<Month> = /*@__PURE__*/
+  enumDesc(file_google_type_month, 0);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/postal_address_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/postal_address_pb.ts.html new file mode 100644 index 00000000..c4396c05 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/google/type/postal_address_pb.ts.html @@ -0,0 +1,664 @@ + + + + + + Code coverage report for schemaregistry/google/type/postal_address_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/google/type postal_address_pb.ts

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  + 
// Copyright 2021-2024 Buf Technologies, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+ 
+// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file google/type/postal_address.proto (package google.type, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
+import type { Message } from "@bufbuild/protobuf";
+ 
+/**
+ * Describes the file google/type/postal_address.proto.
+ */
+export const file_google_type_postal_address: GenFile = /*@__PURE__*/
+  fileDesc("CiBnb29nbGUvdHlwZS9wb3N0YWxfYWRkcmVzcy5wcm90bxILZ29vZ2xlLnR5cGUi/QEKDVBvc3RhbEFkZHJlc3MSEAoIcmV2aXNpb24YASABKAUSEwoLcmVnaW9uX2NvZGUYAiABKAkSFQoNbGFuZ3VhZ2VfY29kZRgDIAEoCRITCgtwb3N0YWxfY29kZRgEIAEoCRIUCgxzb3J0aW5nX2NvZGUYBSABKAkSGwoTYWRtaW5pc3RyYXRpdmVfYXJlYRgGIAEoCRIQCghsb2NhbGl0eRgHIAEoCRITCgtzdWJsb2NhbGl0eRgIIAEoCRIVCg1hZGRyZXNzX2xpbmVzGAkgAygJEhIKCnJlY2lwaWVudHMYCiADKAkSFAoMb3JnYW5pemF0aW9uGAsgASgJQngKD2NvbS5nb29nbGUudHlwZUISUG9zdGFsQWRkcmVzc1Byb3RvUAFaRmdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvdHlwZS9wb3N0YWxhZGRyZXNzO3Bvc3RhbGFkZHJlc3P4AQGiAgNHVFBiBnByb3RvMw");
+ 
+/**
+ * Represents a postal address, e.g. for postal delivery or payments addresses.
+ * Given a postal address, a postal service can deliver items to a premise, P.O.
+ * Box or similar.
+ * It is not intended to model geographical locations (roads, towns,
+ * mountains).
+ *
+ * In typical usage an address would be created via user input or from importing
+ * existing data, depending on the type of process.
+ *
+ * Advice on address input / editing:
+ *  - Use an i18n-ready address widget such as
+ *    https://github.com/google/libaddressinput)
+ * - Users should not be presented with UI elements for input or editing of
+ *   fields outside countries where that field is used.
+ *
+ * For more guidance on how to use this schema, please see:
+ * https://support.google.com/business/answer/6397478
+ *
+ * @generated from message google.type.PostalAddress
+ */
+export type PostalAddress = Message<"google.type.PostalAddress"> & {
+  /**
+   * The schema revision of the `PostalAddress`. This must be set to 0, which is
+   * the latest revision.
+   *
+   * All new revisions **must** be backward compatible with old revisions.
+   *
+   * @generated from field: int32 revision = 1;
+   */
+  revision: number;
+ 
+  /**
+   * Required. CLDR region code of the country/region of the address. This
+   * is never inferred and it is up to the user to ensure the value is
+   * correct. See http://cldr.unicode.org/ and
+   * http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html
+   * for details. Example: "CH" for Switzerland.
+   *
+   * @generated from field: string region_code = 2;
+   */
+  regionCode: string;
+ 
+  /**
+   * Optional. BCP-47 language code of the contents of this address (if
+   * known). This is often the UI language of the input form or is expected
+   * to match one of the languages used in the address' country/region, or their
+   * transliterated equivalents.
+   * This can affect formatting in certain countries, but is not critical
+   * to the correctness of the data and will never affect any validation or
+   * other non-formatting related operations.
+   *
+   * If this value is not known, it should be omitted (rather than specifying a
+   * possibly incorrect default).
+   *
+   * Examples: "zh-Hant", "ja", "ja-Latn", "en".
+   *
+   * @generated from field: string language_code = 3;
+   */
+  languageCode: string;
+ 
+  /**
+   * Optional. Postal code of the address. Not all countries use or require
+   * postal codes to be present, but where they are used, they may trigger
+   * additional validation with other parts of the address (e.g. state/zip
+   * validation in the U.S.A.).
+   *
+   * @generated from field: string postal_code = 4;
+   */
+  postalCode: string;
+ 
+  /**
+   * Optional. Additional, country-specific, sorting code. This is not used
+   * in most regions. Where it is used, the value is either a string like
+   * "CEDEX", optionally followed by a number (e.g. "CEDEX 7"), or just a number
+   * alone, representing the "sector code" (Jamaica), "delivery area indicator"
+   * (Malawi) or "post office indicator" (e.g. Côte d'Ivoire).
+   *
+   * @generated from field: string sorting_code = 5;
+   */
+  sortingCode: string;
+ 
+  /**
+   * Optional. Highest administrative subdivision which is used for postal
+   * addresses of a country or region.
+   * For example, this can be a state, a province, an oblast, or a prefecture.
+   * Specifically, for Spain this is the province and not the autonomous
+   * community (e.g. "Barcelona" and not "Catalonia").
+   * Many countries don't use an administrative area in postal addresses. E.g.
+   * in Switzerland this should be left unpopulated.
+   *
+   * @generated from field: string administrative_area = 6;
+   */
+  administrativeArea: string;
+ 
+  /**
+   * Optional. Generally refers to the city/town portion of the address.
+   * Examples: US city, IT comune, UK post town.
+   * In regions of the world where localities are not well defined or do not fit
+   * into this structure well, leave locality empty and use address_lines.
+   *
+   * @generated from field: string locality = 7;
+   */
+  locality: string;
+ 
+  /**
+   * Optional. Sublocality of the address.
+   * For example, this can be neighborhoods, boroughs, districts.
+   *
+   * @generated from field: string sublocality = 8;
+   */
+  sublocality: string;
+ 
+  /**
+   * Unstructured address lines describing the lower levels of an address.
+   *
+   * Because values in address_lines do not have type information and may
+   * sometimes contain multiple values in a single field (e.g.
+   * "Austin, TX"), it is important that the line order is clear. The order of
+   * address lines should be "envelope order" for the country/region of the
+   * address. In places where this can vary (e.g. Japan), address_language is
+   * used to make it explicit (e.g. "ja" for large-to-small ordering and
+   * "ja-Latn" or "en" for small-to-large). This way, the most specific line of
+   * an address can be selected based on the language.
+   *
+   * The minimum permitted structural representation of an address consists
+   * of a region_code with all remaining information placed in the
+   * address_lines. It would be possible to format such an address very
+   * approximately without geocoding, but no semantic reasoning could be
+   * made about any of the address components until it was at least
+   * partially resolved.
+   *
+   * Creating an address only containing a region_code and address_lines, and
+   * then geocoding is the recommended way to handle completely unstructured
+   * addresses (as opposed to guessing which parts of the address should be
+   * localities or administrative areas).
+   *
+   * @generated from field: repeated string address_lines = 9;
+   */
+  addressLines: string[];
+ 
+  /**
+   * Optional. The recipient at the address.
+   * This field may, under certain circumstances, contain multiline information.
+   * For example, it might contain "care of" information.
+   *
+   * @generated from field: repeated string recipients = 10;
+   */
+  recipients: string[];
+ 
+  /**
+   * Optional. The name of the organization at the address.
+   *
+   * @generated from field: string organization = 11;
+   */
+  organization: string;
+};
+ 
+/**
+ * Describes the message google.type.PostalAddress.
+ * Use `create(PostalAddressSchema)` to create a new message.
+ */
+export const PostalAddressSchema: GenMessage<PostalAddress> = /*@__PURE__*/
+  messageDesc(file_google_type_postal_address, 0);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/quaternion_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/quaternion_pb.ts.html new file mode 100644 index 00000000..1a8516a9 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/google/type/quaternion_pb.ts.html @@ -0,0 +1,460 @@ + + + + + + Code coverage report for schemaregistry/google/type/quaternion_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/google/type quaternion_pb.ts

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  + 
// Copyright 2021-2024 Buf Technologies, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+ 
+// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file google/type/quaternion.proto (package google.type, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
+import type { Message } from "@bufbuild/protobuf";
+ 
+/**
+ * Describes the file google/type/quaternion.proto.
+ */
+export const file_google_type_quaternion: GenFile = /*@__PURE__*/
+  fileDesc("Chxnb29nbGUvdHlwZS9xdWF0ZXJuaW9uLnByb3RvEgtnb29nbGUudHlwZSI4CgpRdWF0ZXJuaW9uEgkKAXgYASABKAESCQoBeRgCIAEoARIJCgF6GAMgASgBEgkKAXcYBCABKAFCbwoPY29tLmdvb2dsZS50eXBlQg9RdWF0ZXJuaW9uUHJvdG9QAVpAZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL3F1YXRlcm5pb247cXVhdGVybmlvbvgBAaICA0dUUGIGcHJvdG8z");
+ 
+/**
+ * A quaternion is defined as the quotient of two directed lines in a
+ * three-dimensional space or equivalently as the quotient of two Euclidean
+ * vectors (https://en.wikipedia.org/wiki/Quaternion).
+ *
+ * Quaternions are often used in calculations involving three-dimensional
+ * rotations (https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation),
+ * as they provide greater mathematical robustness by avoiding the gimbal lock
+ * problems that can be encountered when using Euler angles
+ * (https://en.wikipedia.org/wiki/Gimbal_lock).
+ *
+ * Quaternions are generally represented in this form:
+ *
+ *     w + xi + yj + zk
+ *
+ * where x, y, z, and w are real numbers, and i, j, and k are three imaginary
+ * numbers.
+ *
+ * Our naming choice `(x, y, z, w)` comes from the desire to avoid confusion for
+ * those interested in the geometric properties of the quaternion in the 3D
+ * Cartesian space. Other texts often use alternative names or subscripts, such
+ * as `(a, b, c, d)`, `(1, i, j, k)`, or `(0, 1, 2, 3)`, which are perhaps
+ * better suited for mathematical interpretations.
+ *
+ * To avoid any confusion, as well as to maintain compatibility with a large
+ * number of software libraries, the quaternions represented using the protocol
+ * buffer below *must* follow the Hamilton convention, which defines `ij = k`
+ * (i.e. a right-handed algebra), and therefore:
+ *
+ *     i^2 = j^2 = k^2 = ijk = −1
+ *     ij = −ji = k
+ *     jk = −kj = i
+ *     ki = −ik = j
+ *
+ * Please DO NOT use this to represent quaternions that follow the JPL
+ * convention, or any of the other quaternion flavors out there.
+ *
+ * Definitions:
+ *
+ *   - Quaternion norm (or magnitude): `sqrt(x^2 + y^2 + z^2 + w^2)`.
+ *   - Unit (or normalized) quaternion: a quaternion whose norm is 1.
+ *   - Pure quaternion: a quaternion whose scalar component (`w`) is 0.
+ *   - Rotation quaternion: a unit quaternion used to represent rotation.
+ *   - Orientation quaternion: a unit quaternion used to represent orientation.
+ *
+ * A quaternion can be normalized by dividing it by its norm. The resulting
+ * quaternion maintains the same direction, but has a norm of 1, i.e. it moves
+ * on the unit sphere. This is generally necessary for rotation and orientation
+ * quaternions, to avoid rounding errors:
+ * https://en.wikipedia.org/wiki/Rotation_formalisms_in_three_dimensions
+ *
+ * Note that `(x, y, z, w)` and `(-x, -y, -z, -w)` represent the same rotation,
+ * but normalization would be even more useful, e.g. for comparison purposes, if
+ * it would produce a unique representation. It is thus recommended that `w` be
+ * kept positive, which can be achieved by changing all the signs when `w` is
+ * negative.
+ *
+ *
+ * @generated from message google.type.Quaternion
+ */
+export type Quaternion = Message<"google.type.Quaternion"> & {
+  /**
+   * The x component.
+   *
+   * @generated from field: double x = 1;
+   */
+  x: number;
+ 
+  /**
+   * The y component.
+   *
+   * @generated from field: double y = 2;
+   */
+  y: number;
+ 
+  /**
+   * The z component.
+   *
+   * @generated from field: double z = 3;
+   */
+  z: number;
+ 
+  /**
+   * The scalar component.
+   *
+   * @generated from field: double w = 4;
+   */
+  w: number;
+};
+ 
+/**
+ * Describes the message google.type.Quaternion.
+ * Use `create(QuaternionSchema)` to create a new message.
+ */
+export const QuaternionSchema: GenMessage<Quaternion> = /*@__PURE__*/
+  messageDesc(file_google_type_quaternion, 0);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/timeofday_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/timeofday_pb.ts.html new file mode 100644 index 00000000..26ac8ce3 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/google/type/timeofday_pb.ts.html @@ -0,0 +1,310 @@ + + + + + + Code coverage report for schemaregistry/google/type/timeofday_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/google/type timeofday_pb.ts

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  + 
// Copyright 2021-2024 Buf Technologies, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+ 
+// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file google/type/timeofday.proto (package google.type, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
+import type { Message } from "@bufbuild/protobuf";
+ 
+/**
+ * Describes the file google/type/timeofday.proto.
+ */
+export const file_google_type_timeofday: GenFile = /*@__PURE__*/
+  fileDesc("Chtnb29nbGUvdHlwZS90aW1lb2ZkYXkucHJvdG8SC2dvb2dsZS50eXBlIksKCVRpbWVPZkRheRINCgVob3VycxgBIAEoBRIPCgdtaW51dGVzGAIgASgFEg8KB3NlY29uZHMYAyABKAUSDQoFbmFub3MYBCABKAVCbAoPY29tLmdvb2dsZS50eXBlQg5UaW1lT2ZEYXlQcm90b1ABWj5nb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvdGltZW9mZGF5O3RpbWVvZmRhefgBAaICA0dUUGIGcHJvdG8z");
+ 
+/**
+ * Represents a time of day. The date and time zone are either not significant
+ * or are specified elsewhere. An API may choose to allow leap seconds. Related
+ * types are [google.type.Date][google.type.Date] and
+ * `google.protobuf.Timestamp`.
+ *
+ * @generated from message google.type.TimeOfDay
+ */
+export type TimeOfDay = Message<"google.type.TimeOfDay"> & {
+  /**
+   * Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
+   * to allow the value "24:00:00" for scenarios like business closing time.
+   *
+   * @generated from field: int32 hours = 1;
+   */
+  hours: number;
+ 
+  /**
+   * Minutes of hour of day. Must be from 0 to 59.
+   *
+   * @generated from field: int32 minutes = 2;
+   */
+  minutes: number;
+ 
+  /**
+   * Seconds of minutes of the time. Must normally be from 0 to 59. An API may
+   * allow the value 60 if it allows leap-seconds.
+   *
+   * @generated from field: int32 seconds = 3;
+   */
+  seconds: number;
+ 
+  /**
+   * Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
+   *
+   * @generated from field: int32 nanos = 4;
+   */
+  nanos: number;
+};
+ 
+/**
+ * Describes the message google.type.TimeOfDay.
+ * Use `create(TimeOfDaySchema)` to create a new message.
+ */
+export const TimeOfDaySchema: GenMessage<TimeOfDay> = /*@__PURE__*/
+  messageDesc(file_google_type_timeofday, 0);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/index.html b/coverage/lcov-report/schemaregistry/index.html new file mode 100644 index 00000000..c3dde510 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for schemaregistry + + + + + + + + + +
+
+

All files schemaregistry

+
+ +
+ 81.79% + Statements + 355/434 +
+ + +
+ 72.3% + Branches + 94/130 +
+ + +
+ 81.81% + Functions + 90/110 +
+ + +
+ 81.98% + Lines + 355/433 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
mock-schemaregistry-client.ts +
+
82.72%158/19177.64%66/8578.94%30/3882.72%158/191
rest-error.ts +
+
100%4/4100%0/0100%1/1100%4/4
rest-service.ts +
+
10.71%3/280%0/130%0/611.11%3/27
schemaregistry-client.ts +
+
90.04%190/21187.5%28/3290.76%59/6590.04%190/211
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/mock-schemaregistry-client.ts.html b/coverage/lcov-report/schemaregistry/mock-schemaregistry-client.ts.html new file mode 100644 index 00000000..d39f2b76 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/mock-schemaregistry-client.ts.html @@ -0,0 +1,1381 @@ + + + + + + Code coverage report for schemaregistry/mock-schemaregistry-client.ts + + + + + + + + + +
+
+

All files / schemaregistry mock-schemaregistry-client.ts

+
+ +
+ 82.72% + Statements + 158/191 +
+ + +
+ 77.64% + Branches + 66/85 +
+ + +
+ 78.94% + Functions + 30/38 +
+ + +
+ 82.72% + Lines + 158/191 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433  +5x +  +  +  +  +  +  +  +5x +  +5x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +31x +  +  +  +  +  +  +30x +30x +  +  +  +5x +  +  +  +  +  +  +  +  +  +  +31x +31x +31x +31x +31x +31x +  +  +  +15x +  +  +  +29x +29x +  +  +29x +  +  +  +30x +  +30x +30x +  +  +  +30x +30x +  +  +  +30x +30x +  +30x +  +  +  +30x +  +30x +7x +7x +  +  +  +  +  +30x +30x +30x +30x +30x +  +  +30x +  +  +  +30x +  +  +30x +24x +  +6x +  +  +30x +30x +  +  +  +15x +15x +  +15x +2x +  +13x +  +  +  +8x +8x +8x +4x +  +4x +  +  +  +4x +4x +  +  +  +4x +  +  +  +  +6x +9x +9x +6x +  +  +  +6x +  +  +  +6x +6x +9x +9x +6x +  +  +6x +  +  +  +  +6x +  +  +  +  +  +  +  +  +2x +  +2x +4x +4x +4x +  +  +2x +  +2x +4x +4x +4x +2x +  +  +  +  +2x +  +  +  +2x +  +2x +2x +  +  +  +  +2x +  +  +  +4x +6x +2x +  +  +2x +  +  +  +1x +  +1x +  +  +1x +  +  +  +35x +  +35x +14x +14x +13x +  +  +35x +  +  +  +4x +4x +  +  +4x +  +  +  +3x +1x +  +2x +  +  +  +  +1x +1x +  +  +  +  +  +  +3x +1x +  +2x +  +  +  +  +5x +5x +  +5x +4x +  +  +1x +  +  +  +2x +2x +2x +2x +2x +  +  +2x +  +  +  +2x +2x +2x +2x +2x +  +  +  +2x +2x +2x +2x +2x +  +  +  +2x +  +2x +1x +1x +1x +1x +  +  +  +  +2x +  +  +  +1x +2x +2x +1x +  +1x +1x +1x +1x +  +  +1x +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +2x +2x +1x +  +1x +  +  +  +2x +2x +  +  +  +2x +2x +1x +  +1x +  +  +  +2x +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +6x +  +  +  +5x + 
 
+import {
+  Client,
+  Compatibility,
+  minimize,
+  SchemaInfo,
+  SchemaMetadata,
+  ServerConfig
+} from './schemaregistry-client';
+import stringify from "json-stringify-deterministic";
+import {ClientConfig} from "./rest-service";
+import {RestError} from "./rest-error";
+ 
+interface VersionCacheEntry {
+  version: number;
+  softDeleted: boolean;
+}
+ 
+interface InfoCacheEntry {
+  info: SchemaInfo;
+  softDeleted: boolean;
+}
+ 
+interface MetadataCacheEntry {
+  metadata: SchemaMetadata;
+  softDeleted: boolean;
+}
+ 
+class Counter {
+  private count: number = 0;
+ 
+  currentValue(): number {
+    return this.count;
+  }
+ 
+  increment(): number {
+    this.count++;
+    return this.count;
+  }
+}
+ 
+const noSubject = "";
+ 
+class MockClient implements Client {
+  private clientConfig?: ClientConfig;
+  private infoToSchemaCache: Map<string, MetadataCacheEntry>;
+  private idToSchemaCache: Map<string, InfoCacheEntry>;
+  private schemaToVersionCache: Map<string, VersionCacheEntry>;
+  private configCache: Map<string, ServerConfig>;
+  private counter: Counter;
+ 
+  constructor(config?: ClientConfig) {
+    this.clientConfig = config
+    this.infoToSchemaCache = new Map();
+    this.idToSchemaCache = new Map();
+    this.schemaToVersionCache = new Map();
+    this.configCache = new Map();
+    this.counter = new Counter();
+  }
+ 
+  config(): ClientConfig {
+    return this.clientConfig!
+  }
+ 
+  async register(subject: string, schema: SchemaInfo, normalize: boolean = false): Promise<number> {
+    const metadata = await this.registerFullResponse(subject, schema, normalize);
+    Iif (!metadata) {
+      throw new RestError("Failed to register schema", 422, 42200);
+    }
+    return metadata.id;
+  }
+ 
+  async registerFullResponse(subject: string, schema: SchemaInfo, normalize: boolean = false): Promise<SchemaMetadata> {
+    const cacheKey = stringify({ subject, schema: minimize(schema) });
+ 
+    const cacheEntry = this.infoToSchemaCache.get(cacheKey);
+    Iif (cacheEntry && !cacheEntry.softDeleted) {
+      return cacheEntry.metadata;
+    }
+ 
+    const id = await this.getIDFromRegistry(subject, schema);
+    Iif (id === -1) {
+      throw new RestError("Failed to retrieve schema ID from registry", 422, 42200);
+    }
+ 
+    const metadata: SchemaMetadata = { ...schema, id };
+    this.infoToSchemaCache.set(cacheKey, { metadata, softDeleted: false });
+ 
+    return metadata;
+  }
+ 
+  private async getIDFromRegistry(subject: string, schema: SchemaInfo): Promise<number> {
+    let id = -1;
+ 
+    for (const [key, value] of this.idToSchemaCache.entries()) {
+      const parsedKey = JSON.parse(key);
+      Iif (parsedKey.subject === subject && this.schemasEqual(value.info, schema)) {
+        id = parsedKey.id;
+        break;
+      }
+    }
+ 
+    await this.generateVersion(subject, schema);
+    if (id < 0) {
+      id = this.counter.increment();
+      const idCacheKey = stringify({ subject, id });
+      this.idToSchemaCache.set(idCacheKey, { info: schema, softDeleted: false });
+    }
+ 
+    return id;
+  }
+ 
+  private async generateVersion(subject: string, schema: SchemaInfo): Promise<void> {
+    const versions = await this.allVersions(subject);
+    let newVersion: number;
+ 
+    if (versions.length === 0) {
+      newVersion = 1;
+    } else {
+      newVersion = versions[versions.length - 1] + 1;
+    }
+ 
+    const cacheKey = stringify({ subject, schema: minimize(schema) });
+    this.schemaToVersionCache.set(cacheKey, { version: newVersion, softDeleted: false });
+  }
+ 
+  async getBySubjectAndId(subject: string, id: number, format?: string): Promise<SchemaInfo> {
+    const cacheKey = stringify({ subject, id });
+    const cacheEntry = this.idToSchemaCache.get(cacheKey);
+ 
+    if (!cacheEntry || cacheEntry.softDeleted) {
+      throw new RestError("Schema not found", 404, 40400);
+    }
+    return cacheEntry.info;
+  }
+ 
+  async getId(subject: string, schema: SchemaInfo): Promise<number> {
+    const cacheKey = stringify({ subject, schema: minimize(schema) });
+    const cacheEntry = this.infoToSchemaCache.get(cacheKey);
+    if (!cacheEntry || cacheEntry.softDeleted) {
+      throw new RestError("Schema not found", 404, 40400);
+    }
+    return cacheEntry.metadata.id;
+  }
+ 
+  async getLatestSchemaMetadata(subject: string): Promise<SchemaMetadata> {
+    const version = await this.latestVersion(subject);
+    Iif (version === -1) {
+      throw new RestError("No versions found for subject", 404, 40400);
+    }
+ 
+    return this.getSchemaMetadata(subject, version);
+  }
+ 
+  async getSchemaMetadata(subject: string, version: number, deleted: boolean = false): Promise<SchemaMetadata> {
+    let json;
+    for (const [key, value] of this.schemaToVersionCache.entries()) {
+      const parsedKey = JSON.parse(key);
+      if (parsedKey.subject === subject && value.version === version && value.softDeleted === deleted) {
+        json = parsedKey;
+      }
+    }
+ 
+    Iif (!json) {
+      throw new RestError("Schema not found", 404, 40400);
+    }
+ 
+    let id: number = -1;
+    for (const [key, value] of this.idToSchemaCache.entries()) {
+      const parsedKey = JSON.parse(key);
+      if (parsedKey.subject === subject && value.info.schema === json.schema.schema) {
+        id = parsedKey.id;
+      }
+    }
+    Iif (id === -1) {
+      throw new RestError("Schema not found", 404, 40400);
+    }
+ 
+ 
+    return {
+      id,
+      version,
+      subject,
+      ...json.schema,
+    };
+  }
+ 
+  async getLatestWithMetadata(subject: string, metadata: { [key: string]: string }, deleted: boolean = false): Promise<SchemaMetadata> {
+    let metadataStr = '';
+ 
+    for (const key in metadata) {
+      const encodedKey = encodeURIComponent(key);
+      const encodedValue = encodeURIComponent(metadata[key]);
+      metadataStr += `&key=${encodedKey}&value=${encodedValue}`;
+    }
+ 
+    let results: SchemaMetadata[] = [];
+ 
+    for (const [key, value] of this.schemaToVersionCache.entries()) {
+      const parsedKey = JSON.parse(key);
+      if (parsedKey.subject === subject && (!value.softDeleted || deleted)) {
+        if (parsedKey.schema.metadata && this.isSubset(metadata, parsedKey.schema.metadata.properties)) {
+          results.push({ id: parsedKey.schema.id, version: value.version, subject, schema: parsedKey.schema.schema });
+        }
+      }
+    }
+ 
+    Iif (results.length === 0) {
+      throw new RestError("Schema not found", 404, 40400);
+    }
+ 
+    let latest: SchemaMetadata = results[0];
+ 
+    results.forEach((result) => {
+      Iif (result.version! > latest.version!) {
+        latest = result;
+      }
+    });
+ 
+    return latest;
+  }
+ 
+  private isSubset(containee: { [key: string]: string }, container: { [key: string]: string }){
+    for (const key in containee) {
+      if (containee[key] !== container[key]) {
+        return false;
+      }
+    }
+    return true;
+  }
+ 
+  async getAllVersions(subject: string): Promise<number[]> {
+    const results = await this.allVersions(subject);
+ 
+    Iif (results.length === 0) {
+      throw new RestError("No versions found for subject", 404, 40400);
+    }
+    return results;
+  }
+ 
+  private async allVersions(subject: string): Promise<number[]> {
+    const versions: number[] = [];
+ 
+    for (const [key, value] of this.schemaToVersionCache.entries()) {
+      const parsedKey = JSON.parse(key);
+      if (parsedKey.subject === subject && !value.softDeleted) {
+        versions.push(value.version);
+      }
+    }
+    return versions;
+  }
+ 
+  private async latestVersion(subject: string): Promise<number> {
+    const versions = await this.allVersions(subject);
+    Iif (versions.length === 0) {
+      return -1;
+    }
+    return versions[versions.length - 1];
+  }
+ 
+  private async deleteVersion(cacheKey: string, version: number, permanent: boolean): Promise<void> {
+    if (permanent) {
+      this.schemaToVersionCache.delete(cacheKey);
+    } else {
+      this.schemaToVersionCache.set(cacheKey, { version, softDeleted: true });
+    }
+  }
+ 
+  private async deleteInfo(cacheKey: string, info: SchemaInfo, permanent: boolean): Promise<void> {
+    if (permanent) {
+      this.idToSchemaCache.delete(cacheKey);
+    } else E{
+      this.idToSchemaCache.set(cacheKey, { info, softDeleted: true });
+    }
+  }
+ 
+  private async deleteMetadata(cacheKey: string, metadata: SchemaMetadata, permanent: boolean): Promise<void> {
+    if (permanent) {
+      this.infoToSchemaCache.delete(cacheKey);
+    } else {
+      this.infoToSchemaCache.set(cacheKey, { metadata, softDeleted: true });
+    }
+  }
+ 
+  async getVersion(subject: string, schema: SchemaInfo, normalize: boolean = false): Promise<number> {
+    const cacheKey = stringify({ subject, schema: minimize(schema) });
+    const cacheEntry = this.schemaToVersionCache.get(cacheKey);
+ 
+    if (!cacheEntry || cacheEntry.softDeleted) {
+      throw new RestError("Schema not found", 404, 40400);
+    }
+ 
+    return cacheEntry.version;
+  }
+ 
+  async getAllSubjects(): Promise<string[]> {
+    const subjects: string[] = [];
+    for (const [key, value] of this.schemaToVersionCache.entries()) {
+      const parsedKey = JSON.parse(key);
+      if (!value.softDeleted && !subjects.includes(parsedKey.subject)) {
+        subjects.push(parsedKey.subject);
+      }
+    }
+    return subjects.sort();
+  }
+ 
+  async deleteSubject(subject: string, permanent: boolean = false): Promise<number[]> {
+    const deletedVersions: number[] = [];
+    for (const [key, value] of this.infoToSchemaCache.entries()) {
+      const parsedKey = JSON.parse(key);
+      if (parsedKey.subject === subject && (permanent || !value.softDeleted)) {
+        await this.deleteMetadata(key, value.metadata, permanent);
+      }
+    }
+ 
+    for (const [key, value] of this.schemaToVersionCache.entries()) {
+      const parsedKey = JSON.parse(key);
+      if (parsedKey.subject === subject && (permanent || !value.softDeleted)) {
+        await this.deleteVersion(key, value.version, permanent);
+        deletedVersions.push(value.version);
+      }
+    }
+ 
+    this.configCache.delete(subject);
+ 
+    if (permanent) {
+      for (const [key, value] of this.idToSchemaCache.entries()) {
+        const parsedKey = JSON.parse(key);
+        if (parsedKey.subject === subject && (!value.softDeleted)) {
+          await this.deleteInfo(key, value.info, permanent);
+        }
+      }
+    }
+ 
+    return deletedVersions;
+  }
+ 
+  async deleteSubjectVersion(subject: string, version: number, permanent: boolean = false): Promise<number> {
+    for (const [key, value] of this.schemaToVersionCache.entries()) {
+      const parsedKey = JSON.parse(key);
+      if (parsedKey.subject === subject && value.version === version) {
+        await this.deleteVersion(key, version, permanent);
+ 
+        const cacheKeySchema = stringify({ subject, schema: minimize(parsedKey.schema) });
+        const cacheEntry = this.infoToSchemaCache.get(cacheKeySchema);
+        if (cacheEntry) {
+          await this.deleteMetadata(cacheKeySchema, cacheEntry.metadata, permanent);
+        }
+ 
+        Iif (permanent && cacheEntry) {
+          const cacheKeyInfo = stringify({ subject, id: cacheEntry.metadata.id });
+          const cacheSchemaEntry = this.idToSchemaCache.get(cacheKeyInfo);
+          Iif (cacheSchemaEntry) {
+            await this.deleteInfo(cacheKeyInfo, cacheSchemaEntry.info, permanent);
+          }
+        }
+      }
+    }
+ 
+    return version;
+  }
+ 
+  async testSubjectCompatibility(subject: string, schema: SchemaInfo): Promise<boolean> {
+    throw new Error("Unsupported operation");
+  }
+ 
+  async testCompatibility(subject: string, version: number, schema: SchemaInfo): Promise<boolean> {
+    throw new Error("Unsupported operation");
+  }
+ 
+  async getCompatibility(subject: string): Promise<Compatibility> {
+    const cacheEntry = this.configCache.get(subject);
+    if (!cacheEntry) {
+      throw new RestError("Subject not found", 404, 40400);
+    }
+    return cacheEntry.compatibilityLevel as Compatibility;
+  }
+ 
+  async updateCompatibility(subject: string, compatibility: Compatibility): Promise<Compatibility> {
+    this.configCache.set(subject, { compatibilityLevel: compatibility });
+    return compatibility;
+  }
+ 
+  async getDefaultCompatibility(): Promise<Compatibility> {
+    const cacheEntry = this.configCache.get(noSubject);
+    if (!cacheEntry) {
+      throw new RestError("Default compatibility not found", 404, 40400);
+    }
+    return cacheEntry.compatibilityLevel as Compatibility;
+  }
+ 
+  async updateDefaultCompatibility(compatibility: Compatibility): Promise<Compatibility> {
+    this.configCache.set(noSubject, { compatibilityLevel: compatibility });
+    return compatibility;
+  }
+ 
+  async getConfig(subject: string): Promise<ServerConfig> {
+    const cacheEntry = this.configCache.get(subject);
+    Iif (!cacheEntry) {
+      throw new RestError("Subject not found", 404, 40400);
+    }
+    return cacheEntry;
+  }
+ 
+  async updateConfig(subject: string, config: ServerConfig): Promise<ServerConfig> {
+    this.configCache.set(subject, config);
+    return config;
+  }
+ 
+  async getDefaultConfig(): Promise<ServerConfig> {
+    const cacheEntry = this.configCache.get(noSubject);
+    Iif (!cacheEntry) {
+      throw new RestError("Default config not found", 404, 40400);
+    }
+    return cacheEntry;
+  }
+ 
+  async updateDefaultConfig(config: ServerConfig): Promise<ServerConfig> {
+    this.configCache.set(noSubject, config);
+    return config;
+  }
+ 
+  async close(): Promise<void> {
+    return;
+  }
+ 
+  private schemasEqual(schema1: SchemaInfo, schema2: SchemaInfo): boolean {
+    return stringify(schema1) === stringify(schema2);
+  }
+}
+ 
+export { MockClient };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rest-error.ts.html b/coverage/lcov-report/schemaregistry/rest-error.ts.html new file mode 100644 index 00000000..0f04554f --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rest-error.ts.html @@ -0,0 +1,112 @@ + + + + + + Code coverage report for schemaregistry/rest-error.ts + + + + + + + + + +
+
+

All files / schemaregistry rest-error.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +109x +  +  +  +  +16x +16x +16x +  + 
export class RestError extends Error {
+  status: number;
+  errorCode: number;
+ 
+  constructor(message: string, status: number, errorCode: number) {
+    super(message + "; Error code: " + errorCode);
+    this.status = status;
+    this.errorCode = errorCode;
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rest-service.ts.html b/coverage/lcov-report/schemaregistry/rest-service.ts.html new file mode 100644 index 00000000..7a2426b1 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rest-service.ts.html @@ -0,0 +1,355 @@ + + + + + + Code coverage report for schemaregistry/rest-service.ts + + + + + + + + + +
+
+

All files / schemaregistry rest-service.ts

+
+ +
+ 10.71% + Statements + 3/28 +
+ + +
+ 0% + Branches + 0/13 +
+ + +
+ 0% + Functions + 0/6 +
+ + +
+ 11.11% + Lines + 3/27 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +916x +6x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +6x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, CreateAxiosDefaults } from 'axios';
+import { RestError } from './rest-error';
+ 
+/*
+ * Confluent-Schema-Registry-TypeScript - Node.js wrapper for Confluent Schema Registry
+ *
+ * Copyright (c) 2024 Confluent, Inc.
+ *
+ * This software may be modified and distributed under the terms
+ * of the MIT license.  See the LICENSE.txt file for details.
+ */
+ 
+export interface ClientConfig {
+  baseURLs: string[],
+  cacheCapacity: number,
+  cacheLatestTtlSecs?: number,
+  isForward?: boolean
+  createAxiosDefaults?: CreateAxiosDefaults,
+}
+ 
+export class RestService {
+  private client: AxiosInstance;
+  private baseURLs: string[];
+ 
+  constructor(baseURLs: string[], isForward?: boolean, axiosDefaults?: CreateAxiosDefaults) {
+    this.client = axios.create(axiosDefaults);
+    this.baseURLs = baseURLs;
+ 
+    Iif (isForward) {
+      this.client.defaults.headers.common['X-Forward'] = 'true'
+    }
+  }
+ 
+  async handleRequest<T>(
+    url: string,
+    method: 'GET' | 'POST' | 'PUT' | 'DELETE',
+    data?: any, // eslint-disable-line @typescript-eslint/no-explicit-any
+    config?: AxiosRequestConfig,
+  ): Promise<AxiosResponse<T>> {
+ 
+    for (let i = 0; i < this.baseURLs.length; i++) {
+      try {
+        this.setBaseURL(this.baseURLs[i]);
+        const response = await this.client.request<T>({
+          url,
+          method,
+          data,
+          ...config,
+        })
+        return response;
+      } catch (error) {
+        Iif (axios.isAxiosError(error) && error.response && (error.response.status < 200 || error.response.status > 299)) {
+          const data = error.response.data;
+          if (data.error_code && data.message) {
+            error = new RestError(data.message, error.response.status, data.error_code);
+          } else {
+            error = new Error(`Unknown error: ${error.message}`)
+          }
+        }
+        Iif (i === this.baseURLs.length - 1) {
+          throw error;
+        }
+      }
+    }
+ 
+    throw new Error('Internal HTTP retry error'); // Should never reach here
+  }
+ 
+  setHeaders(headers: Record<string, string>): void {
+    this.client.defaults.headers.common = { ...this.client.defaults.headers.common, ...headers }
+  }
+ 
+  setAuth(basicAuth?: string, bearerToken?: string): void {
+    Iif (basicAuth) {
+      this.client.defaults.headers.common['Authorization'] = `Basic ${basicAuth}`
+    }
+ 
+    Iif (bearerToken) {
+      this.client.defaults.headers.common['Authorization'] = `Bearer ${bearerToken}`
+    }
+  }
+ 
+  setTimeout(timeout: number): void {
+    this.client.defaults.timeout = timeout
+  }
+ 
+  setBaseURL(baseUrl: string): void {
+    this.client.defaults.baseURL = baseUrl
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/encrypt-executor.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/encrypt-executor.ts.html new file mode 100644 index 00000000..4a9b1dab --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/encrypt-executor.ts.html @@ -0,0 +1,1675 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/encrypt-executor.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption encrypt-executor.ts

+
+ +
+ 79.35% + Statements + 196/247 +
+ + +
+ 57% + Branches + 61/107 +
+ + +
+ 91.42% + Functions + 32/35 +
+ + +
+ 79.35% + Lines + 196/247 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +5313x +  +  +  +  +  +  +  +  +3x +3x +3x +  +3x +3x +3x +  +3x +3x +3x +3x +3x +  +  +3x +  +3x +  +3x +  +3x +  +3x +  +  +3x +  +3x +3x +3x +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +3x +  +  +3x +3x +3x +  +  +  +15x +15x +  +  +  +3x +  +  +  +9x +9x +9x +  +9x +9x +  +  +  +  +  +  +  +  +  +9x +9x +9x +1x +  +9x +9x +  +  +  +9x +9x +  +  +9x +  +  +9x +  +  +  +9x +9x +8x +  +1x +1x +  +  +1x +  +  +1x +  +  +  +3x +3x +  +  +  +  +  +11x +11x +  +  +  +2x +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +2x +2x +  +  +  +  +  +  +  +  +2x +  +  +  +2x +  +  +  +  +  +  +  +6x +  +  +  +  +  +  +6x +6x +6x +  +  +  +  +  +  +  +12x +  +1x +1x +1x +  +  +11x +11x +11x +  +  +  +  +  +  +  +  +  +  +  +1x +1x +  +  +  +6x +6x +  +  +  +11x +11x +  +  +  +3x +  +  +  +9x +  +  +  +  +  +  +  +  +9x +9x +9x +9x +  +  +  +15x +  +  +  +11x +7x +  +11x +  +  +  +7x +7x +7x +7x +  +  +  +7x +7x +2x +  +  +2x +  +  +2x +  +  +2x +2x +  +  +  +2x +  +  +  +7x +  +  +  +  +7x +  +  +  +  +7x +  +  +  +7x +7x +  +2x +2x +  +  +  +  +  +  +2x +2x +  +  +  +  +  +  +  +  +  +11x +11x +11x +10x +  +11x +  +  +  +  +  +  +11x +11x +11x +11x +2x +  +  +2x +2x +2x +  +2x +2x +  +2x +2x +  +  +  +  +  +  +  +2x +2x +  +  +  +2x +  +  +  +  +11x +5x +3x +  +5x +5x +  +  +11x +  +  +  +11x +  +11x +11x +  +  +11x +9x +  +2x +2x +  +  +  +  +  +  +2x +  +2x +2x +2x +  +2x +2x +2x +  +2x +2x +  +  +  +  +  +  +  +  +  +11x +11x +  +  +  +  +  +  +11x +  +  +11x +  +4x +4x +  +  +4x +4x +  +  +4x +4x +4x +4x +  +  +4x +2x +  +2x +  +  +  +  +7x +5x +  +2x +  +7x +  +  +7x +7x +1x +1x +  +  +1x +  +7x +7x +7x +7x +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +1x +  +  +  +6x +  +4x +  +2x +  +  +  +  +  +  +9x +  +4x +  +5x +  +  +  +  +  +  +  +5x +5x +5x +2x +2x +2x +  +5x +  + 
import {
+  FieldContext,
+  FieldRuleExecutor,
+  FieldTransform,
+  FieldType,
+  MAGIC_BYTE,
+  RuleContext,
+  RuleError,
+} from "../../serde/serde";
+import {RuleMode,} from "../../schemaregistry-client";
+import {Client, Dek, DekRegistryClient, Kek} from "../../dekregistry/dekregistry-client";
+import {registerRuleExecutor} from "../../serde/rule-registry";
+import {ClientConfig} from "../../rest-service";
+import {RestError} from "../../rest-error";
+import * as Random from './tink/random';
+import * as Registry from './kms-registry'
+import {KmsClient} from "./kms-registry";
+import {AesGcmKey, AesGcmKeySchema} from "./tink/proto/aes_gcm_pb";
+import {AesSivKey, AesSivKeySchema} from "./tink/proto/aes_siv_pb";
+import {create, fromBinary, toBinary} from "@bufbuild/protobuf";
+import {fromRawKey as aesGcmFromRawKey} from "./tink/aes_gcm";
+import {fromRawKey as aesSivFromRawKey} from "./tink/aes_siv";
+ 
+// EncryptKekName represents a kek name
+const ENCRYPT_KEK_NAME = 'encrypt.kek.name'
+// EncryptKmsKeyId represents a kms key ID
+const ENCRYPT_KMS_KEY_ID = 'encrypt.kms.key.id'
+// EncryptKmsType represents a kms type
+const ENCRYPT_KMS_TYPE = 'encrypt.kms.type'
+// EncryptDekAlgorithm represents a dek algorithm
+const ENCRYPT_DEK_ALGORITHM = 'encrypt.dek.algorithm'
+// EncryptDekExpiryDays represents dek expiry days
+const ENCRYPT_DEK_EXPIRY_DAYS = 'encrypt.dek.expiry.days'
+ 
+// MillisInDay represents number of milliseconds in a day
+const MILLIS_IN_DAY = 24 * 60 * 60 * 1000
+ 
+export enum DekFormat {
+  AES128_GCM = 'AES128_GCM',
+  AES256_GCM = 'AES256_GCM',
+  AES256_SIV = 'AES256_SIV',
+}
+ 
+interface KekId {
+  name: string
+  deleted: boolean
+}
+ 
+interface DekId {
+  kekName: string
+  subject: string
+  version: number | null
+  algorithm: string
+  deleted: boolean
+}
+ 
+export class FieldEncryptionExecutor extends FieldRuleExecutor {
+  client: Client | null = null
+ 
+  static register(): FieldEncryptionExecutor {
+    const executor = new FieldEncryptionExecutor()
+    registerRuleExecutor(executor)
+    return executor
+  }
+ 
+  override configure(clientConfig: ClientConfig, config: Map<string, string>) {
+    this.client = DekRegistryClient.newClient(clientConfig)
+    this.config = config
+  }
+ 
+  type(): string {
+    return 'ENCRYPT'
+  }
+ 
+  newTransform(ctx: RuleContext): FieldTransform {
+    const cryptor = this.getCryptor(ctx)
+    const kekName = this.getKekName(ctx)
+    const dekExpiryDays = this.getDekExpiryDays(ctx)
+    const transform =
+      new FieldEncryptionExecutorTransform(this, cryptor, kekName, dekExpiryDays)
+    return transform
+  }
+ 
+  async close() {
+    Iif (this.client != null) {
+      await this.client.close()
+    }
+  }
+ 
+  private getCryptor(ctx: RuleContext): Cryptor {
+    let dekAlgorithm = DekFormat.AES256_GCM
+    const dekAlgorithmStr = ctx.getParameter(ENCRYPT_DEK_ALGORITHM)
+    if (dekAlgorithmStr != null) {
+      dekAlgorithm = DekFormat[dekAlgorithmStr as keyof typeof DekFormat]
+    }
+    const cryptor = new Cryptor(dekAlgorithm)
+    return cryptor
+  }
+ 
+  private getKekName(ctx: RuleContext): string {
+    const kekName = ctx.getParameter(ENCRYPT_KEK_NAME)
+    Iif (kekName == null) {
+      throw new RuleError('no kek name found')
+    }
+    Iif (kekName === '') {
+      throw new RuleError('empty kek name')
+    }
+    return kekName
+  }
+ 
+  private getDekExpiryDays(ctx: RuleContext): number {
+    const expiryDaysStr = ctx.getParameter(ENCRYPT_DEK_EXPIRY_DAYS)
+    if (expiryDaysStr == null) {
+      return 0
+    }
+    const expiryDays = Number(expiryDaysStr)
+    Iif (isNaN(expiryDays)) {
+      throw new RuleError('invalid expiry days')
+    }
+    Iif (expiryDays < 0) {
+      throw new RuleError('negative expiry days')
+    }
+    return expiryDays
+  }
+}
+ 
+export class Cryptor {
+  static readonly EMPTY_AAD = Buffer.from([])
+ 
+  dekFormat: DekFormat
+  isDeterministic: boolean
+ 
+  constructor(dekFormat: DekFormat) {
+    this.dekFormat = dekFormat
+    this.isDeterministic = dekFormat === DekFormat.AES256_SIV
+  }
+ 
+  private keySize(): number {
+    switch (this.dekFormat) {
+      case DekFormat.AES256_SIV:
+        // Generate 2 256-bit keys
+        return 64
+      case DekFormat.AES128_GCM:
+        // Generate 128-bit key
+        return 16
+      case DekFormat.AES256_GCM:
+        // Generate 256-bit key
+        return 32
+      default:
+        throw new RuleError('unsupported dek format')
+    }
+  }
+ 
+  generateKey(): Buffer {
+    let rawKey = Random.randBytes(this.keySize())
+    switch (this.dekFormat) {
+      case DekFormat.AES256_SIV:
+        const aesSivKey: AesSivKey = create(AesSivKeySchema, {
+          version: 0,
+          keyValue: rawKey
+        });
+        return Buffer.from(toBinary(AesSivKeySchema, aesSivKey))
+      case DekFormat.AES128_GCM:
+      case DekFormat.AES256_GCM:
+        const aesGcmKey: AesGcmKey = create(AesGcmKeySchema, {
+          version: 0,
+          keyValue: rawKey
+        });
+        return Buffer.from(toBinary(AesGcmKeySchema, aesGcmKey))
+      default:
+        throw new RuleError('unsupported dek format')
+    }
+  }
+ 
+  async encrypt(dek: Buffer, plaintext: Buffer): Promise<Buffer> {
+    let rawKey
+    switch (this.dekFormat) {
+      case DekFormat.AES256_SIV:
+        const aesSivKey = fromBinary(AesSivKeySchema, dek)
+        rawKey = aesSivKey.keyValue
+        return Buffer.from(await this.encryptWithAesSiv(rawKey, plaintext))
+      case DekFormat.AES128_GCM:
+      case DekFormat.AES256_GCM:
+        const aesGcmKey = fromBinary(AesGcmKeySchema, dek)
+        rawKey = aesGcmKey.keyValue
+        return Buffer.from(await this.encryptWithAesGcm(rawKey, plaintext))
+      default:
+        throw new RuleError('unsupported dek format')
+    }
+  }
+ 
+  async decrypt(dek: Buffer, ciphertext: Buffer): Promise<Buffer> {
+    let rawKey
+    switch (this.dekFormat) {
+      case DekFormat.AES256_SIV:
+        const aesSivKey = fromBinary(AesSivKeySchema, dek)
+        rawKey = aesSivKey.keyValue
+        return Buffer.from(await this.decryptWithAesSiv(rawKey, ciphertext))
+      case DekFormat.AES128_GCM:
+      case DekFormat.AES256_GCM:
+        const aesGcmKey = fromBinary(AesGcmKeySchema, dek)
+        rawKey = aesGcmKey.keyValue
+        return Buffer.from(await this.decryptWithAesGcm(rawKey, ciphertext))
+      default:
+        throw new RuleError('unsupported dek format')
+    }
+  }
+ 
+  async encryptWithAesSiv(key: Uint8Array, plaintext: Uint8Array): Promise<Uint8Array> {
+    const aead = await aesSivFromRawKey(key)
+    return aead.encrypt(plaintext, Cryptor.EMPTY_AAD)
+  }
+ 
+  async decryptWithAesSiv(key: Uint8Array, ciphertext: Uint8Array): Promise<Uint8Array> {
+    const aead = await aesSivFromRawKey(key)
+    return aead.decrypt(ciphertext, Cryptor.EMPTY_AAD)
+  }
+ 
+  async encryptWithAesGcm(key: Uint8Array, plaintext: Uint8Array): Promise<Uint8Array> {
+    const aead = await aesGcmFromRawKey(key)
+    return aead.encrypt(plaintext, Cryptor.EMPTY_AAD)
+  }
+ 
+  async decryptWithAesGcm(key: Uint8Array, ciphertext: Uint8Array): Promise<Uint8Array> {
+    const aead = await aesGcmFromRawKey(key)
+    return aead.decrypt(ciphertext, Cryptor.EMPTY_AAD)
+  }
+}
+ 
+export class FieldEncryptionExecutorTransform implements FieldTransform {
+  private executor: FieldEncryptionExecutor
+  private cryptor: Cryptor
+  private kekName: string
+  private kek: Kek | null = null
+  private dekExpiryDays: number
+ 
+  constructor(
+    executor: FieldEncryptionExecutor,
+    cryptor: Cryptor,
+    kekName: string,
+    dekExpiryDays: number,
+  ) {
+    this.executor = executor
+    this.cryptor = cryptor
+    this.kekName = kekName
+    this.dekExpiryDays = dekExpiryDays
+  }
+ 
+  isDekRotated() {
+    return this.dekExpiryDays > 0
+  }
+ 
+  async getKek(ctx: RuleContext) {
+    if (this.kek == null) {
+      this.kek = await this.getOrCreateKek(ctx)
+    }
+    return this.kek
+  }
+ 
+  async getOrCreateKek(ctx: RuleContext): Promise<Kek> {
+    const isRead = ctx.ruleMode === RuleMode.READ
+    const kmsType = ctx.getParameter(ENCRYPT_KMS_TYPE)
+    const kmsKeyId = ctx.getParameter(ENCRYPT_KMS_KEY_ID)
+    const kekId: KekId = {
+      name: this.kekName,
+      deleted: false,
+    }
+    let kek = await this.retrieveKekFromRegistry(kekId)
+    if (kek == null) {
+      Iif (isRead) {
+        throw new RuleError(`no kek found for ${this.kekName} during consume`)
+      }
+      Iif (kmsType == null || kmsType.length === 0) {
+        throw new RuleError(`no kms type found for ${this.kekName} during produce`)
+      }
+      Iif (kmsKeyId == null || kmsKeyId.length === 0) {
+        throw new RuleError(`no kms key id found for ${this.kekName} during produce`)
+      }
+      kek = await this.storeKekToRegistry(kekId, kmsType, kmsKeyId, false)
+      Iif (kek == null) {
+        // handle conflicts (409)
+        kek = await this.retrieveKekFromRegistry(kekId)
+      }
+      Iif (kek == null) {
+        throw new RuleError(`no kek found for ${this.kekName} during produce`)
+      }
+    }
+    Iif (kmsType != null && kmsType.length !== 0 && kmsType !== kek.kmsType) {
+      throw new RuleError(
+        `found ${this.kekName} with kms type ${kek.kmsType} which differs from rule kms type ${kmsType}`,
+      )
+    }
+    Iif (kmsKeyId != null && kmsKeyId.length !== 0 && kmsKeyId !== kek.kmsKeyId) {
+      throw new RuleError(
+        `found ${this.kekName} with kms key id ${kek.kmsKeyId} which differs from rule kms keyId ${kmsKeyId}`,
+      )
+    }
+    return kek
+  }
+ 
+  async retrieveKekFromRegistry(key: KekId): Promise<Kek | null> {
+    try {
+      return await this.executor.client!.getKek(key.name, key.deleted)
+    } catch (err) {
+      if (err instanceof RestError && err.status === 404) {
+        return null
+      }
+      throw new RuleError(`could not get kek ${key.name}: ${err}`)
+    }
+  }
+ 
+  async storeKekToRegistry(key: KekId, kmsType: string, kmsKeyId: string, shared: boolean): Promise<Kek | null> {
+    try {
+      return await this.executor.client!.registerKek(key.name, kmsType, kmsKeyId, shared)
+    } catch (err) {
+      Iif (err instanceof RestError && err.status === 409) {
+        return null
+      }
+      throw new RuleError(`could not register kek ${key.name}: ${err}`)
+    }
+  }
+ 
+  async getOrCreateDek(ctx: RuleContext, version: number | null): Promise<Dek> {
+    const kek = await this.getKek(ctx)
+    const isRead = ctx.ruleMode === RuleMode.READ
+    if (version == null || version === 0) {
+      version = 1
+    }
+    const dekId: DekId = {
+      kekName: this.kekName,
+      subject: ctx.subject,
+      version,
+      algorithm: this.cryptor.dekFormat,
+      deleted: isRead
+    }
+    let dek = await this.retrieveDekFromRegistry(dekId)
+    const isExpired = this.isExpired(ctx, dek)
+    let kmsClient: KmsClient | null = null
+    if (dek == null || isExpired) {
+      Iif (isRead) {
+        throw new RuleError(`no dek found for ${this.kekName} during consume`)
+      }
+      let encryptedDek: Buffer | null = null
+      if (!kek.shared) {
+        kmsClient = getKmsClient(this.executor.config!, kek)
+        // Generate new dek
+        const rawDek = this.cryptor.generateKey()
+        encryptedDek = await kmsClient.encrypt(rawDek)
+      }
+      const newVersion = isExpired ? dek!.version! + 1 : null
+      const newDekId: DekId = {
+        kekName: this.kekName,
+        subject: ctx.subject,
+        version: newVersion,
+        algorithm: this.cryptor.dekFormat,
+        deleted: isRead,
+      }
+      // encryptedDek may be passed as null if kek is shared
+      dek = await this.storeDekToRegistry(newDekId, encryptedDek)
+      Iif (dek == null) {
+        // handle conflicts (409)
+        dek = await this.retrieveDekFromRegistry(dekId)
+      }
+      Iif (dek == null) {
+        throw new RuleError(`no dek found for ${this.kekName} during produce`)
+      }
+    }
+ 
+    if (DekRegistryClient.getKeyMaterialBytes(dek) == null) {
+      if (kmsClient == null) {
+        kmsClient = getKmsClient(this.executor.config!, kek)
+      }
+      const rawDek = await kmsClient.decrypt(DekRegistryClient.getEncryptedKeyMaterialBytes(dek)!)
+      DekRegistryClient.setKeyMaterial(dek, rawDek)
+    }
+ 
+    return dek
+  }
+ 
+  async retrieveDekFromRegistry(key: DekId): Promise<Dek | null> {
+    try {
+        let dek: Dek
+        let version = key.version
+        Iif (version == null || version === 0) {
+          version = 1
+        }
+        dek = await this.executor.client!.getDek(key.kekName, key.subject, key.algorithm, version, key.deleted)
+        return dek != null && dek.encryptedKeyMaterial != null ? dek : null
+      } catch (err) {
+        if (err instanceof RestError && err.status === 404) {
+          return null
+        }
+        throw new RuleError(`could not get dek for kek ${key.kekName}, subject ${key.subject}: ${err}`)
+      }
+    }
+ 
+    async storeDekToRegistry(key: DekId, encryptedDek: Buffer | null): Promise<Dek | null> {
+      try {
+        let dek: Dek
+        let encryptedDekStr: string | undefined = undefined
+        if (encryptedDek != null) {
+          encryptedDekStr = encryptedDek.toString('base64')
+        }
+        let version = key.version
+        if (version == null || version === 0) {
+          version = 1
+        }
+        dek = await this.executor.client!.registerDek(key.kekName, key.subject, key.algorithm, version, encryptedDekStr)
+        return dek
+      } catch (err) {
+        Iif (err instanceof RestError && err.status === 409) {
+          return null
+        }
+        throw new RuleError(`could not register dek for kek ${key.kekName}, subject ${key.subject}: ${err}`)
+      }
+  }
+ 
+  isExpired(ctx: RuleContext, dek: Dek | null): boolean {
+    const now = Date.now()
+    return ctx.ruleMode !== RuleMode.READ &&
+      this.dekExpiryDays > 0 &&
+      dek != null &&
+      (now - dek.ts!) / MILLIS_IN_DAY >= this.dekExpiryDays
+  }
+ 
+  async transform(ctx: RuleContext, fieldCtx: FieldContext, fieldValue: any): Promise<any> {
+    Iif (fieldValue == null) {
+      return null
+    }
+    switch (ctx.ruleMode) {
+      case RuleMode.WRITE: {
+        let plaintext = this.toBytes(fieldCtx.type, fieldValue)
+        Iif (plaintext == null) {
+          throw new RuleError(`type ${fieldCtx.type} not supported for encryption`)
+        }
+        let version: number | null = null
+        Iif (this.isDekRotated()) {
+          version = -1
+        }
+        let dek = await this.getOrCreateDek(ctx, version)
+        let keyMaterialBytes = DekRegistryClient.getKeyMaterialBytes(dek)!
+        let ciphertext = await this.cryptor.encrypt(keyMaterialBytes, plaintext)
+        Iif (this.isDekRotated()) {
+          ciphertext = this.prefixVersion(dek.version!, ciphertext)
+        }
+        if (fieldCtx.type === FieldType.STRING) {
+          return ciphertext.toString('base64')
+        } else {
+          return this.toObject(fieldCtx.type, ciphertext)
+        }
+      }
+      case RuleMode.READ: {
+        let ciphertext
+        if (fieldCtx.type === FieldType.STRING) {
+          ciphertext = Buffer.from(fieldValue, 'base64')
+        } else {
+          ciphertext = this.toBytes(fieldCtx.type, fieldValue)
+        }
+        Iif (ciphertext == null) {
+          return fieldValue
+        }
+        let version: number | null = null
+        if (this.isDekRotated()) {
+          version = this.extractVersion(ciphertext)
+          Iif (version == null) {
+            throw new RuleError('no version found in ciphertext')
+          }
+          ciphertext = ciphertext.subarray(5)
+        }
+        let dek = await this.getOrCreateDek(ctx, version)
+        let keyMaterialBytes = DekRegistryClient.getKeyMaterialBytes(dek)!
+        let plaintext = await this.cryptor.decrypt(keyMaterialBytes, ciphertext)
+        return this.toObject(fieldCtx.type, plaintext)
+      }
+      default:
+        throw new RuleError(`unsupported rule mode ${ctx.ruleMode}`)
+    }
+  }
+ 
+  prefixVersion(version: number, ciphertext: Buffer): Buffer {
+    const versionBuf = Buffer.alloc(4)
+    versionBuf.writeInt32BE(version)
+    return Buffer.concat([MAGIC_BYTE, versionBuf, ciphertext])
+  }
+ 
+  extractVersion(ciphertext: Buffer): number | null {
+    let magicByte = ciphertext.subarray(0, 1)
+    Iif (!magicByte.equals(MAGIC_BYTE)) {
+      throw new RuleError(
+        `Message encoded with magic byte ${JSON.stringify(magicByte)}, expected ${JSON.stringify(
+          MAGIC_BYTE,
+        )}`,
+      )
+    }
+    return ciphertext.subarray(1, 5).readInt32BE(0)
+  }
+ 
+  toBytes(type: FieldType, value: any): Buffer | null {
+    switch (type) {
+      case FieldType.BYTES:
+        return value as Buffer
+      case FieldType.STRING:
+        return Buffer.from(value as string)
+      default:
+        return null
+    }
+  }
+ 
+  toObject(type: FieldType, value: Buffer): any {
+    switch (type) {
+      case FieldType.BYTES:
+        return value
+      case FieldType.STRING:
+        return value.toString()
+      default:
+        return null
+    }
+  }
+}
+ 
+function getKmsClient(config: Map<string, string>, kek: Kek): KmsClient {
+  let keyUrl = kek.kmsType + '://' + kek.kmsKeyId
+  let kmsClient = Registry.getKmsClient(keyUrl)
+  if (kmsClient == null) {
+    let kmsDriver = Registry.getKmsDriver(keyUrl)
+    kmsClient = kmsDriver.newKmsClient(config, keyUrl)
+    Registry.registerKmsClient(kmsClient)
+  }
+  return kmsClient
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/index.html b/coverage/lcov-report/schemaregistry/rules/encryption/index.html new file mode 100644 index 00000000..0f51bb3c --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption + + + + + + + + + +
+
+

All files schemaregistry/rules/encryption

+
+ +
+ 80.3% + Statements + 212/264 +
+ + +
+ 57.79% + Branches + 63/109 +
+ + +
+ 92.3% + Functions + 36/39 +
+ + +
+ 80.3% + Lines + 212/264 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
encrypt-executor.ts +
+
79.35%196/24757%61/10791.42%32/3579.35%196/247
kms-registry.ts +
+
94.11%16/17100%2/2100%4/494.11%16/17
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/kms-registry.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/kms-registry.ts.html new file mode 100644 index 00000000..60b001dd --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/kms-registry.ts.html @@ -0,0 +1,217 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/kms-registry.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption kms-registry.ts

+
+ +
+ 94.11% + Statements + 16/17 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 94.11% + Lines + 16/17 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +453x +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +3x +  +  +3x +3x +  +  +3x +2x +2x +2x +  +  +  +  +  +3x +2x +  +  +3x +5x +3x +3x +  +  +2x +  +  + 
import {SecurityException} from "./tink/exception/security_exception";
+ 
+export interface KmsDriver {
+  getKeyUrlPrefix(): string
+  newKmsClient(config: Map<string, string>, keyUrl: string): KmsClient
+}
+ 
+export interface KmsClient {
+  supported(keyUri: string): boolean
+  encrypt(plaintext: Buffer): Promise<Buffer>
+  decrypt(ciphertext: Buffer): Promise<Buffer>
+}
+ 
+const kmsDrivers: KmsDriver[] = []
+ 
+const kmsClients: KmsClient[] = []
+ 
+ 
+export function registerKmsDriver(kmsDriver: KmsDriver): void {
+  kmsDrivers.push(kmsDriver)
+}
+ 
+export function getKmsDriver(keyUrl: string): KmsDriver {
+  for (let driver of kmsDrivers) {
+    if (keyUrl.startsWith(driver.getKeyUrlPrefix())) {
+      return driver
+    }
+  }
+  throw new SecurityException('no KMS driver found for key URL: ' + keyUrl)
+}
+ 
+export function registerKmsClient(kmsClient: KmsClient): void {
+  kmsClients.push(kmsClient)
+}
+ 
+export function getKmsClient(keyUrl: string): KmsClient | null {
+  for (let client of kmsClients) {
+    if (client.supported(keyUrl)) {
+      return client
+    }
+  }
+  return null
+}
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/localkms/index.html b/coverage/lcov-report/schemaregistry/rules/encryption/localkms/index.html new file mode 100644 index 00000000..ce3e3273 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/localkms/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/localkms + + + + + + + + + +
+
+

All files schemaregistry/rules/encryption/localkms

+
+ +
+ 92.59% + Statements + 25/27 +
+ + +
+ 0% + Branches + 0/2 +
+ + +
+ 100% + Functions + 8/8 +
+ + +
+ 92.59% + Lines + 25/27 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
local-client.ts +
+
88.88%16/180%0/2100%5/588.88%16/18
local-driver.ts +
+
100%9/9100%0/0100%3/3100%9/9
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/localkms/local-client.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/localkms/local-client.ts.html new file mode 100644 index 00000000..1db261a9 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/localkms/local-client.ts.html @@ -0,0 +1,217 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/localkms/local-client.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption/localkms local-client.ts

+
+ +
+ 88.88% + Statements + 16/18 +
+ + +
+ 0% + Branches + 0/2 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 88.88% + Lines + 16/18 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45  +3x +3x +3x +3x +3x +  +3x +  +  +  +  +  +2x +  +  +2x +  +  +2x +2x +  +  +  +7x +7x +  +  +  +7x +  +  +  +3x +  +  +  +2x +  +  +  +5x +  +  + 
import {KmsClient} from "../kms-registry";
+import {Cryptor, DekFormat} from "../encrypt-executor";
+import * as Hkdf from '../tink/hkdf';
+import {LocalKmsDriver} from "./local-driver";
+import {AesGcmKey, AesGcmKeySchema} from "../tink/proto/aes_gcm_pb";
+import {create, toBinary} from "@bufbuild/protobuf";
+ 
+export class LocalKmsClient implements KmsClient {
+ 
+  private secret: string
+  private cryptor: Cryptor
+ 
+  constructor(secret?: string) {
+    Iif (secret == null) {
+      secret = process.env['LOCAL_SECRET']
+    }
+    Iif (secret == null) {
+      throw new Error('cannot load secret')
+    }
+    this.secret = secret
+    this.cryptor = new Cryptor(DekFormat.AES128_GCM)
+  }
+ 
+  async getKey(): Promise<Buffer> {
+    const rawKey = await Hkdf.compute(16, 'SHA-256', Buffer.from(this.secret, 'utf8'), new Uint8Array(0));
+    const aesGcmKey: AesGcmKey = create(AesGcmKeySchema, {
+      version: 0,
+      keyValue: rawKey
+    });
+    return Buffer.from(toBinary(AesGcmKeySchema, aesGcmKey))
+  }
+ 
+  supported(keyUri: string): boolean {
+    return keyUri.startsWith(LocalKmsDriver.PREFIX)
+  }
+ 
+  async encrypt(plaintext: Buffer): Promise<Buffer> {
+    return this.cryptor.encrypt(await this.getKey(), plaintext)
+  }
+ 
+  async decrypt(ciphertext: Buffer): Promise<Buffer> {
+    return this.cryptor.decrypt(await this.getKey(), ciphertext)
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/localkms/local-driver.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/localkms/local-driver.ts.html new file mode 100644 index 00000000..10a043e8 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/localkms/local-driver.ts.html @@ -0,0 +1,148 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/localkms/local-driver.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption/localkms local-driver.ts

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 9/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +223x +3x +  +3x +  +3x +3x +  +  +3x +  +  +  +2x +  +  +  +2x +2x +  +  + 
import {KmsClient, KmsDriver, registerKmsDriver} from "../kms-registry";
+import {LocalKmsClient} from "./local-client";
+ 
+export class LocalKmsDriver implements KmsDriver {
+ 
+  static PREFIX: string = 'local-kms://'
+  static SECRET: string = 'secret'
+ 
+  static register(): void {
+    registerKmsDriver(new LocalKmsDriver())
+  }
+ 
+  getKeyUrlPrefix(): string {
+    return LocalKmsDriver.PREFIX
+  }
+ 
+  newKmsClient(config: Map<string, string>, keyUrl: string): KmsClient {
+    const secret = config.get(LocalKmsDriver.SECRET)
+    return new LocalKmsClient(secret)
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/aead.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/aead.ts.html new file mode 100644 index 00000000..0aa43b48 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/tink/aead.ts.html @@ -0,0 +1,241 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/tink/aead.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption/tink aead.ts

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/**
+ * @license
+ * Copyright 2020 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+ 
+ 
+/**
+ * Interface for Authenticated Encryption with Associated Data (AEAD).
+ *
+ * Security guarantees: Implementations of this interface are secure against
+ * adaptive chosen ciphertext attacks. Encryption with associated data ensures
+ * authenticity (who the sender is) and integrity (the data has not been
+ * tampered with) of that data, but not its secrecy.
+ *
+ * @see https://tools.ietf.org/html/rfc5116
+ */
+export abstract class Aead {
+  /**
+   * Encrypts `plaintext` with `opt_associatedData` as associated authenticated
+   * data. The resulting ciphertext allows for checking authenticity and
+   * integrity of associated data, but does not guarantee its secrecy.
+   *
+   * @param plaintext the plaintext to be encrypted. It must be
+   *     non-null, but can also be an empty (zero-length) byte array.
+   * @param opt_associatedData  optional associated data to be
+   *     authenticated, but not encrypted. A null value is equivalent to an
+   *     empty (zero-length) byte array. For successful decryption the same
+   *     associated data must be provided along with the ciphertext.
+   * @return resulting ciphertext
+   *
+   */
+  abstract encrypt(plaintext: Uint8Array, opt_associatedData?: Uint8Array|null):
+      Promise<Uint8Array>;
+ 
+  /**
+   * Decrypts ciphertext with associated authenticated data.
+   * The decryption verifies the authenticity and integrity of the associated
+   * data, but there are no guarantees wrt. secrecy of that data.
+   *
+   * @param ciphertext the ciphertext to be decrypted, must be
+   *     non-null.
+   * @param opt_associatedData  optional associated data to be
+   *     authenticated. A null value is equivalent to an empty (zero-length)
+   *     byte array. For successful decryption the same associated data must be
+   *     provided along with the ciphertext.
+   * @return resulting plaintext
+   */
+  abstract decrypt(
+      ciphertext: Uint8Array,
+      opt_associatedData?: Uint8Array|null): Promise<Uint8Array>;
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/aes_gcm.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/aes_gcm.ts.html new file mode 100644 index 00000000..067dcf61 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/tink/aes_gcm.ts.html @@ -0,0 +1,409 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/tink/aes_gcm.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption/tink aes_gcm.ts

+
+ +
+ 94.73% + Statements + 36/38 +
+ + +
+ 80% + Branches + 4/5 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 94.73% + Lines + 36/38 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109  +  +  +  +  +  +3x +3x +  +3x +3x +3x +3x +  +  +  +  +  +3x +  +  +  +  +  +3x +  +  +  +  +  +  +3x +17x +17x +  +  +  +  +  +  +6x +6x +6x +  +6x +6x +  +  +  +  +6x +6x +  +  +6x +6x +  +  +  +  +  +  +11x +11x +  +  +11x +11x +  +11x +11x +11x +  +  +  +  +11x +11x +  +11x +11x +  +  +  +  +  +  +  +  +  +  +  +3x +17x +17x +17x +  +  +  +  +  +  +  +  +  +  +17x +  + 
/**
+ * @license
+ * Copyright 2020 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+ 
+import {Aead} from './aead';
+import {SecurityException} from './exception/security_exception';
+ 
+import * as Bytes from './bytes';
+import * as Random from './random';
+import * as Validators from './validators';
+import * as crypto from 'crypto';
+ 
+/**
+ * The only supported IV size.
+ *
+ */
+const IV_SIZE_IN_BYTES: number = 12;
+ 
+/**
+ * The only supported tag size.
+ *
+ */
+const TAG_SIZE_IN_BITS: number = 128;
+ 
+/**
+ * Implementation of AES-GCM.
+ *
+ * @final
+ */
+export class AesGcm extends Aead {
+  constructor(private readonly key: CryptoKey) {
+    super();
+  }
+ 
+  /**
+   */
+  async encrypt(plaintext: Uint8Array, associatedData?: Uint8Array):
+      Promise<Uint8Array> {
+    Validators.requireUint8Array(plaintext);
+    if (associatedData != null) {
+      Validators.requireUint8Array(associatedData);
+    }
+    const iv = Random.randBytes(IV_SIZE_IN_BYTES);
+    const alg: AesGcmParams = {
+      'name': 'AES-GCM',
+      'iv': iv,
+      'tagLength': TAG_SIZE_IN_BITS
+    };
+    if (associatedData) {
+      alg['additionalData'] = associatedData;
+    }
+    const ciphertext =
+        await crypto.subtle.encrypt(alg, this.key, plaintext);
+    return Bytes.concat(iv, new Uint8Array(ciphertext));
+  }
+ 
+  /**
+   */
+  async decrypt(ciphertext: Uint8Array, associatedData?: Uint8Array):
+      Promise<Uint8Array> {
+    Validators.requireUint8Array(ciphertext);
+    Iif (ciphertext.length < IV_SIZE_IN_BYTES + TAG_SIZE_IN_BITS / 8) {
+      throw new SecurityException('ciphertext too short');
+    }
+    if (associatedData != null) {
+      Validators.requireUint8Array(associatedData);
+    }
+    const iv = new Uint8Array(IV_SIZE_IN_BYTES);
+    iv.set(ciphertext.subarray(0, IV_SIZE_IN_BYTES));
+    const alg: AesGcmParams = {
+      'name': 'AES-GCM',
+      'iv': iv,
+      'tagLength': TAG_SIZE_IN_BITS
+    };
+    if (associatedData) {
+      alg['additionalData'] = associatedData;
+    }
+    try {
+      return new Uint8Array(await crypto.subtle.decrypt(
+          alg, this.key,
+          new Uint8Array(ciphertext.subarray(IV_SIZE_IN_BYTES))));
+      // Preserving old behavior when moving to
+      // https://www.typescriptlang.org/tsconfig#useUnknownInCatchVariables
+      // tslint:disable-next-line:no-any
+    } catch (e: any) {
+      throw new SecurityException(e.toString());
+    }
+  }
+}
+ 
+export async function fromRawKey(key: Uint8Array): Promise<Aead> {
+  Validators.requireUint8Array(key);
+  Validators.validateAesKeySize(key.length);
+  const webCryptoKey = await crypto.subtle.importKey(
+      /* format */
+      'raw', key,
+      /* keyData */
+      {'name': 'AES-GCM', 'length': key.length},
+      /* algo */
+      false,
+      /* extractable*/
+      ['encrypt', 'decrypt']);
+ 
+  /* usage */
+  return new AesGcm(webCryptoKey);
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/aes_siv.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/aes_siv.ts.html new file mode 100644 index 00000000..703c915d --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/tink/aes_siv.ts.html @@ -0,0 +1,211 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/tink/aes_siv.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption/tink aes_siv.ts

+
+ +
+ 83.33% + Statements + 10/12 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 75% + Functions + 3/4 +
+ + +
+ 83.33% + Lines + 10/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43  +  +  +  +  +  +3x +  +  +3x +3x +  +  +  +  +  +  +3x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +  +  +  +3x +1x +  + 
/**
+ * @license
+ * Copyright 2020 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+ 
+import {Aead} from './aead';
+ 
+// @ts-expect-error miscreant does not have types
+import {SIV, WebCryptoProvider} from "@hackbg/miscreant-esm";
+import * as crypto from 'crypto';
+ 
+/**
+ * Implementation of AES-SIV.
+ *
+ * @final
+ */
+export class AesSiv extends Aead {
+  constructor(private readonly key: Uint8Array) {
+    super();
+  }
+ 
+  /**
+   */
+  async encrypt(plaintext: Uint8Array, associatedData?: Uint8Array):
+      Promise<Uint8Array> {
+    let key = await SIV.importKey(this.key, "AES-CMAC-SIV", new WebCryptoProvider(crypto));
+    return key.seal(plaintext, [associatedData]);
+  }
+ 
+  /**
+   */
+  async decrypt(ciphertext: Uint8Array, associatedData?: Uint8Array):
+      Promise<Uint8Array> {
+    let key = await SIV.importKey(this.key, "AES-CMAC-SIV", new WebCryptoProvider(crypto));
+    return key.open(ciphertext, [associatedData]);
+  }
+}
+ 
+export async function fromRawKey(key: Uint8Array): Promise<Aead> {
+  return new AesSiv(key);
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/bytes.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/bytes.ts.html new file mode 100644 index 00000000..56a77769 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/tink/bytes.ts.html @@ -0,0 +1,643 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/tink/bytes.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption/tink bytes.ts

+
+ +
+ 26.25% + Statements + 21/80 +
+ + +
+ 0% + Branches + 0/11 +
+ + +
+ 11.11% + Functions + 1/9 +
+ + +
+ 26.76% + Lines + 19/71 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187  +  +  +  +  +  +3x +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +6x +6x +  +12x +  +6x +6x +6x +  +12x +  +12x +  +6x +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  + 
/**
+ * @license
+ * Copyright 2020 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+ 
+import {InvalidArgumentsException} from './exception/invalid_arguments_exception';
+ 
+/**
+ * Does near constant time byte array comparison.
+ * @param ba1 The first bytearray to check.
+ * @param ba2 The second bytearray to check.
+ * @return If the array are equal.
+ */
+export function isEqual(ba1: Uint8Array, ba2: Uint8Array): boolean {
+  Iif (ba1.length !== ba2.length) {
+    return false;
+  }
+  let result = 0;
+  for (let i = 0; i < ba1.length; i++) {
+    result |= ba1[i] ^ ba2[i];
+  }
+  return result == 0;
+}
+ 
+/**
+ * Returns a new array that is the result of joining the arguments.
+ */
+export function concat(...var_args: Uint8Array[]): Uint8Array {
+  let length = 0;
+  for (let i = 0; i < arguments.length; i++) {
+    // eslint-disable-next-line prefer-rest-params
+    length += arguments[i].length;
+  }
+  const result = new Uint8Array(length);
+  let curOffset = 0;
+  for (let i = 0; i < arguments.length; i++) {
+    // eslint-disable-next-line prefer-rest-params
+    result.set(arguments[i], curOffset);
+    // eslint-disable-next-line prefer-rest-params
+    curOffset += arguments[i].length;
+  }
+  return result;
+}
+ 
+/**
+ * Converts a non-negative integer number to a 64-bit big-endian byte array.
+ * @param value The number to convert.
+ * @return The number as a big-endian byte array.
+ * @throws {InvalidArgumentsException}
+ * @static
+ */
+export function fromNumber(value: number): Uint8Array {
+  Iif (Number.isNaN(value) || value % 1 !== 0) {
+    throw new InvalidArgumentsException('cannot convert non-integer value');
+  }
+  Iif (value < 0) {
+    throw new InvalidArgumentsException('cannot convert negative number');
+  }
+  Iif (value > Number.MAX_SAFE_INTEGER) {
+    throw new InvalidArgumentsException(
+        'cannot convert number larger than ' + Number.MAX_SAFE_INTEGER);
+  }
+  const twoPower32 = 2 ** 32;
+  let low = value % twoPower32;
+  let high = value / twoPower32;
+  const result = new Uint8Array(8);
+  for (let i = 7; i >= 4; i--) {
+    result[i] = low & 255;
+    low >>>= 8;
+  }
+  for (let i = 3; i >= 0; i--) {
+    result[i] = high & 255;
+    high >>>= 8;
+  }
+  return result;
+}
+ 
+/**
+ * Converts the hex string to a byte array.
+ *
+ * @param hex the input
+ * @return the byte array output
+ * @throws {!InvalidArgumentsException}
+ * @static
+ */
+export function fromHex(hex: string): Uint8Array {
+  Iif (hex.length % 2 != 0) {
+    throw new InvalidArgumentsException(
+        'Hex string length must be multiple of 2');
+  }
+  const arr = new Uint8Array(hex.length / 2);
+  for (let i = 0; i < hex.length; i += 2) {
+    arr[i / 2] = parseInt(hex.substring(i, i + 2), 16);
+  }
+  return arr;
+}
+ 
+/**
+ * Converts a byte array to hex.
+ *
+ * @param bytes the byte array input
+ * @return hex the output
+ * @static
+ */
+export function toHex(bytes: Uint8Array): string {
+  let result = '';
+  for (let i = 0; i < bytes.length; i++) {
+    const hexByte = bytes[i].toString(16);
+    result += hexByte.length > 1 ? hexByte : '0' + hexByte;
+  }
+  return result;
+}
+ 
+/**
+ * Converts the Base64 string to a byte array.
+ *
+ * @param encoded the base64 string
+ * @param opt_webSafe True indicates we should use the alternative
+ *     alphabet, which does not require escaping for use in URLs.
+ * @return the byte array output
+ * @static
+ */
+export function fromBase64(encoded: string, opt_webSafe?: boolean): Uint8Array {
+  Iif (opt_webSafe) {
+    const normalBase64 = encoded.replace(/-/g, '+').replace(/_/g, '/');
+    return fromByteString(window.atob(normalBase64));
+  }
+  return fromByteString(window.atob(encoded));
+}
+ 
+/**
+ * Base64 encode a byte array.
+ *
+ * @param bytes the byte array input
+ * @param opt_webSafe True indicates we should use the alternative
+ *     alphabet, which does not require escaping for use in URLs.
+ * @return base64 output
+ * @static
+ */
+export function toBase64(bytes: Uint8Array, opt_webSafe?: boolean): string {
+  const encoded = window
+                      .btoa(
+                          /* padding */
+                          toByteString(bytes))
+                      .replace(/=/g, '');
+  Iif (opt_webSafe) {
+    return encoded.replace(/\+/g, '-').replace(/\//g, '_');
+  }
+  return encoded;
+}
+ 
+/**
+ * Converts a byte string to a byte array. Only support ASCII and Latin-1
+ * strings, does not support multi-byte characters.
+ *
+ * @param str the input
+ * @return the byte array output
+ * @static
+ */
+export function fromByteString(str: string): Uint8Array {
+  const output = [];
+  let p = 0;
+  for (let i = 0; i < str.length; i++) {
+    const c = str.charCodeAt(i);
+    output[p++] = c;
+  }
+  return new Uint8Array(output);
+}
+ 
+/**
+ * Turns a byte array into the string given by the concatenation of the
+ * characters to which the numbers correspond. Each byte is corresponding to a
+ * character. Does not support multi-byte characters.
+ *
+ * @param bytes Array of numbers representing
+ *     characters.
+ * @return Stringification of the array.
+ */
+export function toByteString(bytes: Uint8Array): string {
+  let str = '';
+  for (let i = 0; i < bytes.length; i += 1) {
+    str += String.fromCharCode(bytes[i]);
+  }
+  return str;
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/index.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/index.html new file mode 100644 index 00000000..8e0db9b2 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/tink/exception + + + + + + + + + +
+
+

All files schemaregistry/rules/encryption/tink/exception

+
+ +
+ 50% + Statements + 4/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/2 +
+ + +
+ 50% + Lines + 4/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
invalid_arguments_exception.ts +
+
50%2/4100%0/00%0/150%2/4
security_exception.ts +
+
50%2/4100%0/00%0/150%2/4
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/invalid_arguments_exception.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/invalid_arguments_exception.ts.html new file mode 100644 index 00000000..d0002f84 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/invalid_arguments_exception.ts.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/tink/exception/invalid_arguments_exception.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption/tink/exception invalid_arguments_exception.ts

+
+ +
+ 50% + Statements + 2/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 50% + Lines + 2/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +3x + 
/**
+ * @license
+ * Copyright 2020 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+ 
+ 
+/**
+ * Exception used when a function receives an invalid argument.
+ */
+export class InvalidArgumentsException extends Error {
+  constructor(message?: string) {
+    super(message);
+    Object.setPrototypeOf(this, InvalidArgumentsException.prototype);
+  }
+}
+InvalidArgumentsException.prototype.name = 'InvalidArgumentsException';
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/security_exception.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/security_exception.ts.html new file mode 100644 index 00000000..7c7b6f00 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/security_exception.ts.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/tink/exception/security_exception.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption/tink/exception security_exception.ts

+
+ +
+ 50% + Statements + 2/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 50% + Lines + 2/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +3x + 
/**
+ * @license
+ * Copyright 2020 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+ 
+ 
+/**
+ * The base class for all security exceptions.
+ */
+export class SecurityException extends Error {
+  constructor(message?: string) {
+    super(message);
+    Object.setPrototypeOf(this, SecurityException.prototype);
+  }
+}
+SecurityException.prototype.name = 'SecurityException';
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/hkdf.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/hkdf.ts.html new file mode 100644 index 00000000..845ea50d --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/tink/hkdf.ts.html @@ -0,0 +1,382 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/tink/hkdf.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption/tink hkdf.ts

+
+ +
+ 68.75% + Statements + 33/48 +
+ + +
+ 26.66% + Branches + 4/15 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 68.75% + Lines + 33/48 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100  +  +  +  +  +  +  +  +  +  +3x +  +3x +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +7x +  +  +7x +  +  +7x +  +  +  +  +  +  +  +7x +7x +  +  +7x +  +  +  +  +  +  +  +  +  +7x +7x +7x +7x +7x +  +7x +  +  +7x +7x +  +  +  +  +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +  +  +  +  +7x +7x +  +  +7x +  + 
/**
+ * @license
+ * Copyright 2020 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+ 
+ 
+/**
+ * @fileoverview An implementation of HKDF, RFC 5869.
+ */
+import {InvalidArgumentsException} from './exception/invalid_arguments_exception';
+ 
+import {fromRawKey as hmacFromRawKey} from './hmac';
+import * as Validators from './validators';
+ 
+/**
+ * Computes an HKDF.
+ *
+ * @param size The length of the generated pseudorandom string in
+ *     bytes. The maximal size is 255 * DigestSize, where DigestSize is the size
+ *     of the underlying HMAC.
+ * @param hash the name of the hash function. Accepted names are SHA-1,
+ *     SHA-256 and SHA-512
+ * @param ikm Input keying material.
+ * @param info Context and application specific
+ *     information (can be a zero-length array).
+ * @param opt_salt Salt value (a non-secret random
+ *     value). If not provided, it is set to a string of hash length zeros.
+ * @return Output keying material (okm).
+ */
+export async function compute(
+    size: number, hash: string, ikm: Uint8Array, info: Uint8Array,
+    opt_salt?: Uint8Array): Promise<Uint8Array> {
+  let digestSize;
+  Iif (!Number.isInteger(size)) {
+    throw new InvalidArgumentsException('size must be an integer');
+  }
+  Iif (size <= 0) {
+    throw new InvalidArgumentsException('size must be positive');
+  }
+  switch (hash) {
+    case 'SHA-1':
+      digestSize = 20;
+      Iif (size > 255 * 20) {
+        throw new InvalidArgumentsException('size too large');
+      }
+      break;
+    case 'SHA-256':
+      digestSize = 32;
+      Iif (size > 255 * 32) {
+        throw new InvalidArgumentsException('size too large');
+      }
+      break;
+    case 'SHA-512':
+      digestSize = 64;
+      Iif (size > 255 * 64) {
+        throw new InvalidArgumentsException('size too large');
+      }
+      break;
+    default:
+      throw new InvalidArgumentsException(hash + ' is not supported');
+  }
+  Validators.requireUint8Array(ikm);
+  Validators.requireUint8Array(info);
+  let salt = opt_salt;
+  if (opt_salt == null || salt === undefined || salt.length == 0) {
+    salt = new Uint8Array(digestSize);
+  }
+  Validators.requireUint8Array(salt);
+ 
+  // Extract.
+  let hmac = await hmacFromRawKey(hash, salt, digestSize);
+  const prk = await hmac.computeMac(
+      // Pseudorandom Key
+      ikm);
+ 
+  // Expand
+  hmac = await hmacFromRawKey(hash, prk, digestSize);
+  let ctr = 1;
+  let pos = 0;
+  let digest = new Uint8Array(0);
+  const result = new Uint8Array(size);
+  while (true) {
+    const input = new Uint8Array(digest.length + info.length + 1);
+    input.set(digest, 0);
+    input.set(info, digest.length);
+    input[input.length - 1] = ctr;
+    digest = await hmac.computeMac(input);
+    Iif (pos + digest.length < size) {
+      result.set(digest, pos);
+      pos += digest.length;
+      ctr++;
+    } else {
+      result.set(digest.subarray(0, size - pos), pos);
+      break;
+    }
+  }
+  return result;
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/hmac.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/hmac.ts.html new file mode 100644 index 00000000..5cc6de34 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/tink/hmac.ts.html @@ -0,0 +1,379 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/tink/hmac.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption/tink hmac.ts

+
+ +
+ 62.16% + Statements + 23/37 +
+ + +
+ 11.11% + Branches + 1/9 +
+ + +
+ 75% + Functions + 3/4 +
+ + +
+ 61.11% + Lines + 22/36 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99  +  +  +  +  +  +3x +3x +  +3x +3x +3x +  +  +  +  +  +3x +  +  +  +  +  +  +3x +  +  +  +  +  +14x +14x +14x +  +  +  +  +  +14x +14x +  +14x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +14x +14x +  +  +14x +  +  +  +14x +  +  +  +  +  +  +  +14x +  +  +  +14x +  +  +  +  +  +  +  +  +  +  +  +14x +  +  +  +14x +  + 
/**
+ * @license
+ * Copyright 2020 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+ 
+import {InvalidArgumentsException} from './exception/invalid_arguments_exception';
+import {Mac} from './mac';
+ 
+import * as Bytes from './bytes';
+import * as Validators from './validators';
+import * as crypto from 'crypto';
+ 
+/**
+ * The minimum tag size.
+ *
+ */
+const MIN_TAG_SIZE_IN_BYTES: number = 10;
+ 
+/**
+ * Implementation of HMAC.
+ *
+ * @final
+ */
+export class Hmac extends Mac {
+  /**
+   * @param hash accepted names are SHA-1, SHA-256 and SHA-512
+   * @param tagSize the size of the tag
+   */
+  constructor(
+      private readonly hash: string, private readonly key: CryptoKey,
+      private readonly tagSize: number) {
+    super();
+  }
+ 
+  /**
+   */
+  async computeMac(data: Uint8Array): Promise<Uint8Array> {
+    Validators.requireUint8Array(data);
+    const tag = await crypto.subtle.sign(
+        {'name': 'HMAC', 'hash': {'name': this.hash}}, this.key, data);
+    return new Uint8Array(tag.slice(0, this.tagSize));
+  }
+ 
+  /**
+   */
+  async verifyMac(tag: Uint8Array, data: Uint8Array): Promise<boolean> {
+    Validators.requireUint8Array(tag);
+    Validators.requireUint8Array(data);
+    const computedTag = await this.computeMac(data);
+    return Bytes.isEqual(tag, computedTag);
+  }
+}
+ 
+/**
+ * @param hash accepted names are SHA-1, SHA-256 and SHA-512
+ * @param tagSize the size of the tag
+ */
+export async function fromRawKey(
+    hash: string, key: Uint8Array, tagSize: number): Promise<Mac> {
+  Validators.requireUint8Array(key);
+  Iif (!Number.isInteger(tagSize)) {
+    throw new InvalidArgumentsException('invalid tag size, must be an integer');
+  }
+  Iif (tagSize < MIN_TAG_SIZE_IN_BYTES) {
+    throw new InvalidArgumentsException(
+        'tag too short, must be at least ' + MIN_TAG_SIZE_IN_BYTES + ' bytes');
+  }
+  switch (hash) {
+    case 'SHA-1':
+      Iif (tagSize > 20) {
+        throw new InvalidArgumentsException(
+            'tag too long, must not be larger than 20 bytes');
+      }
+      break;
+    case 'SHA-256':
+      Iif (tagSize > 32) {
+        throw new InvalidArgumentsException(
+            'tag too long, must not be larger than 32 bytes');
+      }
+      break;
+    case 'SHA-512':
+      Iif (tagSize > 64) {
+        throw new InvalidArgumentsException(
+            'tag too long, must not be larger than 64 bytes');
+      }
+      break;
+    default:
+      throw new InvalidArgumentsException(hash + ' is not supported');
+  }
+ 
+  // TODO(b/115974209): Add check that key.length > 16.
+  const cryptoKey = await crypto.subtle.importKey(
+      'raw', key,
+      {'name': 'HMAC', 'hash': {'name': hash}, 'length': key.length * 8}, false,
+      ['sign', 'verify']);
+  return new Hmac(hash, cryptoKey, tagSize);
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/index.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/index.html new file mode 100644 index 00000000..262a9df3 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/tink/index.html @@ -0,0 +1,236 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/tink + + + + + + + + + +
+
+

All files schemaregistry/rules/encryption/tink

+
+ +
+ 56.62% + Statements + 141/249 +
+ + +
+ 22.03% + Branches + 13/59 +
+ + +
+ 55.55% + Functions + 15/27 +
+ + +
+ 57.74% + Lines + 138/239 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
aead.ts +
+
100%1/1100%0/0100%0/0100%1/1
aes_gcm.ts +
+
94.73%36/3880%4/5100%4/494.73%36/38
aes_siv.ts +
+
83.33%10/12100%0/075%3/483.33%10/12
bytes.ts +
+
26.25%21/800%0/1111.11%1/926.76%19/71
hkdf.ts +
+
68.75%33/4826.66%4/15100%1/168.75%33/48
hmac.ts +
+
62.16%23/3711.11%1/975%3/461.11%22/36
mac.ts +
+
100%1/1100%0/0100%0/0100%1/1
random.ts +
+
87.5%7/866.66%2/3100%1/187.5%7/8
validators.ts +
+
37.5%9/2412.5%2/1650%2/437.5%9/24
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/mac.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/mac.ts.html new file mode 100644 index 00000000..bacef9af --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/tink/mac.ts.html @@ -0,0 +1,187 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/tink/mac.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption/tink mac.ts

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/**
+ * @license
+ * Copyright 2020 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+ 
+ 
+/**
+ * Interface for Message Authentication Codes (MAC).
+ *
+ * Security guarantees: Message Authentication Codes provide symmetric message
+ * authentication. Instances implementing this interface are secure against
+ * existential forgery under chosen plaintext attack, and can be deterministic
+ * or randomized. This interface should be used for authentication only, and not
+ * for other purposes like generation of pseudorandom bytes.
+ *
+ */
+export abstract class Mac {
+  /**
+   * Computes message authentication code (MAC) for `data`.
+   *
+   * @param data the data to compute MAC
+   * @return the MAC tag
+   */
+  abstract computeMac(data: Uint8Array): Promise<Uint8Array>;
+ 
+  /**
+   * Verifies whether `tag` is a correct authentication code for `data`.
+   *
+   * @param tag  the MAC tag
+   * @param data the data to compute MAC
+   */
+  abstract verifyMac(tag: Uint8Array, data: Uint8Array): Promise<boolean>;
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/aes_gcm_pb.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/aes_gcm_pb.ts.html new file mode 100644 index 00000000..6c256f6f --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/aes_gcm_pb.ts.html @@ -0,0 +1,307 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/tink/proto/aes_gcm_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption/tink/proto aes_gcm_pb.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  + 
// Copyright 2017 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+ 
+// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file rules/encryption/tink/proto/aes_gcm.proto (package google.crypto.tink, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
+import type { Message } from "@bufbuild/protobuf";
+ 
+/**
+ * Describes the file rules/encryption/tink/proto/aes_gcm.proto.
+ */
+export const file_rules_encryption_tink_proto_aes_gcm: GenFile = /*@__PURE__*/
+  fileDesc("CilydWxlcy9lbmNyeXB0aW9uL3RpbmsvcHJvdG8vYWVzX2djbS5wcm90bxISZ29vZ2xlLmNyeXB0by50aW5rIjQKD0Flc0djbUtleUZvcm1hdBIQCghrZXlfc2l6ZRgCIAEoDRIPCgd2ZXJzaW9uGAMgASgNIi8KCUFlc0djbUtleRIPCgd2ZXJzaW9uGAEgASgNEhEKCWtleV92YWx1ZRgDIAEoDEJYChxjb20uZ29vZ2xlLmNyeXB0by50aW5rLnByb3RvUAFaLWdpdGh1Yi5jb20vZ29vZ2xlL3RpbmsvcHJvdG8vYWVzX2djbV9nb19wcm90b6ICBlRJTktQQmIGcHJvdG8z");
+ 
+/**
+ * @generated from message google.crypto.tink.AesGcmKeyFormat
+ */
+export type AesGcmKeyFormat = Message<"google.crypto.tink.AesGcmKeyFormat"> & {
+  /**
+   * @generated from field: uint32 key_size = 2;
+   */
+  keySize: number;
+ 
+  /**
+   * @generated from field: uint32 version = 3;
+   */
+  version: number;
+};
+ 
+/**
+ * Describes the message google.crypto.tink.AesGcmKeyFormat.
+ * Use `create(AesGcmKeyFormatSchema)` to create a new message.
+ */
+export const AesGcmKeyFormatSchema: GenMessage<AesGcmKeyFormat> = /*@__PURE__*/
+  messageDesc(file_rules_encryption_tink_proto_aes_gcm, 0);
+ 
+/**
+ * @generated from message google.crypto.tink.AesGcmKey
+ */
+export type AesGcmKey = Message<"google.crypto.tink.AesGcmKey"> & {
+  /**
+   * @generated from field: uint32 version = 1;
+   */
+  version: number;
+ 
+  /**
+   * @generated from field: bytes key_value = 3;
+   */
+  keyValue: Uint8Array;
+};
+ 
+/**
+ * Describes the message google.crypto.tink.AesGcmKey.
+ * Use `create(AesGcmKeySchema)` to create a new message.
+ */
+export const AesGcmKeySchema: GenMessage<AesGcmKey> = /*@__PURE__*/
+  messageDesc(file_rules_encryption_tink_proto_aes_gcm, 1);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/aes_siv_pb.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/aes_siv_pb.ts.html new file mode 100644 index 00000000..b71e95ce --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/aes_siv_pb.ts.html @@ -0,0 +1,325 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/tink/proto/aes_siv_pb.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption/tink/proto aes_siv_pb.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  + 
// Copyright 2017 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+ 
+// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file rules/encryption/tink/proto/aes_siv.proto (package google.crypto.tink, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
+import type { Message } from "@bufbuild/protobuf";
+ 
+/**
+ * Describes the file rules/encryption/tink/proto/aes_siv.proto.
+ */
+export const file_rules_encryption_tink_proto_aes_siv: GenFile = /*@__PURE__*/
+  fileDesc("CilydWxlcy9lbmNyeXB0aW9uL3RpbmsvcHJvdG8vYWVzX3Npdi5wcm90bxISZ29vZ2xlLmNyeXB0by50aW5rIjQKD0Flc1NpdktleUZvcm1hdBIQCghrZXlfc2l6ZRgBIAEoDRIPCgd2ZXJzaW9uGAIgASgNIi8KCUFlc1NpdktleRIPCgd2ZXJzaW9uGAEgASgNEhEKCWtleV92YWx1ZRgCIAEoDEJPChxjb20uZ29vZ2xlLmNyeXB0by50aW5rLnByb3RvUAFaLWdpdGh1Yi5jb20vZ29vZ2xlL3RpbmsvcHJvdG8vYWVzX3Npdl9nb19wcm90b2IGcHJvdG8z");
+ 
+/**
+ * @generated from message google.crypto.tink.AesSivKeyFormat
+ */
+export type AesSivKeyFormat = Message<"google.crypto.tink.AesSivKeyFormat"> & {
+  /**
+   * Only valid value is: 64.
+   *
+   * @generated from field: uint32 key_size = 1;
+   */
+  keySize: number;
+ 
+  /**
+   * @generated from field: uint32 version = 2;
+   */
+  version: number;
+};
+ 
+/**
+ * Describes the message google.crypto.tink.AesSivKeyFormat.
+ * Use `create(AesSivKeyFormatSchema)` to create a new message.
+ */
+export const AesSivKeyFormatSchema: GenMessage<AesSivKeyFormat> = /*@__PURE__*/
+  messageDesc(file_rules_encryption_tink_proto_aes_siv, 0);
+ 
+/**
+ * key_type: type.googleapis.com/google.crypto.tink.AesSivKey
+ *
+ * @generated from message google.crypto.tink.AesSivKey
+ */
+export type AesSivKey = Message<"google.crypto.tink.AesSivKey"> & {
+  /**
+   * @generated from field: uint32 version = 1;
+   */
+  version: number;
+ 
+  /**
+   * First half is AES-CTR key, second is AES-SIV.
+   *
+   * @generated from field: bytes key_value = 2;
+   */
+  keyValue: Uint8Array;
+};
+ 
+/**
+ * Describes the message google.crypto.tink.AesSivKey.
+ * Use `create(AesSivKeySchema)` to create a new message.
+ */
+export const AesSivKeySchema: GenMessage<AesSivKey> = /*@__PURE__*/
+  messageDesc(file_rules_encryption_tink_proto_aes_siv, 1);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/index.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/index.html new file mode 100644 index 00000000..607ca26b --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/tink/proto + + + + + + + + + +
+
+

All files schemaregistry/rules/encryption/tink/proto

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
aes_gcm_pb.ts +
+
100%4/4100%0/0100%0/0100%4/4
aes_siv_pb.ts +
+
100%4/4100%0/0100%0/0100%4/4
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/random.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/random.ts.html new file mode 100644 index 00000000..6366501f --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/tink/random.ts.html @@ -0,0 +1,169 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/tink/random.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption/tink random.ts

+
+ +
+ 87.5% + Statements + 7/8 +
+ + +
+ 66.66% + Branches + 2/3 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 87.5% + Lines + 7/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29  +  +  +  +  +  +  +  +  +  +3x +3x +  +  +  +  +  +  +  +  +3x +8x +  +  +8x +8x +8x +  + 
/**
+ * @license
+ * Copyright 2020 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+ 
+ 
+/**
+ * @fileoverview Several simple wrappers of crypto.getRandomValues.
+ */
+import {InvalidArgumentsException} from './exception/invalid_arguments_exception';
+import * as crypto from 'crypto';
+ 
+/**
+ * Randomly generates `n` bytes.
+ *
+ * @param n number of bytes to generate
+ * @return the random bytes
+ * @static
+ */
+export function randBytes(n: number): Uint8Array {
+  Iif (!Number.isInteger(n) || n < 0) {
+    throw new InvalidArgumentsException('n must be a nonnegative integer');
+  }
+  const result = new Uint8Array(n);
+  crypto.getRandomValues(result);
+  return result;
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/validators.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/validators.ts.html new file mode 100644 index 00000000..7aba0a4e --- /dev/null +++ b/coverage/lcov-report/schemaregistry/rules/encryption/tink/validators.ts.html @@ -0,0 +1,334 @@ + + + + + + Code coverage report for schemaregistry/rules/encryption/tink/validators.ts + + + + + + + + + +
+
+

All files / schemaregistry/rules/encryption/tink validators.ts

+
+ +
+ 37.5% + Statements + 9/24 +
+ + +
+ 12.5% + Branches + 2/16 +
+ + +
+ 50% + Functions + 2/4 +
+ + +
+ 37.5% + Lines + 9/24 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84  +  +  +  +  +  +3x +3x +3x +  +  +  +  +  +  +  +  +  +3x +17x +  +  +  +  +  +  +  +  +  +  +3x +100x +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/**
+ * @license
+ * Copyright 2020 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+ 
+import {InvalidArgumentsException} from './exception/invalid_arguments_exception';
+import {SecurityException} from './exception/security_exception';
+const SUPPORTED_AES_KEY_SIZES: number[] = [16, 32];
+ 
+/**
+ * Validates AES key sizes, at the moment only 128-bit and 256-bit keys are
+ * supported.
+ *
+ * @param n the key size in bytes
+ * @throws {!InvalidArgumentsException}
+ * @static
+ */
+export function validateAesKeySize(n: number) {
+  Iif (!SUPPORTED_AES_KEY_SIZES.includes(n)) {
+    throw new InvalidArgumentsException('unsupported AES key size: ' + n);
+  }
+}
+ 
+/**
+ * Validates that the input is a non null Uint8Array.
+ *
+ * @throws {!InvalidArgumentsException}
+ * @static
+ */
+export function requireUint8Array(input: Uint8Array) {
+  Iif (input == null || !(input instanceof Uint8Array)) {
+    throw new InvalidArgumentsException('input must be a non null Uint8Array');
+  }
+}
+ 
+/**
+ * Validates version, throws exception if candidate version is negative or
+ * bigger than expected.
+ *
+ * @param candidate - version to be validated
+ * @param maxVersion - upper bound on version
+ * @throws {!SecurityException}
+ * @static
+ */
+export function validateVersion(candidate: number, maxVersion: number) {
+  Iif (candidate < 0 || candidate > maxVersion) {
+    throw new SecurityException(
+        'Version is out of bound, must be ' +
+        'between 0 and ' + maxVersion + '.');
+  }
+}
+ 
+/**
+ * Validates ECDSA parameters.
+ *
+ * @throws {!SecurityException}
+ */
+export function validateEcdsaParams(curve: string, hash: string) {
+  switch (curve) {
+    case 'P-256':
+      Iif (hash != 'SHA-256') {
+        throw new SecurityException(
+            'expected SHA-256 (because curve is P-256) but got ' + hash);
+      }
+      break;
+    case 'P-384':
+      Iif (hash != 'SHA-384' && hash != 'SHA-512') {
+        throw new SecurityException(
+            'expected SHA-384 or SHA-512 (because curve is P-384) but got ' +
+            hash);
+      }
+      break;
+    case 'P-521':
+      Iif (hash != 'SHA-512') {
+        throw new SecurityException(
+            'expected SHA-512 (because curve is P-521) but got ' + hash);
+      }
+      break;
+    default:
+      throw new SecurityException('unsupported curve: ' + curve);
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/schemaregistry-client.ts.html b/coverage/lcov-report/schemaregistry/schemaregistry-client.ts.html new file mode 100644 index 00000000..0272fe76 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/schemaregistry-client.ts.html @@ -0,0 +1,1921 @@ + + + + + + Code coverage report for schemaregistry/schemaregistry-client.ts + + + + + + + + + +
+
+

All files / schemaregistry schemaregistry-client.ts

+
+ +
+ 90.04% + Statements + 190/211 +
+ + +
+ 87.5% + Branches + 28/32 +
+ + +
+ 90.76% + Functions + 59/65 +
+ + +
+ 90.04% + Lines + 190/211 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +6135x +  +5x +5x +5x +5x +  +  +  +  +  +  +  +  +  +  +5x +5x +5x +5x +5x +5x +5x +5x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +5x +5x +5x +5x +5x +5x +5x +  +  +  +  +  +  +  +  +  +  +  +5x +99x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +5x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +26x +26x +  +  +  +  +26x +  +26x +26x +26x +26x +26x +26x +26x +26x +26x +26x +26x +26x +26x +26x +  +  +  +9x +9x +9x +  +  +  +  +  +  +  +  +  +5x +  +5x +  +  +  +10x +  +10x +10x +10x +4x +  +  +6x +  +6x +  +  +  +  +6x +6x +  +  +  +  +5x +5x +5x +5x +2x +  +  +3x +  +3x +  +3x +  +  +  +3x +3x +  +  +  +  +5x +  +5x +5x +5x +2x +  +  +3x +  +3x +  +  +  +  +3x +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +5x +  +5x +5x +5x +2x +  +  +3x +  +3x +  +  +  +3x +3x +  +  +  +  +5x +  +5x +5x +5x +2x +  +  +3x +  +3x +  +3x +6x +6x +6x +  +  +3x +  +  +  +3x +3x +  +  +  +  +  +1x +  +  +  +1x +  +  +  +5x +  +5x +5x +5x +2x +  +  +3x +  +3x +  +  +  +  +3x +3x +  +  +  +  +1x +  +  +  +1x +  +  +  +1x +1x +1x +1x +1x +  +  +  +  +1x +1x +1x +1x +1x +  +  +  +  +1x +1x +1x +1x +1x +  +  +  +  +1x +1x +1x +1x +1x +  +  +  +  +1x +  +1x +  +  +  +1x +  +  +  +1x +  +  +1x +1x +1x +1x +1x +  +1x +1x +1x +1x +1x +  +1x +1x +  +  +  +  +  +  +1x +1x +1x +  +  +1x +  +1x +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +1x +  +  +  +1x +  +  +  +1x +  +1x +  +  +  +  +1x +  +  +  +1x +  +  +  +1x +  +  +  +1x +  +  +  +  +1x +  +  +  +1x +  +1x +  +  +  +1x +  +  +  +1x +  +  +  +  +1x +  +  +  +1x +  +  +  +1x +  +  +  +1x +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +2x +2x +  +  +  +  +2x +2x +2x +  +  +  +  +2x +2x +2x +  +  +  +  +2x +2x +2x +  +  +  +  +2x +2x +  +  +  +  +2x +2x +  +  +  +  +2x +2x +  +  +  +  +2x +2x +  +  +  + 
import { RestService, ClientConfig } from './rest-service';
+import { AxiosResponse } from 'axios';
+import stringify from "json-stringify-deterministic";
+import { LRUCache } from 'lru-cache';
+import { Mutex } from 'async-mutex';
+import {MockClient} from "./mock-schemaregistry-client";
+ 
+/*
+ * Confluent-Schema-Registry-TypeScript - Node.js wrapper for Confluent Schema Registry
+ *
+ * Copyright (c) 2024 Confluent, Inc.
+ *
+ * This software may be modified and distributed under the terms
+ * of the MIT license.  See the LICENSE.txt file for details.
+ */
+ 
+export enum Compatibility {
+  NONE = "NONE",
+  BACKWARD = "BACKWARD",
+  FORWARD = "FORWARD",
+  FULL = "FULL",
+  BACKWARD_TRANSITIVE = "BACKWARD_TRANSITIVE",
+  FORWARD_TRANSITIVE = "FORWARD_TRANSITIVE",
+  FULL_TRANSITIVE = "FULL_TRANSITIVE"
+}
+ 
+export interface CompatibilityLevel {
+  compatibility?: Compatibility;
+  compatibilityLevel?: Compatibility;
+}
+ 
+export interface Rule {
+  name: string
+  doc?: string
+  kind?: string
+  mode?: RuleMode
+  type: string
+  tags?: string[]
+  params?: { [key: string]: string }
+  expr?: string
+  onSuccess?: string
+  onFailure?: string
+  disabled?: boolean
+}
+ 
+export enum RuleMode {
+  UPGRADE = 'UPGRADE',
+  DOWNGRADE = 'DOWNGRADE',
+  UPDOWN = 'UPDOWN',
+  WRITE = 'WRITE',
+  READ = 'READ',
+  WRITEREAD = 'WRITEREAD',
+}
+ 
+export interface SchemaInfo {
+  schema: string;
+  schemaType?: string;
+  references?: Reference[];
+  metadata?: Metadata;
+  ruleSet?: RuleSet;
+}
+ 
+// Ensure that SchemaMetadata fields are removed
+export function minimize(info: SchemaInfo): SchemaInfo {
+  return {
+    schemaType: info.schemaType,
+    schema: info.schema,
+    references: info.references,
+    metadata: info.metadata,
+    ruleSet: info.ruleSet
+  }
+}
+ 
+export interface SchemaMetadata extends SchemaInfo {
+  id: number;
+  subject?: string;
+  version?: number;
+}
+ 
+export interface Reference {
+  name: string;
+  subject: string;
+  version: number;
+}
+ 
+export interface Metadata {
+  tags?: { [key: string]: string[] };
+  properties?: { [key: string]: string };
+  sensitive?: string[];
+}
+ 
+export interface RuleSet {
+  migrationRules?: Rule[];
+  domainRules?: Rule[];
+}
+ 
+export interface ServerConfig {
+  alias?: string;
+  normalize?: boolean;
+  compatibility?: Compatibility;
+  compatibilityLevel?: Compatibility;
+  compatibilityGroup?: string;
+  defaultMetadata?: Metadata;
+  overrideMetadata?: Metadata;
+  defaultRuleSet?: RuleSet;
+  overrideRuleSet?: RuleSet;
+}
+ 
+export interface isCompatibleResponse {
+  is_compatible: boolean;
+}
+ 
+export interface Client {
+  config(): ClientConfig;
+  register(subject: string, schema: SchemaInfo, normalize: boolean): Promise<number>;
+  registerFullResponse(subject: string, schema: SchemaInfo, normalize: boolean): Promise<SchemaMetadata>;
+  getBySubjectAndId(subject: string, id: number, format?: string): Promise<SchemaInfo>;
+  getId(subject: string, schema: SchemaInfo, normalize: boolean): Promise<number>;
+  getLatestSchemaMetadata(subject: string): Promise<SchemaMetadata>;
+  getSchemaMetadata(subject: string, version: number, deleted: boolean): Promise<SchemaMetadata>;
+  getLatestWithMetadata(subject: string, metadata: { [key: string]: string }, deleted: boolean): Promise<SchemaMetadata>;
+  getAllVersions(subject: string): Promise<number[]>;
+  getVersion(subject: string, schema: SchemaInfo, normalize: boolean): Promise<number>;
+  getAllSubjects(): Promise<string[]>;
+  deleteSubject(subject: string, permanent: boolean): Promise<number[]>;
+  deleteSubjectVersion(subject: string, version: number, permanent: boolean): Promise<number>;
+  testSubjectCompatibility(subject: string, schema: SchemaInfo): Promise<boolean>;
+  testCompatibility(subject: string, version: number, schema: SchemaInfo): Promise<boolean>;
+  getCompatibility(subject: string): Promise<Compatibility>;
+  updateCompatibility(subject: string, update: Compatibility): Promise<Compatibility>;
+  getDefaultCompatibility(): Promise<Compatibility>;
+  updateDefaultCompatibility(update: Compatibility): Promise<Compatibility>;
+  getConfig(subject: string): Promise<ServerConfig>;
+  updateConfig(subject: string, update: ServerConfig): Promise<ServerConfig>;
+  getDefaultConfig(): Promise<ServerConfig>;
+  updateDefaultConfig(update: ServerConfig): Promise<ServerConfig>;
+  close(): void;
+}
+ 
+export class SchemaRegistryClient implements Client {
+  private clientConfig: ClientConfig;
+  private restService: RestService;
+ 
+  private schemaToIdCache: LRUCache<string, number>;
+  private idToSchemaInfoCache: LRUCache<string, SchemaInfo>;
+  private infoToSchemaCache: LRUCache<string, SchemaMetadata>;
+  private latestToSchemaCache: LRUCache<string, SchemaMetadata>;
+  private schemaToVersionCache: LRUCache<string, number>;
+  private versionToSchemaCache: LRUCache<string, SchemaMetadata>;
+  private metadataToSchemaCache: LRUCache<string, SchemaMetadata>;
+ 
+  private schemaToIdMutex: Mutex;
+  private idToSchemaInfoMutex: Mutex;
+  private infoToSchemaMutex: Mutex;
+  private latestToSchemaMutex: Mutex;
+  private schemaToVersionMutex: Mutex;
+  private versionToSchemaMutex: Mutex;
+  private metadataToSchemaMutex: Mutex;
+ 
+  constructor(config: ClientConfig) {
+    this.clientConfig = config
+    const cacheOptions = {
+      max: config.cacheCapacity,
+      ...(config.cacheLatestTtlSecs !== undefined && { maxAge: config.cacheLatestTtlSecs * 1000 })
+    };
+ 
+    this.restService = new RestService(config.baseURLs, config.isForward, config.createAxiosDefaults);
+ 
+    this.schemaToIdCache = new LRUCache(cacheOptions);
+    this.idToSchemaInfoCache = new LRUCache(cacheOptions);
+    this.infoToSchemaCache = new LRUCache(cacheOptions);
+    this.latestToSchemaCache = new LRUCache(cacheOptions);
+    this.schemaToVersionCache = new LRUCache(cacheOptions);
+    this.versionToSchemaCache = new LRUCache(cacheOptions);
+    this.metadataToSchemaCache = new LRUCache(cacheOptions);
+    this.schemaToIdMutex = new Mutex();
+    this.idToSchemaInfoMutex = new Mutex();
+    this.infoToSchemaMutex = new Mutex();
+    this.latestToSchemaMutex = new Mutex();
+    this.schemaToVersionMutex = new Mutex();
+    this.versionToSchemaMutex = new Mutex();
+    this.metadataToSchemaMutex = new Mutex();
+  }
+ 
+  static newClient(config: ClientConfig): Client {
+    let url = config.baseURLs[0]
+    if (url.startsWith("mock://")) {
+      return new MockClient(config)
+    }
+    return new SchemaRegistryClient(config)
+  }
+ 
+  config(): ClientConfig {
+    return this.clientConfig
+  }
+ 
+  async register(subject: string, schema: SchemaInfo, normalize: boolean = false): Promise<number> {
+    const metadataResult = await this.registerFullResponse(subject, schema, normalize);
+ 
+    return metadataResult.id;
+  }
+ 
+  async registerFullResponse(subject: string, schema: SchemaInfo, normalize: boolean = false): Promise<SchemaMetadata> {
+    const cacheKey = stringify({ subject, schema: minimize(schema) });
+ 
+    return await this.infoToSchemaMutex.runExclusive(async () => {
+      const cachedSchemaMetadata: SchemaMetadata | undefined = this.infoToSchemaCache.get(cacheKey);
+      if (cachedSchemaMetadata) {
+        return cachedSchemaMetadata;
+      }
+ 
+      subject = encodeURIComponent(subject);
+ 
+      const response: AxiosResponse<SchemaMetadata> = await this.restService.handleRequest(
+        `/subjects/${subject}/versions?normalize=${normalize}`,
+        'POST',
+        schema
+      );
+      this.infoToSchemaCache.set(cacheKey, response.data);
+      return response.data;
+    });
+  }
+ 
+  async getBySubjectAndId(subject: string, id: number, format?: string): Promise<SchemaInfo> {
+    const cacheKey = stringify({ subject, id });
+    return await this.idToSchemaInfoMutex.runExclusive(async () => {
+      const cachedSchema: SchemaInfo | undefined = this.idToSchemaInfoCache.get(cacheKey);
+      if (cachedSchema) {
+        return cachedSchema;
+      }
+ 
+      subject = encodeURIComponent(subject);
+ 
+      let formatStr = format != null ? `&format=${format}` : '';
+ 
+      const response: AxiosResponse<SchemaInfo> = await this.restService.handleRequest(
+        `/schemas/ids/${id}?subject=${subject}${formatStr}`,
+        'GET'
+      );
+      this.idToSchemaInfoCache.set(cacheKey, response.data);
+      return response.data;
+    });
+  }
+ 
+  async getId(subject: string, schema: SchemaInfo, normalize: boolean = false): Promise<number> {
+    const cacheKey = stringify({ subject, schema: minimize(schema) });
+ 
+    return await this.schemaToIdMutex.runExclusive(async () => {
+      const cachedId: number | undefined = this.schemaToIdCache.get(cacheKey);
+      if (cachedId) {
+        return cachedId;
+      }
+ 
+      subject = encodeURIComponent(subject);
+ 
+      const response: AxiosResponse<SchemaMetadata> = await this.restService.handleRequest(
+        `/subjects/${subject}?normalize=${normalize}`,
+        'POST',
+        schema
+      );
+      this.schemaToIdCache.set(cacheKey, response.data.id);
+      return response.data.id;
+    });
+  }
+ 
+  async getLatestSchemaMetadata(subject: string): Promise<SchemaMetadata> {
+    return await this.latestToSchemaMutex.runExclusive(async () => {
+      const cachedSchema: SchemaMetadata | undefined = this.latestToSchemaCache.get(subject);
+      Iif (cachedSchema) {
+        return cachedSchema;
+      }
+ 
+      subject = encodeURIComponent(subject);
+ 
+      const response: AxiosResponse<SchemaMetadata> = await this.restService.handleRequest(
+        `/subjects/${subject}/versions/latest`,
+        'GET'
+      );
+      this.latestToSchemaCache.set(subject, response.data);
+      return response.data;
+    });
+  }
+ 
+  async getSchemaMetadata(subject: string, version: number, deleted: boolean = false): Promise<SchemaMetadata> {
+    const cacheKey = stringify({ subject, version, deleted });
+ 
+    return await this.versionToSchemaMutex.runExclusive(async () => {
+      const cachedSchemaMetadata: SchemaMetadata | undefined = this.versionToSchemaCache.get(cacheKey);
+      if (cachedSchemaMetadata) {
+        return cachedSchemaMetadata;
+      }
+ 
+      subject = encodeURIComponent(subject);
+ 
+      const response: AxiosResponse<SchemaMetadata> = await this.restService.handleRequest(
+        `/subjects/${subject}/versions/${version}?deleted=${deleted}`,
+        'GET'
+      );
+      this.versionToSchemaCache.set(cacheKey, response.data);
+      return response.data;
+    });
+  }
+ 
+  async getLatestWithMetadata(subject: string, metadata: { [key: string]: string }, deleted: boolean = false): Promise<SchemaMetadata> {
+    const cacheKey = stringify({ subject, metadata, deleted });
+ 
+    return await this.metadataToSchemaMutex.runExclusive(async () => {
+      const cachedSchemaMetadata: SchemaMetadata | undefined = this.metadataToSchemaCache.get(cacheKey);
+      if (cachedSchemaMetadata) {
+        return cachedSchemaMetadata;
+      }
+ 
+      subject = encodeURIComponent(subject);
+ 
+      let metadataStr = '';
+ 
+      for (const key in metadata) {
+        const encodedKey = encodeURIComponent(key);
+        const encodedValue = encodeURIComponent(metadata[key]);
+        metadataStr += `&key=${encodedKey}&value=${encodedValue}`;
+      }
+ 
+      const response: AxiosResponse<SchemaMetadata> = await this.restService.handleRequest(
+        `/subjects/${subject}/metadata?deleted=${deleted}&${metadataStr}`,
+        'GET'
+      );
+      this.metadataToSchemaCache.set(cacheKey, response.data);
+      return response.data;
+    });
+  }
+ 
+ 
+  async getAllVersions(subject: string): Promise<number[]> {
+    const response: AxiosResponse<number[]> = await this.restService.handleRequest(
+      `/subjects/${subject}/versions`,
+      'GET'
+    );
+    return response.data;
+  }
+ 
+  async getVersion(subject: string, schema: SchemaInfo, normalize: boolean = false): Promise<number> {
+    const cacheKey = stringify({ subject, schema: minimize(schema) });
+ 
+    return await this.schemaToVersionMutex.runExclusive(async () => {
+      const cachedVersion: number | undefined = this.schemaToVersionCache.get(cacheKey);
+      if (cachedVersion) {
+        return cachedVersion;
+      }
+ 
+      subject = encodeURIComponent(subject);
+ 
+      const response: AxiosResponse<SchemaMetadata> = await this.restService.handleRequest(
+        `/subjects/${subject}?normalize=${normalize}`,
+        'POST',
+        schema
+      );
+      this.schemaToVersionCache.set(cacheKey, response.data.version);
+      return response.data.version!;
+    });
+  }
+ 
+  async getAllSubjects(): Promise<string[]> {
+    const response: AxiosResponse<string[]> = await this.restService.handleRequest(
+      `/subjects`,
+      'GET'
+    );
+    return response.data;
+  }
+ 
+  async deleteSubject(subject: string, permanent: boolean = false): Promise<number[]> {
+    await this.infoToSchemaMutex.runExclusive(async () => {
+      this.infoToSchemaCache.forEach((_, key) => {
+        const parsedKey = JSON.parse(key);
+        if (parsedKey.subject === subject) {
+          this.infoToSchemaCache.delete(key);
+        }
+      });
+    });
+ 
+    await this.schemaToVersionMutex.runExclusive(async () => {
+      this.schemaToVersionCache.forEach((_, key) => {
+        const parsedKey = JSON.parse(key);
+        if (parsedKey.subject === subject) {
+          this.schemaToVersionCache.delete(key);
+        }
+      });
+    });
+ 
+    await this.versionToSchemaMutex.runExclusive(async () => {
+      this.versionToSchemaCache.forEach((_, key) => {
+        const parsedKey = JSON.parse(key);
+        if (parsedKey.subject === subject) {
+          this.versionToSchemaCache.delete(key);
+        }
+      });
+    });
+ 
+    await this.idToSchemaInfoMutex.runExclusive(async () => {
+      this.idToSchemaInfoCache.forEach((_, key) => {
+        const parsedKey = JSON.parse(key);
+        if (parsedKey.subject === subject) {
+          this.idToSchemaInfoCache.delete(key);
+        }
+      });
+    });
+ 
+    subject = encodeURIComponent(subject);
+ 
+    const response: AxiosResponse<number[]> = await this.restService.handleRequest(
+      `/subjects/${subject}?permanent=${permanent}`,
+      'DELETE'
+    );
+    return response.data;
+  }
+ 
+  async deleteSubjectVersion(subject: string, version: number, permanent: boolean = false): Promise<number> {
+    return await this.schemaToVersionMutex.runExclusive(async () => {
+      let metadataValue: SchemaMetadata | undefined;
+ 
+      this.schemaToVersionCache.forEach((value, key) => {
+        const parsedKey = JSON.parse(key);
+        if (parsedKey.subject === subject && value === version) {
+          this.schemaToVersionCache.delete(key);
+          const infoToSchemaCacheKey = stringify({ subject: subject, schema: minimize(parsedKey.schema) });
+ 
+          this.infoToSchemaMutex.runExclusive(async () => {
+            metadataValue = this.infoToSchemaCache.get(infoToSchemaCacheKey);
+            if (metadataValue) {
+              this.infoToSchemaCache.delete(infoToSchemaCacheKey);
+              const cacheKeyID = stringify({ subject: subject, id: metadataValue.id });
+ 
+              this.idToSchemaInfoMutex.runExclusive(async () => {
+                this.idToSchemaInfoCache.delete(cacheKeyID);
+              });
+            }
+          });
+        }
+      });
+ 
+      const cacheKey = stringify({ subject: subject, version: version });
+      this.versionToSchemaMutex.runExclusive(async () => {
+        this.versionToSchemaCache.delete(cacheKey);
+      });
+ 
+      subject = encodeURIComponent(subject);
+ 
+      const response: AxiosResponse<number> = await this.restService.handleRequest(
+        `/subjects/${subject}/versions/${version}?permanent=${permanent}`,
+        'DELETE'
+      );
+      return response.data;
+    });
+  }
+ 
+  async testSubjectCompatibility(subject: string, schema: SchemaInfo): Promise<boolean> {
+    subject = encodeURIComponent(subject);
+ 
+    const response: AxiosResponse<isCompatibleResponse> = await this.restService.handleRequest(
+      `/compatibility/subjects/${subject}/versions/latest`,
+      'POST',
+      schema
+    );
+    return response.data.is_compatible;
+  }
+ 
+  async testCompatibility(subject: string, version: number, schema: SchemaInfo): Promise<boolean> {
+    subject = encodeURIComponent(subject);
+ 
+    const response: AxiosResponse<isCompatibleResponse> = await this.restService.handleRequest(
+      `/compatibility/subjects/${subject}/versions/${version}`,
+      'POST',
+      schema
+    );
+    return response.data.is_compatible;
+  }
+ 
+  async getCompatibility(subject: string): Promise<Compatibility> {
+    subject = encodeURIComponent(subject);
+ 
+    const response: AxiosResponse<CompatibilityLevel> = await this.restService.handleRequest(
+      `/config/${subject}`,
+      'GET'
+    );
+    return response.data.compatibilityLevel!;
+  }
+ 
+  async updateCompatibility(subject: string, update: Compatibility): Promise<Compatibility> {
+    subject = encodeURIComponent(subject);
+ 
+    const response: AxiosResponse<CompatibilityLevel> = await this.restService.handleRequest(
+      `/config/${subject}`,
+      'PUT',
+      { compatibility: update }
+    );
+    return response.data.compatibility!;
+  }
+ 
+  async getDefaultCompatibility(): Promise<Compatibility> {
+    const response: AxiosResponse<CompatibilityLevel> = await this.restService.handleRequest(
+      `/config`,
+      'GET'
+    );
+    return response.data.compatibilityLevel!;
+  }
+ 
+  async updateDefaultCompatibility(update: Compatibility): Promise<Compatibility> {
+    const response: AxiosResponse<CompatibilityLevel> = await this.restService.handleRequest(
+      `/config`,
+      'PUT',
+      { compatibility: update }
+    );
+    return response.data.compatibility!;
+  }
+ 
+  async getConfig(subject: string): Promise<ServerConfig> {
+    subject = encodeURIComponent(subject);
+ 
+    const response: AxiosResponse<ServerConfig> = await this.restService.handleRequest(
+      `/config/${subject}`,
+      'GET'
+    );
+    return response.data;
+  }
+ 
+  async updateConfig(subject: string, update: ServerConfig): Promise<ServerConfig> {
+    const response: AxiosResponse<ServerConfig> = await this.restService.handleRequest(
+      `/config/${subject}`,
+      'PUT',
+      update
+    );
+    return response.data;
+  }
+ 
+  async getDefaultConfig(): Promise<ServerConfig> {
+    const response: AxiosResponse<ServerConfig> = await this.restService.handleRequest(
+      `/config`,
+      'GET'
+    );
+    return response.data;
+  }
+ 
+  async updateDefaultConfig(update: ServerConfig): Promise<ServerConfig> {
+    const response: AxiosResponse<ServerConfig> = await this.restService.handleRequest(
+      `/config`,
+      'PUT',
+      update
+    );
+    return response.data;
+  }
+ 
+  close(): void {
+    this.infoToSchemaCache.clear();
+    this.schemaToVersionCache.clear();
+    this.versionToSchemaCache.clear();
+    this.idToSchemaInfoCache.clear();
+ 
+    return;
+  }
+ 
+  // Cache methods for testing
+  async addToInfoToSchemaCache(subject: string, schema: SchemaInfo, metadata: SchemaMetadata): Promise<void> {
+    const cacheKey = stringify({ subject, schema: minimize(schema) });
+    await this.infoToSchemaMutex.runExclusive(async () => {
+      this.infoToSchemaCache.set(cacheKey, metadata);
+    });
+  }
+ 
+  async addToSchemaToVersionCache(subject: string, schema: SchemaInfo, version: number): Promise<void> {
+    const cacheKey = stringify({ subject, schema: minimize(schema) });
+    await this.schemaToVersionMutex.runExclusive(async () => {
+      this.schemaToVersionCache.set(cacheKey, version);
+    });
+  }
+ 
+  async addToVersionToSchemaCache(subject: string, version: number, metadata: SchemaMetadata): Promise<void> {
+    const cacheKey = stringify({ subject, version });
+    await this.versionToSchemaMutex.runExclusive(async () => {
+      this.versionToSchemaCache.set(cacheKey, metadata);
+    });
+  }
+ 
+  async addToIdToSchemaInfoCache(subject: string, id: number, schema: SchemaInfo): Promise<void> {
+    const cacheKey = stringify({ subject, id });
+    await this.idToSchemaInfoMutex.runExclusive(async () => {
+      this.idToSchemaInfoCache.set(cacheKey, schema);
+    });
+  }
+ 
+  async getInfoToSchemaCacheSize(): Promise<number> {
+    return await this.infoToSchemaMutex.runExclusive(async () => {
+      return this.infoToSchemaCache.size;
+    });
+  }
+ 
+  async getSchemaToVersionCacheSize(): Promise<number> {
+    return await this.schemaToVersionMutex.runExclusive(async () => {
+      return this.schemaToVersionCache.size;
+    });
+  }
+ 
+  async getVersionToSchemaCacheSize(): Promise<number> {
+    return await this.versionToSchemaMutex.runExclusive(async () => {
+      return this.versionToSchemaCache.size;
+    });
+  }
+ 
+  async getIdToSchemaInfoCacheSize(): Promise<number> {
+    return await this.idToSchemaInfoMutex.runExclusive(async () => {
+      return this.idToSchemaInfoCache.size;
+    });
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/avro.ts.html b/coverage/lcov-report/schemaregistry/serde/avro.ts.html new file mode 100644 index 00000000..5043660e --- /dev/null +++ b/coverage/lcov-report/schemaregistry/serde/avro.ts.html @@ -0,0 +1,1243 @@ + + + + + + Code coverage report for schemaregistry/serde/avro.ts + + + + + + + + + +
+
+

All files / schemaregistry/serde avro.ts

+
+ +
+ 69.31% + Statements + 131/189 +
+ + +
+ 52.32% + Branches + 45/86 +
+ + +
+ 88% + Functions + 22/25 +
+ + +
+ 70.27% + Lines + 130/185 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +3871x +  +  +  +  +  +  +  +1x +  +  +  +1x +  +  +  +  +  +  +1x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +2x +2x +2x +1x +  +2x +2x +  +  +  +  +2x +  +  +2x +  +  +  +2x +2x +  +  +  +2x +  +2x +2x +2x +  +2x +2x +  +  +  +1x +1x +  +  +  +3x +2x +2x +2x +  +  +  +  +  +  +1x +  +  +  +5x +5x +5x +4x +  +5x +5x +  +  +  +  +5x +  +  +5x +  +  +  +5x +5x +5x +5x +5x +  +  +5x +  +  +5x +5x +  +  +  +5x +  +  +  +  +  +  +  +5x +  +  +  +5x +  +  +5x +  +5x +  +5x +  +  +  +4x +4x +  +  +  +9x +5x +5x +5x +  +  +  +  +  +  +  +  +  +  +  +12x +12x +5x +  +  +7x +  +7x +  +  +  +53x +  +  +53x +  +  +53x +  +  +7x +7x +  +  +  +7x +7x +  +  +  +18x +  +  +18x +18x +13x +  +18x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +5x +5x +5x +13x +  +5x +  +13x +13x +13x +7x +  +  +6x +  +  +  +  +  +  +  +  +  +  +  +13x +13x +13x +  +  +  +  +  +  +13x +13x +  +  +  +  +13x +  +  +13x +  +  +  +  +26x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +10x +  +4x +  +4x +  +  +  +  +  +  +4x +  +4x +  +  +  +  +  +  +  +  +13x +13x +7x +  +  +6x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +7x +7x +7x +  +  +7x +  +  +  +  +30x +23x +7x +  +  +  +7x +7x +7x +7x +7x +7x +7x +  +7x +7x +  +7x +  +  +7x +7x +23x +23x +23x +7x +  +23x +23x +23x +  +  +  +  +  +  +  +7x +7x +  + 
import {
+  Deserializer, DeserializerConfig,
+  FieldTransform,
+  FieldType, Migration, RefResolver,
+  RuleConditionError,
+  RuleContext, SerdeType,
+  Serializer, SerializerConfig
+} from "./serde";
+import {
+  Client, RuleMode,
+  SchemaInfo
+} from "../schemaregistry-client";
+import avro, { ForSchemaOptions, Type, types } from "avsc";
+import UnwrappedUnionType = types.UnwrappedUnionType
+import WrappedUnionType = types.WrappedUnionType
+import ArrayType = types.ArrayType
+import MapType = types.MapType
+import RecordType = types.RecordType
+import Field = types.Field
+import { LRUCache } from 'lru-cache'
+import {getRuleExecutors} from "./rule-registry";
+import stringify from "json-stringify-deterministic";
+ 
+type TypeHook = (schema: avro.Schema, opts: ForSchemaOptions) => Type | undefined
+ 
+export type AvroSerdeConfig = Partial<ForSchemaOptions>
+ 
+export interface AvroSerde {
+  schemaToTypeCache: LRUCache<string, [avro.Type, Map<string, string>]>
+}
+ 
+export type AvroSerializerConfig = SerializerConfig & AvroSerdeConfig
+ 
+export class AvroSerializer extends Serializer implements AvroSerde {
+  schemaToTypeCache: LRUCache<string, [avro.Type, Map<string, string>]>
+ 
+  constructor(client: Client, serdeType: SerdeType, conf: AvroSerializerConfig) {
+    super(client, serdeType, conf)
+    this.schemaToTypeCache = new LRUCache<string, [Type, Map<string, string>]>({ max: this.conf.cacheCapacity ?? 1000 })
+    this.fieldTransformer = async (ctx: RuleContext, fieldTransform: FieldTransform, msg: any) => {
+      return await this.fieldTransform(ctx, fieldTransform, msg)
+    }
+    for (const rule of getRuleExecutors()) {
+      rule.configure(client.config(), new Map<string, string>(Object.entries(conf.ruleConfig ?? {})))
+    }
+  }
+ 
+  async serialize(topic: string, msg: any): Promise<Buffer> {
+    Iif (this.client == null) {
+      throw new Error('client is not initialized')
+    }
+    Iif (msg == null) {
+      throw new Error('message is empty')
+    }
+ 
+    let avroSchema = Type.forValue(msg)
+    const schema: SchemaInfo = {
+      schemaType: 'AVRO',
+      schema: JSON.stringify(avroSchema),
+    }
+    const [id, info] = await this.getId(topic, msg, schema)
+    let deps: Map<string, string>
+    [avroSchema, deps] = await this.toType(info)
+    const subject = this.subjectName(topic, info)
+    msg = await this.executeRules(
+      subject, topic, RuleMode.WRITE, null, info, msg, getInlineTags(info, deps))
+    const msgBytes = avroSchema.toBuffer(msg)
+    return this.writeBytes(id, msgBytes)
+  }
+ 
+  async fieldTransform(ctx: RuleContext, fieldTransform: FieldTransform, msg: any): Promise<any> {
+    const [schema, ] = await this.toType(ctx.target)
+    return await transform(ctx, schema, msg, fieldTransform)
+  }
+ 
+  async toType(info: SchemaInfo): Promise<[Type, Map<string, string>]> {
+    return toType(this.client, this.conf as AvroDeserializerConfig, this, info, async (client, info) => {
+      const deps = new Map<string, string>()
+      await this.resolveReferences(client, info, deps)
+      return deps
+    })
+  }
+}
+ 
+export type AvroDeserializerConfig = DeserializerConfig & AvroSerdeConfig
+ 
+export class AvroDeserializer extends Deserializer implements AvroSerde {
+  schemaToTypeCache: LRUCache<string, [avro.Type, Map<string, string>]>
+ 
+  constructor(client: Client, serdeType: SerdeType, conf: AvroDeserializerConfig) {
+    super(client, serdeType, conf)
+    this.schemaToTypeCache = new LRUCache<string, [Type, Map<string, string>]>({ max: this.conf.cacheCapacity ?? 1000 })
+    this.fieldTransformer = async (ctx: RuleContext, fieldTransform: FieldTransform, msg: any) => {
+      return await this.fieldTransform(ctx, fieldTransform, msg)
+    }
+    for (const rule of getRuleExecutors()) {
+      rule.configure(client.config(), new Map<string, string>(Object.entries(conf.ruleConfig ?? {})))
+    }
+  }
+ 
+  async deserialize(topic: string, payload: Buffer): Promise<any> {
+    Iif (!Buffer.isBuffer(payload)) {
+      throw new Error('Invalid buffer')
+    }
+    Iif (payload.length === 0) {
+      return null
+    }
+ 
+    const info = await this.getSchema(topic, payload)
+    const subject = this.subjectName(topic, info)
+    const readerMeta = await this.getReaderSchema(subject)
+    let migrations: Migration[] = []
+    Iif (readerMeta != null) {
+      migrations = await this.getMigrations(subject, info, readerMeta)
+    }
+    const [writer, deps] = await this.toType(info)
+ 
+    let msg: any
+    const msgBytes = payload.subarray(5)
+    Iif (migrations.length > 0) {
+      msg = writer.fromBuffer(msgBytes)
+      msg = await this.executeMigrations(migrations, subject, topic, msg)
+    } else {
+      Iif (readerMeta != null) {
+        const [reader, ] = await this.toType(readerMeta)
+        if (reader.equals(writer)) {
+          msg = reader.fromBuffer(msgBytes)
+        } else {
+          msg = reader.fromBuffer(msgBytes, reader.createResolver(writer))
+        }
+      } else {
+        msg = writer.fromBuffer(msgBytes)
+      }
+    }
+    let target: SchemaInfo
+    Iif (readerMeta != null) {
+      target = readerMeta
+    } else {
+      target = info
+    }
+    msg = await this.executeRules(
+      subject, topic, RuleMode.READ, null, target, msg, getInlineTags(info, deps))
+    return msg
+  }
+ 
+  async fieldTransform(ctx: RuleContext, fieldTransform: FieldTransform, msg: any): Promise<any> {
+    const [schema, ] = await this.toType(ctx.target)
+    return await transform(ctx, schema, msg, fieldTransform)
+  }
+ 
+  async toType(info: SchemaInfo): Promise<[Type, Map<string, string>]> {
+    return toType(this.client, this.conf as AvroDeserializerConfig, this, info, async (client, info) => {
+      const deps = new Map<string, string>()
+      await this.resolveReferences(client, info, deps)
+      return deps
+    })
+  }
+}
+ 
+async function toType(
+  client: Client,
+  conf: AvroSerdeConfig,
+  serde: AvroSerde,
+  info: SchemaInfo,
+  refResolver: RefResolver,
+): Promise<[Type, Map<string, string>]> {
+  let tuple = serde.schemaToTypeCache.get(stringify(info.schema))
+  if (tuple != null) {
+    return tuple
+  }
+ 
+  const deps = await refResolver(client, info)
+ 
+  const addReferencedSchemas = (userHook?: TypeHook): TypeHook | undefined => (
+    schema: avro.Schema,
+    opts: ForSchemaOptions,
+  ) => {
+    deps.forEach((_name, schema) => {
+      avro.Type.forSchema(JSON.parse(schema), opts)
+    })
+    Iif (userHook) {
+      return userHook(schema, opts)
+    }
+    return
+  }
+ 
+  const avroOpts = conf
+  let type = avro.Type.forSchema(JSON.parse(info.schema), {
+    ...avroOpts,
+    typeHook: addReferencedSchemas(avroOpts?.typeHook),
+  })
+  serde.schemaToTypeCache.set(stringify(info.schema), [type, deps])
+  return [type, deps]
+}
+ 
+async function transform(ctx: RuleContext, schema: Type, msg: any, fieldTransform: FieldTransform): Promise<any> {
+  Iif (msg == null || schema == null) {
+    return msg
+  }
+  const fieldCtx = ctx.currentField()
+  if (fieldCtx != null) {
+    fieldCtx.type = getType(schema)
+  }
+  switch (schema.typeName) {
+    case 'union:unwrapped':
+    case 'union:wrapped':
+      const subschema = resolveUnion(schema, msg)
+      Iif (subschema == null) {
+        return null
+      }
+      return await transform(ctx, subschema, msg, fieldTransform)
+    case 'array':
+      const arraySchema = schema as ArrayType
+      const array = msg as any[]
+      return await Promise.all(array.map(item => transform(ctx, arraySchema.itemsType, item, fieldTransform)))
+    case 'map':
+      const mapSchema = schema as MapType
+      const map = msg as Map<string, any>
+      for (const key of Object.keys(map)) {
+        map.set(key, await transform(ctx, mapSchema.valuesType, map.get(key), fieldTransform))
+      }
+      return map
+    case 'record':
+      const recordSchema = schema as RecordType
+      const record = msg as Record<string, any>
+      for (const field of recordSchema.fields) {
+        await transformField(ctx, recordSchema, field, record, record[field.name], fieldTransform)
+      }
+      return record
+    default:
+      if (fieldCtx != null) {
+        const ruleTags = ctx.rule.tags ?? []
+        if (ruleTags == null || ruleTags.length === 0 || !disjoint(new Set<string>(ruleTags), fieldCtx.tags)) {
+          return await fieldTransform.transform(ctx, fieldCtx, msg)
+        }
+      }
+      return msg
+  }
+}
+ 
+async function transformField(
+  ctx: RuleContext,
+  recordSchema: RecordType,
+  field: Field,
+  record: Record<string, any>,
+  val: any,
+  fieldTransform: FieldTransform,
+): Promise<void> {
+  const fullName = recordSchema.name + '.' + field.name
+  try {
+    ctx.enterField(
+      val,
+      fullName,
+      field.name,
+      getType(field.type),
+      ctx.getInlineTags(fullName),
+    )
+    const newVal = await transform(ctx, field.type, record[field.name], fieldTransform)
+    Iif (ctx.rule.kind === 'CONDITION') {
+      Iif (!newVal) {
+        throw new RuleConditionError(ctx.rule)
+      }
+    } else {
+      record[field.name] = newVal
+    }
+  } finally {
+    ctx.leaveField()
+  }
+}
+ 
+function getType(schema: Type): FieldType {
+  switch (schema.typeName) {
+    case 'record':
+      return FieldType.RECORD
+    case 'enum':
+      return FieldType.ENUM
+    case 'array':
+      return FieldType.ARRAY
+    case 'map':
+      return FieldType.MAP
+    case 'union:unwrapped':
+    case 'union:wrapped':
+      return FieldType.COMBINED
+    case 'fixed':
+      return FieldType.FIXED
+    case 'string':
+      return FieldType.STRING
+    case 'bytes':
+      return FieldType.BYTES
+    case 'int':
+      return FieldType.INT
+    case 'abstract:long':
+    case 'long':
+      return FieldType.LONG
+    case 'float':
+      return FieldType.FLOAT
+    case 'double':
+      return FieldType.DOUBLE
+    case 'boolean':
+      return FieldType.BOOLEAN
+    case 'null':
+      return FieldType.NULL
+    default:
+      return FieldType.NULL
+  }
+}
+ 
+function disjoint(slice1: Set<string>, map1: Set<string>): boolean {
+  for (const v of slice1) {
+    if (map1.has(v)) {
+      return false
+    }
+  }
+  return true
+}
+ 
+function resolveUnion(schema: Type, msg: any): Type | null {
+  let unionTypes = null
+  if (schema.typeName === 'union:unwrapped') {
+    const union = schema as UnwrappedUnionType
+    unionTypes = union.types.slice()
+  } else Iif (schema.typeName === 'union:wrapped') {
+    const union = schema as WrappedUnionType
+    unionTypes = union.types.slice()
+  }
+  Iif (unionTypes != null) {
+    for (let i = 0; i < unionTypes.length; i++) {
+      Iif (unionTypes[i].isValid(msg)) {
+        return unionTypes[i]
+      }
+    }
+  }
+  return null
+}
+ 
+function getInlineTags(info: SchemaInfo, deps: Map<string, string>): Map<string, Set<string>> {
+  const inlineTags = new Map<string, Set<string>>()
+  getInlineTagsRecursively('', '', JSON.parse(info.schema), inlineTags)
+  for (const depSchema of Object.values(deps)) {
+    getInlineTagsRecursively('', '', JSON.parse(depSchema), inlineTags)
+  }
+  return inlineTags
+}
+ 
+// iterate over the object and get all properties named 'confluent:tags'
+function getInlineTagsRecursively(ns: string, name: string, schema: any, tags: Map<string, Set<string>>): void {
+  if (schema == null || typeof schema === 'string') {
+    return
+  } else Iif (Array.isArray(schema)) {
+    for (let i = 0; i < schema.length; i++) {
+      getInlineTagsRecursively(ns, name, schema[i], tags)
+    }
+  } else if (typeof schema === 'object') {
+    const type = schema['type']
+    if (type === 'record') {
+      let recordNs = schema['namespace']
+      let recordName = schema['name']
+      if (recordNs === undefined) {
+        recordNs = impliedNamespace(name)
+      }
+      if (recordNs == null) {
+        recordNs = ns
+      }
+      Iif (recordNs !== '' && !recordName.startsWith(recordNs)) {
+        recordName = recordNs + '.' + recordName
+      }
+      const fields = schema['fields']
+      for (const field of fields) {
+        const fieldTags = field['confluent:tags']
+        const fieldName = field['name']
+        if (fieldTags !== undefined && fieldName !== undefined) {
+          tags.set(recordName + '.' + fieldName, new Set(fieldTags))
+        }
+        const fieldType = field['type']
+        if (fieldType !== undefined) {
+          getInlineTagsRecursively(recordNs, recordName, fieldType, tags)
+        }
+      }
+    }
+  }
+}
+ 
+function impliedNamespace(name: string): string | null {
+  const match = /^(.*)\.[^.]+$/.exec(name)
+  return match ? match[1] : null
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/buffer-wrapper.ts.html b/coverage/lcov-report/schemaregistry/serde/buffer-wrapper.ts.html new file mode 100644 index 00000000..32b00306 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/serde/buffer-wrapper.ts.html @@ -0,0 +1,274 @@ + + + + + + Code coverage report for schemaregistry/serde/buffer-wrapper.ts + + + + + + + + + +
+
+

All files / schemaregistry/serde buffer-wrapper.ts

+
+ +
+ 100% + Statements + 32/32 +
+ + +
+ 94.11% + Branches + 16/17 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 32/32 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +642x +2x +2x +  +2x +  +  +  +  +10x +10x +  +  +  +  +  +  +7x +  +5x +5x +6x +6x +  +  +  +2x +2x +10x +10x +  +  +7x +  +  +  +  +7x +7x +  +  +7x +14x +14x +14x +14x +  +  +7x +  +2x +2x +2x +2x +2x +2x +  +2x +  +  +5x +  +  + 
export const MAX_VARINT_LEN_16 = 3
+export const MAX_VARINT_LEN_32 = 5
+export const MAX_VARINT_LEN_64 = 10
+ 
+export class BufferWrapper {
+  buf: Buffer
+  pos: number
+ 
+  constructor(buf: Buffer) {
+    this.buf = buf
+    this.pos = 0
+  }
+ 
+  // Adapted from avro-js
+  writeVarInt(n: number): void {
+    let f, m
+ 
+    if (n >= -1073741824 && n < 1073741824) {
+      // Won't overflow, we can use integer arithmetic.
+      m = n >= 0 ? n << 1 : (~n << 1) | 1
+      do {
+        this.buf[this.pos] = m & 0x7f
+        m >>= 7
+      } while (m && (this.buf[this.pos++] |= 0x80))
+    } else {
+      // We have to use slower floating arithmetic.
+      f = n >= 0 ? n * 2 : -n * 2 - 1
+      do {
+        this.buf[this.pos] = f & 0x7f
+        f /= 128
+      } while (f >= 1 && (this.buf[this.pos++] |= 0x80))
+    }
+    this.pos++
+  }
+ 
+  // Adapted from avro-js
+  readVarInt(): number {
+    let n = 0
+    let k = 0
+    let b, h, f, fk
+ 
+    do {
+      b = this.buf[this.pos++]
+      h = b & 0x80
+      n |= (b & 0x7f) << k
+      k += 7
+    } while (h && k < 28)
+ 
+    if (h) {
+      // Switch to float arithmetic, otherwise we might overflow.
+      f = n
+      fk = 268435456 // 2 ** 28.
+      do {
+        b = this.buf[this.pos++]
+        f += (b & 0x7f) * fk
+        fk *= 128
+      } while (b & 0x80)
+      return (f % 2 ? -(f + 1) : f) / 2
+    }
+ 
+    return (n >> 1) ^ -(n & 1)
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/index.html b/coverage/lcov-report/schemaregistry/serde/index.html new file mode 100644 index 00000000..00615314 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/serde/index.html @@ -0,0 +1,221 @@ + + + + + + Code coverage report for schemaregistry/serde + + + + + + + + + +
+
+

All files schemaregistry/serde

+
+ +
+ 63.24% + Statements + 678/1072 +
+ + +
+ 41.53% + Branches + 189/455 +
+ + +
+ 69.12% + Functions + 103/149 +
+ + +
+ 63.4% + Lines + 667/1052 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
avro.ts +
+
69.31%131/18952.32%45/8688%22/2570.27%130/185
buffer-wrapper.ts +
+
100%32/3294.11%16/17100%3/3100%32/32
json-util.ts +
+
40.54%15/3726.08%6/2366.66%2/342.85%15/35
json.ts +
+
45.72%91/19923.59%21/8955.55%15/2745.95%91/198
protobuf.ts +
+
79.2%198/25049.43%44/8996.42%27/2879.01%192/243
rule-registry.ts +
+
70.58%12/17100%0/042.85%3/770.58%12/17
serde.ts +
+
55.27%173/31330%39/13054.71%29/5355.04%169/307
wildcard-matcher.ts +
+
74.28%26/3585.71%18/2166.66%2/374.28%26/35
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/json-util.ts.html b/coverage/lcov-report/schemaregistry/serde/json-util.ts.html new file mode 100644 index 00000000..16d1501f --- /dev/null +++ b/coverage/lcov-report/schemaregistry/serde/json-util.ts.html @@ -0,0 +1,451 @@ + + + + + + Code coverage report for schemaregistry/serde/json-util.ts + + + + + + + + + +
+
+

All files / schemaregistry/serde json-util.ts

+
+ +
+ 40.54% + Statements + 15/37 +
+ + +
+ 26.08% + Branches + 6/23 +
+ + +
+ 66.66% + Functions + 2/3 +
+ + +
+ 42.85% + Lines + 15/35 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +1x +12x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +4x +  +  +  +  +  +2x +  +  +  +  +  +4x +  +  +  +  +  +  +4x +  +  +  +4x +  +  +  +4x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +2x +  +  +  +10x +10x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  + 
/*
+ * Copyright (c) 2023 Menglin "Mark" Xu <mark@remarkablemark.org>
+ *           (c) 2024 Confluent, Inc.
+ *
+ * This software may be modified and distributed under the terms
+ * of the MIT license.  See the LICENSE.txt file for details.
+ */
+import validator from 'validator';
+import { deepStrictEqual } from 'assert';
+ 
+/**
+ * Generate JSON schema from value.
+ *
+ * @param value - Value.
+ * @returns - JSON schema.
+ */
+export function generateSchema(value: any): any {
+  switch (true) {
+    case value === undefined:
+    case typeof value === 'undefined':
+    case typeof value === 'function':
+    case typeof value === 'symbol':
+    case value instanceof Date:
+      throw new TypeError(`Invalid JSON value: ${String(value)}`);
+ 
+    /**
+     * @see https://json-schema.org/understanding-json-schema/reference/null.html
+     */
+    case value === null:
+      return { type: 'null' };
+ 
+    /**
+     * @see https://json-schema.org/understanding-json-schema/reference/numeric.html
+     */
+    case typeof value === 'number':
+      return { type: Number.isInteger(value) ? 'integer' : 'number' };
+ 
+    /**
+     * @see https://json-schema.org/understanding-json-schema/reference/boolean.html
+     */
+    case typeof value === 'boolean':
+      return { type: 'boolean' };
+ 
+    /**
+     * @see https://json-schema.org/understanding-json-schema/reference/string.html
+     */
+    case typeof value === 'string':
+      Iif (validator.isISO8601(value)) {
+        return {
+          type: 'string',
+          format: value.includes('T') ? 'date-time' : 'date',
+        };
+      }
+ 
+      Iif (validator.isTime(value.split('+')[0], { mode: 'withSeconds' })) {
+        return { type: 'string', format: 'time' };
+      }
+ 
+      Iif (validator.isEmail(value)) {
+        return { type: 'string', format: 'email' };
+      }
+ 
+      return { type: 'string' };
+ 
+    /**
+     * @see https://json-schema.org/understanding-json-schema/reference/array.html
+     */
+    case Array.isArray(value):
+      Iif (value.length === 1) {
+        return { type: 'array', items: generateSchema(value[0]) };
+      }
+ 
+      Iif (value.length > 1) {
+        const items = value.map(generateSchema);
+        Iif (deepEqual(...items)) {
+          return { type: 'array', items: items[0] };
+        }
+      }
+ 
+      return { type: 'array' };
+ 
+    /**
+     * @see https://json-schema.org/understanding-json-schema/reference/object.html
+     */
+    case value instanceof Object:
+      Iif (!Object.keys(value).length) {
+        return { type: 'object' };
+      }
+ 
+      return {
+        type: 'object',
+        properties: Object.entries(value).reduce(
+          (accumulator, [key, value]) => {
+            accumulator[key] = generateSchema(value);
+            return accumulator;
+          },
+          {} as Record<string, any>,
+        ),
+      };
+ 
+    /* istanbul ignore next */
+    default:
+      throw new TypeError(`Invalid JSON value: ${value}`);
+  }
+}
+ 
+/**
+ * Tests for deep equality between the `actual` and `expected` parameters.
+ */
+export function deepEqual(...args: unknown[]): boolean {
+  try {
+    for (let index = 0, count = args.length; index < count; index++) {
+      Iif (index + 1 === count) {
+        continue;
+      }
+      deepStrictEqual(args[index], args[index + 1]);
+    }
+    return true;
+  } catch (error) {
+    return false;
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/json.ts.html b/coverage/lcov-report/schemaregistry/serde/json.ts.html new file mode 100644 index 00000000..9f30dca9 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/serde/json.ts.html @@ -0,0 +1,1318 @@ + + + + + + Code coverage report for schemaregistry/serde/json.ts + + + + + + + + + +
+
+

All files / schemaregistry/serde json.ts

+
+ +
+ 45.72% + Statements + 91/199 +
+ + +
+ 23.59% + Branches + 21/89 +
+ + +
+ 55.55% + Functions + 15/27 +
+ + +
+ 45.95% + Lines + 91/198 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +4121x +  +  +  +  +  +  +  +1x +  +  +  +  +1x +1x +1x +1x +  +  +  +  +1x +  +  +1x +  +  +1x +1x +1x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +2x +2x +2x +2x +1x +  +2x +2x +  +  +  +  +2x +  +  +2x +  +  +  +2x +2x +  +  +  +2x +2x +2x +2x +2x +  +  +  +  +  +2x +  +  +  +1x +1x +  +  +1x +  +  +  +1x +1x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +2x +2x +2x +2x +1x +  +2x +2x +  +  +  +  +2x +  +  +2x +  +  +  +2x +2x +  +  +  +  +  +  +2x +2x +2x +2x +  +  +2x +2x +2x +  +  +  +2x +  +  +2x +  +2x +2x +  +  +  +1x +1x +  +  +  +1x +1x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +2x +  +  +  +2x +  +2x +  +  +  +  +  +  +  +2x +2x +  +2x +  +  +2x +  +2x +2x +  +  +  +2x +  +  +2x +2x +  +  +2x +  +  +  +  +  +2x +  +  +  +  +  +2x +  +  +  +  +  +2x +  +  +  +  +  +  +2x +  +  +2x +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +2x +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import {
+  Deserializer, DeserializerConfig,
+  FieldTransform,
+  FieldType, Migration, RefResolver, RuleConditionError,
+  RuleContext,
+  SerdeType, SerializationError,
+  Serializer, SerializerConfig
+} from "./serde";
+import {
+  Client, RuleMode,
+  SchemaInfo
+} from "../schemaregistry-client";
+import Ajv, {ErrorObject} from "ajv";
+import Ajv2019 from "ajv/dist/2019";
+import Ajv2020 from "ajv/dist/2020";
+import * as draft6MetaSchema from 'ajv/dist/refs/json-schema-draft-06.json'
+import * as draft7MetaSchema from 'ajv/dist/refs/json-schema-draft-07.json'
+import {
+  DereferencedJSONSchemaDraft07,
+  DereferencedJSONSchemaDraft2020_12,
+} from '@criteria/json-schema'
+import {
+  dereferenceJSONSchema as dereferenceJSONSchemaDraft2020_12,
+} from '@criteria/json-schema/draft-2020-12'
+import {
+  dereferenceJSONSchema as dereferenceJSONSchemaDraft07,
+} from '@criteria/json-schema/draft-07'
+import { validateJSON } from '@criteria/json-schema-validation'
+import { LRUCache } from "lru-cache";
+import { generateSchema } from "./json-util";
+import {getRuleExecutors} from "./rule-registry";
+import stringify from "json-stringify-deterministic";
+ 
+export interface ValidateFunction {
+  (this: any, data: any): boolean
+  errors?: null | ErrorObject[]
+}
+ 
+export type DereferencedJSONSchema = DereferencedJSONSchemaDraft07 | DereferencedJSONSchemaDraft2020_12
+ 
+export type JsonSerdeConfig = ConstructorParameters<typeof Ajv>[0] & {
+  validate?: boolean
+}
+ 
+export interface JsonSerde {
+  schemaToTypeCache: LRUCache<string, DereferencedJSONSchema>
+  schemaToValidateCache: LRUCache<string, ValidateFunction>
+}
+ 
+export type JsonSerializerConfig = SerializerConfig & JsonSerdeConfig
+ 
+export class JsonSerializer extends Serializer implements JsonSerde {
+  schemaToTypeCache: LRUCache<string, DereferencedJSONSchema>
+  schemaToValidateCache: LRUCache<string, ValidateFunction>
+ 
+  constructor(client: Client, serdeType: SerdeType, conf: JsonSerializerConfig) {
+    super(client, serdeType, conf)
+    this.schemaToTypeCache = new LRUCache<string, DereferencedJSONSchema>({ max: this.config().cacheCapacity ?? 1000 })
+    this.schemaToValidateCache = new LRUCache<string, ValidateFunction>({ max: this.config().cacheCapacity ?? 1000 })
+    this.fieldTransformer = async (ctx: RuleContext, fieldTransform: FieldTransform, msg: any) => {
+      return await this.fieldTransform(ctx, fieldTransform, msg)
+    }
+    for (const rule of getRuleExecutors()) {
+      rule.configure(client.config(), new Map<string, string>(Object.entries(conf.ruleConfig ?? {})))
+    }
+  }
+ 
+  async serialize(topic: string, msg: any): Promise<Buffer> {
+    Iif (this.client == null) {
+      throw new Error('client is not initialized')
+    }
+    Iif (msg == null) {
+      throw new Error('message is empty')
+    }
+ 
+    const jsonSchema = generateSchema(msg)
+    const schema: SchemaInfo = {
+      schemaType: 'JSON',
+      schema: JSON.stringify(jsonSchema),
+    }
+    const [id, info] = await this.getId(topic, msg, schema)
+    const subject = this.subjectName(topic, info)
+    msg = await this.executeRules(subject, topic, RuleMode.WRITE, null, info, msg, null)
+    const msgBytes = Buffer.from(JSON.stringify(msg))
+    Iif ((this.conf as JsonSerdeConfig).validate) {
+      const validate = await this.toValidateFunction(info)
+      Iif (validate != null && !validate(msg)) {
+        throw new SerializationError('Invalid message')
+      }
+    }
+    return this.writeBytes(id, msgBytes)
+  }
+ 
+  async fieldTransform(ctx: RuleContext, fieldTransform: FieldTransform, msg: any): Promise<any> {
+    const schema = this.toType(ctx.target)
+    Iif (typeof schema === 'boolean') {
+      return msg
+    }
+    return await transform(ctx, schema, '$', msg, fieldTransform)
+  }
+ 
+  toType(info: SchemaInfo): DereferencedJSONSchema {
+    return toType(this.client, this.conf as JsonDeserializerConfig, this, info, async (client, info) => {
+      const deps = new Map<string, string>()
+      await this.resolveReferences(client, info, deps)
+      return deps
+    })
+  }
+ 
+  async toValidateFunction(info: SchemaInfo): Promise<ValidateFunction | undefined> {
+    return await toValidateFunction(this.client, this.conf as JsonDeserializerConfig, this, info, async (client, info) => {
+        const deps = new Map<string, string>()
+        await this.resolveReferences(client, info, deps)
+        return deps
+      },
+    )
+  }
+}
+ 
+export type JsonDeserializerConfig = DeserializerConfig & JsonSerdeConfig
+ 
+export class JsonDeserializer extends Deserializer implements JsonSerde {
+  schemaToTypeCache: LRUCache<string, DereferencedJSONSchema>
+  schemaToValidateCache: LRUCache<string, ValidateFunction>
+ 
+  constructor(client: Client, serdeType: SerdeType, conf: JsonDeserializerConfig) {
+    super(client, serdeType, conf)
+    this.schemaToTypeCache = new LRUCache<string, DereferencedJSONSchema>({ max: this.config().cacheCapacity ?? 1000 })
+    this.schemaToValidateCache = new LRUCache<string, ValidateFunction>({ max: this.config().cacheCapacity ?? 1000 })
+    this.fieldTransformer = async (ctx: RuleContext, fieldTransform: FieldTransform, msg: any) => {
+      return await this.fieldTransform(ctx, fieldTransform, msg)
+    }
+    for (const rule of getRuleExecutors()) {
+      rule.configure(client.config(), new Map<string, string>(Object.entries(conf.ruleConfig ?? {})))
+    }
+  }
+ 
+  async deserialize(topic: string, payload: Buffer): Promise<any> {
+    Iif (!Buffer.isBuffer(payload)) {
+      throw new Error('Invalid buffer')
+    }
+    Iif (payload.length === 0) {
+      return null
+    }
+ 
+    const info = await this.getSchema(topic, payload)
+    Iif ((this.conf as JsonSerdeConfig).validate) {
+      const validate = await this.toValidateFunction(info)
+      Iif (validate != null && !validate(JSON.parse(payload.subarray(5).toString()))) {
+        throw new SerializationError('Invalid message')
+      }
+ 
+    }
+    const subject = this.subjectName(topic, info)
+    const readerMeta = await this.getReaderSchema(subject)
+    let migrations: Migration[] = []
+    Iif (readerMeta != null) {
+      migrations = await this.getMigrations(subject, info, readerMeta)
+    }
+    const msgBytes = payload.subarray(5)
+    let msg = JSON.parse(msgBytes.toString())
+    Iif (migrations.length > 0) {
+      msg = await this.executeMigrations(migrations, subject, topic, msg)
+    }
+    let target: SchemaInfo
+    Iif (readerMeta != null) {
+      target = readerMeta
+    } else {
+      target = info
+    }
+    msg = this.executeRules(subject, topic, RuleMode.READ, null, target, msg, null)
+    return msg
+  }
+ 
+  async fieldTransform(ctx: RuleContext, fieldTransform: FieldTransform, msg: any): Promise<any> {
+    const schema = this.toType(ctx.target)
+    return await transform(ctx, schema, '$', msg, fieldTransform)
+  }
+ 
+  toType(info: SchemaInfo): DereferencedJSONSchema {
+    return toType(this.client, this.conf as JsonDeserializerConfig, this, info, async (client, info) => {
+      const deps = new Map<string, string>()
+      await this.resolveReferences(client, info, deps)
+      return deps
+    })
+  }
+ 
+  async toValidateFunction(info: SchemaInfo): Promise<ValidateFunction | undefined> {
+    return await toValidateFunction(this.client, this.conf as JsonDeserializerConfig, this, info, async (client, info) => {
+        const deps = new Map<string, string>()
+        await this.resolveReferences(client, info, deps)
+        return deps
+      },
+    )
+  }
+}
+ 
+async function toValidateFunction(
+  client: Client,
+    conf: JsonSerdeConfig,
+    serde: JsonSerde,
+    info: SchemaInfo,
+    refResolver: RefResolver,
+): Promise<ValidateFunction | undefined> {
+  let fn = serde.schemaToValidateCache.get(stringify(info.schema))
+  Iif (fn != null) {
+    return fn
+  }
+ 
+  const deps = await refResolver(client, info)
+ 
+  const json = JSON.parse(info.schema)
+  const spec = json.$schema
+  if (spec === 'http://json-schema.org/draft/2020-12/schema') {
+    const ajv2020 = new Ajv2020(conf as JsonSerdeConfig)
+    deps.forEach((name, schema) => {
+      ajv2020.addSchema(JSON.parse(schema), name)
+    })
+    fn = ajv2020.compile(json)
+  } else {
+    const ajv = new Ajv2019(conf as JsonSerdeConfig)
+    ajv.addMetaSchema(draft6MetaSchema)
+    ajv.addMetaSchema(draft7MetaSchema)
+    deps.forEach((name, schema) => {
+      ajv.addSchema(JSON.parse(schema), name)
+    })
+    fn = ajv.compile(json)
+  }
+  serde.schemaToValidateCache.set(stringify(info.schema), fn)
+  return fn
+}
+ 
+async function toType(
+  client: Client,
+  conf: JsonSerdeConfig,
+  serde: JsonSerde,
+  info: SchemaInfo,
+  refResolver: RefResolver,
+): Promise<DereferencedJSONSchema> {
+  let type = serde.schemaToTypeCache.get(stringify(info.schema))
+  Iif (type != null) {
+    return type
+  }
+ 
+  const deps = await refResolver(client, info)
+ 
+  const retrieve = (uri: string) => {
+    const data = deps.get(uri)
+    Iif (data == null) {
+      throw new SerializationError(`Schema not found: ${uri}`)
+    }
+    return JSON.parse(data)
+  }
+ 
+  const json = JSON.parse(info.schema)
+  const spec = json.$schema
+  let schema
+  Iif (spec === 'http://json-schema.org/draft/2020-12/schema') {
+    schema = await dereferenceJSONSchemaDraft2020_12(json, { retrieve })
+  } else {
+    schema = await dereferenceJSONSchemaDraft07(json, { retrieve })
+  }
+  serde.schemaToTypeCache.set(stringify(info.schema), schema)
+  return schema
+}
+ 
+async function transform(ctx: RuleContext, schema: DereferencedJSONSchema, path:string, msg: any, fieldTransform: FieldTransform): Promise<any> {
+  Iif (msg == null || schema == null || typeof schema === 'boolean') {
+    return msg
+  }
+  let fieldCtx = ctx.currentField()
+  Iif (fieldCtx != null) {
+    fieldCtx.type = getType(schema)
+  }
+  Iif (schema.allOf != null && schema.allOf.length > 0) {
+    let subschema = validateSubschemas(schema.allOf, msg)
+    Iif (subschema != null) {
+      return await transform(ctx, subschema, path, msg, fieldTransform)
+    }
+  }
+  Iif (schema.anyOf != null && schema.anyOf.length > 0) {
+    let subschema = validateSubschemas(schema.anyOf, msg)
+    Iif (subschema != null) {
+      return await transform(ctx, subschema, path, msg, fieldTransform)
+    }
+  }
+  Iif (schema.oneOf != null && schema.oneOf.length > 0) {
+    let subschema = validateSubschemas(schema.oneOf, msg)
+    Iif (subschema != null) {
+      return await transform(ctx, subschema, path, msg, fieldTransform)
+    }
+  }
+  Iif (schema.items != null) {
+    Iif (Array.isArray(msg)) {
+      for (let i = 0; i < msg.length; i++) {
+        msg[i] = await transform(ctx, schema.items, path, msg[i], fieldTransform)
+      }
+    }
+  }
+  Iif (schema.$ref != null) {
+    return await transform(ctx, schema.$ref, path, msg, fieldTransform)
+  }
+  let type = getType(schema)
+  switch (type) {
+    case FieldType.RECORD:
+      Iif (schema.properties != null) {
+        for (let [propName, propSchema] of Object.entries(schema.properties)) {
+          let value = msg[propName]
+          await transformField(ctx, path, propName, msg, value, propSchema, fieldTransform)
+        }
+      }
+      return msg
+    case FieldType.ENUM:
+    case FieldType.STRING:
+    case FieldType.INT:
+    case FieldType.DOUBLE:
+    case FieldType.BOOLEAN:
+      Iif (fieldCtx != null) {
+        const ruleTags = ctx.rule.tags
+        Iif (ruleTags == null || ruleTags.length === 0 || !disjoint(new Set<string>(ruleTags), fieldCtx.tags)) {
+          return await fieldTransform.transform(ctx, fieldCtx, msg)
+        }
+      }
+  }
+ 
+  return msg
+}
+ 
+async function transformField(ctx: RuleContext, path: string, propName: string, msg: any, value: any,
+                        propSchema: DereferencedJSONSchema,
+                        fieldTransform: FieldTransform): Promise<void> {
+  const fullName = path + '.' + propName
+  try {
+    ctx.enterField(msg, fullName, propName, getType(propSchema), getInlineTags(propSchema))
+    const newVal = await transform(ctx, propSchema, fullName, value, fieldTransform)
+    if (ctx.rule.kind === 'CONDITION') {
+      Iif (newVal === false) {
+        throw new RuleConditionError(ctx.rule)
+      }
+    } else {
+      msg[propName] = newVal
+    }
+  } finally {
+    ctx.leaveField()
+  }
+}
+ 
+function validateSubschemas(subschemas: DereferencedJSONSchema[], msg: any): DereferencedJSONSchema | null {
+  for (let subschema of subschemas) {
+    try {
+      validateJSON(subschema, msg)
+      return subschema
+    } catch (error) {
+      // ignore
+    }
+  }
+  return null
+}
+ 
+function getType(schema: DereferencedJSONSchema): FieldType {
+  Iif (typeof schema === 'boolean') {
+    return FieldType.NULL
+  }
+  if (schema.type == null) {
+    return FieldType.NULL
+  }
+  Iif (Array.isArray(schema.type)) {
+    return FieldType.COMBINED
+  }
+  Iif (schema.const != null || schema.enum != null) {
+    return FieldType.ENUM
+  }
+  switch (schema.type) {
+    case 'object':
+      Iif (schema.properties == null || Object.keys(schema.properties).length === 0) {
+        return FieldType.MAP
+      }
+      return FieldType.RECORD
+    case 'array':
+      return FieldType.ARRAY
+    case 'string':
+      return FieldType.STRING
+    case 'integer':
+      return FieldType.INT
+    case 'number':
+      return FieldType.DOUBLE
+    case 'boolean':
+      return FieldType.BOOLEAN
+    case 'null':
+      return FieldType.NULL
+    default:
+      return FieldType.NULL
+  }
+}
+ 
+function getInlineTags(schema: DereferencedJSONSchema): Set<string> {
+  let tagsKey = 'confluent:tags' as keyof DereferencedJSONSchema
+  return new Set<string>(schema[tagsKey])
+}
+ 
+function disjoint(tags1: Set<string>, tags2: Set<string>): boolean {
+  for (let tag of tags1) {
+    Iif (tags2.has(tag)) {
+      return false
+    }
+  }
+  return true
+}
+ 
+ 
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/protobuf.ts.html b/coverage/lcov-report/schemaregistry/serde/protobuf.ts.html new file mode 100644 index 00000000..0d93d06f --- /dev/null +++ b/coverage/lcov-report/schemaregistry/serde/protobuf.ts.html @@ -0,0 +1,1648 @@ + + + + + + Code coverage report for schemaregistry/serde/protobuf.ts + + + + + + + + + +
+
+

All files / schemaregistry/serde protobuf.ts

+
+ +
+ 79.2% + Statements + 198/250 +
+ + +
+ 49.43% + Branches + 44/89 +
+ + +
+ 96.42% + Functions + 27/28 +
+ + +
+ 79.01% + Lines + 192/243 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +5221x +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +2x +2x +2x +2x +2x +1x +  +2x +2x +  +  +  +  +2x +  +  +2x +  +  +  +2x +2x +  +  +2x +2x +  +  +2x +2x +2x +2x +2x +2x +2x +2x +  +  +  +2x +2x +  +  +2x +2x +2x +2x +  +2x +  +  +  +  +  +  +2x +2x +  +  +  +2x +2x +2x +  +  +  +2x +2x +2x +  +  +  +  +  +  +  +2x +2x +2x +2x +2x +  +  +  +  +  +  +  +2x +  +  +  +  +2x +2x +2x +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +2x +2x +2x +2x +2x +2x +  +2x +  +  +  +2x +2x +2x +  +  +  +2x +2x +2x +2x +  +  +  +  +  +  +  +  +2x +2x +2x +2x +2x +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +  +  +1x +1x +  +  +1x +  +  +  +  +  +1x +  +  +  +  +2x +2x +2x +2x +1x +  +2x +2x +  +  +  +  +2x +  +  +2x +  +  +  +2x +2x +2x +2x +  +2x +2x +  +2x +2x +  +  +  +  +2x +  +  +2x +  +2x +2x +  +  +  +1x +1x +  +  +1x +1x +  +  +1x +  +  +  +2x +2x +  +  +2x +2x +  +  +2x +2x +  +  +  +2x +2x +2x +2x +2x +2x +2x +  +  +2x +  +  +  +  +  +  +  +  +  +2x +2x +2x +  +  +  +2x +2x +2x +2x +2x +2x +  +2x +  +  +  +2x +2x +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +14x +  +  +14x +2x +4x +  +  +14x +  +  +14x +14x +2x +2x +8x +8x +  +2x +  +12x +12x +12x +12x +4x +  +  +8x +  +  +  +  +8x +8x +  +  +  +  +  +  +8x +8x +8x +  +  +  +  +8x +  +  +8x +  +  +  +  +8x +  +  +  +2x +  +  +  +  +  +6x +  +2x +  +2x +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +8x +8x +4x +4x +  +4x +  +  +  +12x +12x +4x +  +  +8x +  +  +  +6x +  +  +  + 
import {
+  Deserializer,
+  DeserializerConfig,
+  FieldTransform,
+  FieldType, RuleConditionError,
+  RuleContext,
+  SerdeType, SerializationError,
+  Serializer,
+  SerializerConfig
+} from "./serde";
+import {
+  Client, Reference, RuleMode,
+  SchemaInfo,
+  SchemaMetadata
+} from "../schemaregistry-client";
+import {
+  createFileRegistry, createMutableRegistry,
+  DescField,
+  DescFile,
+  DescMessage,
+  FileRegistry,
+  fromBinary, getExtension, hasExtension, MutableRegistry,
+  ScalarType,
+  toBinary
+} from "@bufbuild/protobuf";
+import {
+  file_google_protobuf_any,
+  file_google_protobuf_api,
+  file_google_protobuf_descriptor,
+  file_google_protobuf_duration,
+  file_google_protobuf_empty,
+  file_google_protobuf_field_mask,
+  file_google_protobuf_source_context,
+  file_google_protobuf_struct,
+  file_google_protobuf_timestamp, file_google_protobuf_type, file_google_protobuf_wrappers,
+  FileDescriptorProtoSchema
+} from "@bufbuild/protobuf/wkt";
+import { BufferWrapper, MAX_VARINT_LEN_64 } from "./buffer-wrapper";
+import { LRUCache } from "lru-cache";
+import {field_meta, file_confluent_meta, Meta} from "../confluent/meta_pb";
+import {getRuleExecutors} from "./rule-registry";
+import stringify from "json-stringify-deterministic";
+import {file_confluent_types_decimal} from "../confluent/types/decimal_pb";
+import {file_google_type_calendar_period} from "../google/type/calendar_period_pb";
+import {file_google_type_color} from "../google/type/color_pb";
+import {file_google_type_date} from "../google/type/date_pb";
+import {file_google_type_datetime} from "../google/type/datetime_pb";
+import {file_google_type_dayofweek} from "../google/type/dayofweek_pb";
+import {file_google_type_fraction} from "../google/type/fraction_pb";
+import {file_google_type_expr} from "../google/type/expr_pb";
+import {file_google_type_latlng} from "../google/type/latlng_pb";
+import {file_google_type_money} from "../google/type/money_pb";
+import {file_google_type_postal_address} from "../google/type/postal_address_pb";
+import {file_google_type_quaternion} from "../google/type/quaternion_pb";
+import {file_google_type_timeofday} from "../google/type/timeofday_pb";
+import {file_google_type_month} from "../google/type/month_pb";
+ 
+const builtinDeps = new Map<string, DescFile>([
+  ['confluent/meta.proto',                 file_confluent_meta],
+  ['confluent/type/decimal.proto',         file_confluent_types_decimal],
+  ['google/type/calendar_period.proto',    file_google_type_calendar_period],
+  ['google/type/color.proto',              file_google_type_color],
+  ['google/type/date.proto',               file_google_type_date],
+  ['google/type/datetime.proto',           file_google_type_datetime],
+  ['google/type/dayofweek.proto',          file_google_type_dayofweek],
+  ['google/type/expr.proto',               file_google_type_expr],
+  ['google/type/fraction.proto',           file_google_type_fraction],
+  ['google/type/latlng.proto',             file_google_type_latlng],
+  ['google/type/money.proto',              file_google_type_money],
+  ['google/type/month.proto',              file_google_type_month],
+  ['google/type/postal_address.proto',     file_google_type_postal_address],
+  ['google/type/quaternion.proto',         file_google_type_quaternion],
+  ['google/type/timeofday.proto',          file_google_type_timeofday],
+  ['google/protobuf/any.proto',            file_google_protobuf_any],
+  ['google/protobuf/api.proto',            file_google_protobuf_api],
+  ['google/protobuf/descriptor.proto',     file_google_protobuf_descriptor],
+  ['google/protobuf/duration.proto',       file_google_protobuf_duration],
+  ['google/protobuf/empty.proto',          file_google_protobuf_empty],
+  ['google/protobuf/field_mask.proto',     file_google_protobuf_field_mask],
+  ['google/protobuf/source_context.proto', file_google_protobuf_source_context],
+  ['google/protobuf/struct.proto',         file_google_protobuf_struct],
+  ['google/protobuf/timestamp.proto',      file_google_protobuf_timestamp],
+  ['google/protobuf/type.proto',           file_google_protobuf_type],
+  ['google/protobuf/wrappers.proto',       file_google_protobuf_wrappers],
+])
+ 
+export interface ProtobufSerde {
+  schemaToDescCache: LRUCache<string, DescFile>
+}
+ 
+export type ProtobufSerializerConfig = SerializerConfig & {
+  registry?: MutableRegistry
+}
+ 
+export class ProtobufSerializer extends Serializer implements ProtobufSerde {
+  registry: MutableRegistry
+  schemaToDescCache: LRUCache<string, DescFile>
+  descToSchemaCache: LRUCache<string, SchemaInfo>
+ 
+  constructor(client: Client, serdeType: SerdeType, conf: ProtobufSerializerConfig) {
+    super(client, serdeType, conf)
+    this.registry = conf.registry ?? createMutableRegistry()
+    this.schemaToDescCache = new LRUCache<string, DescFile>({ max: this.config().cacheCapacity ?? 1000 } )
+    this.descToSchemaCache = new LRUCache<string, SchemaInfo>({ max: this.config().cacheCapacity ?? 1000 } )
+    this.fieldTransformer = async (ctx: RuleContext, fieldTransform: FieldTransform, msg: any) => {
+      return await this.fieldTransform(ctx, fieldTransform, msg)
+    }
+    for (const rule of getRuleExecutors()) {
+      rule.configure(client.config(), new Map<string, string>(Object.entries(conf.ruleConfig ?? {})))
+    }
+  }
+ 
+  async serialize(topic: string, msg: any): Promise<Buffer> {
+    Iif (this.client == null) {
+      throw new Error('client is not initialized')
+    }
+    Iif (msg == null) {
+      throw new Error('message is empty')
+    }
+ 
+    const typeName = msg.$typeName
+    Iif (typeName == null) {
+      throw new SerializationError('message type name is empty')
+    }
+    const messageDesc = this.registry.getMessage(typeName)
+    Iif (messageDesc == null) {
+      throw new SerializationError('message descriptor not in registry')
+    }
+    const fileDesc = messageDesc.file
+    const schema = await this.getSchemaInfo(fileDesc)
+    const [id, info] = await this.getId(topic, msg, schema, 'serialized')
+    const subject = this.subjectName(topic, info)
+    msg = await this.executeRules(subject, topic, RuleMode.WRITE, null, info, msg, null)
+    const msgIndexBytes = this.toMessageIndexBytes(messageDesc)
+    const msgBytes = Buffer.from(toBinary(messageDesc, msg))
+    return this.writeBytes(id, Buffer.concat([msgIndexBytes, msgBytes]))
+  }
+ 
+  async getSchemaInfo(fileDesc: DescFile): Promise<SchemaInfo> {
+    const value = this.descToSchemaCache.get(fileDesc.name)
+    Iif (value != null) {
+      return value
+    }
+    const deps = this.toProtobufSchema(fileDesc)
+    const autoRegister = this.config().autoRegisterSchemas
+    const normalize = this.config().normalizeSchemas
+    const metadata = await this.resolveDependencies(
+      fileDesc, deps, "", Boolean(autoRegister), Boolean(normalize))
+    const info = {
+      schema: metadata.schema,
+      schemaType: metadata.schemaType,
+      references: metadata.references,
+      metadata: metadata.metadata,
+      ruleSet: metadata.ruleSet,
+    }
+    this.descToSchemaCache.set(fileDesc.name, info)
+    return info
+  }
+ 
+  toProtobufSchema(fileDesc: DescFile): Map<string, string> {
+    const deps = new Map<string, string>()
+    this.toDependencies(fileDesc, deps)
+    return deps
+  }
+ 
+  toDependencies(fileDesc: DescFile, deps: Map<string, string>) {
+    deps.set(fileDesc.name, Buffer.from(toBinary(FileDescriptorProtoSchema, fileDesc.proto)).toString('base64'))
+    fileDesc.dependencies.forEach((dep) => {
+      Iif (!isBuiltin(dep.name)) {
+        this.toDependencies(dep, deps)
+      }
+    })
+  }
+ 
+  async resolveDependencies(fileDesc: DescFile, deps: Map<string, string>, subject: string,
+                            autoRegister: boolean, normalize: boolean): Promise<SchemaMetadata> {
+    const refs: Reference[] = []
+    for (let i = 0; i < fileDesc.dependencies.length; i++) {
+      const dep = fileDesc.dependencies[i]
+      if (isBuiltin(dep.name)) {
+        continue
+      }
+      const ref = await this.resolveDependencies(dep, deps, dep.name, autoRegister, normalize)
+      Iif (ref == null) {
+        throw new SerializationError('dependency not found')
+      }
+      refs.push({name: dep.name, subject: ref.subject!, version: ref.version!})
+    }
+    const info: SchemaInfo = {
+      schema: deps.get(fileDesc.name)!,
+      schemaType: 'PROTOBUF',
+      references: refs
+    }
+    let id = -1
+    let version = 0
+    Iif (subject !== '') {
+      if (autoRegister) {
+        id = await this.client.register(subject, info, normalize)
+      } else {
+        id = await this.client.getId(subject, info, normalize)
+ 
+      }
+      version = await this.client.getVersion(subject, info, normalize)
+    }
+    return {
+      id: id,
+      subject: subject,
+      version: version,
+      schema: info.schema,
+      schemaType: info.schemaType,
+      references: info.references,
+      metadata: info.metadata,
+      ruleSet: info.ruleSet,
+    }
+  }
+ 
+  toMessageIndexBytes(messageDesc: DescMessage): Buffer {
+    const msgIndexes: number[] = this.toMessageIndexes(messageDesc, 0)
+    const buffer = Buffer.alloc((1 + msgIndexes.length) * MAX_VARINT_LEN_64)
+    const bw = new BufferWrapper(buffer)
+    bw.writeVarInt(msgIndexes.length)
+    for (let i = 0; i < msgIndexes.length; i++) {
+      bw.writeVarInt(msgIndexes[i])
+    }
+    return buffer.subarray(0, bw.pos)
+  }
+ 
+  toMessageIndexes(messageDesc: DescMessage, count: number): number[] {
+    const index = this.toIndex(messageDesc)
+    const parent = messageDesc.parent
+    if (parent == null) {
+      // parent is FileDescriptor, we reached the top of the stack, so we are
+      // done. Allocate an array large enough to hold count+1 entries and
+      // populate first value with index
+      const msgIndexes: number[] = []
+      msgIndexes.length = count + 1
+      msgIndexes[0] = index
+      return msgIndexes
+    } else E{
+      const msgIndexes = this.toMessageIndexes(parent, count + 1)
+      msgIndexes.push(index)
+      return msgIndexes
+    }
+  }
+ 
+  toIndex(messageDesc: DescMessage) {
+    const parent = messageDesc.parent
+    if (parent == null) {
+      const fileDesc = messageDesc.file
+      for (let i = 0; i < fileDesc.messages.length; i++) {
+        if (fileDesc.messages[i] === messageDesc) {
+          return i
+        }
+      }
+    } else E{
+      for (let i = 0; i < parent.nestedMessages.length; i++) {
+        Iif (parent.nestedMessages[i] === messageDesc) {
+          return i
+        }
+      }
+    }
+    throw new SerializationError('message descriptor not found in file descriptor');
+  }
+ 
+  async fieldTransform(ctx: RuleContext, fieldTransform: FieldTransform, msg: any): Promise<any> {
+    const typeName = msg.$typeName
+    Iif (typeName == null) {
+      throw new SerializationError('message type name is empty')
+    }
+    const messageDesc = this.registry.getMessage(typeName)
+    Iif (messageDesc == null) {
+      throw new SerializationError('message descriptor not in registry')
+    }
+    return await transform(ctx, messageDesc, msg, fieldTransform)
+  }
+}
+ 
+export type ProtobufDeserializerConfig = DeserializerConfig
+ 
+export class ProtobufDeserializer extends Deserializer implements ProtobufSerde {
+  registry: FileRegistry
+  schemaToDescCache: LRUCache<string, DescFile>
+ 
+  constructor(client: Client, serdeType: SerdeType, conf: ProtobufDeserializerConfig) {
+    super(client, serdeType, conf)
+    this.registry = createFileRegistry()
+    this.schemaToDescCache = new LRUCache<string, DescFile>({ max: this.config().cacheCapacity ?? 1000 } )
+    this.fieldTransformer = async (ctx: RuleContext, fieldTransform: FieldTransform, msg: any) => {
+      return await this.fieldTransform(ctx, fieldTransform, msg)
+    }
+    for (const rule of getRuleExecutors()) {
+      rule.configure(client.config(), new Map<string, string>(Object.entries(conf.ruleConfig ?? {})))
+    }
+  }
+ 
+  async deserialize(topic: string, payload: Buffer): Promise<any> {
+    Iif (!Buffer.isBuffer(payload)) {
+      throw new Error('Invalid buffer')
+    }
+    Iif (payload.length === 0) {
+      return null
+    }
+ 
+    const info = await this.getSchema(topic, payload, 'serialized')
+    const fd = await this.toFileDesc(this.client, info)
+    const [bytesRead, msgIndexes] = this.readMessageIndexes(payload.subarray(5))
+    const messageDesc = this.toMessageDesc(fd, msgIndexes)
+ 
+    const subject = this.subjectName(topic, info)
+    const readerMeta = await this.getReaderSchema(subject)
+ 
+    const msgBytes = payload.subarray(5 + bytesRead)
+    let msg = fromBinary(messageDesc, msgBytes)
+ 
+    // Currently JavaScript does not support migration rules
+    // because of lack of support for DynamicMessage
+    let target: SchemaInfo
+    Iif (readerMeta != null) {
+      target = readerMeta
+    } else {
+      target = info
+    }
+    msg = await this.executeRules(subject, topic, RuleMode.READ, null, target, msg, null)
+    return msg
+  }
+ 
+  async fieldTransform(ctx: RuleContext, fieldTransform: FieldTransform, msg: any): Promise<any> {
+    const typeName = msg.$typeName
+    Iif (typeName == null) {
+      throw new SerializationError('message type name is empty')
+    }
+    const messageDesc = this.registry.getMessage(typeName)
+    Iif (messageDesc == null) {
+      throw new SerializationError('message descriptor not in registry')
+    }
+    return await transform(ctx, messageDesc, msg, fieldTransform)
+  }
+ 
+  async toFileDesc(client: Client, info: SchemaInfo): Promise<DescFile> {
+    const value = this.schemaToDescCache.get(stringify(info.schema))
+    Iif (value != null) {
+      return value
+    }
+    const fileDesc = await this.parseFileDesc(client, info)
+    Iif (fileDesc == null) {
+      throw new SerializationError('file descriptor not found')
+    }
+    this.schemaToDescCache.set(stringify(info.schema), fileDesc)
+    return fileDesc
+  }
+ 
+  async parseFileDesc(client: Client, info: SchemaInfo): Promise<DescFile | undefined> {
+    const deps = new Map<string, string>()
+    await this.resolveReferences(client, info, deps)
+    const fileDesc = fromBinary(FileDescriptorProtoSchema, Buffer.from(info.schema, 'base64'))
+    const resolve = (depName: string) => {
+      if (isBuiltin(depName)) {
+        const dep = builtinDeps.get(depName)
+        Iif (dep == null) {
+          throw new SerializationError(`dependency ${depName} not found`)
+        }
+        return dep
+      } else E{
+        const dep = deps.get(depName)
+        Iif (dep == null) {
+          throw new SerializationError(`dependency ${depName} not found`)
+        }
+        return fromBinary(FileDescriptorProtoSchema, Buffer.from(dep, 'base64'))
+      }
+    }
+    // TODO check google protos already in registry
+    const fileRegistry = createFileRegistry(fileDesc, resolve)
+    this.registry = createFileRegistry(this.registry, fileRegistry)
+    return this.registry.getFile(fileDesc.name)
+  }
+ 
+  readMessageIndexes(payload: Buffer): [number, number[]] {
+    const bw = new BufferWrapper(payload)
+    const count = bw.readVarInt()
+    const msgIndexes = []
+    msgIndexes.length = count
+    for (let i = 0; i < count; i++) {
+      msgIndexes[i] = bw.readVarInt()
+    }
+    return [bw.pos, msgIndexes]
+  }
+ 
+  toMessageDesc(fd: DescFile, msgIndexes: number[]): DescMessage {
+    let index = msgIndexes[0]
+    if (msgIndexes.length === 1) {
+      return fd.messages[index]
+    }
+    return this.toNestedMessageDesc(fd.messages[index], msgIndexes.slice(1))
+  }
+ 
+  toNestedMessageDesc(parent: DescMessage, msgIndexes: number[]): DescMessage {
+    let index = msgIndexes[0]
+    Iif (msgIndexes.length === 1) {
+      return parent.nestedMessages[index]
+    }
+    return this.toNestedMessageDesc(parent.nestedMessages[index], msgIndexes.slice(1))
+  }
+}
+ 
+async function transform(ctx: RuleContext, descriptor: DescMessage, msg: any, fieldTransform: FieldTransform): Promise<any> {
+  Iif (msg == null || descriptor == null) {
+    return msg
+  }
+  if (Array.isArray(msg)) {
+    for (let i = 0; i < msg.length; i++) {
+      msg[i] = await transform(ctx, descriptor, msg[i], fieldTransform)
+    }
+  }
+  Iif (msg instanceof Map) {
+    return msg
+  }
+  const typeName = msg.$typeName
+  if (typeName != null) {
+    const fields = descriptor.fields
+    for (let i = 0; i < fields.length; i++) {
+      const fd = fields[i]
+      await transformField(ctx, fd, descriptor, msg, fieldTransform)
+    }
+    return msg
+  }
+  const fieldCtx = ctx.currentField()
+  if (fieldCtx != null) {
+    const ruleTags = ctx.rule.tags ?? []
+    if (ruleTags == null || ruleTags.length === 0 || !disjoint(new Set<string>(ruleTags), fieldCtx.tags)) {
+      return await fieldTransform.transform(ctx, fieldCtx, msg)
+    }
+  }
+  return msg
+}
+ 
+async function transformField(ctx: RuleContext, fd: DescField, desc: DescMessage,
+                        msg: any, fieldTransform: FieldTransform) {
+  try {
+    ctx.enterField(
+      msg,
+      desc.name + '.' + fd.name,
+      fd.name,
+      getType(fd),
+      getInlineTags(fd)
+    )
+    const value = msg[fd.name]
+    const newValue = await transform(ctx, desc, value, fieldTransform)
+    Iif (ctx.rule.kind === 'CONDITION') {
+      Iif (newValue === false) {
+        throw new RuleConditionError(ctx.rule)
+      }
+    } else {
+      msg[fd.name] = newValue
+    }
+  } finally {
+    ctx.leaveField()
+  }
+}
+ 
+function getType(fd: DescField): FieldType {
+  switch (fd.fieldKind) {
+    case 'map':
+      return FieldType.MAP
+    case 'list':
+      return FieldType.ARRAY
+    case 'message':
+      return FieldType.RECORD
+    case 'enum':
+      return FieldType.ENUM
+    case 'scalar':
+      switch (fd.scalar) {
+        case ScalarType.STRING:
+          return FieldType.STRING
+        case ScalarType.BYTES:
+          return FieldType.BYTES
+        case ScalarType.INT32:
+        case ScalarType.SINT32:
+        case ScalarType.UINT32:
+        case ScalarType.FIXED32:
+        case ScalarType.SFIXED32:
+          return FieldType.INT
+        case ScalarType.INT64:
+        case ScalarType.SINT64:
+        case ScalarType.UINT64:
+        case ScalarType.FIXED64:
+        case ScalarType.SFIXED64:
+          return FieldType.LONG
+        case ScalarType.FLOAT:
+        case ScalarType.DOUBLE:
+          return FieldType.DOUBLE
+        case ScalarType.BOOL:
+          return FieldType.BOOLEAN
+      }
+    default:
+      return FieldType.NULL
+  }
+}
+ 
+function getInlineTags(fd: DescField): Set<string> {
+  const options = fd.proto.options
+  if (options != null && hasExtension(options, field_meta)) {
+    const option: Meta = getExtension(options, field_meta)
+    return new Set<string>(option.tags)
+  }
+  return new Set<string>()
+}
+ 
+function disjoint(tags1: Set<string>, tags2: Set<string>): boolean {
+  for (let tag of tags1) {
+    if (tags2.has(tag)) {
+      return false
+    }
+  }
+  return true
+}
+ 
+function isBuiltin(name: string): boolean {
+  return name.startsWith('confluent/') ||
+    name.startsWith('google/protobuf/') ||
+    name.startsWith('google/type/')
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/rule-registry.ts.html b/coverage/lcov-report/schemaregistry/serde/rule-registry.ts.html new file mode 100644 index 00000000..57743e6e --- /dev/null +++ b/coverage/lcov-report/schemaregistry/serde/rule-registry.ts.html @@ -0,0 +1,211 @@ + + + + + + Code coverage report for schemaregistry/serde/rule-registry.ts + + + + + + + + + +
+
+

All files / schemaregistry/serde rule-registry.ts

+
+ +
+ 70.58% + Statements + 12/17 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 42.85% + Functions + 3/7 +
+ + +
+ 70.58% + Lines + 12/17 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43  +  +3x +  +3x +  +  +  +3x +3x +  +  +  +3x +9x +  +  +  +3x +15x +  +  +  +3x +  +  +  +  +3x +  +  +  +  +3x +  +  +  +  +3x +  +  +  + 
import {RuleAction, RuleExecutor} from "./serde";
+ 
+const ruleExecutors = new Map<string, RuleExecutor>
+ 
+const ruleActions = new Map<string, RuleAction>
+ 
+ 
+// registerRuleExecutor is used to register a new rule executor.
+export function registerRuleExecutor(ruleExecutor: RuleExecutor): void {
+  ruleExecutors.set(ruleExecutor.type(), ruleExecutor)
+}
+ 
+// getRuleExecutor fetches a rule executor by a given name.
+export function getRuleExecutor(name: string): RuleExecutor | undefined {
+  return ruleExecutors.get(name)
+}
+ 
+// getRuleExecutors fetches all rule executors
+export function getRuleExecutors(): RuleExecutor[] {
+  return Array.from(ruleExecutors.values())
+}
+ 
+// registerRuleAction is used to register a new rule action.
+export function registerRuleAction(ruleAction: RuleAction): void {
+  ruleActions.set(ruleAction.type(), ruleAction)
+}
+ 
+// getRuleAction fetches a rule action by a given name.
+export function getRuleAction(name: string): RuleAction | undefined {
+  return ruleActions.get(name)
+}
+ 
+// getRuleActions fetches all rule actions
+export function getRuleActions(): RuleAction[] {
+  return Array.from(ruleActions.values())
+}
+ 
+// clearRules clears all registered rules
+export function clearRules(): void {
+  ruleExecutors.clear()
+  ruleActions.clear()
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/serde.ts.html b/coverage/lcov-report/schemaregistry/serde/serde.ts.html new file mode 100644 index 00000000..545bd990 --- /dev/null +++ b/coverage/lcov-report/schemaregistry/serde/serde.ts.html @@ -0,0 +1,2290 @@ + + + + + + Code coverage report for schemaregistry/serde/serde.ts + + + + + + + + + +
+
+

All files / schemaregistry/serde serde.ts

+
+ +
+ 55.27% + Statements + 173/313 +
+ + +
+ 30% + Branches + 39/130 +
+ + +
+ 54.71% + Functions + 29/53 +
+ + +
+ 55.04% + Lines + 169/307 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +7363x +3x +  +  +  +  +  +  +  +3x +  +  +3x +3x +3x +  +  +3x +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +15x +  +  +15x +15x +15x +  +  +  +  +  +  +  +  +  +30x +30x +  +  +  +11x +11x +10x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +15x +  +  +  +15x +  +  +  +  +  +  +  +15x +15x +  +9x +  +15x +  +15x +6x +  +9x +9x +9x +  +  +9x +9x +  +9x +  +  +9x +  +  +  +  +  +  +  +  +  +  +  +9x +  +9x +9x +  +  +  +  +9x +9x +9x +  +  +  +  +  +  +9x +9x +  +9x +  +  +  +  +  +  +  +  +9x +  +  +  +  +9x +9x +9x +  +9x +9x +  +  +9x +9x +  +  +  +  +  +  +  +  +  +9x +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +  +9x +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +6x +  +  +  +36x +  +  +  +  +  +  +  +6x +6x +6x +6x +6x +  +6x +6x +6x +3x +3x +  +  +  +  +  +3x +  +  +3x +3x +3x +  +  +  +6x +  +  +  +6x +6x +6x +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +9x +  +  +  +24x +  +  +  +9x +9x +  +  +  +  +  +  +9x +9x +9x +  +  +  +9x +9x +9x +  +  +9x +  +  +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +30x +30x +  +  +30x +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +9x +  +  +  +41x +41x +  +  +41x +41x +25x +  +16x +16x +  +  +  +  +  +16x +  +  +  +13x +13x +7x +  +6x +  +  +  +32x +32x +7x +  +25x +  +  +  +21x +21x +  +  +21x +  +  +  +  +  +  +21x +21x +  +  +  +21x +21x +21x +  +  +  +  +  +  +  +  +21x +  +  +  +21x +21x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +3x +  +  +  +  +  +  +  +  +  +9x +  +  +3x +  +  +  +  +  +  +3x +  +  +6x +  +  +  +  +  +  +6x +  +9x +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +21x +21x +21x +21x +21x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +3x +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +9x +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import {match} from './wildcard-matcher';
+import {
+  Client,
+  Rule,
+  RuleMode,
+  RuleSet,
+  SchemaInfo,
+  SchemaMetadata
+} from "../schemaregistry-client";
+import {getRuleAction, getRuleExecutor} from "./rule-registry";
+import {ClientConfig} from "../rest-service";
+ 
+export enum SerdeType {
+  KEY = 'KEY',
+  VALUE = 'VALUE'
+}
+ 
+export const MAGIC_BYTE = Buffer.alloc(1)
+ 
+export class SerializationError extends Error {
+ 
+  constructor(message?: string) {
+    super(message)
+  }
+}
+ 
+export interface SerdeConfig {
+  // useLatestVersion specifies whether to use the latest schema version
+  useLatestVersion?: boolean
+  // useLatestWithMetadata specifies whether to use the latest schema with metadata
+  useLatestWithMetadata?: { [key: string]: string };
+  // cacheCapacity specifies the cache capacity
+  cacheCapacity?: number,
+  // cacheLatestTtlSecs specifies the cache latest TTL in seconds
+  cacheLatestTtlSecs?: number
+  // ruleConfig specifies configuration options to the rules
+  ruleConfig?: { [key: string]: string };
+  // subjectNameStrategy specifies a function to generate a subject name
+  subjectNameStrategy?: SubjectNameStrategyFunc
+}
+ 
+export type RefResolver = (client: Client, info: SchemaInfo) => Promise<Map<string, string>>
+ 
+export abstract class Serde {
+  client: Client
+  serdeType: SerdeType
+  conf: SerdeConfig
+  fieldTransformer: FieldTransformer | null = null
+ 
+  protected constructor(client: Client, serdeType: SerdeType, conf: SerdeConfig) {
+    this.client = client
+    this.serdeType = serdeType
+    this.conf = conf
+  }
+ 
+  abstract config(): SerdeConfig
+ 
+  close(): void {
+    return
+  }
+ 
+  subjectName(topic: string, info?: SchemaInfo): string {
+    const strategy = this.conf.subjectNameStrategy ?? TopicNameStrategy
+    return strategy(topic, this.serdeType, info)
+  }
+ 
+  async resolveReferences(client: Client, schema: SchemaInfo, deps: Map<string, string>): Promise<void> {
+    let references = schema.references
+    if (references == null) {
+      return
+    }
+    for (let ref of references) {
+      let metadata = await client.getSchemaMetadata(ref.subject, ref.version, true)
+      let info = {
+        schema: schema.schema,
+        schemaType: schema.schemaType,
+        references: schema.references,
+        metadata: schema.metadata,
+        ruleSet: schema.ruleSet,
+      }
+      deps.set(ref.name, metadata.schema)
+      await this.resolveReferences(client, info, deps)
+    }
+  }
+ 
+  async executeRules(subject: string, topic: string, ruleMode: RuleMode,
+               source: SchemaInfo | null, target: SchemaInfo | null, msg: any,
+               inlineTags: Map<string, Set<string>> | null): Promise<any> {
+    Iif (msg == null || target == null) {
+      return msg
+    }
+    let rules: Rule[] | undefined
+    switch (ruleMode) {
+      case RuleMode.UPGRADE:
+        rules = target.ruleSet?.migrationRules
+        break
+      case RuleMode.DOWNGRADE:
+        rules = source?.ruleSet?.migrationRules?.reverse()
+        break
+      default:
+        rules = target.ruleSet?.domainRules
+        if (ruleMode === RuleMode.READ) {
+          // Execute read rules in reverse order for symmetry
+          rules = rules?.reverse()
+        }
+        break
+    }
+    if (rules == null) {
+      return msg
+    }
+    for (let i = 0; i < rules.length; i++ ) {
+      let rule = rules[i]
+      Iif (rule.disabled) {
+        continue
+      }
+      let mode = rule.mode
+      switch (mode) {
+        case RuleMode.WRITEREAD:
+          Iif (ruleMode !== RuleMode.WRITE && ruleMode !== RuleMode.READ) {
+            continue
+          }
+          break
+        case RuleMode.UPDOWN:
+          Iif (ruleMode !== RuleMode.UPGRADE && ruleMode !== RuleMode.DOWNGRADE) {
+            continue
+          }
+          break
+        default:
+          Iif (mode !== ruleMode) {
+            continue
+          }
+          break
+      }
+      let ctx = new RuleContext(source, target, subject, topic,
+        this.serdeType === SerdeType.KEY, ruleMode, rule, i, rules, inlineTags, this.fieldTransformer!)
+      let ruleExecutor = getRuleExecutor(rule.type)
+      Iif (ruleExecutor == null) {
+        await this.runAction(ctx, ruleMode, rule, rule.onFailure, msg,
+          new Error(`could not find rule executor of type ${rule.type}`), 'ERROR')
+        return msg
+      }
+      try {
+        let result = await ruleExecutor.transform(ctx, msg)
+        switch (rule.kind) {
+          case 'CONDITION':
+            Iif (result === false) {
+              throw new RuleConditionError(rule)
+            }
+            break
+          case 'TRANSFORM':
+            msg = result
+            break
+        }
+        await this.runAction(ctx, ruleMode, rule, msg != null ? rule.onSuccess : rule.onFailure,
+          msg, null, msg != null ? 'NONE' : 'ERROR')
+      } catch (error) {
+        Iif (error instanceof SerializationError) {
+          throw error
+        }
+        await this.runAction(ctx, ruleMode, rule, rule.onFailure, msg, error as Error, 'ERROR')
+      }
+    }
+    return msg
+  }
+ 
+  async runAction(ctx: RuleContext, ruleMode: RuleMode, rule: Rule, action: string | undefined,
+            msg: any, err: Error | null, defaultAction: string): Promise<void> {
+    let actionName = this.getRuleActionName(rule, ruleMode, action)
+    if (actionName == null) {
+      actionName = defaultAction
+    }
+    let ruleAction = this.getRuleAction(ctx, actionName)
+    Iif (ruleAction == null) {
+      throw new RuleError(`Could not find rule action of type ${actionName}`)
+    }
+    try {
+      await ruleAction.run(ctx, msg, err)
+    } catch (error) {
+      Iif (error instanceof SerializationError) {
+        throw error
+      }
+      console.warn("could not run post-rule action %s: %s", actionName, error)
+    }
+  }
+ 
+  getRuleActionName(rule: Rule, ruleMode: RuleMode, actionName: string | undefined): string | null {
+    if (actionName == null || actionName === '') {
+      return null
+    }
+    Iif ((rule.mode === RuleMode.WRITEREAD || rule.mode === RuleMode.UPDOWN) && actionName.includes(',')) {
+      let parts = actionName.split(',')
+      switch (ruleMode) {
+        case RuleMode.WRITE:
+        case RuleMode.UPGRADE:
+          return parts[0]
+        case RuleMode.READ:
+        case RuleMode.DOWNGRADE:
+          return parts[1]
+      }
+    }
+    return actionName
+  }
+ 
+  getRuleAction(ctx: RuleContext, actionName: string): RuleAction | undefined {
+    Iif (actionName === 'ERROR') {
+      return new ErrorAction();
+    } else if (actionName === 'NONE') {
+      return new NoneAction()
+    }
+    return getRuleAction(actionName)
+  }
+}
+ 
+export interface SerializerConfig extends SerdeConfig {
+  // autoRegisterSchemas determines whether to automatically register schemas
+  autoRegisterSchemas?: boolean
+  // useSchemaID specifies a schema ID to use
+  useSchemaId?: number
+  // normalizeSchemas determines whether to normalize schemas
+  normalizeSchemas?: boolean
+}
+ 
+export abstract class Serializer extends Serde {
+  protected constructor(client: Client, serdeType: SerdeType, conf: SerializerConfig) {
+    super(client, serdeType, conf)
+  }
+ 
+  override config(): SerializerConfig {
+    return this.conf as SerializerConfig
+  }
+ 
+  // serialize will serialize the given message
+  abstract serialize(topic: string, msg: any): Promise<Buffer>
+ 
+  // GetID returns a schema ID for the given schema
+  async getId(topic: string, msg: any, info: SchemaInfo, format?: string): Promise<[number, SchemaInfo]> {
+    let autoRegister = this.config().autoRegisterSchemas
+    let useSchemaId = this.config().useSchemaId
+    let useLatestWithMetadata = this.conf.useLatestWithMetadata
+    let useLatest = this.config().useLatestVersion
+    let normalizeSchema = this.config().normalizeSchemas
+ 
+    let id = -1
+    let subject = this.subjectName(topic, info)
+    if (autoRegister) {
+      id = await this.client.register(subject, info, Boolean(normalizeSchema))
+    } else Iif (useSchemaId != null && useSchemaId >= 0) {
+      info = await this.client.getBySubjectAndId(subject, useSchemaId, format)
+      id = await this.client.getId(subject, info, false)
+      Iif (id !== useSchemaId) {
+        throw new SerializationError(`failed to match schema ID (${id} != ${useSchemaId})`)
+      }
+    } else Iif (useLatestWithMetadata != null && Object.keys(useLatestWithMetadata).length !== 0) {
+      info = await this.client.getLatestWithMetadata(subject, useLatestWithMetadata, true)
+      id = await this.client.getId(subject, info, false)
+    } else if (useLatest) {
+      info = await this.client.getLatestSchemaMetadata(subject)
+      id = await this.client.getId(subject, info, false)
+    } else E{
+      id = await this.client.getId(subject, info, Boolean(normalizeSchema))
+    }
+    return [id, info]
+  }
+ 
+  writeBytes(id: number, msgBytes: Buffer): Buffer {
+    const idBuffer = Buffer.alloc(4)
+    idBuffer.writeInt32BE(id, 0)
+    return Buffer.concat([MAGIC_BYTE, idBuffer, msgBytes])
+  }
+}
+ 
+export type DeserializerConfig = SerdeConfig
+ 
+// Migration represents a migration
+export interface Migration {
+  ruleMode: RuleMode
+  source: SchemaMetadata | null
+  target: SchemaMetadata | null
+}
+ 
+export abstract class Deserializer extends Serde {
+  protected constructor(client: Client, serdeType: SerdeType, conf: DeserializerConfig) {
+    super(client, serdeType, conf)
+  }
+ 
+  override config(): DeserializerConfig {
+    return this.conf as DeserializerConfig
+  }
+ 
+  async getSchema(topic: string, payload: Buffer, format?: string): Promise<SchemaInfo> {
+    const magicByte = payload.subarray(0, 1)
+    Iif (!magicByte.equals(MAGIC_BYTE)) {
+      throw new SerializationError(
+        `Message encoded with magic byte ${JSON.stringify(magicByte)}, expected ${JSON.stringify(
+          MAGIC_BYTE,
+        )}`,
+      )
+    }
+    const id = payload.subarray(1, 5).readInt32BE(0)
+    let subject = this.subjectName(topic)
+    return await this.client.getBySubjectAndId(subject, id, format)
+  }
+ 
+  async getReaderSchema(subject: string): Promise<SchemaMetadata | null> {
+    let useLatestWithMetadata = this.config().useLatestWithMetadata
+    let useLatest = this.config().useLatestVersion
+    Iif (useLatestWithMetadata != null && Object.keys(useLatestWithMetadata).length !== 0) {
+      return await this.client.getLatestWithMetadata(subject, useLatestWithMetadata, true)
+    }
+    Iif (useLatest) {
+      return await this.client.getLatestSchemaMetadata(subject)
+    }
+    return null
+  }
+ 
+  hasRules(ruleSet: RuleSet, mode: RuleMode): boolean {
+    switch (mode) {
+      case RuleMode.UPGRADE:
+      case RuleMode.DOWNGRADE:
+        return this.checkRules(ruleSet?.migrationRules, (ruleMode: RuleMode): boolean =>
+          ruleMode === mode || ruleMode === RuleMode.UPDOWN)
+      case RuleMode.UPDOWN:
+        return this.checkRules(ruleSet?.migrationRules, (ruleMode: RuleMode): boolean =>
+          ruleMode === mode)
+      case RuleMode.WRITE:
+      case RuleMode.READ:
+        return this.checkRules(ruleSet?.domainRules, (ruleMode: RuleMode): boolean =>
+          ruleMode === mode || ruleMode === RuleMode.WRITEREAD)
+      case RuleMode.WRITEREAD:
+        return this.checkRules(ruleSet?.domainRules, (ruleMode: RuleMode): boolean =>
+          ruleMode === mode)
+    }
+  }
+ 
+  checkRules(rules: Rule[] | undefined, filter: (ruleMode: RuleMode) => boolean): boolean {
+    Iif (rules == null) {
+      return false
+    }
+    for (let rule of rules) {
+      let ruleMode = rule.mode
+      Iif (ruleMode && filter(ruleMode)) {
+        return true
+      }
+    }
+    return false
+  }
+ 
+  async getMigrations(subject: string, sourceInfo: SchemaInfo,
+                target: SchemaMetadata): Promise<Migration[]> {
+    let version = await this.client.getVersion(subject, sourceInfo, false)
+    let source: SchemaMetadata = {
+      id: 0,
+      version:    version,
+      schema: sourceInfo.schema,
+      references: sourceInfo.references,
+      metadata: sourceInfo.metadata,
+      ruleSet: sourceInfo.ruleSet,
+    }
+    let migrationMode: RuleMode
+    let migrations: Migration[] = []
+    let first: SchemaMetadata
+    let last: SchemaMetadata
+    if (source.version! < target.version!) {
+      migrationMode = RuleMode.UPGRADE
+      first = source
+      last = target
+    } else if (source.version! > target.version!) {
+      migrationMode = RuleMode.DOWNGRADE
+      first = target
+      last = source
+    } else {
+      return migrations
+    }
+    let previous: SchemaMetadata | null = null
+    let versions = await this.getSchemasBetween(subject, first, last)
+    for (let i = 0; i < versions.length; i++) {
+      let version = versions[i]
+      Iif (i === 0) {
+        previous = version
+        continue
+      }
+      Iif (version.ruleSet != null && this.hasRules(version.ruleSet, migrationMode)) {
+        let m: Migration
+        if (migrationMode === RuleMode.UPGRADE) {
+          m = {
+            ruleMode: migrationMode,
+            source: previous,
+            target: version,
+          }
+        } else {
+          m = {
+            ruleMode: migrationMode,
+            source: version,
+            target: previous,
+          }
+        }
+        migrations.push(m)
+      }
+      previous = version
+    }
+    Iif (migrationMode === RuleMode.DOWNGRADE) {
+      migrations = migrations.reverse()
+    }
+    return migrations
+  }
+ 
+  async getSchemasBetween(subject: string, first: SchemaMetadata,
+                    last: SchemaMetadata): Promise<SchemaMetadata[]> {
+    Iif (last.version!-first.version! <= 1) {
+      return [first, last]
+    }
+    let version1 = first.version!
+    let version2 = last.version!
+    let result = [first]
+    for (let i = version1 + 1; i < version2; i++) {
+      let meta = await this.client.getSchemaMetadata(subject, i, true)
+      result.push(meta)
+    }
+    result.push(last)
+    return result
+  }
+ 
+  async executeMigrations(migrations: Migration[], subject: string, topic: string, msg: any): Promise<any> {
+    for (let migration of migrations) {
+      // TODO fix source, target?
+      msg = await this.executeRules(subject, topic, migration.ruleMode, migration.source, migration.target, msg, null)
+    }
+    return msg
+  }
+}
+ 
+export type SubjectNameStrategyFunc = (
+  topic: string,
+  serdeType: SerdeType,
+  schema?: SchemaInfo,
+) => string
+ 
+// TopicNameStrategy creates a subject name by appending -[key|value] to the topic name.
+export const TopicNameStrategy: SubjectNameStrategyFunc = (topic: string, serdeType: SerdeType) => {
+  let suffix = '-value'
+  Iif (serdeType === SerdeType.KEY) {
+    suffix = '-key'
+  }
+  return topic + suffix
+}
+ 
+// RuleContext represents a rule context
+export class RuleContext {
+  source: SchemaInfo | null
+  target: SchemaInfo
+  subject: string
+  topic: string
+  isKey: boolean
+  ruleMode: RuleMode
+  rule: Rule
+  index: number
+  rules: Rule[]
+  inlineTags: Map<string, Set<string>> | null
+  fieldTransformer: FieldTransformer
+  private fieldContexts: FieldContext[]
+ 
+  constructor(source: SchemaInfo | null, target: SchemaInfo, subject: string, topic: string,
+              isKey: boolean, ruleMode: RuleMode, rule: Rule, index: number, rules: Rule[],
+              inlineTags: Map<string, Set<string>> | null, fieldTransformer: FieldTransformer) {
+    this.source = source
+    this.target = target
+    this.subject = subject
+    this.topic = topic
+    this.isKey = isKey
+    this.ruleMode = ruleMode
+    this.rule = rule
+    this.index = index
+    this.rules = rules
+    this.inlineTags = inlineTags
+    this.fieldTransformer = fieldTransformer
+    this.fieldContexts = []
+  }
+ 
+  getParameter(name: string): string | null {
+    const params = this.rule.params
+    Iif (params == null) {
+      return null
+    }
+    let value = params[name]
+    if (value != null) {
+      return value
+    }
+    let metadata = this.target.metadata
+    Iif (metadata != null && metadata.properties != null) {
+      value = metadata.properties[name]
+      Iif (value != null) {
+        return value
+      }
+    }
+    return null
+  }
+ 
+  getInlineTags(name: string): Set<string> {
+    let tags = this.inlineTags?.get(name)
+    if (tags != null) {
+      return tags
+    }
+    return new Set<string>()
+  }
+ 
+  currentField(): FieldContext | null {
+    let size = this.fieldContexts.length
+    if (size === 0) {
+      return null
+    }
+    return this.fieldContexts[size - 1]
+  }
+ 
+  enterField(containingMessage: any, fullName: string, name: string, fieldType: FieldType, tags: Set<string>): FieldContext {
+    let allTags = new Set<string>(tags)
+    for (let v of this.getTags(fullName)) {
+      allTags.add(v)
+    }
+    let fieldContext = new FieldContext(
+      containingMessage,
+      fullName,
+      name,
+      fieldType,
+      allTags
+    )
+    this.fieldContexts.push(fieldContext)
+    return fieldContext
+  }
+ 
+  getTags(fullName: string): Set<string> {
+    let tags = new Set<string>()
+    let metadata = this.target.metadata
+    Iif (metadata?.tags != null) {
+      for (let [k, v] of Object.entries(metadata.tags)) {
+        Iif (match(fullName, k)) {
+          for (let tag of v) {
+            tags.add(tag)
+          }
+        }
+      }
+    }
+    return tags
+  }
+ 
+  leaveField(): void {
+    let size = this.fieldContexts.length - 1
+    this.fieldContexts = this.fieldContexts.slice(0, size)
+  }
+}
+ 
+// RuleBase represents a rule base
+export interface RuleBase {
+  configure(clientConfig: ClientConfig, config: Map<string, string>): void
+ 
+  type(): string;
+ 
+  close(): void
+}
+ 
+// RuleExecutor represents a rule executor
+export interface RuleExecutor extends RuleBase {
+  transform(ctx: RuleContext, msg: any): Promise<any>
+}
+ 
+// FieldTransformer represents a field transformer
+export type FieldTransformer = (ctx: RuleContext, fieldTransform: FieldTransform, msg: any) => any;
+ 
+// FieldTransform represents a field transform
+export interface FieldTransform {
+  transform(ctx: RuleContext, fieldCtx: FieldContext, fieldValue: any): Promise<any>;
+}
+ 
+// FieldRuleExecutor represents a field rule executor
+export abstract class FieldRuleExecutor implements RuleExecutor {
+  config: Map<string, string> | null = null
+ 
+  abstract configure(clientConfig: ClientConfig, config: Map<string, string>): void
+ 
+  abstract type(): string;
+ 
+  abstract newTransform(ctx: RuleContext): FieldTransform;
+ 
+  async transform(ctx: RuleContext, msg: any): Promise<any> {
+    // TODO preserve source
+    switch (ctx.ruleMode) {
+      case RuleMode.WRITE:
+      case RuleMode.UPGRADE:
+        for (let i = 0; i < ctx.index; i++) {
+          let otherRule = ctx.rules[i]
+          Iif (areTransformsWithSameTag(ctx.rule, otherRule)) {
+            // ignore this transform if an earlier one has the same tag
+            return msg
+          }
+        }
+        break
+      case RuleMode.READ:
+      case RuleMode.DOWNGRADE:
+        for (let i = ctx.index + 1; i < ctx.rules.length; i++) {
+          let otherRule = ctx.rules[i]
+          Iif (areTransformsWithSameTag(ctx.rule, otherRule)) {
+            // ignore this transform if a later one has the same tag
+            return msg
+          }
+        }
+        break
+    }
+    let fieldTransform = this.newTransform(ctx)
+    return ctx.fieldTransformer(ctx, fieldTransform, msg)
+  }
+ 
+  abstract close(): void
+}
+ 
+function areTransformsWithSameTag(rule1: Rule, rule2: Rule): boolean {
+  return rule1.tags != null && rule1.tags.length > 0
+    && rule1.kind === 'TRANSFORM'
+    && rule1.kind === rule2.kind
+    && rule1.mode === rule2.mode
+    && rule1.type === rule2.type
+    && rule1.tags === rule2.tags
+}
+ 
+// FieldContext represents a field context
+export class FieldContext {
+  containingMessage: any
+  fullName: string
+  name: string
+  type: FieldType
+  tags: Set<string>
+ 
+  constructor(containingMessage: any, fullName: string, name: string, fieldType: FieldType, tags: Set<string>) {
+    this.containingMessage = containingMessage
+    this.fullName = fullName
+    this.name = name
+    this.type = fieldType
+    this.tags = new Set<string>(tags)
+  }
+ 
+  isPrimitive(): boolean {
+    let t = this.type
+    return t === FieldType.STRING || t === FieldType.BYTES || t === FieldType.INT
+      || t === FieldType.LONG || t === FieldType.FLOAT || t === FieldType.DOUBLE
+      || t === FieldType.BOOLEAN || t === FieldType.NULL
+  }
+ 
+  typeName(): string {
+    return this.type.toString()
+  }
+}
+ 
+// FieldType represents the field type
+export enum FieldType {
+  RECORD = 'RECORD',
+  ENUM = 'ENUM',
+  ARRAY = 'ARRAY',
+  MAP = 'MAP',
+  COMBINED = 'COMBINED',
+  FIXED = 'FIXED',
+  STRING = 'STRING',
+  BYTES = 'BYTES',
+  INT = 'INT',
+  LONG = 'LONG',
+  FLOAT = 'FLOAT',
+  DOUBLE = 'DOUBLE',
+  BOOLEAN = 'BOOLEAN',
+  NULL = 'NULL',
+}
+ 
+// RuleAction represents a rule action
+export interface RuleAction extends RuleBase {
+  run(ctx: RuleContext, msg: any, err: Error | null): Promise<void>
+}
+ 
+// ErrorAction represents an error action
+export class ErrorAction implements RuleAction {
+  configure(clientConfig: ClientConfig, config: Map<string, string>): void {
+  }
+ 
+  type(): string {
+    return 'ERROR'
+  }
+ 
+  async run(ctx: RuleContext, msg: any, err: Error): Promise<void> {
+    throw new SerializationError(err.message)
+  }
+ 
+  close(): void {
+  }
+}
+ 
+// NoneAction represents a no-op action
+export class NoneAction implements RuleAction {
+  configure(clientConfig: ClientConfig, config: Map<string, string>): void {
+  }
+ 
+  type(): string {
+    return 'NONE'
+  }
+ 
+  async run(ctx: RuleContext, msg: any, err: Error): Promise<void> {
+    return
+  }
+ 
+  close(): void {
+  }
+}
+ 
+// RuleError represents a rule condition error
+export class RuleError extends Error {
+ 
+  constructor(message?: string) {
+    super(message)
+  }
+}
+ 
+// RuleConditionError represents a rule condition error
+export class RuleConditionError extends RuleError {
+  rule: Rule
+ 
+  constructor(rule: Rule) {
+    super(RuleConditionError.error(rule))
+    this.rule = rule
+  }
+ 
+  static error(rule: Rule): string {
+    let errMsg = rule.doc
+    Iif (!errMsg) {
+      Iif (rule.expr !== '') {
+        return `Expr failed: '${rule.expr}'`
+      }
+      return `Condition failed: '${rule.name}'`
+    }
+    return errMsg
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/wildcard-matcher.ts.html b/coverage/lcov-report/schemaregistry/serde/wildcard-matcher.ts.html new file mode 100644 index 00000000..40dcc45a --- /dev/null +++ b/coverage/lcov-report/schemaregistry/serde/wildcard-matcher.ts.html @@ -0,0 +1,355 @@ + + + + + + Code coverage report for schemaregistry/serde/wildcard-matcher.ts + + + + + + + + + +
+
+

All files / schemaregistry/serde wildcard-matcher.ts

+
+ +
+ 74.28% + Statements + 26/35 +
+ + +
+ 85.71% + Branches + 18/21 +
+ + +
+ 66.66% + Functions + 2/3 +
+ + +
+ 74.28% + Lines + 26/35 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +4x +27x +  +27x +27x +  +  +  +27x +27x +  +  +  +27x +27x +27x +27x +27x +121x +121x +121x +  +  +21x +2x +2x +  +19x +  +21x +  +8x +8x +  +  +  +  +  +  +  +  +  +  +6x +6x +  +  +  +  +86x +86x +  +  +27x +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/**
+ * Matches fully-qualified names that use dot (.) as the name boundary.
+ *
+ * <p>A '?' matches a single character.
+ * A '*' matches one or more characters within a name boundary.
+ * A '**' matches one or more characters across name boundaries.
+ *
+ * <p>Examples:
+ * <pre>
+ * wildcardMatch("eve", "eve*")                  --&gt; true
+ * wildcardMatch("alice.bob.eve", "a*.bob.eve")  --&gt; true
+ * wildcardMatch("alice.bob.eve", "a*.bob.e*")   --&gt; true
+ * wildcardMatch("alice.bob.eve", "a*")          --&gt; false
+ * wildcardMatch("alice.bob.eve", "a**")         --&gt; true
+ * wildcardMatch("alice.bob.eve", "alice.bob*")  --&gt; false
+ * wildcardMatch("alice.bob.eve", "alice.bob**") --&gt; true
+ * </pre>
+ *
+ * @param str             the string to match on
+ * @param wildcardMatcher the wildcard string to match against
+ * @return true if the string matches the wildcard string
+ */
+export function match(str: string, wildcardMatcher: string): boolean {
+  let re = wildcardToRegexp(wildcardMatcher, '.')
+  let pattern: RegExp
+  try {
+    pattern = new RegExp(re)
+  } catch (error) {
+    return false
+  }
+  let match = str.match(pattern)
+  return match != null && match[0] === str
+}
+ 
+function wildcardToRegexp(globExp: string, separator: string): string {
+  let dst = ''
+  let src = globExp.replaceAll('**'+separator+'*', '**')
+  let i = 0;
+  let size = src.length;
+  while (i < size) {
+    let c = src[i]
+    i++
+    switch (c) {
+    case '*':
+      // One char lookahead for **
+      if (i < src.length && src[i] == '*') {
+        dst += '.*'
+        i++
+      } else {
+        dst += '[^' + separator + ']*'
+      }
+      break
+    case '?':
+      dst += '[^' + separator + ']'
+      break
+    case '.':
+    case '+':
+    case '{':
+    case '}':
+    case '(':
+    case ')':
+    case '|':
+    case '^':
+    case '$':
+      // These need to be escaped in regular expressions
+      dst += '\\' + c
+      break
+    case '\\':
+      [dst, i] = doubleSlashes(dst, src, i)
+      break
+    default:
+      dst += c
+      break
+    }
+  }
+  return dst
+}
+ 
+function doubleSlashes(dst: string, src: string, i: number): [string, number] {
+  // Emit the next character without special interpretation
+  dst += '\\'
+  if (i+1 < src.length) {
+    dst += '\\' + src[i]
+    i++
+  } else {
+    // A backslash at the very end is treated like an escaped backslash
+    dst += '\\'
+  }
+  return [dst, i]
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed68316eb3f65dec9063332d2f69bf3093bbfab GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc literal 0 HcmV?d00001 diff --git a/coverage/lcov-report/sorter.js b/coverage/lcov-report/sorter.js new file mode 100644 index 00000000..2bb296a8 --- /dev/null +++ b/coverage/lcov-report/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/coverage/lcov-report/test/schemaregistry/dekregistry/index.html b/coverage/lcov-report/test/schemaregistry/dekregistry/index.html new file mode 100644 index 00000000..5d8fcc53 --- /dev/null +++ b/coverage/lcov-report/test/schemaregistry/dekregistry/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for test/schemaregistry/dekregistry + + + + + + + + + +
+
+

All files test/schemaregistry/dekregistry

+
+ +
+ 100% + Statements + 33/33 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 20/20 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
test-constants.ts +
+
100%33/33100%0/0100%0/0100%20/20
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/test/schemaregistry/dekregistry/test-constants.ts.html b/coverage/lcov-report/test/schemaregistry/dekregistry/test-constants.ts.html new file mode 100644 index 00000000..a25fadd5 --- /dev/null +++ b/coverage/lcov-report/test/schemaregistry/dekregistry/test-constants.ts.html @@ -0,0 +1,304 @@ + + + + + + Code coverage report for test/schemaregistry/dekregistry/test-constants.ts + + + + + + + + + +
+
+

All files / test/schemaregistry/dekregistry test-constants.ts

+
+ +
+ 100% + Statements + 33/33 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 20/20 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +742x +  +  +2x +2x +2x +2x +2x +2x +  +2x +2x +2x +2x +  +2x +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +2x +2x +2x + 
import { MOCK_TS } from "../../../schemaregistry/dekregistry/constants";
+import { Kek, Dek } from "../../../schemaregistry/dekregistry/dekregistry-client";
+ 
+const TEST_KEK_NAME: string = 'test-kek-name';
+const TEST_KEK_NAME_2: string = 'test-kek-name2';
+const TEST_KMS_TYPE: string = 'test-kms-type';
+const TEST_KMS_KEY_ID: string = 'test-kms-key-id';
+const TEST_KMS_PROPS = { testKey: 'testValue' };
+const TEST_DOC: string = 'test-doc';
+ 
+const TEST_SUBJECT: string = 'test-subject';
+const TEST_ALGORITHM: string = 'test-algorithm';
+const TEST_ENCRYPTED_KEY_MATERIAL: string = 'test-encrypted-key-material';
+const TEST_VERSION: number = 1;
+ 
+const TEST_KEK: Kek = {
+  name: TEST_KEK_NAME,
+  kmsType: TEST_KMS_TYPE,
+  kmsKeyId: TEST_KMS_KEY_ID,
+  kmsProps: TEST_KMS_PROPS,
+  doc: TEST_DOC,
+  shared: true
+};
+ 
+const TEST_KEK_2: Kek = {
+  name: TEST_KEK_NAME_2,
+  kmsType: TEST_KMS_TYPE,
+  kmsKeyId: TEST_KMS_KEY_ID,
+  kmsProps: TEST_KMS_PROPS,
+  doc: TEST_DOC,
+  shared: true
+};
+ 
+const TEST_DEK: Dek = {
+  kekName: TEST_KEK_NAME,
+  subject: TEST_SUBJECT,
+  algorithm: TEST_ALGORITHM,
+  encryptedKeyMaterial: TEST_ENCRYPTED_KEY_MATERIAL,
+  version: TEST_VERSION,
+  ts: MOCK_TS
+};
+ 
+const TEST_DEK_V2: Dek = {
+  kekName: TEST_KEK_NAME,
+  subject: TEST_SUBJECT,
+  algorithm: TEST_ALGORITHM,
+  encryptedKeyMaterial: TEST_ENCRYPTED_KEY_MATERIAL,
+  version: 2,
+  ts: MOCK_TS
+};
+ 
+const TEST_DEK_2: Dek = {
+  kekName: TEST_KEK_NAME_2,
+  subject: TEST_SUBJECT,
+  algorithm: TEST_ALGORITHM,
+  encryptedKeyMaterial: TEST_ENCRYPTED_KEY_MATERIAL,
+  version: TEST_VERSION,
+  ts: MOCK_TS
+};
+ 
+const TEST_DEK_LATEST: Dek = {
+  kekName: TEST_KEK_NAME,
+  subject: TEST_SUBJECT,
+  algorithm: TEST_ALGORITHM,
+  encryptedKeyMaterial: TEST_ENCRYPTED_KEY_MATERIAL,
+  version: -1,
+  ts: MOCK_TS
+};
+ 
+export {
+  TEST_KEK_NAME, TEST_KEK_NAME_2, TEST_KMS_TYPE, TEST_KMS_KEY_ID, TEST_KMS_PROPS, TEST_DOC,
+  TEST_SUBJECT, TEST_ALGORITHM, TEST_ENCRYPTED_KEY_MATERIAL, TEST_VERSION,
+  TEST_KEK, TEST_KEK_2, TEST_DEK, TEST_DEK_V2, TEST_DEK_2, TEST_DEK_LATEST
+};
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/test/schemaregistry/index.html b/coverage/lcov-report/test/schemaregistry/index.html new file mode 100644 index 00000000..5897a3ba --- /dev/null +++ b/coverage/lcov-report/test/schemaregistry/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for test/schemaregistry + + + + + + + + + +
+
+

All files test/schemaregistry

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
test-constants.ts +
+
100%7/7100%0/0100%0/0100%6/6
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/test/schemaregistry/serde/author_pb.ts.html b/coverage/lcov-report/test/schemaregistry/serde/author_pb.ts.html new file mode 100644 index 00000000..962ac05b --- /dev/null +++ b/coverage/lcov-report/test/schemaregistry/serde/author_pb.ts.html @@ -0,0 +1,292 @@ + + + + + + Code coverage report for test/schemaregistry/serde/author_pb.ts + + + + + + + + + +
+
+

All files / test/schemaregistry/serde author_pb.ts

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70  +  +  +  +  +1x +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  + 
// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
+// @generated from file test/schemaregistry/serde/author.proto (package test, syntax proto3)
+/* eslint-disable */
+ 
+import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
+import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
+import { file_confluent_meta } from "../../../schemaregistry/confluent/meta_pb";
+import type { Message } from "@bufbuild/protobuf";
+ 
+/**
+ * Describes the file test/schemaregistry/serde/author.proto.
+ */
+export const file_test_schemaregistry_serde_author: GenFile = /*@__PURE__*/
+  fileDesc("CiZ0ZXN0L3NjaGVtYXJlZ2lzdHJ5L3NlcmRlL2F1dGhvci5wcm90bxIEdGVzdCJWCgZBdXRob3ISFgoEbmFtZRgBIAEoCUIIgkQFGgNQSUkSCgoCaWQYAiABKAUSGQoHcGljdHVyZRgDIAEoDEIIgkQFGgNQSUkSDQoFd29ya3MYBCADKAkiJwoFUGl6emESDAoEc2l6ZRgBIAEoCRIQCgh0b3BwaW5ncxgCIAMoCUIJWgcuLi90ZXN0YgZwcm90bzM", [file_confluent_meta]);
+ 
+/**
+ * @generated from message test.Author
+ */
+export type Author = Message<"test.Author"> & {
+  /**
+   * @generated from field: string name = 1;
+   */
+  name: string;
+ 
+  /**
+   * @generated from field: int32 id = 2;
+   */
+  id: number;
+ 
+  /**
+   * @generated from field: bytes picture = 3;
+   */
+  picture: Uint8Array;
+ 
+  /**
+   * @generated from field: repeated string works = 4;
+   */
+  works: string[];
+};
+ 
+/**
+ * Describes the message test.Author.
+ * Use `create(AuthorSchema)` to create a new message.
+ */
+export const AuthorSchema: GenMessage<Author> = /*@__PURE__*/
+  messageDesc(file_test_schemaregistry_serde_author, 0);
+ 
+/**
+ * @generated from message test.Pizza
+ */
+export type Pizza = Message<"test.Pizza"> & {
+  /**
+   * @generated from field: string size = 1;
+   */
+  size: string;
+ 
+  /**
+   * @generated from field: repeated string toppings = 2;
+   */
+  toppings: string[];
+};
+ 
+/**
+ * Describes the message test.Pizza.
+ * Use `create(PizzaSchema)` to create a new message.
+ */
+export const PizzaSchema: GenMessage<Pizza> = /*@__PURE__*/
+  messageDesc(file_test_schemaregistry_serde_author, 1);
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/test/schemaregistry/serde/index.html b/coverage/lcov-report/test/schemaregistry/serde/index.html new file mode 100644 index 00000000..616ab1bf --- /dev/null +++ b/coverage/lcov-report/test/schemaregistry/serde/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for test/schemaregistry/serde + + + + + + + + + +
+
+

All files test/schemaregistry/serde

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
author_pb.ts +
+
100%5/5100%0/0100%0/0100%5/5
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/test/schemaregistry/test-constants.ts.html b/coverage/lcov-report/test/schemaregistry/test-constants.ts.html new file mode 100644 index 00000000..56ada433 --- /dev/null +++ b/coverage/lcov-report/test/schemaregistry/test-constants.ts.html @@ -0,0 +1,190 @@ + + + + + + Code coverage report for test/schemaregistry/test-constants.ts + + + + + + + + + +
+
+

All files / test/schemaregistry test-constants.ts

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36  +  +  +2x +  +2x +  +2x +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +2x + 
import { CreateAxiosDefaults } from 'axios';
+import { ClientConfig } from '../../schemaregistry/rest-service';
+ 
+const baseUrls = ['http://localhost:8081'];
+ 
+const mockBaseUrls = ['http://mocked-url'];
+ 
+const createAxiosDefaults: CreateAxiosDefaults = {
+  headers: {
+    'Content-Type': 'application/vnd.schemaregistry.v1+json',
+  },
+  auth: {
+    username: 'RBACAllowedUser-lsrc1',
+    password: 'nohash',
+  },
+  timeout: 10000
+};
+ 
+const clientConfig: ClientConfig = {
+  baseURLs: baseUrls,
+  createAxiosDefaults: createAxiosDefaults,
+  isForward: false,
+  cacheCapacity: 512,
+  cacheLatestTtlSecs: 60,
+};
+ 
+const mockClientConfig: ClientConfig = {
+  baseURLs: mockBaseUrls,
+  createAxiosDefaults: createAxiosDefaults,
+  isForward: false,
+  cacheCapacity: 512,
+  cacheLatestTtlSecs: 60,
+};
+ 
+export { clientConfig, mockClientConfig };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov.info b/coverage/lcov.info new file mode 100644 index 00000000..a5bb4cb4 --- /dev/null +++ b/coverage/lcov.info @@ -0,0 +1,4250 @@ +TN: +SF:schemaregistry/mock-schemaregistry-client.ts +FN:29,(anonymous_1) +FN:32,(anonymous_2) +FN:36,(anonymous_3) +FN:52,(anonymous_4) +FN:61,(anonymous_5) +FN:65,(anonymous_6) +FN:73,(anonymous_7) +FN:92,(anonymous_8) +FN:113,(anonymous_9) +FN:127,(anonymous_10) +FN:137,(anonymous_11) +FN:146,(anonymous_12) +FN:155,(anonymous_13) +FN:188,(anonymous_14) +FN:214,(anonymous_15) +FN:223,(anonymous_16) +FN:232,(anonymous_17) +FN:241,(anonymous_18) +FN:253,(anonymous_19) +FN:261,(anonymous_20) +FN:269,(anonymous_21) +FN:277,(anonymous_22) +FN:285,(anonymous_23) +FN:296,(anonymous_24) +FN:307,(anonymous_25) +FN:338,(anonymous_26) +FN:363,(anonymous_27) +FN:367,(anonymous_28) +FN:371,(anonymous_29) +FN:379,(anonymous_30) +FN:384,(anonymous_31) +FN:392,(anonymous_32) +FN:397,(anonymous_33) +FN:405,(anonymous_34) +FN:410,(anonymous_35) +FN:418,(anonymous_36) +FN:423,(anonymous_37) +FN:427,(anonymous_38) +FNF:38 +FNH:30 +FNDA:31,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:30,(anonymous_3) +FNDA:31,(anonymous_4) +FNDA:15,(anonymous_5) +FNDA:29,(anonymous_6) +FNDA:30,(anonymous_7) +FNDA:30,(anonymous_8) +FNDA:30,(anonymous_9) +FNDA:15,(anonymous_10) +FNDA:8,(anonymous_11) +FNDA:4,(anonymous_12) +FNDA:6,(anonymous_13) +FNDA:2,(anonymous_14) +FNDA:2,(anonymous_15) +FNDA:4,(anonymous_16) +FNDA:1,(anonymous_17) +FNDA:35,(anonymous_18) +FNDA:4,(anonymous_19) +FNDA:3,(anonymous_20) +FNDA:1,(anonymous_21) +FNDA:3,(anonymous_22) +FNDA:5,(anonymous_23) +FNDA:2,(anonymous_24) +FNDA:2,(anonymous_25) +FNDA:1,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:2,(anonymous_29) +FNDA:2,(anonymous_30) +FNDA:2,(anonymous_31) +FNDA:2,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:6,(anonymous_38) +DA:2,5 +DA:10,5 +DA:12,5 +DA:30,31 +DA:33,0 +DA:37,30 +DA:38,30 +DA:42,5 +DA:53,31 +DA:54,31 +DA:55,31 +DA:56,31 +DA:57,31 +DA:58,31 +DA:62,15 +DA:66,29 +DA:67,29 +DA:68,0 +DA:70,29 +DA:74,30 +DA:76,30 +DA:77,30 +DA:78,0 +DA:81,30 +DA:82,30 +DA:83,0 +DA:86,30 +DA:87,30 +DA:89,30 +DA:93,30 +DA:95,30 +DA:96,7 +DA:97,7 +DA:98,0 +DA:99,0 +DA:103,30 +DA:104,30 +DA:105,30 +DA:106,30 +DA:107,30 +DA:110,30 +DA:114,30 +DA:117,30 +DA:118,24 +DA:120,6 +DA:123,30 +DA:124,30 +DA:128,15 +DA:129,15 +DA:131,15 +DA:132,2 +DA:134,13 +DA:138,8 +DA:139,8 +DA:140,8 +DA:141,4 +DA:143,4 +DA:147,4 +DA:148,4 +DA:149,0 +DA:152,4 +DA:157,6 +DA:158,9 +DA:159,9 +DA:160,6 +DA:164,6 +DA:165,0 +DA:168,6 +DA:169,6 +DA:170,9 +DA:171,9 +DA:172,6 +DA:175,6 +DA:176,0 +DA:180,6 +DA:189,2 +DA:191,2 +DA:192,4 +DA:193,4 +DA:194,4 +DA:197,2 +DA:199,2 +DA:200,4 +DA:201,4 +DA:202,4 +DA:203,2 +DA:208,2 +DA:209,0 +DA:212,2 +DA:214,2 +DA:215,2 +DA:216,0 +DA:220,2 +DA:224,4 +DA:225,6 +DA:226,2 +DA:229,2 +DA:233,1 +DA:235,1 +DA:236,0 +DA:238,1 +DA:242,35 +DA:244,35 +DA:245,14 +DA:246,14 +DA:247,13 +DA:250,35 +DA:254,4 +DA:255,4 +DA:256,0 +DA:258,4 +DA:262,3 +DA:263,1 +DA:265,2 +DA:270,1 +DA:271,1 +DA:273,0 +DA:278,3 +DA:279,1 +DA:281,2 +DA:286,5 +DA:287,5 +DA:289,5 +DA:290,4 +DA:293,1 +DA:297,2 +DA:298,2 +DA:299,2 +DA:300,2 +DA:301,2 +DA:304,2 +DA:308,2 +DA:309,2 +DA:310,2 +DA:311,2 +DA:312,2 +DA:316,2 +DA:317,2 +DA:318,2 +DA:319,2 +DA:320,2 +DA:324,2 +DA:326,2 +DA:327,1 +DA:328,1 +DA:329,1 +DA:330,1 +DA:335,2 +DA:339,1 +DA:340,2 +DA:341,2 +DA:342,1 +DA:344,1 +DA:345,1 +DA:346,1 +DA:347,1 +DA:350,1 +DA:351,0 +DA:352,0 +DA:353,0 +DA:354,0 +DA:360,1 +DA:364,0 +DA:368,0 +DA:372,2 +DA:373,2 +DA:374,1 +DA:376,1 +DA:380,2 +DA:381,2 +DA:385,2 +DA:386,2 +DA:387,1 +DA:389,1 +DA:393,2 +DA:394,2 +DA:398,0 +DA:399,0 +DA:400,0 +DA:402,0 +DA:406,0 +DA:407,0 +DA:411,0 +DA:412,0 +DA:413,0 +DA:415,0 +DA:419,0 +DA:420,0 +DA:424,0 +DA:428,6 +DA:432,5 +LF:191 +LH:158 +BRDA:65,0,0,20 +BRDA:67,1,0,0 +BRDA:73,2,0,1 +BRDA:77,3,0,0 +BRDA:77,4,0,30 +BRDA:77,4,1,0 +BRDA:82,5,0,0 +BRDA:97,6,0,0 +BRDA:97,7,0,7 +BRDA:97,7,1,6 +BRDA:104,8,0,30 +BRDA:117,9,0,24 +BRDA:117,9,1,6 +BRDA:131,10,0,2 +BRDA:131,11,0,15 +BRDA:131,11,1,13 +BRDA:140,12,0,4 +BRDA:140,13,0,8 +BRDA:140,13,1,6 +BRDA:148,14,0,0 +BRDA:155,15,0,6 +BRDA:159,16,0,6 +BRDA:159,17,0,9 +BRDA:159,17,1,9 +BRDA:159,17,2,6 +BRDA:164,18,0,0 +BRDA:171,19,0,6 +BRDA:171,20,0,9 +BRDA:171,20,1,9 +BRDA:175,21,0,0 +BRDA:188,22,0,2 +BRDA:201,23,0,4 +BRDA:201,24,0,4 +BRDA:201,24,1,4 +BRDA:201,24,2,0 +BRDA:202,25,0,2 +BRDA:202,26,0,4 +BRDA:202,26,1,4 +BRDA:208,27,0,0 +BRDA:215,28,0,0 +BRDA:225,29,0,2 +BRDA:235,30,0,0 +BRDA:246,31,0,13 +BRDA:246,32,0,14 +BRDA:246,32,1,13 +BRDA:255,33,0,0 +BRDA:262,34,0,1 +BRDA:262,34,1,2 +BRDA:270,35,0,1 +BRDA:270,35,1,0 +BRDA:278,36,0,1 +BRDA:278,36,1,2 +BRDA:285,37,0,5 +BRDA:289,38,0,4 +BRDA:289,39,0,5 +BRDA:289,39,1,3 +BRDA:300,40,0,2 +BRDA:300,41,0,2 +BRDA:300,41,1,2 +BRDA:307,42,0,1 +BRDA:311,43,0,2 +BRDA:311,44,0,2 +BRDA:311,44,1,2 +BRDA:311,44,2,1 +BRDA:318,45,0,2 +BRDA:318,46,0,2 +BRDA:318,46,1,2 +BRDA:318,46,2,1 +BRDA:326,47,0,1 +BRDA:329,48,0,1 +BRDA:329,49,0,1 +BRDA:329,49,1,1 +BRDA:338,50,0,1 +BRDA:341,51,0,1 +BRDA:341,52,0,2 +BRDA:341,52,1,2 +BRDA:346,53,0,1 +BRDA:350,54,0,0 +BRDA:350,55,0,1 +BRDA:350,55,1,0 +BRDA:353,56,0,0 +BRDA:373,57,0,1 +BRDA:386,58,0,1 +BRDA:399,59,0,0 +BRDA:412,60,0,0 +BRF:85 +BRH:66 +end_of_record +TN: +SF:schemaregistry/rest-error.ts +FN:5,(anonymous_0) +FNF:1 +FNH:1 +FNDA:16,(anonymous_0) +DA:1,9 +DA:6,16 +DA:7,16 +DA:8,16 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/rest-service.ts +FN:25,(anonymous_1) +FN:34,(anonymous_2) +FN:69,(anonymous_3) +FN:73,(anonymous_4) +FN:83,(anonymous_5) +FN:87,(anonymous_6) +FNF:6 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,6 +DA:2,6 +DA:21,6 +DA:26,0 +DA:27,0 +DA:29,0 +DA:30,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:50,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:57,0 +DA:60,0 +DA:61,0 +DA:66,0 +DA:70,0 +DA:74,0 +DA:75,0 +DA:78,0 +DA:79,0 +DA:84,0 +DA:88,0 +LF:27 +LH:3 +BRDA:29,0,0,0 +BRDA:52,1,0,0 +BRDA:52,2,0,0 +BRDA:52,2,1,0 +BRDA:52,2,2,0 +BRDA:52,2,3,0 +BRDA:54,3,0,0 +BRDA:54,3,1,0 +BRDA:54,4,0,0 +BRDA:54,4,1,0 +BRDA:60,5,0,0 +BRDA:74,6,0,0 +BRDA:78,7,0,0 +BRF:13 +BRH:0 +end_of_record +TN: +SF:schemaregistry/schemaregistry-client.ts +FN:17,(anonymous_1) +FN:46,(anonymous_2) +FN:64,minimize +FN:160,(anonymous_4) +FN:185,(anonymous_5) +FN:193,(anonymous_6) +FN:197,(anonymous_7) +FN:203,(anonymous_8) +FN:206,(anonymous_9) +FN:224,(anonymous_10) +FN:226,(anonymous_11) +FN:245,(anonymous_12) +FN:248,(anonymous_13) +FN:266,(anonymous_14) +FN:267,(anonymous_15) +FN:284,(anonymous_16) +FN:287,(anonymous_17) +FN:304,(anonymous_18) +FN:307,(anonymous_19) +FN:333,(anonymous_20) +FN:341,(anonymous_21) +FN:344,(anonymous_22) +FN:362,(anonymous_23) +FN:370,(anonymous_24) +FN:371,(anonymous_25) +FN:372,(anonymous_26) +FN:380,(anonymous_27) +FN:381,(anonymous_28) +FN:389,(anonymous_29) +FN:390,(anonymous_30) +FN:398,(anonymous_31) +FN:399,(anonymous_32) +FN:416,(anonymous_33) +FN:417,(anonymous_34) +FN:420,(anonymous_35) +FN:426,(anonymous_36) +FN:432,(anonymous_37) +FN:441,(anonymous_38) +FN:455,(anonymous_39) +FN:466,(anonymous_40) +FN:477,(anonymous_41) +FN:487,(anonymous_42) +FN:498,(anonymous_43) +FN:506,(anonymous_44) +FN:515,(anonymous_45) +FN:525,(anonymous_46) +FN:534,(anonymous_47) +FN:542,(anonymous_48) +FN:551,(anonymous_49) +FN:561,(anonymous_50) +FN:563,(anonymous_51) +FN:568,(anonymous_52) +FN:570,(anonymous_53) +FN:575,(anonymous_54) +FN:577,(anonymous_55) +FN:582,(anonymous_56) +FN:584,(anonymous_57) +FN:589,(anonymous_58) +FN:590,(anonymous_59) +FN:595,(anonymous_60) +FN:596,(anonymous_61) +FN:601,(anonymous_62) +FN:602,(anonymous_63) +FN:607,(anonymous_64) +FN:608,(anonymous_65) +FNF:65 +FNH:59 +FNDA:5,(anonymous_1) +FNDA:5,(anonymous_2) +FNDA:99,minimize +FNDA:26,(anonymous_4) +FNDA:9,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:5,(anonymous_7) +FNDA:10,(anonymous_8) +FNDA:10,(anonymous_9) +FNDA:5,(anonymous_10) +FNDA:5,(anonymous_11) +FNDA:5,(anonymous_12) +FNDA:5,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:5,(anonymous_16) +FNDA:5,(anonymous_17) +FNDA:5,(anonymous_18) +FNDA:5,(anonymous_19) +FNDA:1,(anonymous_20) +FNDA:5,(anonymous_21) +FNDA:5,(anonymous_22) +FNDA:1,(anonymous_23) +FNDA:1,(anonymous_24) +FNDA:1,(anonymous_25) +FNDA:1,(anonymous_26) +FNDA:1,(anonymous_27) +FNDA:1,(anonymous_28) +FNDA:1,(anonymous_29) +FNDA:1,(anonymous_30) +FNDA:1,(anonymous_31) +FNDA:1,(anonymous_32) +FNDA:1,(anonymous_33) +FNDA:1,(anonymous_34) +FNDA:1,(anonymous_35) +FNDA:1,(anonymous_36) +FNDA:1,(anonymous_37) +FNDA:1,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:1,(anonymous_41) +FNDA:1,(anonymous_42) +FNDA:1,(anonymous_43) +FNDA:1,(anonymous_44) +FNDA:1,(anonymous_45) +FNDA:1,(anonymous_46) +FNDA:1,(anonymous_47) +FNDA:1,(anonymous_48) +FNDA:0,(anonymous_49) +FNDA:2,(anonymous_50) +FNDA:2,(anonymous_51) +FNDA:2,(anonymous_52) +FNDA:2,(anonymous_53) +FNDA:2,(anonymous_54) +FNDA:2,(anonymous_55) +FNDA:2,(anonymous_56) +FNDA:2,(anonymous_57) +FNDA:2,(anonymous_58) +FNDA:2,(anonymous_59) +FNDA:2,(anonymous_60) +FNDA:2,(anonymous_61) +FNDA:2,(anonymous_62) +FNDA:2,(anonymous_63) +FNDA:2,(anonymous_64) +FNDA:2,(anonymous_65) +DA:1,5 +DA:3,5 +DA:4,5 +DA:5,5 +DA:6,5 +DA:17,5 +DA:18,5 +DA:19,5 +DA:20,5 +DA:21,5 +DA:22,5 +DA:23,5 +DA:24,5 +DA:46,5 +DA:47,5 +DA:48,5 +DA:49,5 +DA:50,5 +DA:51,5 +DA:52,5 +DA:64,5 +DA:65,99 +DA:140,5 +DA:161,26 +DA:162,26 +DA:167,26 +DA:169,26 +DA:170,26 +DA:171,26 +DA:172,26 +DA:173,26 +DA:174,26 +DA:175,26 +DA:176,26 +DA:177,26 +DA:178,26 +DA:179,26 +DA:180,26 +DA:181,26 +DA:182,26 +DA:186,9 +DA:187,9 +DA:188,9 +DA:190,0 +DA:194,0 +DA:198,5 +DA:200,5 +DA:204,10 +DA:206,10 +DA:207,10 +DA:208,10 +DA:209,4 +DA:212,6 +DA:214,6 +DA:219,6 +DA:220,6 +DA:225,5 +DA:226,5 +DA:227,5 +DA:228,5 +DA:229,2 +DA:232,3 +DA:234,3 +DA:236,3 +DA:240,3 +DA:241,3 +DA:246,5 +DA:248,5 +DA:249,5 +DA:250,5 +DA:251,2 +DA:254,3 +DA:256,3 +DA:261,3 +DA:262,3 +DA:267,0 +DA:268,0 +DA:269,0 +DA:270,0 +DA:273,0 +DA:275,0 +DA:279,0 +DA:280,0 +DA:285,5 +DA:287,5 +DA:288,5 +DA:289,5 +DA:290,2 +DA:293,3 +DA:295,3 +DA:299,3 +DA:300,3 +DA:305,5 +DA:307,5 +DA:308,5 +DA:309,5 +DA:310,2 +DA:313,3 +DA:315,3 +DA:317,3 +DA:318,6 +DA:319,6 +DA:320,6 +DA:323,3 +DA:327,3 +DA:328,3 +DA:334,1 +DA:338,1 +DA:342,5 +DA:344,5 +DA:345,5 +DA:346,5 +DA:347,2 +DA:350,3 +DA:352,3 +DA:357,3 +DA:358,3 +DA:363,1 +DA:367,1 +DA:371,1 +DA:372,1 +DA:373,1 +DA:374,1 +DA:375,1 +DA:380,1 +DA:381,1 +DA:382,1 +DA:383,1 +DA:384,1 +DA:389,1 +DA:390,1 +DA:391,1 +DA:392,1 +DA:393,1 +DA:398,1 +DA:399,1 +DA:400,1 +DA:401,1 +DA:402,1 +DA:407,1 +DA:409,1 +DA:413,1 +DA:417,1 +DA:420,1 +DA:421,1 +DA:422,1 +DA:423,1 +DA:424,1 +DA:426,1 +DA:427,1 +DA:428,1 +DA:429,1 +DA:430,1 +DA:432,1 +DA:433,1 +DA:440,1 +DA:441,1 +DA:442,1 +DA:445,1 +DA:447,1 +DA:451,1 +DA:456,0 +DA:458,0 +DA:463,0 +DA:467,0 +DA:469,0 +DA:474,0 +DA:478,1 +DA:480,1 +DA:484,1 +DA:488,1 +DA:490,1 +DA:495,1 +DA:499,1 +DA:503,1 +DA:507,1 +DA:512,1 +DA:516,1 +DA:518,1 +DA:522,1 +DA:526,1 +DA:531,1 +DA:535,1 +DA:539,1 +DA:543,1 +DA:548,1 +DA:552,0 +DA:553,0 +DA:554,0 +DA:555,0 +DA:557,0 +DA:562,2 +DA:563,2 +DA:564,2 +DA:569,2 +DA:570,2 +DA:571,2 +DA:576,2 +DA:577,2 +DA:578,2 +DA:583,2 +DA:584,2 +DA:585,2 +DA:590,2 +DA:591,2 +DA:596,2 +DA:597,2 +DA:602,2 +DA:603,2 +DA:608,2 +DA:609,2 +LF:211 +LH:190 +BRDA:17,0,0,5 +BRDA:17,0,1,5 +BRDA:46,1,0,5 +BRDA:46,1,1,5 +BRDA:164,2,0,26 +BRDA:164,2,1,26 +BRDA:187,3,0,9 +BRDA:197,4,0,5 +BRDA:203,5,0,5 +BRDA:208,6,0,4 +BRDA:228,7,0,2 +BRDA:234,8,0,0 +BRDA:234,8,1,3 +BRDA:245,9,0,5 +BRDA:250,10,0,2 +BRDA:269,11,0,0 +BRDA:284,12,0,0 +BRDA:289,13,0,2 +BRDA:304,14,0,5 +BRDA:309,15,0,2 +BRDA:341,16,0,0 +BRDA:346,17,0,2 +BRDA:370,18,0,1 +BRDA:374,19,0,1 +BRDA:383,20,0,1 +BRDA:392,21,0,1 +BRDA:401,22,0,1 +BRDA:416,23,0,1 +BRDA:422,24,0,1 +BRDA:422,25,0,1 +BRDA:422,25,1,1 +BRDA:428,26,0,1 +BRF:32 +BRH:28 +end_of_record +TN: +SF:schemaregistry/confluent/meta_pb.ts +FNF:0 +FNH:0 +DA:6,1 +DA:8,1 +DA:14,1 +DA:41,1 +DA:47,1 +DA:53,1 +DA:59,1 +DA:65,1 +DA:71,1 +LF:9 +LH:9 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/confluent/types/decimal_pb.ts +FNF:0 +FNH:0 +DA:6,1 +DA:12,1 +DA:45,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/dekregistry/constants.ts +FNF:0 +FNH:0 +DA:1,5 +DA:4,5 +LF:2 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/dekregistry/dekregistry-client.ts +FN:66,(anonymous_1) +FN:80,(anonymous_2) +FN:88,(anonymous_3) +FN:108,(anonymous_4) +FN:128,(anonymous_5) +FN:135,(anonymous_6) +FN:139,(anonymous_7) +FN:163,(anonymous_8) +FN:166,(anonymous_9) +FN:181,(anonymous_10) +FN:185,(anonymous_11) +FN:212,(anonymous_12) +FN:216,(anonymous_13) +FN:232,(anonymous_14) +FN:237,(anonymous_15) +FNF:15 +FNH:14 +FNDA:7,(anonymous_1) +FNDA:15,(anonymous_2) +FNDA:5,(anonymous_3) +FNDA:22,(anonymous_4) +FNDA:5,(anonymous_5) +FNDA:6,(anonymous_6) +FNDA:6,(anonymous_7) +FNDA:1,(anonymous_8) +FNDA:1,(anonymous_9) +FNDA:7,(anonymous_10) +FNDA:7,(anonymous_11) +FNDA:3,(anonymous_12) +FNDA:3,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:2,(anonymous_15) +DA:1,4 +DA:2,4 +DA:3,4 +DA:4,4 +DA:5,4 +DA:67,7 +DA:73,7 +DA:74,7 +DA:75,7 +DA:76,7 +DA:77,7 +DA:81,15 +DA:82,15 +DA:83,15 +DA:85,0 +DA:89,5 +DA:90,0 +DA:93,5 +DA:94,5 +DA:95,5 +DA:96,5 +DA:98,0 +DA:99,0 +DA:101,0 +DA:105,5 +DA:109,22 +DA:110,5 +DA:113,17 +DA:114,5 +DA:115,5 +DA:116,5 +DA:118,0 +DA:119,0 +DA:121,0 +DA:125,17 +DA:129,5 +DA:130,5 +DA:131,5 +DA:137,6 +DA:139,6 +DA:140,6 +DA:141,6 +DA:142,2 +DA:145,4 +DA:154,4 +DA:158,4 +DA:159,4 +DA:164,1 +DA:166,1 +DA:167,1 +DA:168,1 +DA:169,1 +DA:171,0 +DA:173,0 +DA:176,0 +DA:177,0 +DA:183,7 +DA:185,7 +DA:186,7 +DA:187,7 +DA:188,2 +DA:191,5 +DA:197,5 +DA:199,5 +DA:203,5 +DA:205,5 +DA:206,5 +DA:208,5 +DA:214,3 +DA:216,3 +DA:217,3 +DA:218,3 +DA:219,2 +DA:221,1 +DA:222,1 +DA:224,1 +DA:227,1 +DA:228,1 +DA:233,0 +DA:238,2 +DA:239,2 +DA:240,2 +DA:244,4 +LF:83 +LH:70 +BRDA:69,0,0,7 +BRDA:69,0,1,7 +BRDA:82,1,0,15 +BRDA:89,2,0,0 +BRDA:93,3,0,5 +BRDA:98,4,0,0 +BRDA:109,5,0,5 +BRDA:113,6,0,5 +BRDA:118,7,0,0 +BRDA:129,8,0,5 +BRDA:141,9,0,2 +BRDA:149,10,0,4 +BRDA:149,10,1,4 +BRDA:150,11,0,4 +BRDA:150,11,1,4 +BRDA:163,12,0,1 +BRDA:168,13,0,1 +BRDA:182,14,0,0 +BRDA:187,15,0,2 +BRDA:195,16,0,5 +BRDA:195,16,1,5 +BRDA:213,17,0,1 +BRDA:213,18,0,3 +BRDA:218,19,0,2 +BRF:24 +BRH:20 +end_of_record +TN: +SF:schemaregistry/dekregistry/mock-dekregistry-client.ts +FN:10,(anonymous_1) +FN:15,(anonymous_2) +FN:36,(anonymous_3) +FN:46,(anonymous_4) +FN:67,(anonymous_5) +FN:93,(anonymous_6) +FNF:6 +FNH:5 +FNDA:20,(anonymous_1) +FNDA:7,(anonymous_2) +FNDA:8,(anonymous_3) +FNDA:9,(anonymous_4) +FNDA:13,(anonymous_5) +FNDA:0,(anonymous_6) +DA:2,5 +DA:3,5 +DA:4,5 +DA:11,20 +DA:12,20 +DA:17,7 +DA:18,7 +DA:19,7 +DA:20,0 +DA:23,7 +DA:32,7 +DA:33,7 +DA:37,8 +DA:38,8 +DA:39,8 +DA:40,6 +DA:43,2 +DA:48,9 +DA:49,9 +DA:50,9 +DA:51,0 +DA:54,9 +DA:63,9 +DA:64,9 +DA:69,13 +DA:70,1 +DA:71,1 +DA:72,2 +DA:73,2 +DA:75,2 +DA:78,1 +DA:79,0 +DA:81,1 +DA:84,13 +DA:85,13 +DA:86,13 +DA:87,11 +DA:90,2 +DA:94,0 +DA:98,5 +LF:40 +LH:36 +BRDA:19,0,0,0 +BRDA:27,1,0,7 +BRDA:27,1,1,2 +BRDA:28,2,0,7 +BRDA:28,2,1,2 +BRDA:36,3,0,1 +BRDA:39,4,0,6 +BRDA:39,5,0,8 +BRDA:39,5,1,6 +BRDA:39,5,2,0 +BRDA:47,6,0,0 +BRDA:50,7,0,0 +BRDA:58,8,0,9 +BRDA:58,8,1,9 +BRDA:68,9,0,0 +BRDA:68,10,0,2 +BRDA:69,11,0,1 +BRDA:73,12,0,2 +BRDA:73,13,0,2 +BRDA:73,13,1,2 +BRDA:73,13,2,2 +BRDA:73,13,3,2 +BRDA:78,14,0,0 +BRDA:86,15,0,11 +BRF:24 +BRH:18 +end_of_record +TN: +SF:schemaregistry/google/type/calendar_period_pb.ts +FN:35,(anonymous_0) +FNF:1 +FNH:1 +FNDA:1,(anonymous_0) +DA:20,1 +DA:25,1 +DA:35,1 +DA:41,1 +DA:48,1 +DA:56,1 +DA:65,1 +DA:72,1 +DA:80,1 +DA:87,1 +DA:94,1 +DA:100,1 +LF:12 +LH:12 +BRDA:35,0,0,1 +BRDA:35,0,1,1 +BRF:2 +BRH:2 +end_of_record +TN: +SF:schemaregistry/google/type/color_pb.ts +FNF:0 +FNH:0 +DA:20,1 +DA:21,1 +DA:27,1 +DA:202,1 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/google/type/date_pb.ts +FNF:0 +FNH:0 +DA:20,1 +DA:26,1 +DA:77,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/google/type/datetime_pb.ts +FNF:0 +FNH:0 +DA:20,1 +DA:22,1 +DA:28,1 +DA:149,1 +DA:178,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/google/type/dayofweek_pb.ts +FN:33,(anonymous_0) +FNF:1 +FNH:1 +FNDA:1,(anonymous_0) +DA:20,1 +DA:25,1 +DA:33,1 +DA:39,1 +DA:46,1 +DA:53,1 +DA:60,1 +DA:67,1 +DA:74,1 +DA:81,1 +DA:88,1 +DA:94,1 +LF:12 +LH:12 +BRDA:33,0,0,1 +BRDA:33,0,1,1 +BRF:2 +BRH:2 +end_of_record +TN: +SF:schemaregistry/google/type/expr_pb.ts +FNF:0 +FNH:0 +DA:20,1 +DA:26,1 +DA:103,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/google/type/fraction_pb.ts +FNF:0 +FNH:0 +DA:20,1 +DA:26,1 +DA:55,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/google/type/latlng_pb.ts +FNF:0 +FNH:0 +DA:20,1 +DA:26,1 +DA:58,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/google/type/money_pb.ts +FNF:0 +FNH:0 +DA:20,1 +DA:26,1 +DA:67,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/google/type/month_pb.ts +FN:33,(anonymous_0) +FNF:1 +FNH:1 +FNDA:1,(anonymous_0) +DA:20,1 +DA:25,1 +DA:33,1 +DA:39,1 +DA:46,1 +DA:53,1 +DA:60,1 +DA:67,1 +DA:74,1 +DA:81,1 +DA:88,1 +DA:95,1 +DA:102,1 +DA:109,1 +DA:116,1 +DA:123,1 +DA:129,1 +LF:17 +LH:17 +BRDA:33,0,0,1 +BRDA:33,0,1,1 +BRF:2 +BRH:2 +end_of_record +TN: +SF:schemaregistry/google/type/postal_address_pb.ts +FNF:0 +FNH:0 +DA:20,1 +DA:26,1 +DA:191,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/google/type/quaternion_pb.ts +FNF:0 +FNH:0 +DA:20,1 +DA:26,1 +DA:123,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/google/type/timeofday_pb.ts +FNF:0 +FNH:0 +DA:20,1 +DA:26,1 +DA:73,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/rules/encryption/encrypt-executor.ts +FN:38,(anonymous_6) +FN:57,(anonymous_7) +FN:60,(anonymous_8) +FN:66,(anonymous_9) +FN:71,(anonymous_10) +FN:75,(anonymous_11) +FN:84,(anonymous_12) +FN:90,(anonymous_13) +FN:100,(anonymous_14) +FN:111,(anonymous_15) +FN:133,(anonymous_16) +FN:138,(anonymous_17) +FN:154,(anonymous_18) +FN:175,(anonymous_19) +FN:192,(anonymous_20) +FN:209,(anonymous_21) +FN:214,(anonymous_22) +FN:219,(anonymous_23) +FN:224,(anonymous_24) +FN:237,(anonymous_25) +FN:249,(anonymous_26) +FN:253,(anonymous_27) +FN:260,(anonymous_28) +FN:301,(anonymous_29) +FN:312,(anonymous_30) +FN:323,(anonymous_31) +FN:380,(anonymous_32) +FN:397,(anonymous_33) +FN:418,(anonymous_34) +FN:426,(anonymous_35) +FN:480,(anonymous_36) +FN:486,(anonymous_37) +FN:498,(anonymous_38) +FN:509,(anonymous_39) +FN:521,getKmsClient +FNF:35 +FNH:32 +FNDA:3,(anonymous_6) +FNDA:3,(anonymous_7) +FNDA:3,(anonymous_8) +FNDA:15,(anonymous_9) +FNDA:3,(anonymous_10) +FNDA:9,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:9,(anonymous_13) +FNDA:9,(anonymous_14) +FNDA:9,(anonymous_15) +FNDA:11,(anonymous_16) +FNDA:2,(anonymous_17) +FNDA:2,(anonymous_18) +FNDA:6,(anonymous_19) +FNDA:12,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:1,(anonymous_22) +FNDA:6,(anonymous_23) +FNDA:11,(anonymous_24) +FNDA:9,(anonymous_25) +FNDA:15,(anonymous_26) +FNDA:11,(anonymous_27) +FNDA:7,(anonymous_28) +FNDA:7,(anonymous_29) +FNDA:2,(anonymous_30) +FNDA:11,(anonymous_31) +FNDA:11,(anonymous_32) +FNDA:2,(anonymous_33) +FNDA:11,(anonymous_34) +FNDA:11,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:1,(anonymous_37) +FNDA:6,(anonymous_38) +FNDA:9,(anonymous_39) +FNDA:5,getKmsClient +DA:1,3 +DA:10,3 +DA:11,3 +DA:12,3 +DA:14,3 +DA:15,3 +DA:16,3 +DA:18,3 +DA:19,3 +DA:20,3 +DA:21,3 +DA:22,3 +DA:25,3 +DA:27,3 +DA:29,3 +DA:31,3 +DA:33,3 +DA:36,3 +DA:38,3 +DA:39,3 +DA:40,3 +DA:41,3 +DA:57,3 +DA:58,3 +DA:61,3 +DA:62,3 +DA:63,3 +DA:67,15 +DA:68,15 +DA:72,3 +DA:76,9 +DA:77,9 +DA:78,9 +DA:80,9 +DA:81,9 +DA:85,0 +DA:86,0 +DA:91,9 +DA:92,9 +DA:93,9 +DA:94,1 +DA:96,9 +DA:97,9 +DA:101,9 +DA:102,9 +DA:103,0 +DA:105,9 +DA:106,0 +DA:108,9 +DA:112,9 +DA:113,9 +DA:114,8 +DA:116,1 +DA:117,1 +DA:118,0 +DA:120,1 +DA:121,0 +DA:123,1 +DA:127,3 +DA:128,3 +DA:134,11 +DA:135,11 +DA:139,2 +DA:142,0 +DA:145,0 +DA:148,2 +DA:150,0 +DA:155,2 +DA:156,2 +DA:158,0 +DA:162,0 +DA:165,2 +DA:169,2 +DA:171,0 +DA:177,6 +DA:179,0 +DA:180,0 +DA:181,0 +DA:184,6 +DA:185,6 +DA:186,6 +DA:188,0 +DA:194,12 +DA:196,1 +DA:197,1 +DA:198,1 +DA:201,11 +DA:202,11 +DA:203,11 +DA:205,0 +DA:210,0 +DA:211,0 +DA:215,1 +DA:216,1 +DA:220,6 +DA:221,6 +DA:225,11 +DA:226,11 +DA:230,3 +DA:234,9 +DA:243,9 +DA:244,9 +DA:245,9 +DA:246,9 +DA:250,15 +DA:254,11 +DA:255,7 +DA:257,11 +DA:261,7 +DA:262,7 +DA:263,7 +DA:264,7 +DA:268,7 +DA:269,7 +DA:270,2 +DA:271,0 +DA:273,2 +DA:274,0 +DA:276,2 +DA:277,0 +DA:279,2 +DA:280,2 +DA:282,0 +DA:284,2 +DA:285,0 +DA:288,7 +DA:289,0 +DA:293,7 +DA:294,0 +DA:298,7 +DA:302,7 +DA:303,7 +DA:305,2 +DA:306,2 +DA:308,0 +DA:313,2 +DA:314,2 +DA:316,0 +DA:317,0 +DA:319,0 +DA:324,11 +DA:325,11 +DA:326,11 +DA:327,10 +DA:329,11 +DA:336,11 +DA:337,11 +DA:338,11 +DA:339,11 +DA:340,2 +DA:341,0 +DA:343,2 +DA:344,2 +DA:345,2 +DA:347,2 +DA:348,2 +DA:350,2 +DA:351,2 +DA:359,2 +DA:360,2 +DA:362,0 +DA:364,2 +DA:365,0 +DA:369,11 +DA:370,5 +DA:371,3 +DA:373,5 +DA:374,5 +DA:377,11 +DA:381,11 +DA:383,11 +DA:384,11 +DA:385,0 +DA:387,11 +DA:388,9 +DA:390,2 +DA:391,2 +DA:393,0 +DA:398,2 +DA:400,2 +DA:401,2 +DA:402,2 +DA:404,2 +DA:405,2 +DA:406,2 +DA:408,2 +DA:409,2 +DA:411,0 +DA:412,0 +DA:414,0 +DA:419,11 +DA:420,11 +DA:427,11 +DA:428,0 +DA:430,11 +DA:432,4 +DA:433,4 +DA:434,0 +DA:436,4 +DA:437,4 +DA:438,0 +DA:440,4 +DA:441,4 +DA:442,4 +DA:443,4 +DA:444,0 +DA:446,4 +DA:447,2 +DA:449,2 +DA:454,7 +DA:455,5 +DA:457,2 +DA:459,7 +DA:460,0 +DA:462,7 +DA:463,7 +DA:464,1 +DA:465,1 +DA:466,0 +DA:468,1 +DA:470,7 +DA:471,7 +DA:472,7 +DA:473,7 +DA:476,0 +DA:481,0 +DA:482,0 +DA:483,0 +DA:487,1 +DA:488,1 +DA:489,0 +DA:495,1 +DA:499,6 +DA:501,4 +DA:503,2 +DA:505,0 +DA:510,9 +DA:512,4 +DA:514,5 +DA:516,0 +DA:522,5 +DA:523,5 +DA:524,5 +DA:525,2 +DA:526,2 +DA:527,2 +DA:529,5 +LF:247 +LH:196 +BRDA:38,0,0,3 +BRDA:38,0,1,3 +BRDA:85,1,0,0 +BRDA:93,2,0,1 +BRDA:102,3,0,0 +BRDA:105,4,0,0 +BRDA:113,5,0,8 +BRDA:117,6,0,0 +BRDA:120,7,0,0 +BRDA:139,8,0,0 +BRDA:139,8,1,0 +BRDA:139,8,2,2 +BRDA:139,8,3,0 +BRDA:156,9,0,0 +BRDA:156,9,1,0 +BRDA:156,9,2,2 +BRDA:156,9,3,0 +BRDA:177,10,0,0 +BRDA:177,10,1,2 +BRDA:177,10,2,6 +BRDA:177,10,3,0 +BRDA:194,11,0,1 +BRDA:194,11,1,5 +BRDA:194,11,2,11 +BRDA:194,11,3,0 +BRDA:254,12,0,7 +BRDA:269,13,0,2 +BRDA:270,14,0,0 +BRDA:273,15,0,0 +BRDA:273,16,0,2 +BRDA:273,16,1,2 +BRDA:276,17,0,0 +BRDA:276,18,0,2 +BRDA:276,18,1,2 +BRDA:280,19,0,0 +BRDA:284,20,0,0 +BRDA:288,21,0,0 +BRDA:288,22,0,7 +BRDA:288,22,1,7 +BRDA:288,22,2,7 +BRDA:293,23,0,0 +BRDA:293,24,0,7 +BRDA:293,24,1,7 +BRDA:293,24,2,7 +BRDA:305,25,0,2 +BRDA:305,26,0,2 +BRDA:305,26,1,2 +BRDA:316,27,0,0 +BRDA:316,28,0,0 +BRDA:316,28,1,0 +BRDA:326,29,0,10 +BRDA:326,30,0,11 +BRDA:326,30,1,1 +BRDA:339,31,0,2 +BRDA:339,32,0,11 +BRDA:339,32,1,9 +BRDA:340,33,0,0 +BRDA:344,34,0,2 +BRDA:350,35,0,0 +BRDA:350,35,1,2 +BRDA:360,36,0,0 +BRDA:364,37,0,0 +BRDA:369,38,0,5 +BRDA:370,39,0,3 +BRDA:384,40,0,0 +BRDA:384,41,0,11 +BRDA:384,41,1,11 +BRDA:388,42,0,9 +BRDA:388,42,1,0 +BRDA:388,43,0,9 +BRDA:388,43,1,9 +BRDA:390,44,0,2 +BRDA:390,45,0,2 +BRDA:390,45,1,2 +BRDA:401,46,0,2 +BRDA:405,47,0,2 +BRDA:405,48,0,2 +BRDA:405,48,1,0 +BRDA:411,49,0,0 +BRDA:411,50,0,0 +BRDA:411,50,1,0 +BRDA:420,51,0,11 +BRDA:420,51,1,4 +BRDA:420,51,2,0 +BRDA:420,51,3,0 +BRDA:427,52,0,0 +BRDA:430,53,0,4 +BRDA:430,53,1,7 +BRDA:430,53,2,0 +BRDA:433,54,0,0 +BRDA:437,55,0,0 +BRDA:443,56,0,0 +BRDA:446,57,0,2 +BRDA:446,57,1,2 +BRDA:454,58,0,5 +BRDA:454,58,1,2 +BRDA:459,59,0,0 +BRDA:463,60,0,1 +BRDA:465,61,0,0 +BRDA:488,62,0,0 +BRDA:499,63,0,4 +BRDA:499,63,1,2 +BRDA:499,63,2,0 +BRDA:510,64,0,4 +BRDA:510,64,1,5 +BRDA:510,64,2,0 +BRDA:524,65,0,2 +BRF:107 +BRH:61 +end_of_record +TN: +SF:schemaregistry/rules/encryption/kms-registry.ts +FN:19,registerKmsDriver +FN:23,getKmsDriver +FN:32,registerKmsClient +FN:36,getKmsClient +FNF:4 +FNH:4 +FNDA:3,registerKmsDriver +FNDA:2,getKmsDriver +FNDA:2,registerKmsClient +FNDA:5,getKmsClient +DA:1,3 +DA:14,3 +DA:16,3 +DA:19,3 +DA:20,3 +DA:23,3 +DA:24,2 +DA:25,2 +DA:26,2 +DA:29,0 +DA:32,3 +DA:33,2 +DA:36,3 +DA:37,5 +DA:38,3 +DA:39,3 +DA:42,2 +LF:17 +LH:16 +BRDA:25,0,0,2 +BRDA:38,1,0,3 +BRF:2 +BRH:2 +end_of_record +TN: +SF:schemaregistry/rules/encryption/localkms/local-client.ts +FN:13,(anonymous_6) +FN:24,(anonymous_7) +FN:33,(anonymous_8) +FN:37,(anonymous_9) +FN:41,(anonymous_10) +FNF:5 +FNH:5 +FNDA:2,(anonymous_6) +FNDA:7,(anonymous_7) +FNDA:3,(anonymous_8) +FNDA:2,(anonymous_9) +FNDA:5,(anonymous_10) +DA:2,3 +DA:3,3 +DA:4,3 +DA:5,3 +DA:6,3 +DA:8,3 +DA:14,2 +DA:15,0 +DA:17,2 +DA:18,0 +DA:20,2 +DA:21,2 +DA:25,7 +DA:26,7 +DA:30,7 +DA:34,3 +DA:38,2 +DA:42,5 +LF:18 +LH:16 +BRDA:14,0,0,0 +BRDA:17,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:schemaregistry/rules/encryption/localkms/local-driver.ts +FN:9,(anonymous_0) +FN:13,(anonymous_1) +FN:17,(anonymous_2) +FNF:3 +FNH:3 +FNDA:3,(anonymous_0) +FNDA:2,(anonymous_1) +FNDA:2,(anonymous_2) +DA:1,3 +DA:2,3 +DA:4,3 +DA:6,3 +DA:7,3 +DA:10,3 +DA:14,2 +DA:18,2 +DA:19,2 +LF:9 +LH:9 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/rules/encryption/tink/aead.ts +FNF:0 +FNH:0 +DA:18,3 +LF:1 +LH:1 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/rules/encryption/tink/aes_gcm.ts +FN:33,(anonymous_6) +FN:39,(anonymous_7) +FN:61,(anonymous_8) +FN:93,fromRawKey +FNF:4 +FNH:4 +FNDA:17,(anonymous_6) +FNDA:6,(anonymous_7) +FNDA:11,(anonymous_8) +FNDA:17,fromRawKey +DA:7,3 +DA:8,3 +DA:10,3 +DA:11,3 +DA:12,3 +DA:13,3 +DA:19,3 +DA:25,3 +DA:32,3 +DA:33,17 +DA:34,17 +DA:41,6 +DA:42,6 +DA:43,6 +DA:45,6 +DA:46,6 +DA:51,6 +DA:52,6 +DA:55,6 +DA:56,6 +DA:63,11 +DA:64,11 +DA:65,0 +DA:67,11 +DA:68,11 +DA:70,11 +DA:71,11 +DA:72,11 +DA:77,11 +DA:78,11 +DA:80,11 +DA:81,11 +DA:88,0 +DA:93,3 +DA:94,17 +DA:95,17 +DA:96,17 +DA:107,17 +LF:38 +LH:36 +BRDA:42,0,0,6 +BRDA:51,1,0,6 +BRDA:64,2,0,0 +BRDA:67,3,0,11 +BRDA:77,4,0,11 +BRF:5 +BRH:4 +end_of_record +TN: +SF:schemaregistry/rules/encryption/tink/aes_siv.ts +FN:19,(anonymous_6) +FN:25,(anonymous_7) +FN:33,(anonymous_8) +FN:40,fromRawKey +FNF:4 +FNH:3 +FNDA:1,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:1,(anonymous_8) +FNDA:1,fromRawKey +DA:7,3 +DA:10,3 +DA:11,3 +DA:18,3 +DA:19,1 +DA:20,1 +DA:27,0 +DA:28,0 +DA:35,1 +DA:36,1 +DA:40,3 +DA:41,1 +LF:12 +LH:10 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/rules/encryption/tink/bytes.ts +FN:15,isEqual +FN:29,concat +FN:53,fromNumber +FN:87,fromHex +FN:106,toHex +FN:124,fromBase64 +FN:141,toBase64 +FN:161,fromByteString +FN:180,toByteString +FNF:9 +FNH:1 +FNDA:0,isEqual +FNDA:6,concat +FNDA:0,fromNumber +FNDA:0,fromHex +FNDA:0,toHex +FNDA:0,fromBase64 +FNDA:0,toBase64 +FNDA:0,fromByteString +FNDA:0,toByteString +DA:7,3 +DA:15,3 +DA:16,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:23,0 +DA:29,3 +DA:30,6 +DA:31,6 +DA:33,12 +DA:35,6 +DA:36,6 +DA:37,6 +DA:39,12 +DA:41,12 +DA:43,6 +DA:53,3 +DA:54,0 +DA:55,0 +DA:57,0 +DA:58,0 +DA:60,0 +DA:61,0 +DA:64,0 +DA:65,0 +DA:66,0 +DA:67,0 +DA:68,0 +DA:69,0 +DA:70,0 +DA:72,0 +DA:73,0 +DA:74,0 +DA:76,0 +DA:87,3 +DA:88,0 +DA:89,0 +DA:92,0 +DA:93,0 +DA:94,0 +DA:96,0 +DA:106,3 +DA:107,0 +DA:108,0 +DA:109,0 +DA:110,0 +DA:112,0 +DA:124,3 +DA:125,0 +DA:126,0 +DA:127,0 +DA:129,0 +DA:141,3 +DA:142,0 +DA:147,0 +DA:148,0 +DA:150,0 +DA:161,3 +DA:162,0 +DA:163,0 +DA:164,0 +DA:165,0 +DA:166,0 +DA:168,0 +DA:180,3 +DA:181,0 +DA:182,0 +DA:183,0 +DA:185,0 +LF:71 +LH:19 +BRDA:16,0,0,0 +BRDA:54,1,0,0 +BRDA:54,2,0,0 +BRDA:54,2,1,0 +BRDA:57,3,0,0 +BRDA:60,4,0,0 +BRDA:88,5,0,0 +BRDA:110,6,0,0 +BRDA:110,6,1,0 +BRDA:125,7,0,0 +BRDA:147,8,0,0 +BRF:11 +BRH:0 +end_of_record +TN: +SF:schemaregistry/rules/encryption/tink/hkdf.ts +FN:31,compute +FNF:1 +FNH:1 +FNDA:7,compute +DA:11,3 +DA:13,3 +DA:14,3 +DA:31,3 +DA:35,7 +DA:36,0 +DA:38,7 +DA:39,0 +DA:41,7 +DA:43,0 +DA:44,0 +DA:45,0 +DA:47,0 +DA:49,7 +DA:50,7 +DA:51,0 +DA:53,7 +DA:55,0 +DA:56,0 +DA:57,0 +DA:59,0 +DA:61,0 +DA:63,7 +DA:64,7 +DA:65,7 +DA:66,7 +DA:67,7 +DA:69,7 +DA:72,7 +DA:73,7 +DA:78,7 +DA:79,7 +DA:80,7 +DA:81,7 +DA:82,7 +DA:83,7 +DA:84,7 +DA:85,7 +DA:86,7 +DA:87,7 +DA:88,7 +DA:89,7 +DA:90,0 +DA:91,0 +DA:92,0 +DA:94,7 +DA:95,7 +DA:98,7 +LF:48 +LH:33 +BRDA:35,0,0,0 +BRDA:38,1,0,0 +BRDA:41,2,0,0 +BRDA:41,2,1,7 +BRDA:41,2,2,0 +BRDA:41,2,3,0 +BRDA:44,3,0,0 +BRDA:50,4,0,0 +BRDA:56,5,0,0 +BRDA:66,6,0,7 +BRDA:66,7,0,7 +BRDA:66,7,1,0 +BRDA:66,7,2,0 +BRDA:89,8,0,0 +BRDA:89,8,1,7 +BRF:15 +BRH:4 +end_of_record +TN: +SF:schemaregistry/rules/encryption/tink/hmac.ts +FN:30,(anonymous_6) +FN:38,(anonymous_7) +FN:47,(anonymous_8) +FN:59,fromRawKey +FNF:4 +FNH:3 +FNDA:14,(anonymous_6) +FNDA:14,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:14,fromRawKey +DA:7,3 +DA:8,3 +DA:10,3 +DA:11,3 +DA:12,3 +DA:18,3 +DA:25,3 +DA:31,14 +DA:32,14 +DA:33,14 +DA:39,14 +DA:40,14 +DA:42,14 +DA:48,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:59,3 +DA:61,14 +DA:62,14 +DA:63,0 +DA:65,14 +DA:66,0 +DA:69,14 +DA:71,0 +DA:72,0 +DA:75,0 +DA:77,14 +DA:78,0 +DA:81,14 +DA:83,0 +DA:84,0 +DA:87,0 +DA:89,0 +DA:93,14 +DA:97,14 +LF:36 +LH:22 +BRDA:62,0,0,0 +BRDA:65,1,0,0 +BRDA:69,2,0,0 +BRDA:69,2,1,14 +BRDA:69,2,2,0 +BRDA:69,2,3,0 +BRDA:71,3,0,0 +BRDA:77,4,0,0 +BRDA:83,5,0,0 +BRF:9 +BRH:1 +end_of_record +TN: +SF:schemaregistry/rules/encryption/tink/mac.ts +FNF:0 +FNH:0 +DA:18,3 +LF:1 +LH:1 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/rules/encryption/tink/random.ts +FN:21,randBytes +FNF:1 +FNH:1 +FNDA:8,randBytes +DA:11,3 +DA:12,3 +DA:21,3 +DA:22,8 +DA:23,0 +DA:25,8 +DA:26,8 +DA:27,8 +LF:8 +LH:7 +BRDA:22,0,0,0 +BRDA:22,1,0,8 +BRDA:22,1,1,8 +BRF:3 +BRH:2 +end_of_record +TN: +SF:schemaregistry/rules/encryption/tink/validators.ts +FN:19,validateAesKeySize +FN:31,requireUint8Array +FN:46,validateVersion +FN:59,validateEcdsaParams +FNF:4 +FNH:2 +FNDA:17,validateAesKeySize +FNDA:100,requireUint8Array +FNDA:0,validateVersion +FNDA:0,validateEcdsaParams +DA:7,3 +DA:8,3 +DA:9,3 +DA:19,3 +DA:20,17 +DA:21,0 +DA:31,3 +DA:32,100 +DA:33,0 +DA:46,3 +DA:47,0 +DA:48,0 +DA:59,3 +DA:60,0 +DA:62,0 +DA:63,0 +DA:66,0 +DA:68,0 +DA:69,0 +DA:73,0 +DA:75,0 +DA:76,0 +DA:79,0 +DA:81,0 +LF:24 +LH:9 +BRDA:20,0,0,0 +BRDA:32,1,0,0 +BRDA:32,2,0,100 +BRDA:32,2,1,100 +BRDA:47,3,0,0 +BRDA:47,4,0,0 +BRDA:47,4,1,0 +BRDA:60,5,0,0 +BRDA:60,5,1,0 +BRDA:60,5,2,0 +BRDA:60,5,3,0 +BRDA:62,6,0,0 +BRDA:68,7,0,0 +BRDA:68,8,0,0 +BRDA:68,8,1,0 +BRDA:75,9,0,0 +BRF:16 +BRH:2 +end_of_record +TN: +SF:schemaregistry/rules/encryption/tink/exception/invalid_arguments_exception.ts +FN:12,(anonymous_0) +FNF:1 +FNH:0 +FNDA:0,(anonymous_0) +DA:11,3 +DA:13,0 +DA:14,0 +DA:17,3 +LF:4 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/rules/encryption/tink/exception/security_exception.ts +FN:12,(anonymous_0) +FNF:1 +FNH:0 +FNDA:0,(anonymous_0) +DA:11,3 +DA:13,0 +DA:14,0 +DA:17,3 +LF:4 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/rules/encryption/tink/proto/aes_gcm_pb.ts +FNF:0 +FNH:0 +DA:22,3 +DA:28,3 +DA:50,3 +DA:72,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/rules/encryption/tink/proto/aes_siv_pb.ts +FNF:0 +FNH:0 +DA:22,3 +DA:28,3 +DA:52,3 +DA:78,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/serde/avro.ts +FN:37,(anonymous_7) +FN:40,(anonymous_8) +FN:48,(anonymous_9) +FN:71,(anonymous_10) +FN:76,(anonymous_11) +FN:77,(anonymous_12) +FN:90,(anonymous_13) +FN:93,(anonymous_14) +FN:101,(anonymous_15) +FN:146,(anonymous_16) +FN:151,(anonymous_17) +FN:152,(anonymous_18) +FN:160,toType +FN:174,(anonymous_20) +FN:174,(anonymous_21) +FN:178,(anonymous_22) +FN:196,transform +FN:215,(anonymous_24) +FN:241,transformField +FN:271,getType +FN:308,disjoint +FN:317,resolveUnion +FN:336,getInlineTags +FN:346,getInlineTagsRecursively +FN:383,impliedNamespace +FNF:25 +FNH:22 +FNDA:2,(anonymous_7) +FNDA:1,(anonymous_8) +FNDA:2,(anonymous_9) +FNDA:1,(anonymous_10) +FNDA:3,(anonymous_11) +FNDA:2,(anonymous_12) +FNDA:5,(anonymous_13) +FNDA:4,(anonymous_14) +FNDA:5,(anonymous_15) +FNDA:4,(anonymous_16) +FNDA:9,(anonymous_17) +FNDA:5,(anonymous_18) +FNDA:12,toType +FNDA:7,(anonymous_20) +FNDA:53,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:18,transform +FNDA:0,(anonymous_24) +FNDA:13,transformField +FNDA:26,getType +FNDA:13,disjoint +FNDA:0,resolveUnion +FNDA:7,getInlineTags +FNDA:30,getInlineTagsRecursively +FNDA:7,impliedNamespace +DA:1,1 +DA:9,1 +DA:13,1 +DA:20,1 +DA:21,1 +DA:22,1 +DA:34,1 +DA:38,2 +DA:39,2 +DA:40,2 +DA:41,1 +DA:43,2 +DA:44,2 +DA:49,2 +DA:50,0 +DA:52,2 +DA:53,0 +DA:56,2 +DA:57,2 +DA:61,2 +DA:63,2 +DA:64,2 +DA:65,2 +DA:67,2 +DA:68,2 +DA:72,1 +DA:73,1 +DA:77,3 +DA:78,2 +DA:79,2 +DA:80,2 +DA:87,1 +DA:91,5 +DA:92,5 +DA:93,5 +DA:94,4 +DA:96,5 +DA:97,5 +DA:102,5 +DA:103,0 +DA:105,5 +DA:106,0 +DA:109,5 +DA:110,5 +DA:111,5 +DA:112,5 +DA:113,5 +DA:114,0 +DA:116,5 +DA:119,5 +DA:120,5 +DA:121,0 +DA:122,0 +DA:124,5 +DA:125,0 +DA:126,0 +DA:127,0 +DA:129,0 +DA:132,5 +DA:136,5 +DA:137,0 +DA:139,5 +DA:141,5 +DA:143,5 +DA:147,4 +DA:148,4 +DA:152,9 +DA:153,5 +DA:154,5 +DA:155,5 +DA:167,12 +DA:168,12 +DA:169,5 +DA:172,7 +DA:174,7 +DA:178,53 +DA:179,0 +DA:181,53 +DA:182,0 +DA:184,53 +DA:187,7 +DA:188,7 +DA:192,7 +DA:193,7 +DA:197,18 +DA:198,0 +DA:200,18 +DA:201,18 +DA:202,13 +DA:204,18 +DA:207,0 +DA:208,0 +DA:209,0 +DA:211,0 +DA:213,0 +DA:214,0 +DA:215,0 +DA:217,0 +DA:218,0 +DA:219,0 +DA:220,0 +DA:222,0 +DA:224,5 +DA:225,5 +DA:226,5 +DA:227,13 +DA:229,5 +DA:231,13 +DA:232,13 +DA:233,13 +DA:234,7 +DA:237,6 +DA:249,13 +DA:250,13 +DA:251,13 +DA:258,13 +DA:259,13 +DA:260,0 +DA:261,0 +DA:264,13 +DA:267,13 +DA:272,26 +DA:274,0 +DA:276,0 +DA:278,0 +DA:280,0 +DA:283,0 +DA:285,0 +DA:287,10 +DA:289,4 +DA:291,4 +DA:294,0 +DA:296,0 +DA:298,4 +DA:300,4 +DA:302,0 +DA:304,0 +DA:309,13 +DA:310,13 +DA:311,7 +DA:314,6 +DA:318,0 +DA:319,0 +DA:320,0 +DA:321,0 +DA:322,0 +DA:323,0 +DA:324,0 +DA:326,0 +DA:327,0 +DA:328,0 +DA:329,0 +DA:333,0 +DA:337,7 +DA:338,7 +DA:339,7 +DA:340,0 +DA:342,7 +DA:347,30 +DA:348,23 +DA:349,7 +DA:350,0 +DA:351,0 +DA:353,7 +DA:354,7 +DA:355,7 +DA:356,7 +DA:357,7 +DA:358,7 +DA:359,7 +DA:361,7 +DA:362,7 +DA:364,7 +DA:365,0 +DA:367,7 +DA:368,7 +DA:369,23 +DA:370,23 +DA:371,23 +DA:372,7 +DA:374,23 +DA:375,23 +DA:376,23 +DA:384,7 +DA:385,7 +LF:185 +LH:130 +BRDA:39,0,0,2 +BRDA:39,0,1,2 +BRDA:44,1,0,2 +BRDA:44,1,1,1 +BRDA:49,2,0,0 +BRDA:52,3,0,0 +BRDA:92,4,0,5 +BRDA:92,4,1,5 +BRDA:97,5,0,5 +BRDA:97,5,1,1 +BRDA:102,6,0,0 +BRDA:105,7,0,0 +BRDA:113,8,0,0 +BRDA:120,9,0,0 +BRDA:120,9,1,5 +BRDA:124,10,0,0 +BRDA:124,10,1,5 +BRDA:126,11,0,0 +BRDA:126,11,1,0 +BRDA:136,12,0,0 +BRDA:136,12,1,5 +BRDA:168,13,0,5 +BRDA:181,14,0,0 +BRDA:197,15,0,0 +BRDA:197,16,0,18 +BRDA:197,16,1,18 +BRDA:201,17,0,13 +BRDA:204,18,0,0 +BRDA:204,18,1,0 +BRDA:204,18,2,0 +BRDA:204,18,3,0 +BRDA:204,18,4,5 +BRDA:204,18,5,13 +BRDA:208,19,0,0 +BRDA:231,20,0,13 +BRDA:232,21,0,13 +BRDA:232,21,1,0 +BRDA:233,22,0,7 +BRDA:233,23,0,13 +BRDA:233,23,1,13 +BRDA:233,23,2,13 +BRDA:259,24,0,0 +BRDA:259,24,1,13 +BRDA:260,25,0,0 +BRDA:272,26,0,0 +BRDA:272,26,1,0 +BRDA:272,26,2,0 +BRDA:272,26,3,0 +BRDA:272,26,4,0 +BRDA:272,26,5,0 +BRDA:272,26,6,0 +BRDA:272,26,7,10 +BRDA:272,26,8,4 +BRDA:272,26,9,4 +BRDA:272,26,10,0 +BRDA:272,26,11,0 +BRDA:272,26,12,0 +BRDA:272,26,13,4 +BRDA:272,26,14,4 +BRDA:272,26,15,0 +BRDA:272,26,16,0 +BRDA:310,27,0,7 +BRDA:319,28,0,0 +BRDA:319,28,1,0 +BRDA:322,29,0,0 +BRDA:326,30,0,0 +BRDA:328,31,0,0 +BRDA:347,32,0,23 +BRDA:347,32,1,7 +BRDA:347,33,0,30 +BRDA:347,33,1,30 +BRDA:349,34,0,0 +BRDA:349,34,1,7 +BRDA:353,35,0,7 +BRDA:355,36,0,7 +BRDA:358,37,0,7 +BRDA:361,38,0,7 +BRDA:364,39,0,0 +BRDA:364,40,0,7 +BRDA:364,40,1,0 +BRDA:371,41,0,7 +BRDA:371,42,0,23 +BRDA:371,42,1,7 +BRDA:375,43,0,23 +BRDA:385,44,0,0 +BRDA:385,44,1,7 +BRF:86 +BRH:45 +end_of_record +TN: +SF:schemaregistry/serde/buffer-wrapper.ts +FN:9,(anonymous_0) +FN:15,(anonymous_1) +FN:37,(anonymous_2) +FNF:3 +FNH:3 +FNDA:10,(anonymous_0) +FNDA:7,(anonymous_1) +FNDA:7,(anonymous_2) +DA:1,2 +DA:2,2 +DA:3,2 +DA:5,2 +DA:10,10 +DA:11,10 +DA:18,7 +DA:20,5 +DA:21,5 +DA:22,6 +DA:23,6 +DA:27,2 +DA:28,2 +DA:29,10 +DA:30,10 +DA:33,7 +DA:38,7 +DA:39,7 +DA:42,7 +DA:43,14 +DA:44,14 +DA:45,14 +DA:46,14 +DA:49,7 +DA:51,2 +DA:52,2 +DA:53,2 +DA:54,2 +DA:55,2 +DA:56,2 +DA:58,2 +DA:61,5 +LF:32 +LH:32 +BRDA:18,0,0,5 +BRDA:18,0,1,2 +BRDA:18,1,0,7 +BRDA:18,1,1,6 +BRDA:20,2,0,5 +BRDA:20,2,1,0 +BRDA:24,3,0,6 +BRDA:24,3,1,1 +BRDA:27,4,0,1 +BRDA:27,4,1,1 +BRDA:31,5,0,10 +BRDA:31,5,1,8 +BRDA:47,6,0,14 +BRDA:47,6,1,9 +BRDA:49,7,0,2 +BRDA:58,8,0,1 +BRDA:58,8,1,1 +BRF:17 +BRH:16 +end_of_record +TN: +SF:schemaregistry/serde/json-util.ts +FN:17,generateSchema +FN:93,(anonymous_2) +FN:110,deepEqual +FNF:3 +FNH:2 +FNDA:12,generateSchema +FNDA:10,(anonymous_2) +FNDA:0,deepEqual +DA:8,1 +DA:9,1 +DA:17,1 +DA:18,12 +DA:24,0 +DA:30,0 +DA:36,4 +DA:42,2 +DA:48,4 +DA:49,0 +DA:55,4 +DA:56,0 +DA:59,4 +DA:60,0 +DA:63,4 +DA:69,0 +DA:70,0 +DA:73,0 +DA:74,0 +DA:75,0 +DA:76,0 +DA:80,0 +DA:86,2 +DA:87,0 +DA:90,2 +DA:94,10 +DA:95,10 +DA:110,1 +DA:111,0 +DA:112,0 +DA:113,0 +DA:114,0 +DA:116,0 +DA:118,0 +DA:120,0 +LF:35 +LH:15 +BRDA:18,0,0,0 +BRDA:18,0,1,0 +BRDA:18,0,2,0 +BRDA:18,0,3,0 +BRDA:18,0,4,0 +BRDA:18,0,5,0 +BRDA:18,0,6,4 +BRDA:18,0,7,2 +BRDA:18,0,8,4 +BRDA:18,0,9,0 +BRDA:18,0,10,2 +BRDA:36,1,0,2 +BRDA:36,1,1,2 +BRDA:48,2,0,0 +BRDA:51,3,0,0 +BRDA:51,3,1,0 +BRDA:55,4,0,0 +BRDA:59,5,0,0 +BRDA:69,6,0,0 +BRDA:73,7,0,0 +BRDA:75,8,0,0 +BRDA:86,9,0,0 +BRDA:113,10,0,0 +BRF:23 +BRH:6 +end_of_record +TN: +SF:schemaregistry/serde/json.ts +FN:56,(anonymous_7) +FN:60,(anonymous_8) +FN:68,(anonymous_9) +FN:94,(anonymous_10) +FN:102,(anonymous_11) +FN:103,(anonymous_12) +FN:110,(anonymous_13) +FN:111,(anonymous_14) +FN:126,(anonymous_15) +FN:130,(anonymous_16) +FN:138,(anonymous_17) +FN:175,(anonymous_18) +FN:180,(anonymous_19) +FN:181,(anonymous_20) +FN:188,(anonymous_21) +FN:189,(anonymous_22) +FN:198,toValidateFunction +FN:216,(anonymous_24) +FN:224,(anonymous_25) +FN:233,toType +FN:247,(anonymous_27) +FN:267,transform +FN:329,transformField +FN:348,validateSubschemas +FN:360,getType +FN:396,getInlineTags +FN:401,disjoint +FNF:27 +FNH:15 +FNDA:2,(anonymous_7) +FNDA:1,(anonymous_8) +FNDA:2,(anonymous_9) +FNDA:1,(anonymous_10) +FNDA:1,(anonymous_11) +FNDA:1,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:2,(anonymous_15) +FNDA:1,(anonymous_16) +FNDA:2,(anonymous_17) +FNDA:1,(anonymous_18) +FNDA:1,(anonymous_19) +FNDA:1,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,toValidateFunction +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:2,toType +FNDA:0,(anonymous_27) +FNDA:2,transform +FNDA:0,transformField +FNDA:0,validateSubschemas +FNDA:2,getType +FNDA:0,getInlineTags +FNDA:0,disjoint +DA:1,1 +DA:9,1 +DA:14,1 +DA:15,1 +DA:16,1 +DA:17,1 +DA:22,1 +DA:25,1 +DA:28,1 +DA:29,1 +DA:30,1 +DA:31,1 +DA:32,1 +DA:52,1 +DA:57,2 +DA:58,2 +DA:59,2 +DA:60,2 +DA:61,1 +DA:63,2 +DA:64,2 +DA:69,2 +DA:70,0 +DA:72,2 +DA:73,0 +DA:76,2 +DA:77,2 +DA:81,2 +DA:82,2 +DA:83,2 +DA:84,2 +DA:85,2 +DA:86,0 +DA:87,0 +DA:88,0 +DA:91,2 +DA:95,1 +DA:96,1 +DA:97,0 +DA:99,1 +DA:103,1 +DA:104,1 +DA:105,1 +DA:106,1 +DA:111,0 +DA:112,0 +DA:113,0 +DA:114,0 +DA:122,1 +DA:127,2 +DA:128,2 +DA:129,2 +DA:130,2 +DA:131,1 +DA:133,2 +DA:134,2 +DA:139,2 +DA:140,0 +DA:142,2 +DA:143,0 +DA:146,2 +DA:147,2 +DA:148,0 +DA:149,0 +DA:150,0 +DA:154,2 +DA:155,2 +DA:156,2 +DA:157,2 +DA:158,0 +DA:160,2 +DA:161,2 +DA:162,2 +DA:163,0 +DA:166,2 +DA:167,0 +DA:169,2 +DA:171,2 +DA:172,2 +DA:176,1 +DA:177,1 +DA:181,1 +DA:182,1 +DA:183,1 +DA:184,1 +DA:189,0 +DA:190,0 +DA:191,0 +DA:192,0 +DA:205,0 +DA:206,0 +DA:207,0 +DA:210,0 +DA:212,0 +DA:213,0 +DA:214,0 +DA:215,0 +DA:216,0 +DA:217,0 +DA:219,0 +DA:221,0 +DA:222,0 +DA:223,0 +DA:224,0 +DA:225,0 +DA:227,0 +DA:229,0 +DA:230,0 +DA:240,2 +DA:241,2 +DA:242,0 +DA:245,2 +DA:247,2 +DA:248,0 +DA:249,0 +DA:250,0 +DA:252,0 +DA:255,2 +DA:256,2 +DA:258,2 +DA:259,0 +DA:261,2 +DA:263,2 +DA:264,2 +DA:268,2 +DA:269,0 +DA:271,2 +DA:272,2 +DA:273,0 +DA:275,2 +DA:276,0 +DA:277,0 +DA:278,0 +DA:281,2 +DA:282,0 +DA:283,0 +DA:284,0 +DA:287,2 +DA:288,0 +DA:289,0 +DA:290,0 +DA:293,2 +DA:294,0 +DA:295,0 +DA:296,0 +DA:300,2 +DA:301,0 +DA:303,2 +DA:304,2 +DA:306,0 +DA:307,0 +DA:308,0 +DA:309,0 +DA:312,0 +DA:318,0 +DA:319,0 +DA:320,0 +DA:321,0 +DA:326,2 +DA:332,0 +DA:333,0 +DA:334,0 +DA:335,0 +DA:336,0 +DA:337,0 +DA:338,0 +DA:341,0 +DA:344,0 +DA:349,0 +DA:350,0 +DA:351,0 +DA:352,0 +DA:357,0 +DA:361,2 +DA:362,0 +DA:364,2 +DA:365,2 +DA:367,0 +DA:368,0 +DA:370,0 +DA:371,0 +DA:373,0 +DA:375,0 +DA:376,0 +DA:378,0 +DA:380,0 +DA:382,0 +DA:384,0 +DA:386,0 +DA:388,0 +DA:390,0 +DA:392,0 +DA:397,0 +DA:398,0 +DA:402,0 +DA:403,0 +DA:404,0 +DA:407,0 +LF:198 +LH:91 +BRDA:58,0,0,2 +BRDA:58,0,1,2 +BRDA:59,1,0,2 +BRDA:59,1,1,2 +BRDA:64,2,0,2 +BRDA:64,2,1,1 +BRDA:69,3,0,0 +BRDA:72,4,0,0 +BRDA:85,5,0,0 +BRDA:87,6,0,0 +BRDA:87,7,0,0 +BRDA:87,7,1,0 +BRDA:96,8,0,0 +BRDA:128,9,0,2 +BRDA:128,9,1,2 +BRDA:129,10,0,2 +BRDA:129,10,1,2 +BRDA:134,11,0,2 +BRDA:134,11,1,1 +BRDA:139,12,0,0 +BRDA:142,13,0,0 +BRDA:147,14,0,0 +BRDA:149,15,0,0 +BRDA:149,16,0,0 +BRDA:149,16,1,0 +BRDA:157,17,0,0 +BRDA:162,18,0,0 +BRDA:166,19,0,0 +BRDA:166,19,1,2 +BRDA:206,20,0,0 +BRDA:214,21,0,0 +BRDA:214,21,1,0 +BRDA:241,22,0,0 +BRDA:249,23,0,0 +BRDA:258,24,0,0 +BRDA:258,24,1,2 +BRDA:268,25,0,0 +BRDA:268,26,0,2 +BRDA:268,26,1,2 +BRDA:268,26,2,2 +BRDA:272,27,0,0 +BRDA:275,28,0,0 +BRDA:275,29,0,2 +BRDA:275,29,1,0 +BRDA:277,30,0,0 +BRDA:281,31,0,0 +BRDA:281,32,0,2 +BRDA:281,32,1,0 +BRDA:283,33,0,0 +BRDA:287,34,0,0 +BRDA:287,35,0,2 +BRDA:287,35,1,0 +BRDA:289,36,0,0 +BRDA:293,37,0,0 +BRDA:294,38,0,0 +BRDA:300,39,0,0 +BRDA:304,40,0,0 +BRDA:304,40,1,0 +BRDA:304,40,2,0 +BRDA:304,40,3,0 +BRDA:304,40,4,0 +BRDA:304,40,5,0 +BRDA:306,41,0,0 +BRDA:318,42,0,0 +BRDA:320,43,0,0 +BRDA:320,44,0,0 +BRDA:320,44,1,0 +BRDA:320,44,2,0 +BRDA:336,45,0,0 +BRDA:336,45,1,0 +BRDA:337,46,0,0 +BRDA:361,47,0,0 +BRDA:364,48,0,2 +BRDA:367,49,0,0 +BRDA:370,50,0,0 +BRDA:370,51,0,0 +BRDA:370,51,1,0 +BRDA:373,52,0,0 +BRDA:373,52,1,0 +BRDA:373,52,2,0 +BRDA:373,52,3,0 +BRDA:373,52,4,0 +BRDA:373,52,5,0 +BRDA:373,52,6,0 +BRDA:373,52,7,0 +BRDA:375,53,0,0 +BRDA:375,54,0,0 +BRDA:375,54,1,0 +BRDA:403,55,0,0 +BRF:89 +BRH:21 +end_of_record +TN: +SF:schemaregistry/serde/protobuf.ts +FN:100,(anonymous_1) +FN:105,(anonymous_2) +FN:113,(anonymous_3) +FN:139,(anonymous_4) +FN:160,(anonymous_5) +FN:166,(anonymous_6) +FN:168,(anonymous_7) +FN:175,(anonymous_8) +FN:217,(anonymous_9) +FN:228,(anonymous_10) +FN:246,(anonymous_11) +FN:265,(anonymous_12) +FN:284,(anonymous_13) +FN:288,(anonymous_14) +FN:296,(anonymous_15) +FN:327,(anonymous_16) +FN:339,(anonymous_17) +FN:352,(anonymous_18) +FN:356,(anonymous_19) +FN:377,(anonymous_20) +FN:388,(anonymous_21) +FN:396,(anonymous_22) +FN:405,transform +FN:436,transformField +FN:460,getType +FN:499,getInlineTags +FN:508,disjoint +FN:517,isBuiltin +FNF:28 +FNH:27 +FNDA:2,(anonymous_1) +FNDA:1,(anonymous_2) +FNDA:2,(anonymous_3) +FNDA:2,(anonymous_4) +FNDA:2,(anonymous_5) +FNDA:2,(anonymous_6) +FNDA:2,(anonymous_7) +FNDA:2,(anonymous_8) +FNDA:2,(anonymous_9) +FNDA:2,(anonymous_10) +FNDA:2,(anonymous_11) +FNDA:1,(anonymous_12) +FNDA:2,(anonymous_13) +FNDA:1,(anonymous_14) +FNDA:2,(anonymous_15) +FNDA:1,(anonymous_16) +FNDA:2,(anonymous_17) +FNDA:2,(anonymous_18) +FNDA:2,(anonymous_19) +FNDA:2,(anonymous_20) +FNDA:2,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:14,transform +FNDA:8,transformField +FNDA:8,getType +FNDA:8,getInlineTags +FNDA:12,disjoint +FNDA:6,isBuiltin +DA:1,1 +DA:11,1 +DA:16,1 +DA:26,1 +DA:38,1 +DA:39,1 +DA:40,1 +DA:41,1 +DA:42,1 +DA:43,1 +DA:44,1 +DA:45,1 +DA:46,1 +DA:47,1 +DA:48,1 +DA:49,1 +DA:50,1 +DA:51,1 +DA:52,1 +DA:53,1 +DA:54,1 +DA:55,1 +DA:56,1 +DA:58,1 +DA:95,1 +DA:101,2 +DA:102,2 +DA:103,2 +DA:104,2 +DA:105,2 +DA:106,1 +DA:108,2 +DA:109,2 +DA:114,2 +DA:115,0 +DA:117,2 +DA:118,0 +DA:121,2 +DA:122,2 +DA:123,0 +DA:125,2 +DA:126,2 +DA:127,0 +DA:129,2 +DA:130,2 +DA:131,2 +DA:132,2 +DA:133,2 +DA:134,2 +DA:135,2 +DA:136,2 +DA:140,2 +DA:141,2 +DA:142,0 +DA:144,2 +DA:145,2 +DA:146,2 +DA:147,2 +DA:149,2 +DA:156,2 +DA:157,2 +DA:161,2 +DA:162,2 +DA:163,2 +DA:167,2 +DA:168,2 +DA:169,2 +DA:170,0 +DA:177,2 +DA:178,2 +DA:179,2 +DA:180,2 +DA:181,2 +DA:183,0 +DA:184,0 +DA:185,0 +DA:187,0 +DA:189,2 +DA:194,2 +DA:195,2 +DA:196,2 +DA:197,0 +DA:198,0 +DA:200,0 +DA:203,0 +DA:205,2 +DA:218,2 +DA:219,2 +DA:220,2 +DA:221,2 +DA:222,2 +DA:223,2 +DA:225,2 +DA:229,2 +DA:230,2 +DA:231,2 +DA:235,2 +DA:236,2 +DA:237,2 +DA:238,2 +DA:240,0 +DA:241,0 +DA:242,0 +DA:247,2 +DA:248,2 +DA:249,2 +DA:250,2 +DA:251,2 +DA:252,2 +DA:256,0 +DA:257,0 +DA:258,0 +DA:262,0 +DA:266,1 +DA:267,1 +DA:268,0 +DA:270,1 +DA:271,1 +DA:272,0 +DA:274,1 +DA:280,1 +DA:285,2 +DA:286,2 +DA:287,2 +DA:288,2 +DA:289,1 +DA:291,2 +DA:292,2 +DA:297,2 +DA:298,0 +DA:300,2 +DA:301,0 +DA:304,2 +DA:305,2 +DA:306,2 +DA:307,2 +DA:309,2 +DA:310,2 +DA:312,2 +DA:313,2 +DA:318,2 +DA:319,0 +DA:321,2 +DA:323,2 +DA:324,2 +DA:328,1 +DA:329,1 +DA:330,0 +DA:332,1 +DA:333,1 +DA:334,0 +DA:336,1 +DA:340,2 +DA:341,2 +DA:342,0 +DA:344,2 +DA:345,2 +DA:346,0 +DA:348,2 +DA:349,2 +DA:353,2 +DA:354,2 +DA:355,2 +DA:356,2 +DA:357,2 +DA:358,2 +DA:359,2 +DA:360,0 +DA:362,2 +DA:364,0 +DA:365,0 +DA:366,0 +DA:368,0 +DA:372,2 +DA:373,2 +DA:374,2 +DA:378,2 +DA:379,2 +DA:380,2 +DA:381,2 +DA:382,2 +DA:383,2 +DA:385,2 +DA:389,2 +DA:390,2 +DA:391,2 +DA:393,0 +DA:397,0 +DA:398,0 +DA:399,0 +DA:401,0 +DA:406,14 +DA:407,0 +DA:409,14 +DA:410,2 +DA:411,4 +DA:414,14 +DA:415,0 +DA:417,14 +DA:418,14 +DA:419,2 +DA:420,2 +DA:421,8 +DA:422,8 +DA:424,2 +DA:426,12 +DA:427,12 +DA:428,12 +DA:429,12 +DA:430,4 +DA:433,8 +DA:438,8 +DA:439,8 +DA:446,8 +DA:447,8 +DA:448,8 +DA:449,0 +DA:450,0 +DA:453,8 +DA:456,8 +DA:461,8 +DA:463,0 +DA:465,2 +DA:467,0 +DA:469,0 +DA:471,6 +DA:473,2 +DA:475,2 +DA:481,2 +DA:487,0 +DA:490,0 +DA:492,0 +DA:495,0 +DA:500,8 +DA:501,8 +DA:502,4 +DA:503,4 +DA:505,4 +DA:509,12 +DA:510,12 +DA:511,4 +DA:514,8 +DA:518,6 +LF:243 +LH:192 +BRDA:102,0,0,2 +BRDA:102,0,1,2 +BRDA:103,1,0,2 +BRDA:103,1,1,2 +BRDA:104,2,0,2 +BRDA:104,2,1,2 +BRDA:109,3,0,2 +BRDA:109,3,1,1 +BRDA:114,4,0,0 +BRDA:117,5,0,0 +BRDA:122,6,0,0 +BRDA:126,7,0,0 +BRDA:141,8,0,0 +BRDA:169,9,0,0 +BRDA:180,10,0,2 +BRDA:184,11,0,0 +BRDA:196,12,0,0 +BRDA:197,13,0,0 +BRDA:197,13,1,0 +BRDA:231,14,0,2 +BRDA:231,14,1,0 +BRDA:248,15,0,2 +BRDA:248,15,1,0 +BRDA:251,16,0,2 +BRDA:257,17,0,0 +BRDA:267,18,0,0 +BRDA:271,19,0,0 +BRDA:287,20,0,2 +BRDA:287,20,1,2 +BRDA:292,21,0,2 +BRDA:292,21,1,1 +BRDA:297,22,0,0 +BRDA:300,23,0,0 +BRDA:318,24,0,0 +BRDA:318,24,1,2 +BRDA:329,25,0,0 +BRDA:333,26,0,0 +BRDA:341,27,0,0 +BRDA:345,28,0,0 +BRDA:357,29,0,2 +BRDA:357,29,1,0 +BRDA:359,30,0,0 +BRDA:365,31,0,0 +BRDA:390,32,0,2 +BRDA:398,33,0,0 +BRDA:406,34,0,0 +BRDA:406,35,0,14 +BRDA:406,35,1,14 +BRDA:409,36,0,2 +BRDA:414,37,0,0 +BRDA:418,38,0,2 +BRDA:427,39,0,12 +BRDA:428,40,0,12 +BRDA:428,40,1,0 +BRDA:429,41,0,4 +BRDA:429,42,0,12 +BRDA:429,42,1,12 +BRDA:429,42,2,12 +BRDA:448,43,0,0 +BRDA:448,43,1,8 +BRDA:449,44,0,0 +BRDA:461,45,0,0 +BRDA:461,45,1,2 +BRDA:461,45,2,0 +BRDA:461,45,3,0 +BRDA:461,45,4,6 +BRDA:461,45,5,0 +BRDA:471,46,0,2 +BRDA:471,46,1,2 +BRDA:471,46,2,2 +BRDA:471,46,3,2 +BRDA:471,46,4,2 +BRDA:471,46,5,2 +BRDA:471,46,6,2 +BRDA:471,46,7,0 +BRDA:471,46,8,0 +BRDA:471,46,9,0 +BRDA:471,46,10,0 +BRDA:471,46,11,0 +BRDA:471,46,12,0 +BRDA:471,46,13,0 +BRDA:471,46,14,0 +BRDA:501,47,0,4 +BRDA:501,48,0,8 +BRDA:501,48,1,4 +BRDA:510,49,0,4 +BRDA:518,50,0,6 +BRDA:518,50,1,0 +BRDA:518,50,2,0 +BRF:89 +BRH:44 +end_of_record +TN: +SF:schemaregistry/serde/rule-registry.ts +FN:9,registerRuleExecutor +FN:14,getRuleExecutor +FN:19,getRuleExecutors +FN:24,registerRuleAction +FN:29,getRuleAction +FN:34,getRuleActions +FN:39,clearRules +FNF:7 +FNH:3 +FNDA:3,registerRuleExecutor +FNDA:9,getRuleExecutor +FNDA:15,getRuleExecutors +FNDA:0,registerRuleAction +FNDA:0,getRuleAction +FNDA:0,getRuleActions +FNDA:0,clearRules +DA:3,3 +DA:5,3 +DA:9,3 +DA:10,3 +DA:14,3 +DA:15,9 +DA:19,3 +DA:20,15 +DA:24,3 +DA:25,0 +DA:29,3 +DA:30,0 +DA:34,3 +DA:35,0 +DA:39,3 +DA:40,0 +DA:41,0 +LF:17 +LH:12 +BRF:0 +BRH:0 +end_of_record +TN: +SF:schemaregistry/serde/serde.ts +FN:13,(anonymous_0) +FN:22,(anonymous_1) +FN:50,(anonymous_2) +FN:58,(anonymous_3) +FN:62,(anonymous_4) +FN:67,(anonymous_5) +FN:86,(anonymous_6) +FN:166,(anonymous_7) +FN:186,(anonymous_8) +FN:204,(anonymous_9) +FN:224,(anonymous_10) +FN:228,(anonymous_11) +FN:236,(anonymous_12) +FN:265,(anonymous_13) +FN:282,(anonymous_14) +FN:286,(anonymous_15) +FN:290,(anonymous_16) +FN:304,(anonymous_17) +FN:316,(anonymous_18) +FN:320,(anonymous_19) +FN:323,(anonymous_20) +FN:327,(anonymous_21) +FN:330,(anonymous_22) +FN:335,(anonymous_23) +FN:348,(anonymous_24) +FN:407,(anonymous_25) +FN:423,(anonymous_26) +FN:439,(anonymous_27) +FN:462,(anonymous_28) +FN:479,(anonymous_29) +FN:498,(anonymous_30) +FN:506,(anonymous_31) +FN:514,(anonymous_32) +FN:530,(anonymous_33) +FN:545,(anonymous_34) +FN:574,(anonymous_35) +FN:583,(anonymous_36) +FN:614,areTransformsWithSameTag +FN:631,(anonymous_38) +FN:639,(anonymous_39) +FN:646,(anonymous_40) +FN:652,(anonymous_41) +FN:676,(anonymous_42) +FN:679,(anonymous_43) +FN:683,(anonymous_44) +FN:687,(anonymous_45) +FN:693,(anonymous_46) +FN:696,(anonymous_47) +FN:700,(anonymous_48) +FN:704,(anonymous_49) +FN:711,(anonymous_50) +FN:720,(anonymous_51) +FN:725,(anonymous_52) +FNF:53 +FNH:29 +FNDA:3,(anonymous_0) +FNDA:0,(anonymous_1) +FNDA:15,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:30,(anonymous_4) +FNDA:11,(anonymous_5) +FNDA:15,(anonymous_6) +FNDA:9,(anonymous_7) +FNDA:9,(anonymous_8) +FNDA:9,(anonymous_9) +FNDA:6,(anonymous_10) +FNDA:36,(anonymous_11) +FNDA:6,(anonymous_12) +FNDA:6,(anonymous_13) +FNDA:9,(anonymous_14) +FNDA:24,(anonymous_15) +FNDA:9,(anonymous_16) +FNDA:9,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:30,(anonymous_27) +FNDA:9,(anonymous_28) +FNDA:41,(anonymous_29) +FNDA:13,(anonymous_30) +FNDA:32,(anonymous_31) +FNDA:21,(anonymous_32) +FNDA:21,(anonymous_33) +FNDA:21,(anonymous_34) +FNDA:3,(anonymous_35) +FNDA:9,(anonymous_36) +FNDA:0,areTransformsWithSameTag +FNDA:21,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:3,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:0,(anonymous_43) +FNDA:0,(anonymous_44) +FNDA:0,(anonymous_45) +FNDA:0,(anonymous_46) +FNDA:0,(anonymous_47) +FNDA:9,(anonymous_48) +FNDA:0,(anonymous_49) +FNDA:0,(anonymous_50) +FNDA:0,(anonymous_51) +FNDA:0,(anonymous_52) +DA:1,3 +DA:2,3 +DA:10,3 +DA:13,3 +DA:14,3 +DA:15,3 +DA:18,3 +DA:20,3 +DA:23,0 +DA:44,3 +DA:48,15 +DA:51,15 +DA:52,15 +DA:53,15 +DA:59,0 +DA:63,30 +DA:64,30 +DA:68,11 +DA:69,11 +DA:70,10 +DA:72,1 +DA:73,0 +DA:74,0 +DA:81,0 +DA:82,0 +DA:89,15 +DA:90,0 +DA:93,15 +DA:95,0 +DA:96,0 +DA:98,0 +DA:99,0 +DA:101,15 +DA:102,15 +DA:104,9 +DA:106,15 +DA:108,15 +DA:109,6 +DA:111,9 +DA:112,9 +DA:113,9 +DA:114,0 +DA:116,9 +DA:117,9 +DA:119,9 +DA:120,0 +DA:122,9 +DA:124,0 +DA:125,0 +DA:127,0 +DA:129,0 +DA:130,0 +DA:132,0 +DA:134,9 +DA:136,9 +DA:137,9 +DA:138,0 +DA:140,0 +DA:142,9 +DA:143,9 +DA:144,9 +DA:146,0 +DA:147,0 +DA:149,0 +DA:151,9 +DA:152,9 +DA:154,9 +DA:157,0 +DA:158,0 +DA:160,0 +DA:163,9 +DA:168,9 +DA:169,9 +DA:170,9 +DA:172,9 +DA:173,9 +DA:174,0 +DA:176,9 +DA:177,9 +DA:179,0 +DA:180,0 +DA:182,0 +DA:187,9 +DA:188,9 +DA:190,0 +DA:191,0 +DA:192,0 +DA:195,0 +DA:198,0 +DA:201,0 +DA:205,9 +DA:206,0 +DA:207,9 +DA:208,9 +DA:210,0 +DA:223,3 +DA:225,6 +DA:229,36 +DA:237,6 +DA:238,6 +DA:239,6 +DA:240,6 +DA:241,6 +DA:243,6 +DA:244,6 +DA:245,6 +DA:246,3 +DA:247,3 +DA:248,0 +DA:249,0 +DA:250,0 +DA:251,0 +DA:253,3 +DA:254,0 +DA:255,0 +DA:256,3 +DA:257,3 +DA:258,3 +DA:260,0 +DA:262,6 +DA:266,6 +DA:267,6 +DA:268,6 +DA:281,3 +DA:283,9 +DA:287,24 +DA:291,9 +DA:292,9 +DA:293,0 +DA:299,9 +DA:300,9 +DA:301,9 +DA:305,9 +DA:306,9 +DA:307,9 +DA:308,0 +DA:310,9 +DA:311,0 +DA:313,9 +DA:317,0 +DA:320,0 +DA:321,0 +DA:323,0 +DA:324,0 +DA:327,0 +DA:328,0 +DA:330,0 +DA:331,0 +DA:336,0 +DA:337,0 +DA:339,0 +DA:340,0 +DA:341,0 +DA:342,0 +DA:345,0 +DA:350,0 +DA:351,0 +DA:360,0 +DA:363,0 +DA:364,0 +DA:365,0 +DA:366,0 +DA:367,0 +DA:368,0 +DA:369,0 +DA:370,0 +DA:372,0 +DA:374,0 +DA:375,0 +DA:376,0 +DA:377,0 +DA:378,0 +DA:379,0 +DA:380,0 +DA:382,0 +DA:384,0 +DA:385,0 +DA:391,0 +DA:397,0 +DA:399,0 +DA:401,0 +DA:402,0 +DA:404,0 +DA:409,0 +DA:410,0 +DA:412,0 +DA:413,0 +DA:414,0 +DA:415,0 +DA:416,0 +DA:417,0 +DA:419,0 +DA:420,0 +DA:424,0 +DA:426,0 +DA:428,0 +DA:439,3 +DA:440,30 +DA:441,30 +DA:442,0 +DA:444,30 +DA:448,3 +DA:465,9 +DA:466,9 +DA:467,9 +DA:468,9 +DA:469,9 +DA:470,9 +DA:471,9 +DA:472,9 +DA:473,9 +DA:474,9 +DA:475,9 +DA:476,9 +DA:480,41 +DA:481,41 +DA:482,0 +DA:484,41 +DA:485,41 +DA:486,25 +DA:488,16 +DA:489,16 +DA:490,0 +DA:491,0 +DA:492,0 +DA:495,16 +DA:499,13 +DA:500,13 +DA:501,7 +DA:503,6 +DA:507,32 +DA:508,32 +DA:509,7 +DA:511,25 +DA:515,21 +DA:516,21 +DA:517,0 +DA:519,21 +DA:526,21 +DA:527,21 +DA:531,21 +DA:532,21 +DA:533,21 +DA:534,0 +DA:535,0 +DA:536,0 +DA:537,0 +DA:542,21 +DA:546,21 +DA:547,21 +DA:574,3 +DA:575,3 +DA:585,9 +DA:588,3 +DA:589,0 +DA:590,0 +DA:592,0 +DA:595,3 +DA:598,6 +DA:599,0 +DA:600,0 +DA:602,0 +DA:605,6 +DA:607,9 +DA:608,9 +DA:615,0 +DA:624,3 +DA:632,21 +DA:633,21 +DA:634,21 +DA:635,21 +DA:636,21 +DA:640,0 +DA:641,0 +DA:647,0 +DA:652,3 +DA:653,3 +DA:654,3 +DA:655,3 +DA:656,3 +DA:657,3 +DA:658,3 +DA:659,3 +DA:660,3 +DA:661,3 +DA:662,3 +DA:663,3 +DA:664,3 +DA:665,3 +DA:666,3 +DA:675,3 +DA:680,0 +DA:684,0 +DA:692,3 +DA:697,0 +DA:701,9 +DA:709,3 +DA:712,0 +DA:717,3 +DA:721,0 +DA:722,0 +DA:726,0 +DA:727,0 +DA:728,0 +DA:729,0 +DA:731,0 +DA:733,0 +LF:307 +LH:169 +BRDA:13,0,0,3 +BRDA:13,0,1,3 +BRDA:63,1,0,30 +BRDA:63,1,1,30 +BRDA:69,2,0,10 +BRDA:89,3,0,0 +BRDA:89,4,0,15 +BRDA:89,4,1,15 +BRDA:93,5,0,0 +BRDA:93,5,1,0 +BRDA:93,5,2,15 +BRDA:102,6,0,9 +BRDA:108,7,0,6 +BRDA:113,8,0,0 +BRDA:117,9,0,9 +BRDA:117,9,1,0 +BRDA:117,9,2,0 +BRDA:119,10,0,0 +BRDA:119,11,0,9 +BRDA:119,11,1,6 +BRDA:124,12,0,0 +BRDA:124,13,0,0 +BRDA:124,13,1,0 +BRDA:129,14,0,0 +BRDA:137,15,0,0 +BRDA:144,16,0,0 +BRDA:144,16,1,9 +BRDA:146,17,0,0 +BRDA:154,18,0,9 +BRDA:154,18,1,0 +BRDA:155,19,0,9 +BRDA:155,19,1,0 +BRDA:157,20,0,0 +BRDA:169,21,0,9 +BRDA:173,22,0,0 +BRDA:179,23,0,0 +BRDA:187,24,0,9 +BRDA:187,25,0,9 +BRDA:187,25,1,0 +BRDA:190,26,0,0 +BRDA:190,27,0,0 +BRDA:190,27,1,0 +BRDA:190,27,2,0 +BRDA:192,28,0,0 +BRDA:192,28,1,0 +BRDA:192,28,2,0 +BRDA:192,28,3,0 +BRDA:205,29,0,0 +BRDA:205,29,1,9 +BRDA:207,30,0,9 +BRDA:245,31,0,3 +BRDA:245,31,1,3 +BRDA:247,32,0,0 +BRDA:247,32,1,3 +BRDA:247,33,0,3 +BRDA:247,33,1,0 +BRDA:250,34,0,0 +BRDA:253,35,0,0 +BRDA:253,35,1,3 +BRDA:253,36,0,3 +BRDA:253,36,1,0 +BRDA:256,37,0,3 +BRDA:256,37,1,0 +BRDA:292,38,0,0 +BRDA:307,39,0,0 +BRDA:307,40,0,9 +BRDA:307,40,1,0 +BRDA:310,41,0,0 +BRDA:317,42,0,0 +BRDA:317,42,1,0 +BRDA:317,42,2,0 +BRDA:317,42,3,0 +BRDA:317,42,4,0 +BRDA:317,42,5,0 +BRDA:321,43,0,0 +BRDA:321,43,1,0 +BRDA:328,44,0,0 +BRDA:328,44,1,0 +BRDA:336,45,0,0 +BRDA:341,46,0,0 +BRDA:341,47,0,0 +BRDA:341,47,1,0 +BRDA:363,48,0,0 +BRDA:363,48,1,0 +BRDA:367,49,0,0 +BRDA:367,49,1,0 +BRDA:378,50,0,0 +BRDA:382,51,0,0 +BRDA:382,52,0,0 +BRDA:382,52,1,0 +BRDA:384,53,0,0 +BRDA:384,53,1,0 +BRDA:401,54,0,0 +BRDA:409,55,0,0 +BRDA:441,56,0,0 +BRDA:481,57,0,0 +BRDA:485,58,0,25 +BRDA:489,59,0,0 +BRDA:489,60,0,16 +BRDA:489,60,1,0 +BRDA:491,61,0,0 +BRDA:500,62,0,7 +BRDA:508,63,0,7 +BRDA:533,64,0,0 +BRDA:535,65,0,0 +BRDA:585,66,0,3 +BRDA:585,66,1,3 +BRDA:585,66,2,6 +BRDA:585,66,3,6 +BRDA:590,67,0,0 +BRDA:600,68,0,0 +BRDA:615,69,0,0 +BRDA:615,69,1,0 +BRDA:615,69,2,0 +BRDA:615,69,3,0 +BRDA:615,69,4,0 +BRDA:615,69,5,0 +BRDA:615,69,6,0 +BRDA:641,70,0,0 +BRDA:641,70,1,0 +BRDA:641,70,2,0 +BRDA:641,70,3,0 +BRDA:641,70,4,0 +BRDA:641,70,5,0 +BRDA:641,70,6,0 +BRDA:641,70,7,0 +BRDA:652,71,0,3 +BRDA:652,71,1,3 +BRDA:727,72,0,0 +BRDA:728,73,0,0 +BRF:130 +BRH:39 +end_of_record +TN: +SF:schemaregistry/serde/wildcard-matcher.ts +FN:23,match +FN:35,wildcardToRegexp +FN:79,doubleSlashes +FNF:3 +FNH:2 +FNDA:27,match +FNDA:27,wildcardToRegexp +FNDA:0,doubleSlashes +DA:23,4 +DA:24,27 +DA:26,27 +DA:27,27 +DA:29,0 +DA:31,27 +DA:32,27 +DA:36,27 +DA:37,27 +DA:38,27 +DA:39,27 +DA:40,27 +DA:41,121 +DA:42,121 +DA:43,121 +DA:46,21 +DA:47,2 +DA:48,2 +DA:50,19 +DA:52,21 +DA:54,8 +DA:55,8 +DA:66,6 +DA:67,6 +DA:69,0 +DA:70,0 +DA:72,86 +DA:73,86 +DA:76,27 +DA:81,0 +DA:82,0 +DA:83,0 +DA:84,0 +DA:87,0 +DA:89,0 +LF:35 +LH:26 +BRDA:32,0,0,27 +BRDA:32,0,1,20 +BRDA:43,1,0,21 +BRDA:43,1,1,8 +BRDA:43,1,2,6 +BRDA:43,1,3,6 +BRDA:43,1,4,6 +BRDA:43,1,5,6 +BRDA:43,1,6,6 +BRDA:43,1,7,6 +BRDA:43,1,8,6 +BRDA:43,1,9,6 +BRDA:43,1,10,6 +BRDA:43,1,11,0 +BRDA:43,1,12,86 +BRDA:46,2,0,2 +BRDA:46,2,1,19 +BRDA:46,3,0,21 +BRDA:46,3,1,10 +BRDA:82,4,0,0 +BRDA:82,4,1,0 +BRF:21 +BRH:18 +end_of_record +TN: +SF:test/schemaregistry/test-constants.ts +FNF:0 +FNH:0 +DA:4,2 +DA:6,2 +DA:8,2 +DA:19,2 +DA:27,2 +DA:35,2 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/schemaregistry/dekregistry/test-constants.ts +FNF:0 +FNH:0 +DA:1,2 +DA:4,2 +DA:5,2 +DA:6,2 +DA:7,2 +DA:8,2 +DA:9,2 +DA:11,2 +DA:12,2 +DA:13,2 +DA:14,2 +DA:16,2 +DA:25,2 +DA:34,2 +DA:43,2 +DA:52,2 +DA:61,2 +DA:71,2 +DA:72,2 +DA:73,2 +LF:20 +LH:20 +BRF:0 +BRH:0 +end_of_record +TN: +SF:test/schemaregistry/serde/author_pb.ts +FNF:0 +FNH:0 +DA:6,1 +DA:7,1 +DA:13,1 +DA:45,1 +DA:67,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record diff --git a/jest.config.js b/jest.config.js index a6110529..e3471a95 100644 --- a/jest.config.js +++ b/jest.config.js @@ -3,4 +3,3 @@ module.exports = { '^.+\\.tsx?$': 'ts-jest', }, }; - \ No newline at end of file diff --git a/proto/test/schemaregistry/serde/cycle.proto b/proto/test/schemaregistry/serde/cycle.proto new file mode 100644 index 00000000..a5351102 --- /dev/null +++ b/proto/test/schemaregistry/serde/cycle.proto @@ -0,0 +1,9 @@ +syntax = "proto3"; + +package test; +option go_package="../test"; + +message LinkedList { + int32 value = 1; + LinkedList next = 10; +} \ No newline at end of file diff --git a/proto/test/schemaregistry/serde/dep.proto b/proto/test/schemaregistry/serde/dep.proto new file mode 100644 index 00000000..c0beccf9 --- /dev/null +++ b/proto/test/schemaregistry/serde/dep.proto @@ -0,0 +1,11 @@ +syntax = "proto3"; + +package test; +option go_package="../test"; + +import "test/schemaregistry/serde/test.proto"; + +message DependencyMessage { + bool is_active = 1; + TestMessage test_messsage = 2; +} diff --git a/proto/test/schemaregistry/serde/author.proto b/proto/test/schemaregistry/serde/example.proto similarity index 100% rename from proto/test/schemaregistry/serde/author.proto rename to proto/test/schemaregistry/serde/example.proto diff --git a/proto/test/schemaregistry/serde/nested.proto b/proto/test/schemaregistry/serde/nested.proto new file mode 100644 index 00000000..3b7ce1b5 --- /dev/null +++ b/proto/test/schemaregistry/serde/nested.proto @@ -0,0 +1,59 @@ +syntax = "proto3"; + +package test; +option go_package="../test"; + +import "google/protobuf/timestamp.proto"; + +message UserId { + oneof user_id { + string kafka_user_id = 1; + int32 other_user_id = 2; + MessageId another_id = 3; + } +} + +message MessageId { + string id = 1; +} + +enum Status { + ACTIVE = 0; + INACTIVE = 1; +} + +message ComplexType { + oneof some_val { + string one_id = 1; + int32 other_id = 2; + } + bool is_active = 3; +} + +/* + * Complex message using nested protos and repeated fields + */ +message NestedMessage { + UserId user_id = 1; + bool is_active = 2; + repeated string experiments_active = 3; + google.protobuf.Timestamp updated_at = 4; + Status status = 5; + ComplexType complex_type = 6; + map map_type = 7; + InnerMessage inner = 8; + + message InnerMessage { + string id = 1 [json_name="id"]; + repeated int32 ids = 2 [packed=true]; + } + + enum InnerEnum { + option allow_alias = true; + ZERO = 0; + ALSO_ZERO = 0; + } + + reserved 14, 15, 9 to 11; + reserved "foo", "bar"; +} diff --git a/proto/test/schemaregistry/serde/newerwidget.proto b/proto/test/schemaregistry/serde/newerwidget.proto new file mode 100644 index 00000000..4243c0eb --- /dev/null +++ b/proto/test/schemaregistry/serde/newerwidget.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; + +package test; +option go_package="../test"; + +message NewerWidget { + string name = 1; + int32 length = 2; + int32 version = 3; +} diff --git a/proto/test/schemaregistry/serde/newwidget.proto b/proto/test/schemaregistry/serde/newwidget.proto new file mode 100644 index 00000000..fdca7b28 --- /dev/null +++ b/proto/test/schemaregistry/serde/newwidget.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; + +package test; +option go_package="../test"; + +message NewWidget { + string name = 1; + int32 height = 2; + int32 version = 3; +} diff --git a/proto/test/schemaregistry/serde/test.proto b/proto/test/schemaregistry/serde/test.proto new file mode 100644 index 00000000..28afb444 --- /dev/null +++ b/proto/test/schemaregistry/serde/test.proto @@ -0,0 +1,24 @@ +syntax = "proto3"; + +package test; +option go_package="../test"; + +import "google/protobuf/descriptor.proto"; + +message TestMessage { + string test_string = 1; + bool test_bool = 2; + bytes test_bytes = 3; + double test_double = 4; + float test_float = 5; + fixed32 test_fixed32 = 6; + fixed64 test_fixed64 = 7; + int32 test_int32 = 8; + int64 test_int64 = 9; + sfixed32 test_sfixed32 = 10; + sfixed64 test_sfixed64 = 11; + sint32 test_sint32 = 12; + sint64 test_sint64 = 13; + uint32 test_uint32 = 14; + uint64 test_uint64 = 15; +} \ No newline at end of file diff --git a/proto/test/schemaregistry/serde/widget.proto b/proto/test/schemaregistry/serde/widget.proto new file mode 100644 index 00000000..94a99c2d --- /dev/null +++ b/proto/test/schemaregistry/serde/widget.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; + +package test; +option go_package="../test"; + +message Widget { + string name = 1; + int32 size = 2; + int32 version = 3; +} diff --git a/schemaregistry/mock-schemaregistry-client.ts b/schemaregistry/mock-schemaregistry-client.ts index 5677f62c..bb8973cf 100644 --- a/schemaregistry/mock-schemaregistry-client.ts +++ b/schemaregistry/mock-schemaregistry-client.ts @@ -124,7 +124,7 @@ class MockClient implements Client { this.schemaToVersionCache.set(cacheKey, { version: newVersion, softDeleted: false }); } - async getBySubjectAndId(subject: string, id: number, format?: string): Promise { + async getBySubjectAndId(subject: string, id: number, format: string): Promise { const cacheKey = stringify({ subject, id }); const cacheEntry = this.idToSchemaCache.get(cacheKey); @@ -156,7 +156,7 @@ class MockClient implements Client { let json; for (const [key, value] of this.schemaToVersionCache.entries()) { const parsedKey = JSON.parse(key); - if (parsedKey.subject === subject && value.version === version && value.softDeleted === deleted) { + if (parsedKey.subject === subject && value.version === version) { json = parsedKey; } } diff --git a/schemaregistry/serde/protobuf.ts b/schemaregistry/serde/protobuf.ts index d557468c..cac6379c 100644 --- a/schemaregistry/serde/protobuf.ts +++ b/schemaregistry/serde/protobuf.ts @@ -177,14 +177,15 @@ export class ProtobufSerializer extends Serializer implements ProtobufSerde { const refs: Reference[] = [] for (let i = 0; i < fileDesc.dependencies.length; i++) { const dep = fileDesc.dependencies[i] - if (isBuiltin(dep.name)) { + const depName = dep.name + '.proto' + if (isBuiltin(depName)) { continue } - const ref = await this.resolveDependencies(dep, deps, dep.name, autoRegister, normalize) + const ref = await this.resolveDependencies(dep, deps, depName, autoRegister, normalize) if (ref == null) { throw new SerializationError('dependency not found') } - refs.push({name: dep.name, subject: ref.subject!, version: ref.version!}) + refs.push({name: depName, subject: ref.subject!, version: ref.version!}) } const info: SchemaInfo = { schema: deps.get(fileDesc.name)!, @@ -233,8 +234,7 @@ export class ProtobufSerializer extends Serializer implements ProtobufSerde { // done. Allocate an array large enough to hold count+1 entries and // populate first value with index const msgIndexes: number[] = [] - msgIndexes.length = count + 1 - msgIndexes[0] = index + msgIndexes.push(index) return msgIndexes } else { const msgIndexes = this.toMessageIndexes(parent, count + 1) @@ -368,7 +368,6 @@ export class ProtobufDeserializer extends Deserializer implements ProtobufSerde return fromBinary(FileDescriptorProtoSchema, Buffer.from(dep, 'base64')) } } - // TODO check google protos already in registry const fileRegistry = createFileRegistry(fileDesc, resolve) this.registry = createFileRegistry(this.registry, fileRegistry) return this.registry.getFile(fileDesc.name) @@ -378,9 +377,8 @@ export class ProtobufDeserializer extends Deserializer implements ProtobufSerde const bw = new BufferWrapper(payload) const count = bw.readVarInt() const msgIndexes = [] - msgIndexes.length = count for (let i = 0; i < count; i++) { - msgIndexes[i] = bw.readVarInt() + msgIndexes.push(bw.readVarInt()) } return [bw.pos, msgIndexes] } diff --git a/schemaregistry/serde/serde.ts b/schemaregistry/serde/serde.ts index 86376ca8..81de8a0e 100644 --- a/schemaregistry/serde/serde.ts +++ b/schemaregistry/serde/serde.ts @@ -71,15 +71,8 @@ export abstract class Serde { } for (let ref of references) { let metadata = await client.getSchemaMetadata(ref.subject, ref.version, true) - let info = { - schema: schema.schema, - schemaType: schema.schemaType, - references: schema.references, - metadata: schema.metadata, - ruleSet: schema.ruleSet, - } deps.set(ref.name, metadata.schema) - await this.resolveReferences(client, info, deps) + await this.resolveReferences(client, metadata, deps) } } diff --git a/test/schemaregistry/serde/protobuf.spec.ts b/test/schemaregistry/serde/protobuf.spec.ts index eb3b0601..e910d09a 100644 --- a/test/schemaregistry/serde/protobuf.spec.ts +++ b/test/schemaregistry/serde/protobuf.spec.ts @@ -14,9 +14,14 @@ import { } from "../../../schemaregistry/schemaregistry-client"; import {LocalKmsDriver} from "../../../schemaregistry/rules/encryption/localkms/local-driver"; import {FieldEncryptionExecutor} from "../../../schemaregistry/rules/encryption/encrypt-executor"; -import {AuthorSchema, file_test_schemaregistry_serde_author} from "./author_pb"; +import {AuthorSchema, file_test_schemaregistry_serde_example, PizzaSchema} from "./test/example_pb"; import {create, toBinary} from "@bufbuild/protobuf"; import {FileDescriptorProtoSchema} from "@bufbuild/protobuf/wkt"; +import { + NestedMessage_InnerMessageSchema +} from "./test/nested_pb"; +import {TestMessageSchema} from "./test/test_pb"; +import {DependencyMessageSchema} from "./test/dep_pb"; const fieldEncryptionExecutor = FieldEncryptionExecutor.register() LocalKmsDriver.register() @@ -42,6 +47,83 @@ describe('ProtobufSerializer', () => { let obj2 = await deser.deserialize("topic1", bytes) expect(obj2).toEqual(obj) }) + it('serialize second messsage', async () => { + let conf: ClientConfig = { + baseURLs: ['mock://'], + cacheCapacity: 1000 + } + let client = SchemaRegistryClient.newClient(conf) + let ser = new ProtobufSerializer(client, SerdeType.VALUE, {autoRegisterSchemas: true}) + ser.registry.add(PizzaSchema) + let obj = create(PizzaSchema, { + size: 'Extra extra large', + toppings: ['anchovies', 'mushrooms'] + }) + let bytes = await ser.serialize("topic1", obj) + + let deser = new ProtobufDeserializer(client, SerdeType.VALUE, {}) + let obj2 = await deser.deserialize("topic1", bytes) + expect(obj2).toEqual(obj) + }) + it('serialize nested messsage', async () => { + let conf: ClientConfig = { + baseURLs: ['mock://'], + cacheCapacity: 1000 + } + let client = SchemaRegistryClient.newClient(conf) + let ser = new ProtobufSerializer(client, SerdeType.VALUE, {autoRegisterSchemas: true}) + ser.registry.add(NestedMessage_InnerMessageSchema) + let obj = create(NestedMessage_InnerMessageSchema, { + id: "inner" + }) + let bytes = await ser.serialize("topic1", obj) + + let deser = new ProtobufDeserializer(client, SerdeType.VALUE, {}) + let obj2 = await deser.deserialize("topic1", bytes) + expect(obj2).toEqual(obj) + }) + it('serialize reference', async () => { + let conf: ClientConfig = { + baseURLs: ['mock://'], + cacheCapacity: 1000 + } + let client = SchemaRegistryClient.newClient(conf) + let ser = new ProtobufSerializer(client, SerdeType.VALUE, {autoRegisterSchemas: true}) + ser.registry.add(TestMessageSchema) + ser.registry.add(DependencyMessageSchema) + let msg = create(TestMessageSchema, { + testString: "hi", + testBool: true, + testBytes: Buffer.from([1, 2]), + testDouble: 1.23, + testFloat: 3.45, + testFixed32: 67, + testFixed64: 89n, + testInt32: 100, + testInt64: 200n, + testSfixed32: 300, + testSfixed64: 400n, + testSint32: 500, + testSint64: 600n, + testUint32: 700, + testUint64: 800n, + }) + let obj = create(DependencyMessageSchema, { + isActive: true, + testMesssage: msg + }) + let bytes = await ser.serialize("topic1", obj) + + let deser = new ProtobufDeserializer(client, SerdeType.VALUE, {}) + let obj2 = await deser.deserialize("topic1", bytes) + expect(obj2.testMesssage.testString).toEqual(msg.testString); + expect(obj2.testMesssage.testBool).toEqual(msg.testBool); + expect(obj2.testMesssage.testBytes).toEqual(msg.testBytes); + expect(obj2.testMesssage.testDouble).toBeCloseTo(msg.testDouble, 0.001); + expect(obj2.testMesssage.testFloat).toBeCloseTo(msg.testFloat, 0.001); + expect(obj2.testMesssage.testFixed32).toEqual(msg.testFixed32); + expect(obj2.testMesssage.testFixed64).toEqual(msg.testFixed64); + }) it('basic encryption', async () => { let conf: ClientConfig = { baseURLs: ['mock://'], @@ -77,7 +159,7 @@ describe('ProtobufSerializer', () => { let info: SchemaInfo = { schemaType: 'AVRO', - schema: Buffer.from(toBinary(FileDescriptorProtoSchema, file_test_schemaregistry_serde_author.proto)).toString('base64'), + schema: Buffer.from(toBinary(FileDescriptorProtoSchema, file_test_schemaregistry_serde_example.proto)).toString('base64'), ruleSet } diff --git a/test/schemaregistry/serde/test/cycle_pb.ts b/test/schemaregistry/serde/test/cycle_pb.ts new file mode 100644 index 00000000..73e60993 --- /dev/null +++ b/test/schemaregistry/serde/test/cycle_pb.ts @@ -0,0 +1,36 @@ +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file test/schemaregistry/serde/cycle.proto (package test, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file test/schemaregistry/serde/cycle.proto. + */ +export const file_test_schemaregistry_serde_cycle: GenFile = /*@__PURE__*/ + fileDesc("CiV0ZXN0L3NjaGVtYXJlZ2lzdHJ5L3NlcmRlL2N5Y2xlLnByb3RvEgR0ZXN0IjsKCkxpbmtlZExpc3QSDQoFdmFsdWUYASABKAUSHgoEbmV4dBgKIAEoCzIQLnRlc3QuTGlua2VkTGlzdEIJWgcuLi90ZXN0YgZwcm90bzM"); + +/** + * @generated from message test.LinkedList + */ +export type LinkedList = Message<"test.LinkedList"> & { + /** + * @generated from field: int32 value = 1; + */ + value: number; + + /** + * @generated from field: test.LinkedList next = 10; + */ + next?: LinkedList; +}; + +/** + * Describes the message test.LinkedList. + * Use `create(LinkedListSchema)` to create a new message. + */ +export const LinkedListSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_test_schemaregistry_serde_cycle, 0); + diff --git a/test/schemaregistry/serde/test/dep_pb.ts b/test/schemaregistry/serde/test/dep_pb.ts new file mode 100644 index 00000000..80783aee --- /dev/null +++ b/test/schemaregistry/serde/test/dep_pb.ts @@ -0,0 +1,38 @@ +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file test/schemaregistry/serde/dep.proto (package test, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { TestMessage } from "./test_pb"; +import { file_test_schemaregistry_serde_test } from "./test_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file test/schemaregistry/serde/dep.proto. + */ +export const file_test_schemaregistry_serde_dep: GenFile = /*@__PURE__*/ + fileDesc("CiN0ZXN0L3NjaGVtYXJlZ2lzdHJ5L3NlcmRlL2RlcC5wcm90bxIEdGVzdCJQChFEZXBlbmRlbmN5TWVzc2FnZRIRCglpc19hY3RpdmUYASABKAgSKAoNdGVzdF9tZXNzc2FnZRgCIAEoCzIRLnRlc3QuVGVzdE1lc3NhZ2VCCVoHLi4vdGVzdGIGcHJvdG8z", [file_test_schemaregistry_serde_test]); + +/** + * @generated from message test.DependencyMessage + */ +export type DependencyMessage = Message<"test.DependencyMessage"> & { + /** + * @generated from field: bool is_active = 1; + */ + isActive: boolean; + + /** + * @generated from field: test.TestMessage test_messsage = 2; + */ + testMesssage?: TestMessage; +}; + +/** + * Describes the message test.DependencyMessage. + * Use `create(DependencyMessageSchema)` to create a new message. + */ +export const DependencyMessageSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_test_schemaregistry_serde_dep, 0); + diff --git a/test/schemaregistry/serde/author_pb.ts b/test/schemaregistry/serde/test/example_pb.ts similarity index 63% rename from test/schemaregistry/serde/author_pb.ts rename to test/schemaregistry/serde/test/example_pb.ts index 1384d36d..2120dfd8 100644 --- a/test/schemaregistry/serde/author_pb.ts +++ b/test/schemaregistry/serde/test/example_pb.ts @@ -1,17 +1,17 @@ // @generated by protoc-gen-es v2.0.0 with parameter "target=ts" -// @generated from file test/schemaregistry/serde/author.proto (package test, syntax proto3) +// @generated from file test/schemaregistry/serde/example.proto (package test, syntax proto3) /* eslint-disable */ import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; -import { file_confluent_meta } from "../../../schemaregistry/confluent/meta_pb"; +import { file_confluent_meta } from "../../../../schemaregistry/confluent/meta_pb"; import type { Message } from "@bufbuild/protobuf"; /** - * Describes the file test/schemaregistry/serde/author.proto. + * Describes the file test/schemaregistry/serde/example.proto. */ -export const file_test_schemaregistry_serde_author: GenFile = /*@__PURE__*/ - fileDesc("CiZ0ZXN0L3NjaGVtYXJlZ2lzdHJ5L3NlcmRlL2F1dGhvci5wcm90bxIEdGVzdCJWCgZBdXRob3ISFgoEbmFtZRgBIAEoCUIIgkQFGgNQSUkSCgoCaWQYAiABKAUSGQoHcGljdHVyZRgDIAEoDEIIgkQFGgNQSUkSDQoFd29ya3MYBCADKAkiJwoFUGl6emESDAoEc2l6ZRgBIAEoCRIQCgh0b3BwaW5ncxgCIAMoCUIJWgcuLi90ZXN0YgZwcm90bzM", [file_confluent_meta]); +export const file_test_schemaregistry_serde_example: GenFile = /*@__PURE__*/ + fileDesc("Cid0ZXN0L3NjaGVtYXJlZ2lzdHJ5L3NlcmRlL2V4YW1wbGUucHJvdG8SBHRlc3QiVgoGQXV0aG9yEhYKBG5hbWUYASABKAlCCIJEBRoDUElJEgoKAmlkGAIgASgFEhkKB3BpY3R1cmUYAyABKAxCCIJEBRoDUElJEg0KBXdvcmtzGAQgAygJIicKBVBpenphEgwKBHNpemUYASABKAkSEAoIdG9wcGluZ3MYAiADKAlCCVoHLi4vdGVzdGIGcHJvdG8z", [file_confluent_meta]); /** * @generated from message test.Author @@ -43,7 +43,7 @@ export type Author = Message<"test.Author"> & { * Use `create(AuthorSchema)` to create a new message. */ export const AuthorSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_test_schemaregistry_serde_author, 0); + messageDesc(file_test_schemaregistry_serde_example, 0); /** * @generated from message test.Pizza @@ -65,5 +65,5 @@ export type Pizza = Message<"test.Pizza"> & { * Use `create(PizzaSchema)` to create a new message. */ export const PizzaSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_test_schemaregistry_serde_author, 1); + messageDesc(file_test_schemaregistry_serde_example, 1); diff --git a/test/schemaregistry/serde/test/nested_pb.ts b/test/schemaregistry/serde/test/nested_pb.ts new file mode 100644 index 00000000..a76d1dfb --- /dev/null +++ b/test/schemaregistry/serde/test/nested_pb.ts @@ -0,0 +1,221 @@ +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file test/schemaregistry/serde/nested.proto (package test, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file test/schemaregistry/serde/nested.proto. + */ +export const file_test_schemaregistry_serde_nested: GenFile = /*@__PURE__*/ + fileDesc("CiZ0ZXN0L3NjaGVtYXJlZ2lzdHJ5L3NlcmRlL25lc3RlZC5wcm90bxIEdGVzdCJsCgZVc2VySWQSFwoNa2Fma2FfdXNlcl9pZBgBIAEoCUgAEhcKDW90aGVyX3VzZXJfaWQYAiABKAVIABIlCgphbm90aGVyX2lkGAMgASgLMg8udGVzdC5NZXNzYWdlSWRIAEIJCgd1c2VyX2lkIhcKCU1lc3NhZ2VJZBIKCgJpZBgBIAEoCSJSCgtDb21wbGV4VHlwZRIQCgZvbmVfaWQYASABKAlIABISCghvdGhlcl9pZBgCIAEoBUgAEhEKCWlzX2FjdGl2ZRgDIAEoCEIKCghzb21lX3ZhbCLcAwoNTmVzdGVkTWVzc2FnZRIdCgd1c2VyX2lkGAEgASgLMgwudGVzdC5Vc2VySWQSEQoJaXNfYWN0aXZlGAIgASgIEhoKEmV4cGVyaW1lbnRzX2FjdGl2ZRgDIAMoCRIuCgp1cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIcCgZzdGF0dXMYBSABKA4yDC50ZXN0LlN0YXR1cxInCgxjb21wbGV4X3R5cGUYBiABKAsyES50ZXN0LkNvbXBsZXhUeXBlEjIKCG1hcF90eXBlGAcgAygLMiAudGVzdC5OZXN0ZWRNZXNzYWdlLk1hcFR5cGVFbnRyeRIvCgVpbm5lchgIIAEoCzIgLnRlc3QuTmVzdGVkTWVzc2FnZS5Jbm5lck1lc3NhZ2UaLgoMTWFwVHlwZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaKwoMSW5uZXJNZXNzYWdlEgoKAmlkGAEgASgJEg8KA2lkcxgCIAMoBUICEAEiKAoJSW5uZXJFbnVtEggKBFpFUk8QABINCglBTFNPX1pFUk8QABoCEAFKBAgOEA9KBAgPEBBKBAgJEAxSA2Zvb1IDYmFyKiIKBlN0YXR1cxIKCgZBQ1RJVkUQABIMCghJTkFDVElWRRABQglaBy4uL3Rlc3RiBnByb3RvMw", [file_google_protobuf_timestamp]); + +/** + * @generated from message test.UserId + */ +export type UserId = Message<"test.UserId"> & { + /** + * @generated from oneof test.UserId.user_id + */ + userId: { + /** + * @generated from field: string kafka_user_id = 1; + */ + value: string; + case: "kafkaUserId"; + } | { + /** + * @generated from field: int32 other_user_id = 2; + */ + value: number; + case: "otherUserId"; + } | { + /** + * @generated from field: test.MessageId another_id = 3; + */ + value: MessageId; + case: "anotherId"; + } | { case: undefined; value?: undefined }; +}; + +/** + * Describes the message test.UserId. + * Use `create(UserIdSchema)` to create a new message. + */ +export const UserIdSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_test_schemaregistry_serde_nested, 0); + +/** + * @generated from message test.MessageId + */ +export type MessageId = Message<"test.MessageId"> & { + /** + * @generated from field: string id = 1; + */ + id: string; +}; + +/** + * Describes the message test.MessageId. + * Use `create(MessageIdSchema)` to create a new message. + */ +export const MessageIdSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_test_schemaregistry_serde_nested, 1); + +/** + * @generated from message test.ComplexType + */ +export type ComplexType = Message<"test.ComplexType"> & { + /** + * @generated from oneof test.ComplexType.some_val + */ + someVal: { + /** + * @generated from field: string one_id = 1; + */ + value: string; + case: "oneId"; + } | { + /** + * @generated from field: int32 other_id = 2; + */ + value: number; + case: "otherId"; + } | { case: undefined; value?: undefined }; + + /** + * @generated from field: bool is_active = 3; + */ + isActive: boolean; +}; + +/** + * Describes the message test.ComplexType. + * Use `create(ComplexTypeSchema)` to create a new message. + */ +export const ComplexTypeSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_test_schemaregistry_serde_nested, 2); + +/** + * + * Complex message using nested protos and repeated fields + * + * @generated from message test.NestedMessage + */ +export type NestedMessage = Message<"test.NestedMessage"> & { + /** + * @generated from field: test.UserId user_id = 1; + */ + userId?: UserId; + + /** + * @generated from field: bool is_active = 2; + */ + isActive: boolean; + + /** + * @generated from field: repeated string experiments_active = 3; + */ + experimentsActive: string[]; + + /** + * @generated from field: google.protobuf.Timestamp updated_at = 4; + */ + updatedAt?: Timestamp; + + /** + * @generated from field: test.Status status = 5; + */ + status: Status; + + /** + * @generated from field: test.ComplexType complex_type = 6; + */ + complexType?: ComplexType; + + /** + * @generated from field: map map_type = 7; + */ + mapType: { [key: string]: string }; + + /** + * @generated from field: test.NestedMessage.InnerMessage inner = 8; + */ + inner?: NestedMessage_InnerMessage; +}; + +/** + * Describes the message test.NestedMessage. + * Use `create(NestedMessageSchema)` to create a new message. + */ +export const NestedMessageSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_test_schemaregistry_serde_nested, 3); + +/** + * @generated from message test.NestedMessage.InnerMessage + */ +export type NestedMessage_InnerMessage = Message<"test.NestedMessage.InnerMessage"> & { + /** + * @generated from field: string id = 1; + */ + id: string; + + /** + * @generated from field: repeated int32 ids = 2 [packed = true]; + */ + ids: number[]; +}; + +/** + * Describes the message test.NestedMessage.InnerMessage. + * Use `create(NestedMessage_InnerMessageSchema)` to create a new message. + */ +export const NestedMessage_InnerMessageSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_test_schemaregistry_serde_nested, 3, 0); + +/** + * @generated from enum test.NestedMessage.InnerEnum + */ +export enum NestedMessage_InnerEnum { + /** + * @generated from enum value: ZERO = 0; + */ + ZERO = 0, + + /** + * @generated from enum value: ALSO_ZERO = 0; + */ + ALSO_ZERO = 0, +} + +/** + * Describes the enum test.NestedMessage.InnerEnum. + */ +export const NestedMessage_InnerEnumSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_test_schemaregistry_serde_nested, 3, 0); + +/** + * @generated from enum test.Status + */ +export enum Status { + /** + * @generated from enum value: ACTIVE = 0; + */ + ACTIVE = 0, + + /** + * @generated from enum value: INACTIVE = 1; + */ + INACTIVE = 1, +} + +/** + * Describes the enum test.Status. + */ +export const StatusSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_test_schemaregistry_serde_nested, 0); + diff --git a/test/schemaregistry/serde/test/newerwidget_pb.ts b/test/schemaregistry/serde/test/newerwidget_pb.ts new file mode 100644 index 00000000..69749e4d --- /dev/null +++ b/test/schemaregistry/serde/test/newerwidget_pb.ts @@ -0,0 +1,41 @@ +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file test/schemaregistry/serde/newerwidget.proto (package test, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file test/schemaregistry/serde/newerwidget.proto. + */ +export const file_test_schemaregistry_serde_newerwidget: GenFile = /*@__PURE__*/ + fileDesc("Cit0ZXN0L3NjaGVtYXJlZ2lzdHJ5L3NlcmRlL25ld2Vyd2lkZ2V0LnByb3RvEgR0ZXN0IjwKC05ld2VyV2lkZ2V0EgwKBG5hbWUYASABKAkSDgoGbGVuZ3RoGAIgASgFEg8KB3ZlcnNpb24YAyABKAVCCVoHLi4vdGVzdGIGcHJvdG8z"); + +/** + * @generated from message test.NewerWidget + */ +export type NewerWidget = Message<"test.NewerWidget"> & { + /** + * @generated from field: string name = 1; + */ + name: string; + + /** + * @generated from field: int32 length = 2; + */ + length: number; + + /** + * @generated from field: int32 version = 3; + */ + version: number; +}; + +/** + * Describes the message test.NewerWidget. + * Use `create(NewerWidgetSchema)` to create a new message. + */ +export const NewerWidgetSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_test_schemaregistry_serde_newerwidget, 0); + diff --git a/test/schemaregistry/serde/test/newwidget_pb.ts b/test/schemaregistry/serde/test/newwidget_pb.ts new file mode 100644 index 00000000..a24ad209 --- /dev/null +++ b/test/schemaregistry/serde/test/newwidget_pb.ts @@ -0,0 +1,41 @@ +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file test/schemaregistry/serde/newwidget.proto (package test, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file test/schemaregistry/serde/newwidget.proto. + */ +export const file_test_schemaregistry_serde_newwidget: GenFile = /*@__PURE__*/ + fileDesc("Cil0ZXN0L3NjaGVtYXJlZ2lzdHJ5L3NlcmRlL25ld3dpZGdldC5wcm90bxIEdGVzdCI6CglOZXdXaWRnZXQSDAoEbmFtZRgBIAEoCRIOCgZoZWlnaHQYAiABKAUSDwoHdmVyc2lvbhgDIAEoBUIJWgcuLi90ZXN0YgZwcm90bzM"); + +/** + * @generated from message test.NewWidget + */ +export type NewWidget = Message<"test.NewWidget"> & { + /** + * @generated from field: string name = 1; + */ + name: string; + + /** + * @generated from field: int32 height = 2; + */ + height: number; + + /** + * @generated from field: int32 version = 3; + */ + version: number; +}; + +/** + * Describes the message test.NewWidget. + * Use `create(NewWidgetSchema)` to create a new message. + */ +export const NewWidgetSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_test_schemaregistry_serde_newwidget, 0); + diff --git a/test/schemaregistry/serde/test/test_pb.ts b/test/schemaregistry/serde/test/test_pb.ts new file mode 100644 index 00000000..09126158 --- /dev/null +++ b/test/schemaregistry/serde/test/test_pb.ts @@ -0,0 +1,102 @@ +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file test/schemaregistry/serde/test.proto (package test, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import { file_google_protobuf_descriptor } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file test/schemaregistry/serde/test.proto. + */ +export const file_test_schemaregistry_serde_test: GenFile = /*@__PURE__*/ + fileDesc("CiR0ZXN0L3NjaGVtYXJlZ2lzdHJ5L3NlcmRlL3Rlc3QucHJvdG8SBHRlc3QiyAIKC1Rlc3RNZXNzYWdlEhMKC3Rlc3Rfc3RyaW5nGAEgASgJEhEKCXRlc3RfYm9vbBgCIAEoCBISCgp0ZXN0X2J5dGVzGAMgASgMEhMKC3Rlc3RfZG91YmxlGAQgASgBEhIKCnRlc3RfZmxvYXQYBSABKAISFAoMdGVzdF9maXhlZDMyGAYgASgHEhQKDHRlc3RfZml4ZWQ2NBgHIAEoBhISCgp0ZXN0X2ludDMyGAggASgFEhIKCnRlc3RfaW50NjQYCSABKAMSFQoNdGVzdF9zZml4ZWQzMhgKIAEoDxIVCg10ZXN0X3NmaXhlZDY0GAsgASgQEhMKC3Rlc3Rfc2ludDMyGAwgASgREhMKC3Rlc3Rfc2ludDY0GA0gASgSEhMKC3Rlc3RfdWludDMyGA4gASgNEhMKC3Rlc3RfdWludDY0GA8gASgEQglaBy4uL3Rlc3RiBnByb3RvMw", [file_google_protobuf_descriptor]); + +/** + * @generated from message test.TestMessage + */ +export type TestMessage = Message<"test.TestMessage"> & { + /** + * @generated from field: string test_string = 1; + */ + testString: string; + + /** + * @generated from field: bool test_bool = 2; + */ + testBool: boolean; + + /** + * @generated from field: bytes test_bytes = 3; + */ + testBytes: Uint8Array; + + /** + * @generated from field: double test_double = 4; + */ + testDouble: number; + + /** + * @generated from field: float test_float = 5; + */ + testFloat: number; + + /** + * @generated from field: fixed32 test_fixed32 = 6; + */ + testFixed32: number; + + /** + * @generated from field: fixed64 test_fixed64 = 7; + */ + testFixed64: bigint; + + /** + * @generated from field: int32 test_int32 = 8; + */ + testInt32: number; + + /** + * @generated from field: int64 test_int64 = 9; + */ + testInt64: bigint; + + /** + * @generated from field: sfixed32 test_sfixed32 = 10; + */ + testSfixed32: number; + + /** + * @generated from field: sfixed64 test_sfixed64 = 11; + */ + testSfixed64: bigint; + + /** + * @generated from field: sint32 test_sint32 = 12; + */ + testSint32: number; + + /** + * @generated from field: sint64 test_sint64 = 13; + */ + testSint64: bigint; + + /** + * @generated from field: uint32 test_uint32 = 14; + */ + testUint32: number; + + /** + * @generated from field: uint64 test_uint64 = 15; + */ + testUint64: bigint; +}; + +/** + * Describes the message test.TestMessage. + * Use `create(TestMessageSchema)` to create a new message. + */ +export const TestMessageSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_test_schemaregistry_serde_test, 0); + diff --git a/test/schemaregistry/serde/test/widget_pb.ts b/test/schemaregistry/serde/test/widget_pb.ts new file mode 100644 index 00000000..a8924d86 --- /dev/null +++ b/test/schemaregistry/serde/test/widget_pb.ts @@ -0,0 +1,41 @@ +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts" +// @generated from file test/schemaregistry/serde/widget.proto (package test, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file test/schemaregistry/serde/widget.proto. + */ +export const file_test_schemaregistry_serde_widget: GenFile = /*@__PURE__*/ + fileDesc("CiZ0ZXN0L3NjaGVtYXJlZ2lzdHJ5L3NlcmRlL3dpZGdldC5wcm90bxIEdGVzdCI1CgZXaWRnZXQSDAoEbmFtZRgBIAEoCRIMCgRzaXplGAIgASgFEg8KB3ZlcnNpb24YAyABKAVCCVoHLi4vdGVzdGIGcHJvdG8z"); + +/** + * @generated from message test.Widget + */ +export type Widget = Message<"test.Widget"> & { + /** + * @generated from field: string name = 1; + */ + name: string; + + /** + * @generated from field: int32 size = 2; + */ + size: number; + + /** + * @generated from field: int32 version = 3; + */ + version: number; +}; + +/** + * Describes the message test.Widget. + * Use `create(WidgetSchema)` to create a new message. + */ +export const WidgetSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_test_schemaregistry_serde_widget, 0); + From 522b5ed540fa1b1c8b7351682fe26a245c629d75 Mon Sep 17 00:00:00 2001 From: Robert Yokota Date: Tue, 27 Aug 2024 22:53:48 -0700 Subject: [PATCH 04/12] Add format params --- schemaregistry/mock-schemaregistry-client.ts | 7 +++--- schemaregistry/schemaregistry-client.ts | 26 +++++++++++++------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/schemaregistry/mock-schemaregistry-client.ts b/schemaregistry/mock-schemaregistry-client.ts index bb8973cf..ee463d4e 100644 --- a/schemaregistry/mock-schemaregistry-client.ts +++ b/schemaregistry/mock-schemaregistry-client.ts @@ -143,7 +143,7 @@ class MockClient implements Client { return cacheEntry.metadata.id; } - async getLatestSchemaMetadata(subject: string): Promise { + async getLatestSchemaMetadata(subject: string, format?: string): Promise { const version = await this.latestVersion(subject); if (version === -1) { throw new RestError("No versions found for subject", 404, 40400); @@ -152,7 +152,7 @@ class MockClient implements Client { return this.getSchemaMetadata(subject, version); } - async getSchemaMetadata(subject: string, version: number, deleted: boolean = false): Promise { + async getSchemaMetadata(subject: string, version: number, deleted: boolean = false, format?: string): Promise { let json; for (const [key, value] of this.schemaToVersionCache.entries()) { const parsedKey = JSON.parse(key); @@ -185,7 +185,8 @@ class MockClient implements Client { }; } - async getLatestWithMetadata(subject: string, metadata: { [key: string]: string }, deleted: boolean = false): Promise { + async getLatestWithMetadata(subject: string, metadata: { [key: string]: string }, + deleted: boolean = false, format?: string): Promise { let metadataStr = ''; for (const key in metadata) { diff --git a/schemaregistry/schemaregistry-client.ts b/schemaregistry/schemaregistry-client.ts index 928e761e..ce1616ea 100644 --- a/schemaregistry/schemaregistry-client.ts +++ b/schemaregistry/schemaregistry-client.ts @@ -116,9 +116,10 @@ export interface Client { registerFullResponse(subject: string, schema: SchemaInfo, normalize: boolean): Promise; getBySubjectAndId(subject: string, id: number, format?: string): Promise; getId(subject: string, schema: SchemaInfo, normalize: boolean): Promise; - getLatestSchemaMetadata(subject: string): Promise; - getSchemaMetadata(subject: string, version: number, deleted: boolean): Promise; - getLatestWithMetadata(subject: string, metadata: { [key: string]: string }, deleted: boolean): Promise; + getLatestSchemaMetadata(subject: string, format?: string): Promise; + getSchemaMetadata(subject: string, version: number, deleted: boolean, format?: string): Promise; + getLatestWithMetadata(subject: string, metadata: { [key: string]: string }, + deleted: boolean, format?: string): Promise; getAllVersions(subject: string): Promise; getVersion(subject: string, schema: SchemaInfo, normalize: boolean): Promise; getAllSubjects(): Promise; @@ -263,7 +264,7 @@ export class SchemaRegistryClient implements Client { }); } - async getLatestSchemaMetadata(subject: string): Promise { + async getLatestSchemaMetadata(subject: string, format?: string): Promise { return await this.latestToSchemaMutex.runExclusive(async () => { const cachedSchema: SchemaMetadata | undefined = this.latestToSchemaCache.get(subject); if (cachedSchema) { @@ -272,8 +273,10 @@ export class SchemaRegistryClient implements Client { subject = encodeURIComponent(subject); + let formatStr = format != null ? `&format=${format}` : ''; + const response: AxiosResponse = await this.restService.handleRequest( - `/subjects/${subject}/versions/latest`, + `/subjects/${subject}/versions/latest${formatStr}`, 'GET' ); this.latestToSchemaCache.set(subject, response.data); @@ -281,7 +284,7 @@ export class SchemaRegistryClient implements Client { }); } - async getSchemaMetadata(subject: string, version: number, deleted: boolean = false): Promise { + async getSchemaMetadata(subject: string, version: number, deleted: boolean = false, format?: string): Promise { const cacheKey = stringify({ subject, version, deleted }); return await this.versionToSchemaMutex.runExclusive(async () => { @@ -292,8 +295,10 @@ export class SchemaRegistryClient implements Client { subject = encodeURIComponent(subject); + let formatStr = format != null ? `&format=${format}` : ''; + const response: AxiosResponse = await this.restService.handleRequest( - `/subjects/${subject}/versions/${version}?deleted=${deleted}`, + `/subjects/${subject}/versions/${version}?deleted=${deleted}${formatStr}`, 'GET' ); this.versionToSchemaCache.set(cacheKey, response.data); @@ -301,7 +306,8 @@ export class SchemaRegistryClient implements Client { }); } - async getLatestWithMetadata(subject: string, metadata: { [key: string]: string }, deleted: boolean = false): Promise { + async getLatestWithMetadata(subject: string, metadata: { [key: string]: string }, + deleted: boolean = false, format?: string): Promise { const cacheKey = stringify({ subject, metadata, deleted }); return await this.metadataToSchemaMutex.runExclusive(async () => { @@ -320,8 +326,10 @@ export class SchemaRegistryClient implements Client { metadataStr += `&key=${encodedKey}&value=${encodedValue}`; } + let formatStr = format != null ? `&format=${format}` : ''; + const response: AxiosResponse = await this.restService.handleRequest( - `/subjects/${subject}/metadata?deleted=${deleted}&${metadataStr}`, + `/subjects/${subject}/metadata?deleted=${deleted}&${metadataStr}${formatStr}`, 'GET' ); this.metadataToSchemaCache.set(cacheKey, response.data); From d2aca443b5a449f11be3fc657583f902f1d8f7f6 Mon Sep 17 00:00:00 2001 From: Robert Yokota Date: Wed, 28 Aug 2024 11:16:48 -0700 Subject: [PATCH 05/12] Checkpoint --- schemaregistry/schemaregistry-client.ts | 2 +- schemaregistry/serde/avro.ts | 30 ++++++++++- schemaregistry/serde/protobuf.ts | 4 +- schemaregistry/serde/serde.ts | 22 ++++---- test/schemaregistry/serde/avro.spec.ts | 59 +++++++++++++--------- test/schemaregistry/serde/json.spec.ts | 34 +++++++++---- test/schemaregistry/serde/protobuf.spec.ts | 52 ++++++++++++------- 7 files changed, 134 insertions(+), 69 deletions(-) diff --git a/schemaregistry/schemaregistry-client.ts b/schemaregistry/schemaregistry-client.ts index ce1616ea..89d64b39 100644 --- a/schemaregistry/schemaregistry-client.ts +++ b/schemaregistry/schemaregistry-client.ts @@ -273,7 +273,7 @@ export class SchemaRegistryClient implements Client { subject = encodeURIComponent(subject); - let formatStr = format != null ? `&format=${format}` : ''; + let formatStr = format != null ? `?format=${format}` : ''; const response: AxiosResponse = await this.restService.handleRequest( `/subjects/${subject}/versions/latest${formatStr}`, diff --git a/schemaregistry/serde/avro.ts b/schemaregistry/serde/avro.ts index f908c74f..13a6c503 100644 --- a/schemaregistry/serde/avro.ts +++ b/schemaregistry/serde/avro.ts @@ -10,7 +10,7 @@ import { Client, RuleMode, SchemaInfo } from "../schemaregistry-client"; -import avro, { ForSchemaOptions, Type, types } from "avsc"; +import avro, {ForSchemaOptions, Type, types} from "avsc"; import UnwrappedUnionType = types.UnwrappedUnionType import WrappedUnionType = types.WrappedUnionType import ArrayType = types.ArrayType @@ -53,7 +53,31 @@ export class AvroSerializer extends Serializer implements AvroSerde { throw new Error('message is empty') } - let avroSchema = Type.forValue(msg) + let enumIndex = 1 + let fixedIndex = 1 + let recordIndex = 1 + + const namingHook: TypeHook = ( + avroSchema: avro.Schema, + opts: ForSchemaOptions, + ) => { + let schema = avroSchema as any + switch (schema.type) { + case 'enum': + schema.name = `Enum${enumIndex++}`; + break; + case 'fixed': + schema.name = `Fixed${fixedIndex++}`; + break; + case 'record': + schema.name = `Record${recordIndex++}`; + break; + default: + } + return undefined + } + + let avroSchema = Type.forValue(msg, { typeHook: namingHook }) const schema: SchemaInfo = { schemaType: 'AVRO', schema: JSON.stringify(avroSchema), @@ -384,3 +408,5 @@ function impliedNamespace(name: string): string | null { const match = /^(.*)\.[^.]+$/.exec(name) return match ? match[1] : null } + + diff --git a/schemaregistry/serde/protobuf.ts b/schemaregistry/serde/protobuf.ts index cac6379c..513aa139 100644 --- a/schemaregistry/serde/protobuf.ts +++ b/schemaregistry/serde/protobuf.ts @@ -307,7 +307,7 @@ export class ProtobufDeserializer extends Deserializer implements ProtobufSerde const messageDesc = this.toMessageDesc(fd, msgIndexes) const subject = this.subjectName(topic, info) - const readerMeta = await this.getReaderSchema(subject) + const readerMeta = await this.getReaderSchema(subject, 'serialized') const msgBytes = payload.subarray(5 + bytesRead) let msg = fromBinary(messageDesc, msgBytes) @@ -351,7 +351,7 @@ export class ProtobufDeserializer extends Deserializer implements ProtobufSerde async parseFileDesc(client: Client, info: SchemaInfo): Promise { const deps = new Map() - await this.resolveReferences(client, info, deps) + await this.resolveReferences(client, info, deps, 'serialized') const fileDesc = fromBinary(FileDescriptorProtoSchema, Buffer.from(info.schema, 'base64')) const resolve = (depName: string) => { if (isBuiltin(depName)) { diff --git a/schemaregistry/serde/serde.ts b/schemaregistry/serde/serde.ts index 81de8a0e..b9fb283c 100644 --- a/schemaregistry/serde/serde.ts +++ b/schemaregistry/serde/serde.ts @@ -64,13 +64,13 @@ export abstract class Serde { return strategy(topic, this.serdeType, info) } - async resolveReferences(client: Client, schema: SchemaInfo, deps: Map): Promise { + async resolveReferences(client: Client, schema: SchemaInfo, deps: Map, format?: string): Promise { let references = schema.references if (references == null) { return } for (let ref of references) { - let metadata = await client.getSchemaMetadata(ref.subject, ref.version, true) + let metadata = await client.getSchemaMetadata(ref.subject, ref.version, true, format) deps.set(ref.name, metadata.schema) await this.resolveReferences(client, metadata, deps) } @@ -244,10 +244,10 @@ export abstract class Serializer extends Serde { throw new SerializationError(`failed to match schema ID (${id} != ${useSchemaId})`) } } else if (useLatestWithMetadata != null && Object.keys(useLatestWithMetadata).length !== 0) { - info = await this.client.getLatestWithMetadata(subject, useLatestWithMetadata, true) + info = await this.client.getLatestWithMetadata(subject, useLatestWithMetadata, true, format) id = await this.client.getId(subject, info, false) } else if (useLatest) { - info = await this.client.getLatestSchemaMetadata(subject) + info = await this.client.getLatestSchemaMetadata(subject, format) id = await this.client.getId(subject, info, false) } else { id = await this.client.getId(subject, info, Boolean(normalizeSchema)) @@ -294,14 +294,14 @@ export abstract class Deserializer extends Serde { return await this.client.getBySubjectAndId(subject, id, format) } - async getReaderSchema(subject: string): Promise { + async getReaderSchema(subject: string, format?: string): Promise { let useLatestWithMetadata = this.config().useLatestWithMetadata let useLatest = this.config().useLatestVersion if (useLatestWithMetadata != null && Object.keys(useLatestWithMetadata).length !== 0) { - return await this.client.getLatestWithMetadata(subject, useLatestWithMetadata, true) + return await this.client.getLatestWithMetadata(subject, useLatestWithMetadata, true, format) } if (useLatest) { - return await this.client.getLatestSchemaMetadata(subject) + return await this.client.getLatestSchemaMetadata(subject, format) } return null } @@ -339,7 +339,7 @@ export abstract class Deserializer extends Serde { } async getMigrations(subject: string, sourceInfo: SchemaInfo, - target: SchemaMetadata): Promise { + target: SchemaMetadata, format?: string): Promise { let version = await this.client.getVersion(subject, sourceInfo, false) let source: SchemaMetadata = { id: 0, @@ -365,7 +365,7 @@ export abstract class Deserializer extends Serde { return migrations } let previous: SchemaMetadata | null = null - let versions = await this.getSchemasBetween(subject, first, last) + let versions = await this.getSchemasBetween(subject, first, last, format) for (let i = 0; i < versions.length; i++) { let version = versions[i] if (i === 0) { @@ -398,7 +398,7 @@ export abstract class Deserializer extends Serde { } async getSchemasBetween(subject: string, first: SchemaMetadata, - last: SchemaMetadata): Promise { + last: SchemaMetadata, format?: string): Promise { if (last.version!-first.version! <= 1) { return [first, last] } @@ -406,7 +406,7 @@ export abstract class Deserializer extends Serde { let version2 = last.version! let result = [first] for (let i = version1 + 1; i < version2; i++) { - let meta = await this.client.getSchemaMetadata(subject, i, true) + let meta = await this.client.getSchemaMetadata(subject, i, true, format) result.push(meta) } result.push(last) diff --git a/test/schemaregistry/serde/avro.spec.ts b/test/schemaregistry/serde/avro.spec.ts index 8480d80f..6d73c5dc 100644 --- a/test/schemaregistry/serde/avro.spec.ts +++ b/test/schemaregistry/serde/avro.spec.ts @@ -1,4 +1,4 @@ -import {describe, expect, it} from '@jest/globals'; +import {afterEach, describe, expect, it} from '@jest/globals'; import {ClientConfig} from "../../../schemaregistry/rest-service"; import { AvroDeserializer, AvroDeserializerConfig, @@ -63,10 +63,25 @@ const f1Schema = ` const fieldEncryptionExecutor = FieldEncryptionExecutor.register() LocalKmsDriver.register() +//const baseURL = 'http://localhost:8081' +const baseURL = 'mock://' + +const topic = 'topic1' +const subject = topic + '-value' + describe('AvroSerializer', () => { + afterEach(async () => { + let conf: ClientConfig = { + baseURLs: [baseURL], + cacheCapacity: 1000 + } + let client = SchemaRegistryClient.newClient(conf) + await client.deleteSubject(subject, false) + await client.deleteSubject(subject, true) + }) it('basic serialization', async () => { let conf: ClientConfig = { - baseURLs: ['mock://'], + baseURLs: [baseURL], cacheCapacity: 1000 } let client = SchemaRegistryClient.newClient(conf) @@ -78,10 +93,10 @@ describe('AvroSerializer', () => { boolField: true, bytesField: Buffer.from([1, 2]), } - let bytes = await ser.serialize("topic1", obj) + let bytes = await ser.serialize(topic, obj) let deser = new AvroDeserializer(client, SerdeType.VALUE, {}) - let obj2 = await deser.deserialize("topic1", bytes) + let obj2 = await deser.deserialize(topic, bytes) expect(obj2.intField).toEqual(obj.intField); expect(obj2.doubleField).toBeCloseTo(obj.doubleField, 0.001); expect(obj2.stringField).toEqual(obj.stringField); @@ -90,7 +105,7 @@ describe('AvroSerializer', () => { }) it('basic encryption', async () => { let conf: ClientConfig = { - baseURLs: ['mock://'], + baseURLs: [baseURL], cacheCapacity: 1000 } let client = SchemaRegistryClient.newClient(conf) @@ -126,8 +141,7 @@ describe('AvroSerializer', () => { ruleSet } - let id = await client.register('topic1-value', info, false) - expect(id).toEqual(1) + await client.register(subject, info, false) let obj = { intField: 123, @@ -136,7 +150,7 @@ describe('AvroSerializer', () => { boolField: true, bytesField: Buffer.from([1, 2]), } - let bytes = await ser.serialize("topic1", obj) + let bytes = await ser.serialize(topic, obj) // reset encrypted field obj.stringField = 'hi' @@ -149,7 +163,7 @@ describe('AvroSerializer', () => { } let deser = new AvroDeserializer(client, SerdeType.VALUE, deserConfig) fieldEncryptionExecutor.client = dekClient - let obj2 = await deser.deserialize("topic1", bytes) + let obj2 = await deser.deserialize(topic, bytes) expect(obj2.intField).toEqual(obj.intField); expect(obj2.doubleField).toBeCloseTo(obj.doubleField, 0.001); expect(obj2.stringField).toEqual(obj.stringField); @@ -158,7 +172,7 @@ describe('AvroSerializer', () => { }) it('basic encryption with preserialized data', async () => { let conf: ClientConfig = { - baseURLs: ['mock://'], + baseURLs: [baseURL], cacheCapacity: 1000 } let client = SchemaRegistryClient.newClient(conf) @@ -186,8 +200,7 @@ describe('AvroSerializer', () => { ruleSet } - let id = await client.register('topic1-value', info, false) - expect(id).toEqual(1) + await client.register(subject, info, false) let obj = { f1: 'hello world' @@ -203,15 +216,15 @@ describe('AvroSerializer', () => { await dekClient.registerKek("kek1", "local-kms", "mykey", false) const encryptedDek = "07V2ndh02DA73p+dTybwZFm7DKQSZN1tEwQh+FoX1DZLk4Yj2LLu4omYjp/84tAg3BYlkfGSz+zZacJHIE4=" - await dekClient.registerDek("kek1", "topic1-value", "AES256_GCM", 1, encryptedDek) + await dekClient.registerDek("kek1", subject, "AES256_GCM", 1, encryptedDek) const bytes = Buffer.from([0, 0, 0, 0, 1, 104, 122, 103, 121, 47, 106, 70, 78, 77, 86, 47, 101, 70, 105, 108, 97, 72, 114, 77, 121, 101, 66, 103, 100, 97, 86, 122, 114, 82, 48, 117, 100, 71, 101, 111, 116, 87, 56, 99, 65, 47, 74, 97, 108, 55, 117, 107, 114, 43, 77, 47, 121, 122]) - let obj2 = await deser.deserialize("topic1", bytes) + let obj2 = await deser.deserialize(topic, bytes) expect(obj2.f1).toEqual(obj.f1); }) it('deterministic encryption with preserialized data', async () => { let conf: ClientConfig = { - baseURLs: ['mock://'], + baseURLs: [baseURL], cacheCapacity: 1000 } let client = SchemaRegistryClient.newClient(conf) @@ -240,8 +253,7 @@ describe('AvroSerializer', () => { ruleSet } - let id = await client.register('topic1-value', info, false) - expect(id).toEqual(1) + await client.register(subject, info, false) let obj = { f1: 'hello world' @@ -257,15 +269,15 @@ describe('AvroSerializer', () => { await dekClient.registerKek("kek1", "local-kms", "mykey", false) const encryptedDek = "YSx3DTlAHrmpoDChquJMifmPntBzxgRVdMzgYL82rgWBKn7aUSnG+WIu9ozBNS3y2vXd++mBtK07w4/W/G6w0da39X9hfOVZsGnkSvry/QRht84V8yz3dqKxGMOK5A==" - await dekClient.registerDek("kek1", "topic1-value", "AES256_SIV", 1, encryptedDek) + await dekClient.registerDek("kek1", subject, "AES256_SIV", 1, encryptedDek) const bytes = Buffer.from([0, 0, 0, 0, 1, 72, 68, 54, 89, 116, 120, 114, 108, 66, 110, 107, 84, 87, 87, 57, 78, 54, 86, 98, 107, 51, 73, 73, 110, 106, 87, 72, 56, 49, 120, 109, 89, 104, 51, 107, 52, 100]) - let obj2 = await deser.deserialize("topic1", bytes) + let obj2 = await deser.deserialize(topic, bytes) expect(obj2.f1).toEqual(obj.f1); }) it('dek rotation encryption with preserialized data', async () => { let conf: ClientConfig = { - baseURLs: ['mock://'], + baseURLs: [baseURL], cacheCapacity: 1000 } let client = SchemaRegistryClient.newClient(conf) @@ -294,8 +306,7 @@ describe('AvroSerializer', () => { ruleSet } - let id = await client.register('topic1-value', info, false) - expect(id).toEqual(1) + await client.register(subject, info, false) let obj = { f1: 'hello world' @@ -311,10 +322,10 @@ describe('AvroSerializer', () => { await dekClient.registerKek("kek1", "local-kms", "mykey", false) const encryptedDek = "W/v6hOQYq1idVAcs1pPWz9UUONMVZW4IrglTnG88TsWjeCjxmtRQ4VaNe/I5dCfm2zyY9Cu0nqdvqImtUk4=" - await dekClient.registerDek("kek1", "topic1-value", "AES256_GCM", 1, encryptedDek) + await dekClient.registerDek("kek1", subject, "AES256_GCM", 1, encryptedDek) const bytes = Buffer.from([0, 0, 0, 0, 1, 120, 65, 65, 65, 65, 65, 65, 71, 52, 72, 73, 54, 98, 49, 110, 88, 80, 88, 113, 76, 121, 71, 56, 99, 73, 73, 51, 53, 78, 72, 81, 115, 101, 113, 113, 85, 67, 100, 43, 73, 101, 76, 101, 70, 86, 65, 101, 78, 112, 83, 83, 51, 102, 120, 80, 110, 74, 51, 50, 65, 61]) - let obj2 = await deser.deserialize("topic1", bytes) + let obj2 = await deser.deserialize(topic, bytes) expect(obj2.f1).toEqual(obj.f1); }) }) diff --git a/test/schemaregistry/serde/json.spec.ts b/test/schemaregistry/serde/json.spec.ts index 7f5c4e2c..c3ffc21d 100644 --- a/test/schemaregistry/serde/json.spec.ts +++ b/test/schemaregistry/serde/json.spec.ts @@ -1,4 +1,4 @@ -import {describe, expect, it} from '@jest/globals'; +import {afterEach, describe, expect, it} from '@jest/globals'; import {ClientConfig} from "../../../schemaregistry/rest-service"; import {SerdeType} from "../../../schemaregistry/serde/serde"; import { @@ -19,6 +19,12 @@ import { const fieldEncryptionExecutor = FieldEncryptionExecutor.register() LocalKmsDriver.register() +//const baseURL = 'http://localhost:8081' +const baseURL = 'mock://' + +const topic = 'topic1' +const subject = topic + '-value' + const demoSchema = ` { "type": "object", @@ -40,9 +46,18 @@ const demoSchema = ` ` describe('JsonSerializer', () => { + afterEach(async () => { + let conf: ClientConfig = { + baseURLs: [baseURL], + cacheCapacity: 1000 + } + let client = SchemaRegistryClient.newClient(conf) + await client.deleteSubject(subject, false) + await client.deleteSubject(subject, true) + }) it('basic serialization', async () => { let conf: ClientConfig = { - baseURLs: ['mock://'], + baseURLs: [baseURL], cacheCapacity: 1000 } let client = SchemaRegistryClient.newClient(conf) @@ -54,15 +69,15 @@ describe('JsonSerializer', () => { boolField: true, bytesField: Buffer.from([0, 0, 0, 1]).toString('base64') } - let bytes = await ser.serialize("topic1", obj) + let bytes = await ser.serialize(topic, obj) let deser = new JsonDeserializer(client, SerdeType.VALUE, {}) - let obj2 = await deser.deserialize("topic1", bytes) + let obj2 = await deser.deserialize(topic, bytes) expect(obj2).toEqual(obj) }) it('basic encryption', async () => { let conf: ClientConfig = { - baseURLs: ['mock://'], + baseURLs: [baseURL], cacheCapacity: 1000 } let client = SchemaRegistryClient.newClient(conf) @@ -93,13 +108,12 @@ describe('JsonSerializer', () => { } let info: SchemaInfo = { - schemaType: 'AVRO', + schemaType: 'JSON', schema: demoSchema, ruleSet } - let id = await client.register('topic1-value', info, false) - expect(id).toEqual(1) + await client.register(subject, info, false) let obj = { intField: 123, @@ -108,7 +122,7 @@ describe('JsonSerializer', () => { boolField: true, bytesField: Buffer.from([0, 0, 0, 1]).toString('base64') } - let bytes = await ser.serialize("topic1", obj) + let bytes = await ser.serialize(topic, obj) // reset encrypted field obj.stringField = 'hi' @@ -121,7 +135,7 @@ describe('JsonSerializer', () => { } let deser = new JsonDeserializer(client, SerdeType.VALUE, deserConfig) fieldEncryptionExecutor.client = dekClient - let obj2 = await deser.deserialize("topic1", bytes) + let obj2 = await deser.deserialize(topic, bytes) expect(obj2).toEqual(obj) }) }) diff --git a/test/schemaregistry/serde/protobuf.spec.ts b/test/schemaregistry/serde/protobuf.spec.ts index e910d09a..de238e35 100644 --- a/test/schemaregistry/serde/protobuf.spec.ts +++ b/test/schemaregistry/serde/protobuf.spec.ts @@ -1,4 +1,4 @@ -import {describe, expect, it} from '@jest/globals'; +import {afterEach, describe, expect, it} from '@jest/globals'; import {ClientConfig} from "../../../schemaregistry/rest-service"; import { ProtobufDeserializer, ProtobufDeserializerConfig, @@ -26,10 +26,25 @@ import {DependencyMessageSchema} from "./test/dep_pb"; const fieldEncryptionExecutor = FieldEncryptionExecutor.register() LocalKmsDriver.register() +//const baseURL = 'http://localhost:8081' +const baseURL = 'mock://' + +const topic = 'topic1' +const subject = topic + '-value' + describe('ProtobufSerializer', () => { + afterEach(async () => { + let conf: ClientConfig = { + baseURLs: [baseURL], + cacheCapacity: 1000 + } + let client = SchemaRegistryClient.newClient(conf) + await client.deleteSubject(subject, false) + await client.deleteSubject(subject, true) + }) it('basic serialization', async () => { let conf: ClientConfig = { - baseURLs: ['mock://'], + baseURLs: [baseURL], cacheCapacity: 1000 } let client = SchemaRegistryClient.newClient(conf) @@ -41,15 +56,15 @@ describe('ProtobufSerializer', () => { picture: Buffer.from([1, 2]), works: ['The Castle', 'The Trial'] }) - let bytes = await ser.serialize("topic1", obj) + let bytes = await ser.serialize(topic, obj) let deser = new ProtobufDeserializer(client, SerdeType.VALUE, {}) - let obj2 = await deser.deserialize("topic1", bytes) + let obj2 = await deser.deserialize(topic, bytes) expect(obj2).toEqual(obj) }) it('serialize second messsage', async () => { let conf: ClientConfig = { - baseURLs: ['mock://'], + baseURLs: [baseURL], cacheCapacity: 1000 } let client = SchemaRegistryClient.newClient(conf) @@ -59,15 +74,15 @@ describe('ProtobufSerializer', () => { size: 'Extra extra large', toppings: ['anchovies', 'mushrooms'] }) - let bytes = await ser.serialize("topic1", obj) + let bytes = await ser.serialize(topic, obj) let deser = new ProtobufDeserializer(client, SerdeType.VALUE, {}) - let obj2 = await deser.deserialize("topic1", bytes) + let obj2 = await deser.deserialize(topic, bytes) expect(obj2).toEqual(obj) }) it('serialize nested messsage', async () => { let conf: ClientConfig = { - baseURLs: ['mock://'], + baseURLs: [baseURL], cacheCapacity: 1000 } let client = SchemaRegistryClient.newClient(conf) @@ -76,15 +91,15 @@ describe('ProtobufSerializer', () => { let obj = create(NestedMessage_InnerMessageSchema, { id: "inner" }) - let bytes = await ser.serialize("topic1", obj) + let bytes = await ser.serialize(topic, obj) let deser = new ProtobufDeserializer(client, SerdeType.VALUE, {}) - let obj2 = await deser.deserialize("topic1", bytes) + let obj2 = await deser.deserialize(topic, bytes) expect(obj2).toEqual(obj) }) it('serialize reference', async () => { let conf: ClientConfig = { - baseURLs: ['mock://'], + baseURLs: [baseURL], cacheCapacity: 1000 } let client = SchemaRegistryClient.newClient(conf) @@ -112,10 +127,10 @@ describe('ProtobufSerializer', () => { isActive: true, testMesssage: msg }) - let bytes = await ser.serialize("topic1", obj) + let bytes = await ser.serialize(topic, obj) let deser = new ProtobufDeserializer(client, SerdeType.VALUE, {}) - let obj2 = await deser.deserialize("topic1", bytes) + let obj2 = await deser.deserialize(topic, bytes) expect(obj2.testMesssage.testString).toEqual(msg.testString); expect(obj2.testMesssage.testBool).toEqual(msg.testBool); expect(obj2.testMesssage.testBytes).toEqual(msg.testBytes); @@ -126,7 +141,7 @@ describe('ProtobufSerializer', () => { }) it('basic encryption', async () => { let conf: ClientConfig = { - baseURLs: ['mock://'], + baseURLs: [baseURL], cacheCapacity: 1000 } let client = SchemaRegistryClient.newClient(conf) @@ -158,13 +173,12 @@ describe('ProtobufSerializer', () => { } let info: SchemaInfo = { - schemaType: 'AVRO', + schemaType: 'PROTOBUF', schema: Buffer.from(toBinary(FileDescriptorProtoSchema, file_test_schemaregistry_serde_example.proto)).toString('base64'), ruleSet } - let id = await client.register('topic1-value', info, false) - expect(id).toEqual(1) + await client.register(subject, info, false) let obj = create(AuthorSchema, { name: 'Kafka', @@ -172,7 +186,7 @@ describe('ProtobufSerializer', () => { picture: Buffer.from([1, 2]), works: ['The Castle', 'The Trial'] }) - let bytes = await ser.serialize("topic1", obj) + let bytes = await ser.serialize(topic, obj) // reset encrypted field obj.name = 'Kafka' @@ -185,7 +199,7 @@ describe('ProtobufSerializer', () => { } let deser = new ProtobufDeserializer(client, SerdeType.VALUE, deserConfig) fieldEncryptionExecutor.client = dekClient - let obj2 = await deser.deserialize("topic1", bytes) + let obj2 = await deser.deserialize(topic, bytes) expect(obj2).toEqual(obj) }) }) From 3069fe98e8409651415974b3dde2b824e3bb8952 Mon Sep 17 00:00:00 2001 From: Robert Yokota Date: Wed, 28 Aug 2024 11:17:31 -0700 Subject: [PATCH 06/12] Add coverage to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 7624e00c..7c2576f2 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ deps/* .idea .vscode +coverage From 27d8d38b4ecb7e6087955f2926355caf1d70de38 Mon Sep 17 00:00:00 2001 From: Robert Yokota Date: Wed, 28 Aug 2024 11:18:17 -0700 Subject: [PATCH 07/12] Remove coverage --- coverage/clover.xml | 2471 ---------- coverage/coverage-final.json | 51 - coverage/lcov-report/base.css | 224 - coverage/lcov-report/block-navigation.js | 87 - coverage/lcov-report/favicon.png | Bin 445 -> 0 bytes coverage/lcov-report/index.html | 311 -- coverage/lcov-report/prettify.css | 1 - coverage/lcov-report/prettify.js | 2 - .../schemaregistry/confluent/index.html | 116 - .../schemaregistry/confluent/meta_pb.ts.html | 304 -- .../confluent/types/decimal_pb.ts.html | 226 - .../schemaregistry/confluent/types/index.html | 116 - .../dekregistry/constants.ts.html | 97 - .../dekregistry/dekregistry-client.ts.html | 820 ---- .../schemaregistry/dekregistry/index.html | 146 - .../mock-dekregistry-client.ts.html | 379 -- .../google/type/calendar_period_pb.ts.html | 391 -- .../google/type/color_pb.ts.html | 697 --- .../google/type/date_pb.ts.html | 322 -- .../google/type/datetime_pb.ts.html | 625 --- .../google/type/dayofweek_pb.ts.html | 373 -- .../google/type/expr_pb.ts.html | 400 -- .../google/type/fraction_pb.ts.html | 256 - .../schemaregistry/google/type/index.html | 296 -- .../google/type/latlng_pb.ts.html | 265 - .../google/type/money_pb.ts.html | 292 -- .../google/type/month_pb.ts.html | 478 -- .../google/type/postal_address_pb.ts.html | 664 --- .../google/type/quaternion_pb.ts.html | 460 -- .../google/type/timeofday_pb.ts.html | 310 -- .../lcov-report/schemaregistry/index.html | 161 - .../mock-schemaregistry-client.ts.html | 1381 ------ .../schemaregistry/rest-error.ts.html | 112 - .../schemaregistry/rest-service.ts.html | 355 -- .../rules/encryption/encrypt-executor.ts.html | 1675 ------- .../rules/encryption/index.html | 131 - .../rules/encryption/kms-registry.ts.html | 217 - .../rules/encryption/localkms/index.html | 131 - .../encryption/localkms/local-client.ts.html | 217 - .../encryption/localkms/local-driver.ts.html | 148 - .../rules/encryption/tink/aead.ts.html | 241 - .../rules/encryption/tink/aes_gcm.ts.html | 409 -- .../rules/encryption/tink/aes_siv.ts.html | 211 - .../rules/encryption/tink/bytes.ts.html | 643 --- .../encryption/tink/exception/index.html | 131 - .../invalid_arguments_exception.ts.html | 136 - .../tink/exception/security_exception.ts.html | 136 - .../rules/encryption/tink/hkdf.ts.html | 382 -- .../rules/encryption/tink/hmac.ts.html | 379 -- .../rules/encryption/tink/index.html | 236 - .../rules/encryption/tink/mac.ts.html | 187 - .../encryption/tink/proto/aes_gcm_pb.ts.html | 307 -- .../encryption/tink/proto/aes_siv_pb.ts.html | 325 -- .../rules/encryption/tink/proto/index.html | 131 - .../rules/encryption/tink/random.ts.html | 169 - .../rules/encryption/tink/validators.ts.html | 334 -- .../schemaregistry-client.ts.html | 1921 -------- .../schemaregistry/serde/avro.ts.html | 1243 ----- .../serde/buffer-wrapper.ts.html | 274 -- .../schemaregistry/serde/index.html | 221 - .../schemaregistry/serde/json-util.ts.html | 451 -- .../schemaregistry/serde/json.ts.html | 1318 ----- .../schemaregistry/serde/protobuf.ts.html | 1648 ------- .../serde/rule-registry.ts.html | 211 - .../schemaregistry/serde/serde.ts.html | 2290 --------- .../serde/wildcard-matcher.ts.html | 355 -- coverage/lcov-report/sort-arrow-sprite.png | Bin 138 -> 0 bytes coverage/lcov-report/sorter.js | 196 - .../schemaregistry/dekregistry/index.html | 116 - .../dekregistry/test-constants.ts.html | 304 -- .../test/schemaregistry/index.html | 116 - .../schemaregistry/serde/author_pb.ts.html | 292 -- .../test/schemaregistry/serde/index.html | 116 - .../schemaregistry/test-constants.ts.html | 190 - coverage/lcov.info | 4250 ----------------- 75 files changed, 35577 deletions(-) delete mode 100644 coverage/clover.xml delete mode 100644 coverage/coverage-final.json delete mode 100644 coverage/lcov-report/base.css delete mode 100644 coverage/lcov-report/block-navigation.js delete mode 100644 coverage/lcov-report/favicon.png delete mode 100644 coverage/lcov-report/index.html delete mode 100644 coverage/lcov-report/prettify.css delete mode 100644 coverage/lcov-report/prettify.js delete mode 100644 coverage/lcov-report/schemaregistry/confluent/index.html delete mode 100644 coverage/lcov-report/schemaregistry/confluent/meta_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/confluent/types/decimal_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/confluent/types/index.html delete mode 100644 coverage/lcov-report/schemaregistry/dekregistry/constants.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/dekregistry/dekregistry-client.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/dekregistry/index.html delete mode 100644 coverage/lcov-report/schemaregistry/dekregistry/mock-dekregistry-client.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/google/type/calendar_period_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/google/type/color_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/google/type/date_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/google/type/datetime_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/google/type/dayofweek_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/google/type/expr_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/google/type/fraction_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/google/type/index.html delete mode 100644 coverage/lcov-report/schemaregistry/google/type/latlng_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/google/type/money_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/google/type/month_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/google/type/postal_address_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/google/type/quaternion_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/google/type/timeofday_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/index.html delete mode 100644 coverage/lcov-report/schemaregistry/mock-schemaregistry-client.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rest-error.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rest-service.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/encrypt-executor.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/index.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/kms-registry.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/localkms/index.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/localkms/local-client.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/localkms/local-driver.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/aead.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/aes_gcm.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/aes_siv.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/bytes.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/index.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/invalid_arguments_exception.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/security_exception.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/hkdf.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/hmac.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/index.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/mac.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/aes_gcm_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/aes_siv_pb.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/index.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/random.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/rules/encryption/tink/validators.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/schemaregistry-client.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/serde/avro.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/serde/buffer-wrapper.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/serde/index.html delete mode 100644 coverage/lcov-report/schemaregistry/serde/json-util.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/serde/json.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/serde/protobuf.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/serde/rule-registry.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/serde/serde.ts.html delete mode 100644 coverage/lcov-report/schemaregistry/serde/wildcard-matcher.ts.html delete mode 100644 coverage/lcov-report/sort-arrow-sprite.png delete mode 100644 coverage/lcov-report/sorter.js delete mode 100644 coverage/lcov-report/test/schemaregistry/dekregistry/index.html delete mode 100644 coverage/lcov-report/test/schemaregistry/dekregistry/test-constants.ts.html delete mode 100644 coverage/lcov-report/test/schemaregistry/index.html delete mode 100644 coverage/lcov-report/test/schemaregistry/serde/author_pb.ts.html delete mode 100644 coverage/lcov-report/test/schemaregistry/serde/index.html delete mode 100644 coverage/lcov-report/test/schemaregistry/test-constants.ts.html delete mode 100644 coverage/lcov.info diff --git a/coverage/clover.xml b/coverage/clover.xml deleted file mode 100644 index d0853ac4..00000000 --- a/coverage/clover.xml +++ /dev/null @@ -1,2471 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json deleted file mode 100644 index cafaea4f..00000000 --- a/coverage/coverage-final.json +++ /dev/null @@ -1,51 +0,0 @@ -{"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/mock-schemaregistry-client.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/mock-schemaregistry-client.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":null}},"1":{"start":{"line":10,"column":0},"end":{"line":10,"column":53}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":39}},"3":{"start":{"line":30,"column":10},"end":{"line":30,"column":28}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":22}},"5":{"start":{"line":37,"column":4},"end":{"line":37,"column":17}},"6":{"start":{"line":38,"column":4},"end":{"line":38,"column":22}},"7":{"start":{"line":42,"column":18},"end":{"line":42,"column":20}},"8":{"start":{"line":53,"column":4},"end":{"line":53,"column":null}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":39}},"10":{"start":{"line":55,"column":4},"end":{"line":55,"column":37}},"11":{"start":{"line":56,"column":4},"end":{"line":56,"column":42}},"12":{"start":{"line":57,"column":4},"end":{"line":57,"column":33}},"13":{"start":{"line":58,"column":4},"end":{"line":58,"column":33}},"14":{"start":{"line":62,"column":4},"end":{"line":62,"column":null}},"15":{"start":{"line":66,"column":21},"end":{"line":66,"column":80}},"16":{"start":{"line":67,"column":4},"end":{"line":69,"column":5}},"17":{"start":{"line":68,"column":6},"end":{"line":68,"column":67}},"18":{"start":{"line":70,"column":4},"end":{"line":70,"column":23}},"19":{"start":{"line":74,"column":21},"end":{"line":74,"column":69}},"20":{"start":{"line":76,"column":23},"end":{"line":76,"column":59}},"21":{"start":{"line":77,"column":4},"end":{"line":79,"column":5}},"22":{"start":{"line":78,"column":6},"end":{"line":78,"column":33}},"23":{"start":{"line":81,"column":15},"end":{"line":81,"column":60}},"24":{"start":{"line":82,"column":4},"end":{"line":84,"column":5}},"25":{"start":{"line":83,"column":6},"end":{"line":83,"column":84}},"26":{"start":{"line":86,"column":37},"end":{"line":86,"column":54}},"27":{"start":{"line":87,"column":4},"end":{"line":87,"column":75}},"28":{"start":{"line":89,"column":4},"end":{"line":89,"column":20}},"29":{"start":{"line":93,"column":13},"end":{"line":93,"column":15}},"30":{"start":{"line":95,"column":4},"end":{"line":101,"column":5}},"31":{"start":{"line":96,"column":24},"end":{"line":96,"column":39}},"32":{"start":{"line":97,"column":6},"end":{"line":100,"column":7}},"33":{"start":{"line":98,"column":8},"end":{"line":98,"column":26}},"34":{"start":{"line":99,"column":8},"end":{"line":99,"column":14}},"35":{"start":{"line":103,"column":4},"end":{"line":103,"column":48}},"36":{"start":{"line":104,"column":4},"end":{"line":108,"column":5}},"37":{"start":{"line":105,"column":6},"end":{"line":105,"column":36}},"38":{"start":{"line":106,"column":25},"end":{"line":106,"column":51}},"39":{"start":{"line":107,"column":6},"end":{"line":107,"column":81}},"40":{"start":{"line":110,"column":4},"end":{"line":110,"column":14}},"41":{"start":{"line":114,"column":21},"end":{"line":114,"column":52}},"42":{"start":{"line":117,"column":4},"end":{"line":121,"column":5}},"43":{"start":{"line":118,"column":6},"end":{"line":118,"column":21}},"44":{"start":{"line":120,"column":6},"end":{"line":120,"column":53}},"45":{"start":{"line":123,"column":21},"end":{"line":123,"column":69}},"46":{"start":{"line":124,"column":4},"end":{"line":124,"column":89}},"47":{"start":{"line":128,"column":21},"end":{"line":128,"column":47}},"48":{"start":{"line":129,"column":23},"end":{"line":129,"column":57}},"49":{"start":{"line":131,"column":4},"end":{"line":133,"column":5}},"50":{"start":{"line":132,"column":6},"end":{"line":132,"column":58}},"51":{"start":{"line":134,"column":4},"end":{"line":134,"column":27}},"52":{"start":{"line":138,"column":21},"end":{"line":138,"column":69}},"53":{"start":{"line":139,"column":23},"end":{"line":139,"column":59}},"54":{"start":{"line":140,"column":4},"end":{"line":142,"column":5}},"55":{"start":{"line":141,"column":6},"end":{"line":141,"column":58}},"56":{"start":{"line":143,"column":4},"end":{"line":143,"column":34}},"57":{"start":{"line":147,"column":20},"end":{"line":147,"column":53}},"58":{"start":{"line":148,"column":4},"end":{"line":150,"column":5}},"59":{"start":{"line":149,"column":6},"end":{"line":149,"column":71}},"60":{"start":{"line":152,"column":4},"end":{"line":152,"column":52}},"61":{"start":{"line":157,"column":4},"end":{"line":162,"column":5}},"62":{"start":{"line":158,"column":24},"end":{"line":158,"column":39}},"63":{"start":{"line":159,"column":6},"end":{"line":161,"column":7}},"64":{"start":{"line":160,"column":8},"end":{"line":160,"column":25}},"65":{"start":{"line":164,"column":4},"end":{"line":166,"column":5}},"66":{"start":{"line":165,"column":6},"end":{"line":165,"column":58}},"67":{"start":{"line":168,"column":21},"end":{"line":168,"column":23}},"68":{"start":{"line":169,"column":4},"end":{"line":174,"column":5}},"69":{"start":{"line":170,"column":24},"end":{"line":170,"column":39}},"70":{"start":{"line":171,"column":6},"end":{"line":173,"column":7}},"71":{"start":{"line":172,"column":8},"end":{"line":172,"column":26}},"72":{"start":{"line":175,"column":4},"end":{"line":177,"column":5}},"73":{"start":{"line":176,"column":6},"end":{"line":176,"column":58}},"74":{"start":{"line":180,"column":4},"end":{"line":185,"column":6}},"75":{"start":{"line":189,"column":22},"end":{"line":189,"column":24}},"76":{"start":{"line":191,"column":4},"end":{"line":195,"column":5}},"77":{"start":{"line":192,"column":25},"end":{"line":192,"column":48}},"78":{"start":{"line":193,"column":27},"end":{"line":193,"column":60}},"79":{"start":{"line":194,"column":6},"end":{"line":194,"column":64}},"80":{"start":{"line":197,"column":36},"end":{"line":197,"column":38}},"81":{"start":{"line":199,"column":4},"end":{"line":206,"column":5}},"82":{"start":{"line":200,"column":24},"end":{"line":200,"column":39}},"83":{"start":{"line":201,"column":6},"end":{"line":205,"column":7}},"84":{"start":{"line":202,"column":8},"end":{"line":204,"column":9}},"85":{"start":{"line":203,"column":10},"end":{"line":203,"column":118}},"86":{"start":{"line":208,"column":4},"end":{"line":210,"column":5}},"87":{"start":{"line":209,"column":6},"end":{"line":209,"column":58}},"88":{"start":{"line":212,"column":33},"end":{"line":212,"column":43}},"89":{"start":{"line":214,"column":4},"end":{"line":218,"column":7}},"90":{"start":{"line":215,"column":6},"end":{"line":217,"column":7}},"91":{"start":{"line":216,"column":8},"end":{"line":216,"column":24}},"92":{"start":{"line":220,"column":4},"end":{"line":220,"column":18}},"93":{"start":{"line":224,"column":4},"end":{"line":228,"column":5}},"94":{"start":{"line":225,"column":6},"end":{"line":227,"column":7}},"95":{"start":{"line":226,"column":8},"end":{"line":226,"column":21}},"96":{"start":{"line":229,"column":4},"end":{"line":229,"column":16}},"97":{"start":{"line":233,"column":20},"end":{"line":233,"column":51}},"98":{"start":{"line":235,"column":4},"end":{"line":237,"column":5}},"99":{"start":{"line":236,"column":6},"end":{"line":236,"column":71}},"100":{"start":{"line":238,"column":4},"end":{"line":238,"column":19}},"101":{"start":{"line":242,"column":31},"end":{"line":242,"column":33}},"102":{"start":{"line":244,"column":4},"end":{"line":249,"column":5}},"103":{"start":{"line":245,"column":24},"end":{"line":245,"column":39}},"104":{"start":{"line":246,"column":6},"end":{"line":248,"column":7}},"105":{"start":{"line":247,"column":8},"end":{"line":247,"column":37}},"106":{"start":{"line":250,"column":4},"end":{"line":250,"column":20}},"107":{"start":{"line":254,"column":21},"end":{"line":254,"column":52}},"108":{"start":{"line":255,"column":4},"end":{"line":257,"column":5}},"109":{"start":{"line":256,"column":6},"end":{"line":256,"column":16}},"110":{"start":{"line":258,"column":4},"end":{"line":258,"column":41}},"111":{"start":{"line":262,"column":4},"end":{"line":266,"column":5}},"112":{"start":{"line":263,"column":6},"end":{"line":263,"column":49}},"113":{"start":{"line":265,"column":6},"end":{"line":265,"column":78}},"114":{"start":{"line":270,"column":4},"end":{"line":274,"column":5}},"115":{"start":{"line":271,"column":6},"end":{"line":271,"column":44}},"116":{"start":{"line":273,"column":6},"end":{"line":273,"column":70}},"117":{"start":{"line":278,"column":4},"end":{"line":282,"column":5}},"118":{"start":{"line":279,"column":6},"end":{"line":279,"column":46}},"119":{"start":{"line":281,"column":6},"end":{"line":281,"column":76}},"120":{"start":{"line":286,"column":21},"end":{"line":286,"column":69}},"121":{"start":{"line":287,"column":23},"end":{"line":287,"column":62}},"122":{"start":{"line":289,"column":4},"end":{"line":291,"column":5}},"123":{"start":{"line":290,"column":6},"end":{"line":290,"column":58}},"124":{"start":{"line":293,"column":4},"end":{"line":293,"column":30}},"125":{"start":{"line":297,"column":31},"end":{"line":297,"column":33}},"126":{"start":{"line":298,"column":4},"end":{"line":303,"column":5}},"127":{"start":{"line":299,"column":24},"end":{"line":299,"column":39}},"128":{"start":{"line":300,"column":6},"end":{"line":302,"column":7}},"129":{"start":{"line":301,"column":8},"end":{"line":301,"column":41}},"130":{"start":{"line":304,"column":4},"end":{"line":304,"column":27}},"131":{"start":{"line":308,"column":38},"end":{"line":308,"column":40}},"132":{"start":{"line":309,"column":4},"end":{"line":314,"column":5}},"133":{"start":{"line":310,"column":24},"end":{"line":310,"column":39}},"134":{"start":{"line":311,"column":6},"end":{"line":313,"column":7}},"135":{"start":{"line":312,"column":8},"end":{"line":312,"column":66}},"136":{"start":{"line":316,"column":4},"end":{"line":322,"column":5}},"137":{"start":{"line":317,"column":24},"end":{"line":317,"column":39}},"138":{"start":{"line":318,"column":6},"end":{"line":321,"column":7}},"139":{"start":{"line":319,"column":8},"end":{"line":319,"column":64}},"140":{"start":{"line":320,"column":8},"end":{"line":320,"column":44}},"141":{"start":{"line":324,"column":4},"end":{"line":324,"column":37}},"142":{"start":{"line":326,"column":4},"end":{"line":333,"column":5}},"143":{"start":{"line":327,"column":6},"end":{"line":332,"column":7}},"144":{"start":{"line":328,"column":26},"end":{"line":328,"column":41}},"145":{"start":{"line":329,"column":8},"end":{"line":331,"column":9}},"146":{"start":{"line":330,"column":10},"end":{"line":330,"column":60}},"147":{"start":{"line":335,"column":4},"end":{"line":335,"column":27}},"148":{"start":{"line":339,"column":4},"end":{"line":358,"column":5}},"149":{"start":{"line":340,"column":24},"end":{"line":340,"column":39}},"150":{"start":{"line":341,"column":6},"end":{"line":357,"column":7}},"151":{"start":{"line":342,"column":8},"end":{"line":342,"column":58}},"152":{"start":{"line":344,"column":31},"end":{"line":344,"column":89}},"153":{"start":{"line":345,"column":27},"end":{"line":345,"column":69}},"154":{"start":{"line":346,"column":8},"end":{"line":348,"column":9}},"155":{"start":{"line":347,"column":10},"end":{"line":347,"column":84}},"156":{"start":{"line":350,"column":8},"end":{"line":356,"column":9}},"157":{"start":{"line":351,"column":31},"end":{"line":351,"column":81}},"158":{"start":{"line":352,"column":35},"end":{"line":352,"column":73}},"159":{"start":{"line":353,"column":10},"end":{"line":355,"column":11}},"160":{"start":{"line":354,"column":12},"end":{"line":354,"column":82}},"161":{"start":{"line":360,"column":4},"end":{"line":360,"column":19}},"162":{"start":{"line":364,"column":4},"end":{"line":364,"column":45}},"163":{"start":{"line":368,"column":4},"end":{"line":368,"column":45}},"164":{"start":{"line":372,"column":23},"end":{"line":372,"column":52}},"165":{"start":{"line":373,"column":4},"end":{"line":375,"column":5}},"166":{"start":{"line":374,"column":6},"end":{"line":374,"column":59}},"167":{"start":{"line":376,"column":4},"end":{"line":376,"column":58}},"168":{"start":{"line":380,"column":4},"end":{"line":380,"column":73}},"169":{"start":{"line":381,"column":4},"end":{"line":381,"column":25}},"170":{"start":{"line":385,"column":23},"end":{"line":385,"column":54}},"171":{"start":{"line":386,"column":4},"end":{"line":388,"column":5}},"172":{"start":{"line":387,"column":6},"end":{"line":387,"column":73}},"173":{"start":{"line":389,"column":4},"end":{"line":389,"column":58}},"174":{"start":{"line":393,"column":4},"end":{"line":393,"column":75}},"175":{"start":{"line":394,"column":4},"end":{"line":394,"column":25}},"176":{"start":{"line":398,"column":23},"end":{"line":398,"column":52}},"177":{"start":{"line":399,"column":4},"end":{"line":401,"column":5}},"178":{"start":{"line":400,"column":6},"end":{"line":400,"column":59}},"179":{"start":{"line":402,"column":4},"end":{"line":402,"column":22}},"180":{"start":{"line":406,"column":4},"end":{"line":406,"column":42}},"181":{"start":{"line":407,"column":4},"end":{"line":407,"column":18}},"182":{"start":{"line":411,"column":23},"end":{"line":411,"column":54}},"183":{"start":{"line":412,"column":4},"end":{"line":414,"column":5}},"184":{"start":{"line":413,"column":6},"end":{"line":413,"column":66}},"185":{"start":{"line":415,"column":4},"end":{"line":415,"column":22}},"186":{"start":{"line":419,"column":4},"end":{"line":419,"column":44}},"187":{"start":{"line":420,"column":4},"end":{"line":420,"column":18}},"188":{"start":{"line":424,"column":4},"end":{"line":424,"column":11}},"189":{"start":{"line":428,"column":4},"end":{"line":428,"column":53}},"190":{"start":{"line":432,"column":9},"end":{"line":432,"column":19}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":29,"column":0},"end":{"line":29,"column":6}},"loc":{"start":{"line":29,"column":0},"end":{"line":40,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":32,"column":2},"end":{"line":32,"column":14}},"loc":{"start":{"line":32,"column":14},"end":{"line":34,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":36,"column":2},"end":{"line":36,"column":11}},"loc":{"start":{"line":36,"column":11},"end":{"line":39,"column":3}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":52,"column":2},"end":{"line":52,"column":14}},"loc":{"start":{"line":52,"column":35},"end":{"line":59,"column":3}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":61,"column":2},"end":{"line":61,"column":8}},"loc":{"start":{"line":61,"column":8},"end":{"line":63,"column":3}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":65,"column":2},"end":{"line":65,"column":7}},"loc":{"start":{"line":65,"column":80},"end":{"line":71,"column":3}}},"6":{"name":"(anonymous_7)","decl":{"start":{"line":73,"column":2},"end":{"line":73,"column":7}},"loc":{"start":{"line":73,"column":92},"end":{"line":90,"column":3}}},"7":{"name":"(anonymous_8)","decl":{"start":{"line":92,"column":10},"end":{"line":92,"column":15}},"loc":{"start":{"line":92,"column":69},"end":{"line":111,"column":3}}},"8":{"name":"(anonymous_9)","decl":{"start":{"line":113,"column":10},"end":{"line":113,"column":15}},"loc":{"start":{"line":113,"column":67},"end":{"line":125,"column":3}}},"9":{"name":"(anonymous_10)","decl":{"start":{"line":127,"column":2},"end":{"line":127,"column":7}},"loc":{"start":{"line":127,"column":70},"end":{"line":135,"column":3}}},"10":{"name":"(anonymous_11)","decl":{"start":{"line":137,"column":2},"end":{"line":137,"column":7}},"loc":{"start":{"line":137,"column":49},"end":{"line":144,"column":3}}},"11":{"name":"(anonymous_12)","decl":{"start":{"line":146,"column":2},"end":{"line":146,"column":7}},"loc":{"start":{"line":146,"column":47},"end":{"line":153,"column":3}}},"12":{"name":"(anonymous_13)","decl":{"start":{"line":155,"column":2},"end":{"line":155,"column":7}},"loc":{"start":{"line":155,"column":84},"end":{"line":186,"column":3}}},"13":{"name":"(anonymous_14)","decl":{"start":{"line":188,"column":2},"end":{"line":188,"column":7}},"loc":{"start":{"line":188,"column":108},"end":{"line":221,"column":3}}},"14":{"name":"(anonymous_15)","decl":{"start":{"line":214,"column":20},"end":{"line":214,"column":21}},"loc":{"start":{"line":214,"column":31},"end":{"line":218,"column":5}}},"15":{"name":"(anonymous_16)","decl":{"start":{"line":223,"column":10},"end":{"line":223,"column":18}},"loc":{"start":{"line":223,"column":93},"end":{"line":230,"column":3}}},"16":{"name":"(anonymous_17)","decl":{"start":{"line":232,"column":2},"end":{"line":232,"column":7}},"loc":{"start":{"line":232,"column":38},"end":{"line":239,"column":3}}},"17":{"name":"(anonymous_18)","decl":{"start":{"line":241,"column":10},"end":{"line":241,"column":15}},"loc":{"start":{"line":241,"column":43},"end":{"line":251,"column":3}}},"18":{"name":"(anonymous_19)","decl":{"start":{"line":253,"column":10},"end":{"line":253,"column":15}},"loc":{"start":{"line":253,"column":45},"end":{"line":259,"column":3}}},"19":{"name":"(anonymous_20)","decl":{"start":{"line":261,"column":10},"end":{"line":261,"column":15}},"loc":{"start":{"line":261,"column":83},"end":{"line":267,"column":3}}},"20":{"name":"(anonymous_21)","decl":{"start":{"line":269,"column":10},"end":{"line":269,"column":15}},"loc":{"start":{"line":269,"column":81},"end":{"line":275,"column":3}}},"21":{"name":"(anonymous_22)","decl":{"start":{"line":277,"column":10},"end":{"line":277,"column":15}},"loc":{"start":{"line":277,"column":93},"end":{"line":283,"column":3}}},"22":{"name":"(anonymous_23)","decl":{"start":{"line":285,"column":2},"end":{"line":285,"column":7}},"loc":{"start":{"line":285,"column":82},"end":{"line":294,"column":3}}},"23":{"name":"(anonymous_24)","decl":{"start":{"line":296,"column":2},"end":{"line":296,"column":7}},"loc":{"start":{"line":296,"column":22},"end":{"line":305,"column":3}}},"24":{"name":"(anonymous_25)","decl":{"start":{"line":307,"column":2},"end":{"line":307,"column":7}},"loc":{"start":{"line":307,"column":65},"end":{"line":336,"column":3}}},"25":{"name":"(anonymous_26)","decl":{"start":{"line":338,"column":2},"end":{"line":338,"column":7}},"loc":{"start":{"line":338,"column":89},"end":{"line":361,"column":3}}},"26":{"name":"(anonymous_27)","decl":{"start":{"line":363,"column":2},"end":{"line":363,"column":7}},"loc":{"start":{"line":363,"column":68},"end":{"line":365,"column":3}}},"27":{"name":"(anonymous_28)","decl":{"start":{"line":367,"column":2},"end":{"line":367,"column":7}},"loc":{"start":{"line":367,"column":78},"end":{"line":369,"column":3}}},"28":{"name":"(anonymous_29)","decl":{"start":{"line":371,"column":2},"end":{"line":371,"column":7}},"loc":{"start":{"line":371,"column":40},"end":{"line":377,"column":3}}},"29":{"name":"(anonymous_30)","decl":{"start":{"line":379,"column":2},"end":{"line":379,"column":7}},"loc":{"start":{"line":379,"column":73},"end":{"line":382,"column":3}}},"30":{"name":"(anonymous_31)","decl":{"start":{"line":384,"column":2},"end":{"line":384,"column":7}},"loc":{"start":{"line":384,"column":31},"end":{"line":390,"column":3}}},"31":{"name":"(anonymous_32)","decl":{"start":{"line":392,"column":2},"end":{"line":392,"column":7}},"loc":{"start":{"line":392,"column":63},"end":{"line":395,"column":3}}},"32":{"name":"(anonymous_33)","decl":{"start":{"line":397,"column":2},"end":{"line":397,"column":7}},"loc":{"start":{"line":397,"column":33},"end":{"line":403,"column":3}}},"33":{"name":"(anonymous_34)","decl":{"start":{"line":405,"column":2},"end":{"line":405,"column":7}},"loc":{"start":{"line":405,"column":58},"end":{"line":408,"column":3}}},"34":{"name":"(anonymous_35)","decl":{"start":{"line":410,"column":2},"end":{"line":410,"column":7}},"loc":{"start":{"line":410,"column":24},"end":{"line":416,"column":3}}},"35":{"name":"(anonymous_36)","decl":{"start":{"line":418,"column":2},"end":{"line":418,"column":7}},"loc":{"start":{"line":418,"column":48},"end":{"line":421,"column":3}}},"36":{"name":"(anonymous_37)","decl":{"start":{"line":423,"column":2},"end":{"line":423,"column":7}},"loc":{"start":{"line":423,"column":13},"end":{"line":425,"column":3}}},"37":{"name":"(anonymous_38)","decl":{"start":{"line":427,"column":10},"end":{"line":427,"column":22}},"loc":{"start":{"line":427,"column":63},"end":{"line":429,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":65,"column":54},"end":{"line":65,"column":80}},"type":"default-arg","locations":[{"start":{"line":65,"column":75},"end":{"line":65,"column":80}}]},"1":{"loc":{"start":{"line":67,"column":4},"end":{"line":69,"column":5}},"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":69,"column":5}}]},"2":{"loc":{"start":{"line":73,"column":66},"end":{"line":73,"column":92}},"type":"default-arg","locations":[{"start":{"line":73,"column":87},"end":{"line":73,"column":92}}]},"3":{"loc":{"start":{"line":77,"column":4},"end":{"line":79,"column":5}},"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":79,"column":5}}]},"4":{"loc":{"start":{"line":77,"column":8},"end":{"line":77,"column":45}},"type":"binary-expr","locations":[{"start":{"line":77,"column":8},"end":{"line":77,"column":18}},{"start":{"line":77,"column":22},"end":{"line":77,"column":45}}]},"5":{"loc":{"start":{"line":82,"column":4},"end":{"line":84,"column":5}},"type":"if","locations":[{"start":{"line":82,"column":4},"end":{"line":84,"column":5}}]},"6":{"loc":{"start":{"line":97,"column":6},"end":{"line":100,"column":7}},"type":"if","locations":[{"start":{"line":97,"column":6},"end":{"line":100,"column":7}}]},"7":{"loc":{"start":{"line":97,"column":10},"end":{"line":97,"column":80}},"type":"binary-expr","locations":[{"start":{"line":97,"column":10},"end":{"line":97,"column":39}},{"start":{"line":97,"column":43},"end":{"line":97,"column":80}}]},"8":{"loc":{"start":{"line":104,"column":4},"end":{"line":108,"column":5}},"type":"if","locations":[{"start":{"line":104,"column":4},"end":{"line":108,"column":5}}]},"9":{"loc":{"start":{"line":117,"column":4},"end":{"line":121,"column":5}},"type":"if","locations":[{"start":{"line":117,"column":4},"end":{"line":121,"column":5}},{"start":{"line":119,"column":11},"end":{"line":121,"column":5}}]},"10":{"loc":{"start":{"line":131,"column":4},"end":{"line":133,"column":5}},"type":"if","locations":[{"start":{"line":131,"column":4},"end":{"line":133,"column":5}}]},"11":{"loc":{"start":{"line":131,"column":8},"end":{"line":131,"column":45}},"type":"binary-expr","locations":[{"start":{"line":131,"column":8},"end":{"line":131,"column":19}},{"start":{"line":131,"column":23},"end":{"line":131,"column":45}}]},"12":{"loc":{"start":{"line":140,"column":4},"end":{"line":142,"column":5}},"type":"if","locations":[{"start":{"line":140,"column":4},"end":{"line":142,"column":5}}]},"13":{"loc":{"start":{"line":140,"column":8},"end":{"line":140,"column":45}},"type":"binary-expr","locations":[{"start":{"line":140,"column":8},"end":{"line":140,"column":19}},{"start":{"line":140,"column":23},"end":{"line":140,"column":45}}]},"14":{"loc":{"start":{"line":148,"column":4},"end":{"line":150,"column":5}},"type":"if","locations":[{"start":{"line":148,"column":4},"end":{"line":150,"column":5}}]},"15":{"loc":{"start":{"line":155,"column":60},"end":{"line":155,"column":84}},"type":"default-arg","locations":[{"start":{"line":155,"column":79},"end":{"line":155,"column":84}}]},"16":{"loc":{"start":{"line":159,"column":6},"end":{"line":161,"column":7}},"type":"if","locations":[{"start":{"line":159,"column":6},"end":{"line":161,"column":7}}]},"17":{"loc":{"start":{"line":159,"column":10},"end":{"line":159,"column":101}},"type":"binary-expr","locations":[{"start":{"line":159,"column":10},"end":{"line":159,"column":39}},{"start":{"line":159,"column":43},"end":{"line":159,"column":68}},{"start":{"line":159,"column":72},"end":{"line":159,"column":101}}]},"18":{"loc":{"start":{"line":164,"column":4},"end":{"line":166,"column":5}},"type":"if","locations":[{"start":{"line":164,"column":4},"end":{"line":166,"column":5}}]},"19":{"loc":{"start":{"line":171,"column":6},"end":{"line":173,"column":7}},"type":"if","locations":[{"start":{"line":171,"column":6},"end":{"line":173,"column":7}}]},"20":{"loc":{"start":{"line":171,"column":10},"end":{"line":171,"column":83}},"type":"binary-expr","locations":[{"start":{"line":171,"column":10},"end":{"line":171,"column":39}},{"start":{"line":171,"column":43},"end":{"line":171,"column":83}}]},"21":{"loc":{"start":{"line":175,"column":4},"end":{"line":177,"column":5}},"type":"if","locations":[{"start":{"line":175,"column":4},"end":{"line":177,"column":5}}]},"22":{"loc":{"start":{"line":188,"column":84},"end":{"line":188,"column":108}},"type":"default-arg","locations":[{"start":{"line":188,"column":103},"end":{"line":188,"column":108}}]},"23":{"loc":{"start":{"line":201,"column":6},"end":{"line":205,"column":7}},"type":"if","locations":[{"start":{"line":201,"column":6},"end":{"line":205,"column":7}}]},"24":{"loc":{"start":{"line":201,"column":10},"end":{"line":201,"column":74}},"type":"binary-expr","locations":[{"start":{"line":201,"column":10},"end":{"line":201,"column":39}},{"start":{"line":201,"column":44},"end":{"line":201,"column":62}},{"start":{"line":201,"column":66},"end":{"line":201,"column":73}}]},"25":{"loc":{"start":{"line":202,"column":8},"end":{"line":204,"column":9}},"type":"if","locations":[{"start":{"line":202,"column":8},"end":{"line":204,"column":9}}]},"26":{"loc":{"start":{"line":202,"column":12},"end":{"line":202,"column":102}},"type":"binary-expr","locations":[{"start":{"line":202,"column":12},"end":{"line":202,"column":37}},{"start":{"line":202,"column":41},"end":{"line":202,"column":102}}]},"27":{"loc":{"start":{"line":208,"column":4},"end":{"line":210,"column":5}},"type":"if","locations":[{"start":{"line":208,"column":4},"end":{"line":210,"column":5}}]},"28":{"loc":{"start":{"line":215,"column":6},"end":{"line":217,"column":7}},"type":"if","locations":[{"start":{"line":215,"column":6},"end":{"line":217,"column":7}}]},"29":{"loc":{"start":{"line":225,"column":6},"end":{"line":227,"column":7}},"type":"if","locations":[{"start":{"line":225,"column":6},"end":{"line":227,"column":7}}]},"30":{"loc":{"start":{"line":235,"column":4},"end":{"line":237,"column":5}},"type":"if","locations":[{"start":{"line":235,"column":4},"end":{"line":237,"column":5}}]},"31":{"loc":{"start":{"line":246,"column":6},"end":{"line":248,"column":7}},"type":"if","locations":[{"start":{"line":246,"column":6},"end":{"line":248,"column":7}}]},"32":{"loc":{"start":{"line":246,"column":10},"end":{"line":246,"column":61}},"type":"binary-expr","locations":[{"start":{"line":246,"column":10},"end":{"line":246,"column":39}},{"start":{"line":246,"column":43},"end":{"line":246,"column":61}}]},"33":{"loc":{"start":{"line":255,"column":4},"end":{"line":257,"column":5}},"type":"if","locations":[{"start":{"line":255,"column":4},"end":{"line":257,"column":5}}]},"34":{"loc":{"start":{"line":262,"column":4},"end":{"line":266,"column":5}},"type":"if","locations":[{"start":{"line":262,"column":4},"end":{"line":266,"column":5}},{"start":{"line":264,"column":11},"end":{"line":266,"column":5}}]},"35":{"loc":{"start":{"line":270,"column":4},"end":{"line":274,"column":5}},"type":"if","locations":[{"start":{"line":270,"column":4},"end":{"line":274,"column":5}},{"start":{"line":272,"column":11},"end":{"line":274,"column":5}}]},"36":{"loc":{"start":{"line":278,"column":4},"end":{"line":282,"column":5}},"type":"if","locations":[{"start":{"line":278,"column":4},"end":{"line":282,"column":5}},{"start":{"line":280,"column":11},"end":{"line":282,"column":5}}]},"37":{"loc":{"start":{"line":285,"column":56},"end":{"line":285,"column":82}},"type":"default-arg","locations":[{"start":{"line":285,"column":77},"end":{"line":285,"column":82}}]},"38":{"loc":{"start":{"line":289,"column":4},"end":{"line":291,"column":5}},"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":291,"column":5}}]},"39":{"loc":{"start":{"line":289,"column":8},"end":{"line":289,"column":45}},"type":"binary-expr","locations":[{"start":{"line":289,"column":8},"end":{"line":289,"column":19}},{"start":{"line":289,"column":23},"end":{"line":289,"column":45}}]},"40":{"loc":{"start":{"line":300,"column":6},"end":{"line":302,"column":7}},"type":"if","locations":[{"start":{"line":300,"column":6},"end":{"line":302,"column":7}}]},"41":{"loc":{"start":{"line":300,"column":10},"end":{"line":300,"column":69}},"type":"binary-expr","locations":[{"start":{"line":300,"column":10},"end":{"line":300,"column":28}},{"start":{"line":300,"column":32},"end":{"line":300,"column":69}}]},"42":{"loc":{"start":{"line":307,"column":39},"end":{"line":307,"column":65}},"type":"default-arg","locations":[{"start":{"line":307,"column":60},"end":{"line":307,"column":65}}]},"43":{"loc":{"start":{"line":311,"column":6},"end":{"line":313,"column":7}},"type":"if","locations":[{"start":{"line":311,"column":6},"end":{"line":313,"column":7}}]},"44":{"loc":{"start":{"line":311,"column":10},"end":{"line":311,"column":76}},"type":"binary-expr","locations":[{"start":{"line":311,"column":10},"end":{"line":311,"column":39}},{"start":{"line":311,"column":44},"end":{"line":311,"column":53}},{"start":{"line":311,"column":57},"end":{"line":311,"column":75}}]},"45":{"loc":{"start":{"line":318,"column":6},"end":{"line":321,"column":7}},"type":"if","locations":[{"start":{"line":318,"column":6},"end":{"line":321,"column":7}}]},"46":{"loc":{"start":{"line":318,"column":10},"end":{"line":318,"column":76}},"type":"binary-expr","locations":[{"start":{"line":318,"column":10},"end":{"line":318,"column":39}},{"start":{"line":318,"column":44},"end":{"line":318,"column":53}},{"start":{"line":318,"column":57},"end":{"line":318,"column":75}}]},"47":{"loc":{"start":{"line":326,"column":4},"end":{"line":333,"column":5}},"type":"if","locations":[{"start":{"line":326,"column":4},"end":{"line":333,"column":5}}]},"48":{"loc":{"start":{"line":329,"column":8},"end":{"line":331,"column":9}},"type":"if","locations":[{"start":{"line":329,"column":8},"end":{"line":331,"column":9}}]},"49":{"loc":{"start":{"line":329,"column":12},"end":{"line":329,"column":65}},"type":"binary-expr","locations":[{"start":{"line":329,"column":12},"end":{"line":329,"column":41}},{"start":{"line":329,"column":46},"end":{"line":329,"column":64}}]},"50":{"loc":{"start":{"line":338,"column":63},"end":{"line":338,"column":89}},"type":"default-arg","locations":[{"start":{"line":338,"column":84},"end":{"line":338,"column":89}}]},"51":{"loc":{"start":{"line":341,"column":6},"end":{"line":357,"column":7}},"type":"if","locations":[{"start":{"line":341,"column":6},"end":{"line":357,"column":7}}]},"52":{"loc":{"start":{"line":341,"column":10},"end":{"line":341,"column":68}},"type":"binary-expr","locations":[{"start":{"line":341,"column":10},"end":{"line":341,"column":39}},{"start":{"line":341,"column":43},"end":{"line":341,"column":68}}]},"53":{"loc":{"start":{"line":346,"column":8},"end":{"line":348,"column":9}},"type":"if","locations":[{"start":{"line":346,"column":8},"end":{"line":348,"column":9}}]},"54":{"loc":{"start":{"line":350,"column":8},"end":{"line":356,"column":9}},"type":"if","locations":[{"start":{"line":350,"column":8},"end":{"line":356,"column":9}}]},"55":{"loc":{"start":{"line":350,"column":12},"end":{"line":350,"column":35}},"type":"binary-expr","locations":[{"start":{"line":350,"column":12},"end":{"line":350,"column":21}},{"start":{"line":350,"column":25},"end":{"line":350,"column":35}}]},"56":{"loc":{"start":{"line":353,"column":10},"end":{"line":355,"column":11}},"type":"if","locations":[{"start":{"line":353,"column":10},"end":{"line":355,"column":11}}]},"57":{"loc":{"start":{"line":373,"column":4},"end":{"line":375,"column":5}},"type":"if","locations":[{"start":{"line":373,"column":4},"end":{"line":375,"column":5}}]},"58":{"loc":{"start":{"line":386,"column":4},"end":{"line":388,"column":5}},"type":"if","locations":[{"start":{"line":386,"column":4},"end":{"line":388,"column":5}}]},"59":{"loc":{"start":{"line":399,"column":4},"end":{"line":401,"column":5}},"type":"if","locations":[{"start":{"line":399,"column":4},"end":{"line":401,"column":5}}]},"60":{"loc":{"start":{"line":412,"column":4},"end":{"line":414,"column":5}},"type":"if","locations":[{"start":{"line":412,"column":4},"end":{"line":414,"column":5}}]}},"s":{"0":5,"1":5,"2":5,"3":31,"4":0,"5":30,"6":30,"7":5,"8":31,"9":31,"10":31,"11":31,"12":31,"13":31,"14":15,"15":29,"16":29,"17":0,"18":29,"19":30,"20":30,"21":30,"22":0,"23":30,"24":30,"25":0,"26":30,"27":30,"28":30,"29":30,"30":30,"31":7,"32":7,"33":0,"34":0,"35":30,"36":30,"37":30,"38":30,"39":30,"40":30,"41":30,"42":30,"43":24,"44":6,"45":30,"46":30,"47":15,"48":15,"49":15,"50":2,"51":13,"52":8,"53":8,"54":8,"55":4,"56":4,"57":4,"58":4,"59":0,"60":4,"61":6,"62":9,"63":9,"64":6,"65":6,"66":0,"67":6,"68":6,"69":9,"70":9,"71":6,"72":6,"73":0,"74":6,"75":2,"76":2,"77":4,"78":4,"79":4,"80":2,"81":2,"82":4,"83":4,"84":4,"85":2,"86":2,"87":0,"88":2,"89":2,"90":2,"91":0,"92":2,"93":4,"94":6,"95":2,"96":2,"97":1,"98":1,"99":0,"100":1,"101":35,"102":35,"103":14,"104":14,"105":13,"106":35,"107":4,"108":4,"109":0,"110":4,"111":3,"112":1,"113":2,"114":1,"115":1,"116":0,"117":3,"118":1,"119":2,"120":5,"121":5,"122":5,"123":4,"124":1,"125":2,"126":2,"127":2,"128":2,"129":2,"130":2,"131":2,"132":2,"133":2,"134":2,"135":2,"136":2,"137":2,"138":2,"139":2,"140":2,"141":2,"142":2,"143":1,"144":1,"145":1,"146":1,"147":2,"148":1,"149":2,"150":2,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":0,"158":0,"159":0,"160":0,"161":1,"162":0,"163":0,"164":2,"165":2,"166":1,"167":1,"168":2,"169":2,"170":2,"171":2,"172":1,"173":1,"174":2,"175":2,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":6,"190":5},"f":{"0":31,"1":0,"2":30,"3":31,"4":15,"5":29,"6":30,"7":30,"8":30,"9":15,"10":8,"11":4,"12":6,"13":2,"14":2,"15":4,"16":1,"17":35,"18":4,"19":3,"20":1,"21":3,"22":5,"23":2,"24":2,"25":1,"26":0,"27":0,"28":2,"29":2,"30":2,"31":2,"32":0,"33":0,"34":0,"35":0,"36":0,"37":6},"b":{"0":[20],"1":[0],"2":[1],"3":[0],"4":[30,0],"5":[0],"6":[0],"7":[7,6],"8":[30],"9":[24,6],"10":[2],"11":[15,13],"12":[4],"13":[8,6],"14":[0],"15":[6],"16":[6],"17":[9,9,6],"18":[0],"19":[6],"20":[9,9],"21":[0],"22":[2],"23":[4],"24":[4,4,0],"25":[2],"26":[4,4],"27":[0],"28":[0],"29":[2],"30":[0],"31":[13],"32":[14,13],"33":[0],"34":[1,2],"35":[1,0],"36":[1,2],"37":[5],"38":[4],"39":[5,3],"40":[2],"41":[2,2],"42":[1],"43":[2],"44":[2,2,1],"45":[2],"46":[2,2,1],"47":[1],"48":[1],"49":[1,1],"50":[1],"51":[1],"52":[2,2],"53":[1],"54":[0],"55":[1,0],"56":[0],"57":[1],"58":[1],"59":[0],"60":[0]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rest-error.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rest-error.ts","statementMap":{"0":{"start":{"line":6,"column":4},"end":{"line":6,"column":50}},"1":{"start":{"line":7,"column":4},"end":{"line":7,"column":25}},"2":{"start":{"line":8,"column":4},"end":{"line":8,"column":31}},"3":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":14}},"loc":{"start":{"line":5,"column":64},"end":{"line":9,"column":3}}}},"branchMap":{},"s":{"0":16,"1":16,"2":16,"3":9},"f":{"0":16},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rest-service.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rest-service.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":101}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":41}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":46}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":29}},"4":{"start":{"line":29,"column":4},"end":{"line":31,"column":5}},"5":{"start":{"line":30,"column":6},"end":{"line":30,"column":null}},"6":{"start":{"line":41,"column":4},"end":{"line":64,"column":5}},"7":{"start":{"line":41,"column":17},"end":{"line":41,"column":18}},"8":{"start":{"line":42,"column":6},"end":{"line":63,"column":7}},"9":{"start":{"line":43,"column":8},"end":{"line":43,"column":42}},"10":{"start":{"line":44,"column":25},"end":{"line":49,"column":10}},"11":{"start":{"line":50,"column":8},"end":{"line":50,"column":24}},"12":{"start":{"line":52,"column":8},"end":{"line":59,"column":9}},"13":{"start":{"line":53,"column":23},"end":{"line":53,"column":42}},"14":{"start":{"line":54,"column":10},"end":{"line":58,"column":11}},"15":{"start":{"line":55,"column":12},"end":{"line":55,"column":88}},"16":{"start":{"line":57,"column":12},"end":{"line":57,"column":null}},"17":{"start":{"line":60,"column":8},"end":{"line":62,"column":9}},"18":{"start":{"line":61,"column":10},"end":{"line":61,"column":22}},"19":{"start":{"line":66,"column":4},"end":{"line":66,"column":49}},"20":{"start":{"line":70,"column":4},"end":{"line":70,"column":null}},"21":{"start":{"line":74,"column":4},"end":{"line":76,"column":5}},"22":{"start":{"line":75,"column":6},"end":{"line":75,"column":null}},"23":{"start":{"line":78,"column":4},"end":{"line":80,"column":5}},"24":{"start":{"line":79,"column":6},"end":{"line":79,"column":null}},"25":{"start":{"line":84,"column":4},"end":{"line":84,"column":null}},"26":{"start":{"line":88,"column":4},"end":{"line":88,"column":null}},"27":{"start":{"line":21,"column":0},"end":{"line":21,"column":13}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":25,"column":2},"end":{"line":25,"column":14}},"loc":{"start":{"line":25,"column":90},"end":{"line":32,"column":3}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":34,"column":2},"end":{"line":34,"column":7}},"loc":{"start":{"line":38,"column":31},"end":{"line":67,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":69,"column":2},"end":{"line":69,"column":12}},"loc":{"start":{"line":69,"column":44},"end":{"line":71,"column":3}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":73,"column":2},"end":{"line":73,"column":9}},"loc":{"start":{"line":73,"column":50},"end":{"line":81,"column":3}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":83,"column":2},"end":{"line":83,"column":12}},"loc":{"start":{"line":83,"column":28},"end":{"line":85,"column":3}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":87,"column":2},"end":{"line":87,"column":12}},"loc":{"start":{"line":87,"column":28},"end":{"line":89,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":29,"column":4},"end":{"line":31,"column":5}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":31,"column":5}}]},"1":{"loc":{"start":{"line":52,"column":8},"end":{"line":59,"column":9}},"type":"if","locations":[{"start":{"line":52,"column":8},"end":{"line":59,"column":9}}]},"2":{"loc":{"start":{"line":52,"column":12},"end":{"line":52,"column":119}},"type":"binary-expr","locations":[{"start":{"line":52,"column":12},"end":{"line":52,"column":37}},{"start":{"line":52,"column":41},"end":{"line":52,"column":55}},{"start":{"line":52,"column":60},"end":{"line":52,"column":87}},{"start":{"line":52,"column":91},"end":{"line":52,"column":118}}]},"3":{"loc":{"start":{"line":54,"column":10},"end":{"line":58,"column":11}},"type":"if","locations":[{"start":{"line":54,"column":10},"end":{"line":58,"column":11}},{"start":{"line":56,"column":17},"end":{"line":58,"column":11}}]},"4":{"loc":{"start":{"line":54,"column":14},"end":{"line":54,"column":45}},"type":"binary-expr","locations":[{"start":{"line":54,"column":14},"end":{"line":54,"column":29}},{"start":{"line":54,"column":33},"end":{"line":54,"column":45}}]},"5":{"loc":{"start":{"line":60,"column":8},"end":{"line":62,"column":9}},"type":"if","locations":[{"start":{"line":60,"column":8},"end":{"line":62,"column":9}}]},"6":{"loc":{"start":{"line":74,"column":4},"end":{"line":76,"column":5}},"type":"if","locations":[{"start":{"line":74,"column":4},"end":{"line":76,"column":5}}]},"7":{"loc":{"start":{"line":78,"column":4},"end":{"line":80,"column":5}},"type":"if","locations":[{"start":{"line":78,"column":4},"end":{"line":80,"column":5}}]}},"s":{"0":6,"1":6,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":6},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{"0":[0],"1":[0],"2":[0,0,0,0],"3":[0,0],"4":[0,0],"5":[0],"6":[0],"7":[0]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/schemaregistry-client.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/schemaregistry-client.ts","statementMap":{"0":{"start":{"line":64,"column":0},"end":{"line":64,"column":16}},"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":59}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":53}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":37}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":36}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":56}},"6":{"start":{"line":17,"column":0},"end":{"line":17,"column":null}},"7":{"start":{"line":18,"column":2},"end":{"line":18,"column":null}},"8":{"start":{"line":19,"column":2},"end":{"line":19,"column":null}},"9":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"10":{"start":{"line":21,"column":2},"end":{"line":21,"column":null}},"11":{"start":{"line":22,"column":2},"end":{"line":22,"column":null}},"12":{"start":{"line":23,"column":2},"end":{"line":23,"column":null}},"13":{"start":{"line":24,"column":2},"end":{"line":24,"column":null}},"14":{"start":{"line":46,"column":0},"end":{"line":46,"column":null}},"15":{"start":{"line":47,"column":2},"end":{"line":47,"column":null}},"16":{"start":{"line":48,"column":2},"end":{"line":48,"column":null}},"17":{"start":{"line":49,"column":2},"end":{"line":49,"column":null}},"18":{"start":{"line":50,"column":2},"end":{"line":50,"column":null}},"19":{"start":{"line":51,"column":2},"end":{"line":51,"column":null}},"20":{"start":{"line":52,"column":2},"end":{"line":52,"column":null}},"21":{"start":{"line":65,"column":2},"end":{"line":71,"column":null}},"22":{"start":{"line":161,"column":4},"end":{"line":161,"column":null}},"23":{"start":{"line":162,"column":25},"end":{"line":165,"column":6}},"24":{"start":{"line":167,"column":4},"end":{"line":167,"column":102}},"25":{"start":{"line":169,"column":4},"end":{"line":169,"column":54}},"26":{"start":{"line":170,"column":4},"end":{"line":170,"column":58}},"27":{"start":{"line":171,"column":4},"end":{"line":171,"column":56}},"28":{"start":{"line":172,"column":4},"end":{"line":172,"column":58}},"29":{"start":{"line":173,"column":4},"end":{"line":173,"column":59}},"30":{"start":{"line":174,"column":4},"end":{"line":174,"column":59}},"31":{"start":{"line":175,"column":4},"end":{"line":175,"column":60}},"32":{"start":{"line":176,"column":4},"end":{"line":176,"column":39}},"33":{"start":{"line":177,"column":4},"end":{"line":177,"column":43}},"34":{"start":{"line":178,"column":4},"end":{"line":178,"column":41}},"35":{"start":{"line":179,"column":4},"end":{"line":179,"column":43}},"36":{"start":{"line":180,"column":4},"end":{"line":180,"column":44}},"37":{"start":{"line":181,"column":4},"end":{"line":181,"column":44}},"38":{"start":{"line":182,"column":4},"end":{"line":182,"column":45}},"39":{"start":{"line":186,"column":14},"end":{"line":186,"column":32}},"40":{"start":{"line":187,"column":4},"end":{"line":189,"column":5}},"41":{"start":{"line":188,"column":6},"end":{"line":188,"column":null}},"42":{"start":{"line":190,"column":4},"end":{"line":190,"column":null}},"43":{"start":{"line":194,"column":4},"end":{"line":194,"column":null}},"44":{"start":{"line":198,"column":27},"end":{"line":198,"column":86}},"45":{"start":{"line":200,"column":4},"end":{"line":200,"column":29}},"46":{"start":{"line":204,"column":21},"end":{"line":204,"column":69}},"47":{"start":{"line":206,"column":4},"end":{"line":221,"column":7}},"48":{"start":{"line":207,"column":63},"end":{"line":207,"column":99}},"49":{"start":{"line":208,"column":6},"end":{"line":210,"column":7}},"50":{"start":{"line":209,"column":8},"end":{"line":209,"column":36}},"51":{"start":{"line":212,"column":6},"end":{"line":212,"column":44}},"52":{"start":{"line":214,"column":54},"end":{"line":217,"column":null}},"53":{"start":{"line":219,"column":6},"end":{"line":219,"column":58}},"54":{"start":{"line":220,"column":6},"end":{"line":220,"column":27}},"55":{"start":{"line":225,"column":21},"end":{"line":225,"column":47}},"56":{"start":{"line":226,"column":4},"end":{"line":242,"column":7}},"57":{"start":{"line":227,"column":51},"end":{"line":227,"column":89}},"58":{"start":{"line":228,"column":6},"end":{"line":230,"column":7}},"59":{"start":{"line":229,"column":8},"end":{"line":229,"column":28}},"60":{"start":{"line":232,"column":6},"end":{"line":232,"column":44}},"61":{"start":{"line":234,"column":22},"end":{"line":234,"column":63}},"62":{"start":{"line":236,"column":50},"end":{"line":238,"column":null}},"63":{"start":{"line":240,"column":6},"end":{"line":240,"column":60}},"64":{"start":{"line":241,"column":6},"end":{"line":241,"column":27}},"65":{"start":{"line":246,"column":21},"end":{"line":246,"column":69}},"66":{"start":{"line":248,"column":4},"end":{"line":263,"column":7}},"67":{"start":{"line":249,"column":43},"end":{"line":249,"column":77}},"68":{"start":{"line":250,"column":6},"end":{"line":252,"column":7}},"69":{"start":{"line":251,"column":8},"end":{"line":251,"column":24}},"70":{"start":{"line":254,"column":6},"end":{"line":254,"column":44}},"71":{"start":{"line":256,"column":54},"end":{"line":259,"column":null}},"72":{"start":{"line":261,"column":6},"end":{"line":261,"column":59}},"73":{"start":{"line":262,"column":6},"end":{"line":262,"column":30}},"74":{"start":{"line":267,"column":4},"end":{"line":281,"column":7}},"75":{"start":{"line":268,"column":55},"end":{"line":268,"column":92}},"76":{"start":{"line":269,"column":6},"end":{"line":271,"column":7}},"77":{"start":{"line":270,"column":8},"end":{"line":270,"column":28}},"78":{"start":{"line":273,"column":6},"end":{"line":273,"column":44}},"79":{"start":{"line":275,"column":54},"end":{"line":277,"column":null}},"80":{"start":{"line":279,"column":6},"end":{"line":279,"column":59}},"81":{"start":{"line":280,"column":6},"end":{"line":280,"column":27}},"82":{"start":{"line":285,"column":21},"end":{"line":285,"column":61}},"83":{"start":{"line":287,"column":4},"end":{"line":301,"column":7}},"84":{"start":{"line":288,"column":63},"end":{"line":288,"column":102}},"85":{"start":{"line":289,"column":6},"end":{"line":291,"column":7}},"86":{"start":{"line":290,"column":8},"end":{"line":290,"column":36}},"87":{"start":{"line":293,"column":6},"end":{"line":293,"column":44}},"88":{"start":{"line":295,"column":54},"end":{"line":297,"column":null}},"89":{"start":{"line":299,"column":6},"end":{"line":299,"column":61}},"90":{"start":{"line":300,"column":6},"end":{"line":300,"column":27}},"91":{"start":{"line":305,"column":21},"end":{"line":305,"column":62}},"92":{"start":{"line":307,"column":4},"end":{"line":329,"column":7}},"93":{"start":{"line":308,"column":63},"end":{"line":308,"column":103}},"94":{"start":{"line":309,"column":6},"end":{"line":311,"column":7}},"95":{"start":{"line":310,"column":8},"end":{"line":310,"column":36}},"96":{"start":{"line":313,"column":6},"end":{"line":313,"column":44}},"97":{"start":{"line":315,"column":24},"end":{"line":315,"column":26}},"98":{"start":{"line":317,"column":6},"end":{"line":321,"column":7}},"99":{"start":{"line":318,"column":27},"end":{"line":318,"column":50}},"100":{"start":{"line":319,"column":29},"end":{"line":319,"column":62}},"101":{"start":{"line":320,"column":8},"end":{"line":320,"column":66}},"102":{"start":{"line":323,"column":54},"end":{"line":325,"column":null}},"103":{"start":{"line":327,"column":6},"end":{"line":327,"column":62}},"104":{"start":{"line":328,"column":6},"end":{"line":328,"column":27}},"105":{"start":{"line":334,"column":46},"end":{"line":336,"column":null}},"106":{"start":{"line":338,"column":4},"end":{"line":338,"column":25}},"107":{"start":{"line":342,"column":21},"end":{"line":342,"column":69}},"108":{"start":{"line":344,"column":4},"end":{"line":359,"column":7}},"109":{"start":{"line":345,"column":48},"end":{"line":345,"column":87}},"110":{"start":{"line":346,"column":6},"end":{"line":348,"column":7}},"111":{"start":{"line":347,"column":8},"end":{"line":347,"column":29}},"112":{"start":{"line":350,"column":6},"end":{"line":350,"column":44}},"113":{"start":{"line":352,"column":54},"end":{"line":355,"column":null}},"114":{"start":{"line":357,"column":6},"end":{"line":357,"column":69}},"115":{"start":{"line":358,"column":6},"end":{"line":358,"column":36}},"116":{"start":{"line":363,"column":46},"end":{"line":365,"column":null}},"117":{"start":{"line":367,"column":4},"end":{"line":367,"column":25}},"118":{"start":{"line":371,"column":4},"end":{"line":378,"column":7}},"119":{"start":{"line":372,"column":6},"end":{"line":377,"column":9}},"120":{"start":{"line":373,"column":26},"end":{"line":373,"column":41}},"121":{"start":{"line":374,"column":8},"end":{"line":376,"column":9}},"122":{"start":{"line":375,"column":10},"end":{"line":375,"column":45}},"123":{"start":{"line":380,"column":4},"end":{"line":387,"column":7}},"124":{"start":{"line":381,"column":6},"end":{"line":386,"column":9}},"125":{"start":{"line":382,"column":26},"end":{"line":382,"column":41}},"126":{"start":{"line":383,"column":8},"end":{"line":385,"column":9}},"127":{"start":{"line":384,"column":10},"end":{"line":384,"column":48}},"128":{"start":{"line":389,"column":4},"end":{"line":396,"column":7}},"129":{"start":{"line":390,"column":6},"end":{"line":395,"column":9}},"130":{"start":{"line":391,"column":26},"end":{"line":391,"column":41}},"131":{"start":{"line":392,"column":8},"end":{"line":394,"column":9}},"132":{"start":{"line":393,"column":10},"end":{"line":393,"column":48}},"133":{"start":{"line":398,"column":4},"end":{"line":405,"column":7}},"134":{"start":{"line":399,"column":6},"end":{"line":404,"column":9}},"135":{"start":{"line":400,"column":26},"end":{"line":400,"column":41}},"136":{"start":{"line":401,"column":8},"end":{"line":403,"column":9}},"137":{"start":{"line":402,"column":10},"end":{"line":402,"column":47}},"138":{"start":{"line":407,"column":4},"end":{"line":407,"column":42}},"139":{"start":{"line":409,"column":46},"end":{"line":411,"column":null}},"140":{"start":{"line":413,"column":4},"end":{"line":413,"column":25}},"141":{"start":{"line":417,"column":4},"end":{"line":452,"column":7}},"142":{"start":{"line":420,"column":6},"end":{"line":438,"column":9}},"143":{"start":{"line":421,"column":26},"end":{"line":421,"column":41}},"144":{"start":{"line":422,"column":8},"end":{"line":437,"column":9}},"145":{"start":{"line":423,"column":10},"end":{"line":423,"column":48}},"146":{"start":{"line":424,"column":39},"end":{"line":424,"column":106}},"147":{"start":{"line":426,"column":10},"end":{"line":436,"column":13}},"148":{"start":{"line":427,"column":12},"end":{"line":427,"column":77}},"149":{"start":{"line":428,"column":12},"end":{"line":435,"column":13}},"150":{"start":{"line":429,"column":14},"end":{"line":429,"column":66}},"151":{"start":{"line":430,"column":33},"end":{"line":430,"column":86}},"152":{"start":{"line":432,"column":14},"end":{"line":434,"column":17}},"153":{"start":{"line":433,"column":16},"end":{"line":433,"column":60}},"154":{"start":{"line":440,"column":23},"end":{"line":440,"column":72}},"155":{"start":{"line":441,"column":6},"end":{"line":443,"column":9}},"156":{"start":{"line":442,"column":8},"end":{"line":442,"column":51}},"157":{"start":{"line":445,"column":6},"end":{"line":445,"column":44}},"158":{"start":{"line":447,"column":46},"end":{"line":449,"column":null}},"159":{"start":{"line":451,"column":6},"end":{"line":451,"column":27}},"160":{"start":{"line":456,"column":4},"end":{"line":456,"column":42}},"161":{"start":{"line":458,"column":58},"end":{"line":461,"column":null}},"162":{"start":{"line":463,"column":4},"end":{"line":463,"column":39}},"163":{"start":{"line":467,"column":4},"end":{"line":467,"column":42}},"164":{"start":{"line":469,"column":58},"end":{"line":472,"column":null}},"165":{"start":{"line":474,"column":4},"end":{"line":474,"column":39}},"166":{"start":{"line":478,"column":4},"end":{"line":478,"column":42}},"167":{"start":{"line":480,"column":56},"end":{"line":482,"column":null}},"168":{"start":{"line":484,"column":4},"end":{"line":484,"column":45}},"169":{"start":{"line":488,"column":4},"end":{"line":488,"column":42}},"170":{"start":{"line":490,"column":56},"end":{"line":493,"column":null}},"171":{"start":{"line":495,"column":4},"end":{"line":495,"column":40}},"172":{"start":{"line":499,"column":56},"end":{"line":501,"column":null}},"173":{"start":{"line":503,"column":4},"end":{"line":503,"column":45}},"174":{"start":{"line":507,"column":56},"end":{"line":510,"column":null}},"175":{"start":{"line":512,"column":4},"end":{"line":512,"column":40}},"176":{"start":{"line":516,"column":4},"end":{"line":516,"column":42}},"177":{"start":{"line":518,"column":50},"end":{"line":520,"column":null}},"178":{"start":{"line":522,"column":4},"end":{"line":522,"column":25}},"179":{"start":{"line":526,"column":50},"end":{"line":529,"column":null}},"180":{"start":{"line":531,"column":4},"end":{"line":531,"column":25}},"181":{"start":{"line":535,"column":50},"end":{"line":537,"column":null}},"182":{"start":{"line":539,"column":4},"end":{"line":539,"column":25}},"183":{"start":{"line":543,"column":50},"end":{"line":546,"column":null}},"184":{"start":{"line":548,"column":4},"end":{"line":548,"column":25}},"185":{"start":{"line":552,"column":4},"end":{"line":552,"column":35}},"186":{"start":{"line":553,"column":4},"end":{"line":553,"column":38}},"187":{"start":{"line":554,"column":4},"end":{"line":554,"column":38}},"188":{"start":{"line":555,"column":4},"end":{"line":555,"column":37}},"189":{"start":{"line":557,"column":4},"end":{"line":557,"column":11}},"190":{"start":{"line":562,"column":21},"end":{"line":562,"column":69}},"191":{"start":{"line":563,"column":4},"end":{"line":565,"column":7}},"192":{"start":{"line":564,"column":6},"end":{"line":564,"column":53}},"193":{"start":{"line":569,"column":21},"end":{"line":569,"column":69}},"194":{"start":{"line":570,"column":4},"end":{"line":572,"column":7}},"195":{"start":{"line":571,"column":6},"end":{"line":571,"column":55}},"196":{"start":{"line":576,"column":21},"end":{"line":576,"column":52}},"197":{"start":{"line":577,"column":4},"end":{"line":579,"column":7}},"198":{"start":{"line":578,"column":6},"end":{"line":578,"column":56}},"199":{"start":{"line":583,"column":21},"end":{"line":583,"column":47}},"200":{"start":{"line":584,"column":4},"end":{"line":586,"column":7}},"201":{"start":{"line":585,"column":6},"end":{"line":585,"column":53}},"202":{"start":{"line":590,"column":4},"end":{"line":592,"column":7}},"203":{"start":{"line":591,"column":6},"end":{"line":591,"column":41}},"204":{"start":{"line":596,"column":4},"end":{"line":598,"column":7}},"205":{"start":{"line":597,"column":6},"end":{"line":597,"column":44}},"206":{"start":{"line":602,"column":4},"end":{"line":604,"column":7}},"207":{"start":{"line":603,"column":6},"end":{"line":603,"column":44}},"208":{"start":{"line":608,"column":4},"end":{"line":610,"column":7}},"209":{"start":{"line":609,"column":6},"end":{"line":609,"column":43}},"210":{"start":{"line":140,"column":0},"end":{"line":140,"column":13}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":17,"column":0},"end":{"line":17,"column":12}},"loc":{"start":{"line":17,"column":25},"end":{"line":25,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":46,"column":0},"end":{"line":46,"column":12}},"loc":{"start":{"line":46,"column":20},"end":{"line":53,"column":1}}},"2":{"name":"minimize","decl":{"start":{"line":64,"column":16},"end":{"line":64,"column":24}},"loc":{"start":{"line":64,"column":41},"end":{"line":72,"column":1}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":160,"column":2},"end":{"line":160,"column":14}},"loc":{"start":{"line":160,"column":34},"end":{"line":183,"column":3}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":185,"column":2},"end":{"line":185,"column":8}},"loc":{"start":{"line":185,"column":39},"end":{"line":191,"column":3}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":193,"column":2},"end":{"line":193,"column":8}},"loc":{"start":{"line":193,"column":8},"end":{"line":195,"column":3}}},"6":{"name":"(anonymous_7)","decl":{"start":{"line":197,"column":2},"end":{"line":197,"column":7}},"loc":{"start":{"line":197,"column":80},"end":{"line":201,"column":3}}},"7":{"name":"(anonymous_8)","decl":{"start":{"line":203,"column":2},"end":{"line":203,"column":7}},"loc":{"start":{"line":203,"column":92},"end":{"line":222,"column":3}}},"8":{"name":"(anonymous_9)","decl":{"start":{"line":206,"column":53},"end":{"line":206,"column":58}},"loc":{"start":{"line":206,"column":64},"end":{"line":221,"column":5}}},"9":{"name":"(anonymous_10)","decl":{"start":{"line":224,"column":2},"end":{"line":224,"column":7}},"loc":{"start":{"line":224,"column":70},"end":{"line":243,"column":3}}},"10":{"name":"(anonymous_11)","decl":{"start":{"line":226,"column":55},"end":{"line":226,"column":60}},"loc":{"start":{"line":226,"column":66},"end":{"line":242,"column":5}}},"11":{"name":"(anonymous_12)","decl":{"start":{"line":245,"column":2},"end":{"line":245,"column":7}},"loc":{"start":{"line":245,"column":77},"end":{"line":264,"column":3}}},"12":{"name":"(anonymous_13)","decl":{"start":{"line":248,"column":51},"end":{"line":248,"column":56}},"loc":{"start":{"line":248,"column":62},"end":{"line":263,"column":5}}},"13":{"name":"(anonymous_14)","decl":{"start":{"line":266,"column":2},"end":{"line":266,"column":7}},"loc":{"start":{"line":266,"column":47},"end":{"line":282,"column":3}}},"14":{"name":"(anonymous_15)","decl":{"start":{"line":267,"column":55},"end":{"line":267,"column":60}},"loc":{"start":{"line":267,"column":66},"end":{"line":281,"column":5}}},"15":{"name":"(anonymous_16)","decl":{"start":{"line":284,"column":2},"end":{"line":284,"column":7}},"loc":{"start":{"line":284,"column":84},"end":{"line":302,"column":3}}},"16":{"name":"(anonymous_17)","decl":{"start":{"line":287,"column":56},"end":{"line":287,"column":61}},"loc":{"start":{"line":287,"column":67},"end":{"line":301,"column":5}}},"17":{"name":"(anonymous_18)","decl":{"start":{"line":304,"column":2},"end":{"line":304,"column":7}},"loc":{"start":{"line":304,"column":108},"end":{"line":330,"column":3}}},"18":{"name":"(anonymous_19)","decl":{"start":{"line":307,"column":57},"end":{"line":307,"column":62}},"loc":{"start":{"line":307,"column":68},"end":{"line":329,"column":5}}},"19":{"name":"(anonymous_20)","decl":{"start":{"line":333,"column":2},"end":{"line":333,"column":7}},"loc":{"start":{"line":333,"column":38},"end":{"line":339,"column":3}}},"20":{"name":"(anonymous_21)","decl":{"start":{"line":341,"column":2},"end":{"line":341,"column":7}},"loc":{"start":{"line":341,"column":82},"end":{"line":360,"column":3}}},"21":{"name":"(anonymous_22)","decl":{"start":{"line":344,"column":56},"end":{"line":344,"column":61}},"loc":{"start":{"line":344,"column":67},"end":{"line":359,"column":5}}},"22":{"name":"(anonymous_23)","decl":{"start":{"line":362,"column":2},"end":{"line":362,"column":7}},"loc":{"start":{"line":362,"column":22},"end":{"line":368,"column":3}}},"23":{"name":"(anonymous_24)","decl":{"start":{"line":370,"column":2},"end":{"line":370,"column":7}},"loc":{"start":{"line":370,"column":65},"end":{"line":414,"column":3}}},"24":{"name":"(anonymous_25)","decl":{"start":{"line":371,"column":46},"end":{"line":371,"column":51}},"loc":{"start":{"line":371,"column":57},"end":{"line":378,"column":5}}},"25":{"name":"(anonymous_26)","decl":{"start":{"line":372,"column":37},"end":{"line":372,"column":38}},"loc":{"start":{"line":372,"column":48},"end":{"line":377,"column":7}}},"26":{"name":"(anonymous_27)","decl":{"start":{"line":380,"column":49},"end":{"line":380,"column":54}},"loc":{"start":{"line":380,"column":60},"end":{"line":387,"column":5}}},"27":{"name":"(anonymous_28)","decl":{"start":{"line":381,"column":40},"end":{"line":381,"column":41}},"loc":{"start":{"line":381,"column":51},"end":{"line":386,"column":7}}},"28":{"name":"(anonymous_29)","decl":{"start":{"line":389,"column":49},"end":{"line":389,"column":54}},"loc":{"start":{"line":389,"column":60},"end":{"line":396,"column":5}}},"29":{"name":"(anonymous_30)","decl":{"start":{"line":390,"column":40},"end":{"line":390,"column":41}},"loc":{"start":{"line":390,"column":51},"end":{"line":395,"column":7}}},"30":{"name":"(anonymous_31)","decl":{"start":{"line":398,"column":48},"end":{"line":398,"column":53}},"loc":{"start":{"line":398,"column":59},"end":{"line":405,"column":5}}},"31":{"name":"(anonymous_32)","decl":{"start":{"line":399,"column":39},"end":{"line":399,"column":40}},"loc":{"start":{"line":399,"column":50},"end":{"line":404,"column":7}}},"32":{"name":"(anonymous_33)","decl":{"start":{"line":416,"column":2},"end":{"line":416,"column":7}},"loc":{"start":{"line":416,"column":89},"end":{"line":453,"column":3}}},"33":{"name":"(anonymous_34)","decl":{"start":{"line":417,"column":56},"end":{"line":417,"column":61}},"loc":{"start":{"line":417,"column":67},"end":{"line":452,"column":5}}},"34":{"name":"(anonymous_35)","decl":{"start":{"line":420,"column":40},"end":{"line":420,"column":41}},"loc":{"start":{"line":420,"column":55},"end":{"line":438,"column":7}}},"35":{"name":"(anonymous_36)","decl":{"start":{"line":426,"column":46},"end":{"line":426,"column":51}},"loc":{"start":{"line":426,"column":57},"end":{"line":436,"column":11}}},"36":{"name":"(anonymous_37)","decl":{"start":{"line":432,"column":52},"end":{"line":432,"column":57}},"loc":{"start":{"line":432,"column":63},"end":{"line":434,"column":15}}},"37":{"name":"(anonymous_38)","decl":{"start":{"line":441,"column":45},"end":{"line":441,"column":50}},"loc":{"start":{"line":441,"column":56},"end":{"line":443,"column":7}}},"38":{"name":"(anonymous_39)","decl":{"start":{"line":455,"column":2},"end":{"line":455,"column":7}},"loc":{"start":{"line":455,"column":68},"end":{"line":464,"column":3}}},"39":{"name":"(anonymous_40)","decl":{"start":{"line":466,"column":2},"end":{"line":466,"column":7}},"loc":{"start":{"line":466,"column":78},"end":{"line":475,"column":3}}},"40":{"name":"(anonymous_41)","decl":{"start":{"line":477,"column":2},"end":{"line":477,"column":7}},"loc":{"start":{"line":477,"column":40},"end":{"line":485,"column":3}}},"41":{"name":"(anonymous_42)","decl":{"start":{"line":487,"column":2},"end":{"line":487,"column":7}},"loc":{"start":{"line":487,"column":66},"end":{"line":496,"column":3}}},"42":{"name":"(anonymous_43)","decl":{"start":{"line":498,"column":2},"end":{"line":498,"column":7}},"loc":{"start":{"line":498,"column":31},"end":{"line":504,"column":3}}},"43":{"name":"(anonymous_44)","decl":{"start":{"line":506,"column":2},"end":{"line":506,"column":7}},"loc":{"start":{"line":506,"column":56},"end":{"line":513,"column":3}}},"44":{"name":"(anonymous_45)","decl":{"start":{"line":515,"column":2},"end":{"line":515,"column":7}},"loc":{"start":{"line":515,"column":33},"end":{"line":523,"column":3}}},"45":{"name":"(anonymous_46)","decl":{"start":{"line":525,"column":2},"end":{"line":525,"column":7}},"loc":{"start":{"line":525,"column":58},"end":{"line":532,"column":3}}},"46":{"name":"(anonymous_47)","decl":{"start":{"line":534,"column":2},"end":{"line":534,"column":7}},"loc":{"start":{"line":534,"column":24},"end":{"line":540,"column":3}}},"47":{"name":"(anonymous_48)","decl":{"start":{"line":542,"column":2},"end":{"line":542,"column":7}},"loc":{"start":{"line":542,"column":48},"end":{"line":549,"column":3}}},"48":{"name":"(anonymous_49)","decl":{"start":{"line":551,"column":2},"end":{"line":551,"column":7}},"loc":{"start":{"line":551,"column":7},"end":{"line":558,"column":3}}},"49":{"name":"(anonymous_50)","decl":{"start":{"line":561,"column":2},"end":{"line":561,"column":7}},"loc":{"start":{"line":561,"column":92},"end":{"line":566,"column":3}}},"50":{"name":"(anonymous_51)","decl":{"start":{"line":563,"column":46},"end":{"line":563,"column":51}},"loc":{"start":{"line":563,"column":57},"end":{"line":565,"column":5}}},"51":{"name":"(anonymous_52)","decl":{"start":{"line":568,"column":2},"end":{"line":568,"column":7}},"loc":{"start":{"line":568,"column":86},"end":{"line":573,"column":3}}},"52":{"name":"(anonymous_53)","decl":{"start":{"line":570,"column":49},"end":{"line":570,"column":54}},"loc":{"start":{"line":570,"column":60},"end":{"line":572,"column":5}}},"53":{"name":"(anonymous_54)","decl":{"start":{"line":575,"column":2},"end":{"line":575,"column":7}},"loc":{"start":{"line":575,"column":92},"end":{"line":580,"column":3}}},"54":{"name":"(anonymous_55)","decl":{"start":{"line":577,"column":49},"end":{"line":577,"column":54}},"loc":{"start":{"line":577,"column":60},"end":{"line":579,"column":5}}},"55":{"name":"(anonymous_56)","decl":{"start":{"line":582,"column":2},"end":{"line":582,"column":7}},"loc":{"start":{"line":582,"column":80},"end":{"line":587,"column":3}}},"56":{"name":"(anonymous_57)","decl":{"start":{"line":584,"column":48},"end":{"line":584,"column":53}},"loc":{"start":{"line":584,"column":59},"end":{"line":586,"column":5}}},"57":{"name":"(anonymous_58)","decl":{"start":{"line":589,"column":2},"end":{"line":589,"column":7}},"loc":{"start":{"line":589,"column":32},"end":{"line":593,"column":3}}},"58":{"name":"(anonymous_59)","decl":{"start":{"line":590,"column":53},"end":{"line":590,"column":58}},"loc":{"start":{"line":590,"column":64},"end":{"line":592,"column":5}}},"59":{"name":"(anonymous_60)","decl":{"start":{"line":595,"column":2},"end":{"line":595,"column":7}},"loc":{"start":{"line":595,"column":35},"end":{"line":599,"column":3}}},"60":{"name":"(anonymous_61)","decl":{"start":{"line":596,"column":56},"end":{"line":596,"column":61}},"loc":{"start":{"line":596,"column":67},"end":{"line":598,"column":5}}},"61":{"name":"(anonymous_62)","decl":{"start":{"line":601,"column":2},"end":{"line":601,"column":7}},"loc":{"start":{"line":601,"column":35},"end":{"line":605,"column":3}}},"62":{"name":"(anonymous_63)","decl":{"start":{"line":602,"column":56},"end":{"line":602,"column":61}},"loc":{"start":{"line":602,"column":67},"end":{"line":604,"column":5}}},"63":{"name":"(anonymous_64)","decl":{"start":{"line":607,"column":2},"end":{"line":607,"column":7}},"loc":{"start":{"line":607,"column":34},"end":{"line":611,"column":3}}},"64":{"name":"(anonymous_65)","decl":{"start":{"line":608,"column":55},"end":{"line":608,"column":60}},"loc":{"start":{"line":608,"column":66},"end":{"line":610,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":12},"end":{"line":17,"column":null}},"type":"binary-expr","locations":[{"start":{"line":17,"column":12},"end":{"line":17,"column":25}},{"start":{"line":17,"column":25},"end":{"line":17,"column":null}}]},"1":{"loc":{"start":{"line":46,"column":12},"end":{"line":46,"column":null}},"type":"binary-expr","locations":[{"start":{"line":46,"column":12},"end":{"line":46,"column":20}},{"start":{"line":46,"column":20},"end":{"line":46,"column":null}}]},"2":{"loc":{"start":{"line":164,"column":10},"end":{"line":164,"column":97}},"type":"binary-expr","locations":[{"start":{"line":164,"column":10},"end":{"line":164,"column":49}},{"start":{"line":164,"column":53},"end":{"line":164,"column":97}}]},"3":{"loc":{"start":{"line":187,"column":4},"end":{"line":189,"column":5}},"type":"if","locations":[{"start":{"line":187,"column":4},"end":{"line":189,"column":5}}]},"4":{"loc":{"start":{"line":197,"column":54},"end":{"line":197,"column":80}},"type":"default-arg","locations":[{"start":{"line":197,"column":75},"end":{"line":197,"column":80}}]},"5":{"loc":{"start":{"line":203,"column":66},"end":{"line":203,"column":92}},"type":"default-arg","locations":[{"start":{"line":203,"column":87},"end":{"line":203,"column":92}}]},"6":{"loc":{"start":{"line":208,"column":6},"end":{"line":210,"column":7}},"type":"if","locations":[{"start":{"line":208,"column":6},"end":{"line":210,"column":7}}]},"7":{"loc":{"start":{"line":228,"column":6},"end":{"line":230,"column":7}},"type":"if","locations":[{"start":{"line":228,"column":6},"end":{"line":230,"column":7}}]},"8":{"loc":{"start":{"line":234,"column":22},"end":{"line":234,"column":63}},"type":"cond-expr","locations":[{"start":{"line":234,"column":39},"end":{"line":234,"column":58}},{"start":{"line":234,"column":61},"end":{"line":234,"column":63}}]},"9":{"loc":{"start":{"line":245,"column":51},"end":{"line":245,"column":77}},"type":"default-arg","locations":[{"start":{"line":245,"column":72},"end":{"line":245,"column":77}}]},"10":{"loc":{"start":{"line":250,"column":6},"end":{"line":252,"column":7}},"type":"if","locations":[{"start":{"line":250,"column":6},"end":{"line":252,"column":7}}]},"11":{"loc":{"start":{"line":269,"column":6},"end":{"line":271,"column":7}},"type":"if","locations":[{"start":{"line":269,"column":6},"end":{"line":271,"column":7}}]},"12":{"loc":{"start":{"line":284,"column":60},"end":{"line":284,"column":84}},"type":"default-arg","locations":[{"start":{"line":284,"column":79},"end":{"line":284,"column":84}}]},"13":{"loc":{"start":{"line":289,"column":6},"end":{"line":291,"column":7}},"type":"if","locations":[{"start":{"line":289,"column":6},"end":{"line":291,"column":7}}]},"14":{"loc":{"start":{"line":304,"column":84},"end":{"line":304,"column":108}},"type":"default-arg","locations":[{"start":{"line":304,"column":103},"end":{"line":304,"column":108}}]},"15":{"loc":{"start":{"line":309,"column":6},"end":{"line":311,"column":7}},"type":"if","locations":[{"start":{"line":309,"column":6},"end":{"line":311,"column":7}}]},"16":{"loc":{"start":{"line":341,"column":56},"end":{"line":341,"column":82}},"type":"default-arg","locations":[{"start":{"line":341,"column":77},"end":{"line":341,"column":82}}]},"17":{"loc":{"start":{"line":346,"column":6},"end":{"line":348,"column":7}},"type":"if","locations":[{"start":{"line":346,"column":6},"end":{"line":348,"column":7}}]},"18":{"loc":{"start":{"line":370,"column":39},"end":{"line":370,"column":65}},"type":"default-arg","locations":[{"start":{"line":370,"column":60},"end":{"line":370,"column":65}}]},"19":{"loc":{"start":{"line":374,"column":8},"end":{"line":376,"column":9}},"type":"if","locations":[{"start":{"line":374,"column":8},"end":{"line":376,"column":9}}]},"20":{"loc":{"start":{"line":383,"column":8},"end":{"line":385,"column":9}},"type":"if","locations":[{"start":{"line":383,"column":8},"end":{"line":385,"column":9}}]},"21":{"loc":{"start":{"line":392,"column":8},"end":{"line":394,"column":9}},"type":"if","locations":[{"start":{"line":392,"column":8},"end":{"line":394,"column":9}}]},"22":{"loc":{"start":{"line":401,"column":8},"end":{"line":403,"column":9}},"type":"if","locations":[{"start":{"line":401,"column":8},"end":{"line":403,"column":9}}]},"23":{"loc":{"start":{"line":416,"column":63},"end":{"line":416,"column":89}},"type":"default-arg","locations":[{"start":{"line":416,"column":84},"end":{"line":416,"column":89}}]},"24":{"loc":{"start":{"line":422,"column":8},"end":{"line":437,"column":9}},"type":"if","locations":[{"start":{"line":422,"column":8},"end":{"line":437,"column":9}}]},"25":{"loc":{"start":{"line":422,"column":12},"end":{"line":422,"column":62}},"type":"binary-expr","locations":[{"start":{"line":422,"column":12},"end":{"line":422,"column":41}},{"start":{"line":422,"column":45},"end":{"line":422,"column":62}}]},"26":{"loc":{"start":{"line":428,"column":12},"end":{"line":435,"column":13}},"type":"if","locations":[{"start":{"line":428,"column":12},"end":{"line":435,"column":13}}]}},"s":{"0":5,"1":5,"2":5,"3":5,"4":5,"5":5,"6":5,"7":5,"8":5,"9":5,"10":5,"11":5,"12":5,"13":5,"14":5,"15":5,"16":5,"17":5,"18":5,"19":5,"20":5,"21":99,"22":26,"23":26,"24":26,"25":26,"26":26,"27":26,"28":26,"29":26,"30":26,"31":26,"32":26,"33":26,"34":26,"35":26,"36":26,"37":26,"38":26,"39":9,"40":9,"41":9,"42":0,"43":0,"44":5,"45":5,"46":10,"47":10,"48":10,"49":10,"50":4,"51":6,"52":6,"53":6,"54":6,"55":5,"56":5,"57":5,"58":5,"59":2,"60":3,"61":3,"62":3,"63":3,"64":3,"65":5,"66":5,"67":5,"68":5,"69":2,"70":3,"71":3,"72":3,"73":3,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":5,"83":5,"84":5,"85":5,"86":2,"87":3,"88":3,"89":3,"90":3,"91":5,"92":5,"93":5,"94":5,"95":2,"96":3,"97":3,"98":3,"99":6,"100":6,"101":6,"102":3,"103":3,"104":3,"105":1,"106":1,"107":5,"108":5,"109":5,"110":5,"111":2,"112":3,"113":3,"114":3,"115":3,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":0,"186":0,"187":0,"188":0,"189":0,"190":2,"191":2,"192":2,"193":2,"194":2,"195":2,"196":2,"197":2,"198":2,"199":2,"200":2,"201":2,"202":2,"203":2,"204":2,"205":2,"206":2,"207":2,"208":2,"209":2,"210":5},"f":{"0":5,"1":5,"2":99,"3":26,"4":9,"5":0,"6":5,"7":10,"8":10,"9":5,"10":5,"11":5,"12":5,"13":0,"14":0,"15":5,"16":5,"17":5,"18":5,"19":1,"20":5,"21":5,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":0,"39":0,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":0,"49":2,"50":2,"51":2,"52":2,"53":2,"54":2,"55":2,"56":2,"57":2,"58":2,"59":2,"60":2,"61":2,"62":2,"63":2,"64":2},"b":{"0":[5,5],"1":[5,5],"2":[26,26],"3":[9],"4":[5],"5":[5],"6":[4],"7":[2],"8":[0,3],"9":[5],"10":[2],"11":[0],"12":[0],"13":[2],"14":[5],"15":[2],"16":[0],"17":[2],"18":[1],"19":[1],"20":[1],"21":[1],"22":[1],"23":[1],"24":[1],"25":[1,1],"26":[1]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/confluent/meta_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/confluent/meta_pb.ts","statementMap":{"0":{"start":{"line":6,"column":0},"end":{"line":6,"column":78}},"1":{"start":{"line":8,"column":0},"end":{"line":8,"column":73}},"2":{"start":{"line":14,"column":13},"end":{"line":15,"column":846}},"3":{"start":{"line":41,"column":13},"end":{"line":42,"column":38}},"4":{"start":{"line":47,"column":13},"end":{"line":48,"column":34}},"5":{"start":{"line":53,"column":13},"end":{"line":54,"column":34}},"6":{"start":{"line":59,"column":13},"end":{"line":60,"column":34}},"7":{"start":{"line":65,"column":13},"end":{"line":66,"column":34}},"8":{"start":{"line":71,"column":13},"end":{"line":72,"column":34}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/confluent/types/decimal_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/confluent/types/decimal_pb.ts","statementMap":{"0":{"start":{"line":6,"column":0},"end":{"line":6,"column":69}},"1":{"start":{"line":12,"column":13},"end":{"line":13,"column":185}},"2":{"start":{"line":45,"column":13},"end":{"line":46,"column":47}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/dekregistry/constants.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/dekregistry/constants.ts","statementMap":{"0":{"start":{"line":1,"column":16},"end":{"line":1,"column":27}},"1":{"start":{"line":4,"column":4},"end":{"line":4,"column":11}}},"fnMap":{},"branchMap":{},"s":{"0":5,"1":5},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/dekregistry/dekregistry-client.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/dekregistry/dekregistry-client.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":37}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":36}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":60}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":53}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":64}},"5":{"start":{"line":67,"column":25},"end":{"line":70,"column":6}},"6":{"start":{"line":73,"column":4},"end":{"line":73,"column":102}},"7":{"start":{"line":74,"column":4},"end":{"line":74,"column":60}},"8":{"start":{"line":75,"column":4},"end":{"line":75,"column":60}},"9":{"start":{"line":76,"column":4},"end":{"line":76,"column":32}},"10":{"start":{"line":77,"column":4},"end":{"line":77,"column":32}},"11":{"start":{"line":81,"column":14},"end":{"line":81,"column":32}},"12":{"start":{"line":82,"column":4},"end":{"line":84,"column":5}},"13":{"start":{"line":83,"column":6},"end":{"line":83,"column":null}},"14":{"start":{"line":85,"column":4},"end":{"line":85,"column":null}},"15":{"start":{"line":89,"column":4},"end":{"line":91,"column":5}},"16":{"start":{"line":90,"column":6},"end":{"line":90,"column":18}},"17":{"start":{"line":93,"column":4},"end":{"line":103,"column":5}},"18":{"start":{"line":94,"column":6},"end":{"line":102,"column":7}},"19":{"start":{"line":95,"column":22},"end":{"line":95,"column":69}},"20":{"start":{"line":96,"column":8},"end":{"line":96,"column":46}},"21":{"start":{"line":98,"column":8},"end":{"line":100,"column":9}},"22":{"start":{"line":99,"column":10},"end":{"line":99,"column":76}},"23":{"start":{"line":101,"column":8},"end":{"line":101,"column":49}},"24":{"start":{"line":105,"column":4},"end":{"line":105,"column":41}},"25":{"start":{"line":109,"column":4},"end":{"line":111,"column":5}},"26":{"start":{"line":110,"column":6},"end":{"line":110,"column":18}},"27":{"start":{"line":113,"column":4},"end":{"line":123,"column":5}},"28":{"start":{"line":114,"column":6},"end":{"line":122,"column":7}},"29":{"start":{"line":115,"column":22},"end":{"line":115,"column":60}},"30":{"start":{"line":116,"column":8},"end":{"line":116,"column":37}},"31":{"start":{"line":118,"column":8},"end":{"line":120,"column":9}},"32":{"start":{"line":119,"column":10},"end":{"line":119,"column":76}},"33":{"start":{"line":121,"column":8},"end":{"line":121,"column":49}},"34":{"start":{"line":125,"column":4},"end":{"line":125,"column":32}},"35":{"start":{"line":129,"column":4},"end":{"line":132,"column":5}},"36":{"start":{"line":130,"column":18},"end":{"line":130,"column":53}},"37":{"start":{"line":131,"column":6},"end":{"line":131,"column":28}},"38":{"start":{"line":137,"column":21},"end":{"line":137,"column":56}},"39":{"start":{"line":139,"column":4},"end":{"line":160,"column":7}},"40":{"start":{"line":140,"column":18},"end":{"line":140,"column":45}},"41":{"start":{"line":141,"column":6},"end":{"line":143,"column":7}},"42":{"start":{"line":142,"column":8},"end":{"line":142,"column":19}},"43":{"start":{"line":145,"column":40},"end":{"line":152,"column":8}},"44":{"start":{"line":154,"column":23},"end":{"line":157,"column":16}},"45":{"start":{"line":158,"column":6},"end":{"line":158,"column":49}},"46":{"start":{"line":159,"column":6},"end":{"line":159,"column":27}},"47":{"start":{"line":164,"column":21},"end":{"line":164,"column":49}},"48":{"start":{"line":166,"column":4},"end":{"line":178,"column":7}},"49":{"start":{"line":167,"column":18},"end":{"line":167,"column":45}},"50":{"start":{"line":168,"column":6},"end":{"line":170,"column":7}},"51":{"start":{"line":169,"column":8},"end":{"line":169,"column":19}},"52":{"start":{"line":171,"column":6},"end":{"line":171,"column":38}},"53":{"start":{"line":173,"column":23},"end":{"line":175,"column":14}},"54":{"start":{"line":176,"column":6},"end":{"line":176,"column":49}},"55":{"start":{"line":177,"column":6},"end":{"line":177,"column":27}},"56":{"start":{"line":183,"column":21},"end":{"line":183,"column":88}},"57":{"start":{"line":185,"column":4},"end":{"line":209,"column":7}},"58":{"start":{"line":186,"column":18},"end":{"line":186,"column":45}},"59":{"start":{"line":187,"column":6},"end":{"line":189,"column":7}},"60":{"start":{"line":188,"column":8},"end":{"line":188,"column":19}},"61":{"start":{"line":191,"column":27},"end":{"line":196,"column":8}},"62":{"start":{"line":197,"column":6},"end":{"line":197,"column":44}},"63":{"start":{"line":199,"column":23},"end":{"line":202,"column":16}},"64":{"start":{"line":203,"column":6},"end":{"line":203,"column":49}},"65":{"start":{"line":205,"column":6},"end":{"line":205,"column":100}},"66":{"start":{"line":206,"column":6},"end":{"line":206,"column":99}},"67":{"start":{"line":208,"column":6},"end":{"line":208,"column":27}},"68":{"start":{"line":214,"column":21},"end":{"line":214,"column":81}},"69":{"start":{"line":216,"column":4},"end":{"line":229,"column":7}},"70":{"start":{"line":217,"column":18},"end":{"line":217,"column":45}},"71":{"start":{"line":218,"column":6},"end":{"line":220,"column":7}},"72":{"start":{"line":219,"column":8},"end":{"line":219,"column":19}},"73":{"start":{"line":221,"column":6},"end":{"line":221,"column":44}},"74":{"start":{"line":222,"column":6},"end":{"line":222,"column":44}},"75":{"start":{"line":224,"column":23},"end":{"line":226,"column":14}},"76":{"start":{"line":227,"column":6},"end":{"line":227,"column":49}},"77":{"start":{"line":228,"column":6},"end":{"line":228,"column":27}},"78":{"start":{"line":233,"column":4},"end":{"line":233,"column":11}},"79":{"start":{"line":238,"column":21},"end":{"line":238,"column":92}},"80":{"start":{"line":239,"column":22},"end":{"line":239,"column":49}},"81":{"start":{"line":240,"column":4},"end":{"line":240,"column":35}},"82":{"start":{"line":244,"column":9},"end":{"line":244,"column":26}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":66,"column":2},"end":{"line":66,"column":14}},"loc":{"start":{"line":66,"column":34},"end":{"line":78,"column":3}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":80,"column":2},"end":{"line":80,"column":8}},"loc":{"start":{"line":80,"column":39},"end":{"line":86,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":88,"column":2},"end":{"line":88,"column":8}},"loc":{"start":{"line":88,"column":46},"end":{"line":106,"column":3}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":108,"column":2},"end":{"line":108,"column":8}},"loc":{"start":{"line":108,"column":37},"end":{"line":126,"column":3}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":128,"column":2},"end":{"line":128,"column":8}},"loc":{"start":{"line":128,"column":58},"end":{"line":133,"column":3}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":135,"column":2},"end":{"line":135,"column":7}},"loc":{"start":{"line":136,"column":54},"end":{"line":161,"column":3}}},"6":{"name":"(anonymous_7)","decl":{"start":{"line":139,"column":44},"end":{"line":139,"column":49}},"loc":{"start":{"line":139,"column":55},"end":{"line":160,"column":5}}},"7":{"name":"(anonymous_8)","decl":{"start":{"line":163,"column":2},"end":{"line":163,"column":7}},"loc":{"start":{"line":163,"column":53},"end":{"line":179,"column":3}}},"8":{"name":"(anonymous_9)","decl":{"start":{"line":166,"column":44},"end":{"line":166,"column":49}},"loc":{"start":{"line":166,"column":55},"end":{"line":178,"column":5}}},"9":{"name":"(anonymous_10)","decl":{"start":{"line":181,"column":2},"end":{"line":181,"column":7}},"loc":{"start":{"line":182,"column":54},"end":{"line":210,"column":3}}},"10":{"name":"(anonymous_11)","decl":{"start":{"line":185,"column":44},"end":{"line":185,"column":49}},"loc":{"start":{"line":185,"column":55},"end":{"line":209,"column":5}}},"11":{"name":"(anonymous_12)","decl":{"start":{"line":212,"column":2},"end":{"line":212,"column":7}},"loc":{"start":{"line":213,"column":68},"end":{"line":230,"column":3}}},"12":{"name":"(anonymous_13)","decl":{"start":{"line":216,"column":44},"end":{"line":216,"column":49}},"loc":{"start":{"line":216,"column":55},"end":{"line":229,"column":5}}},"13":{"name":"(anonymous_14)","decl":{"start":{"line":232,"column":2},"end":{"line":232,"column":7}},"loc":{"start":{"line":232,"column":13},"end":{"line":234,"column":3}}},"14":{"name":"(anonymous_15)","decl":{"start":{"line":237,"column":2},"end":{"line":237,"column":7}},"loc":{"start":{"line":237,"column":81},"end":{"line":241,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":69,"column":10},"end":{"line":69,"column":97}},"type":"binary-expr","locations":[{"start":{"line":69,"column":10},"end":{"line":69,"column":49}},{"start":{"line":69,"column":53},"end":{"line":69,"column":97}}]},"1":{"loc":{"start":{"line":82,"column":4},"end":{"line":84,"column":5}},"type":"if","locations":[{"start":{"line":82,"column":4},"end":{"line":84,"column":5}}]},"2":{"loc":{"start":{"line":89,"column":4},"end":{"line":91,"column":5}},"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":91,"column":5}}]},"3":{"loc":{"start":{"line":93,"column":4},"end":{"line":103,"column":5}},"type":"if","locations":[{"start":{"line":93,"column":4},"end":{"line":103,"column":5}}]},"4":{"loc":{"start":{"line":98,"column":8},"end":{"line":100,"column":9}},"type":"if","locations":[{"start":{"line":98,"column":8},"end":{"line":100,"column":9}}]},"5":{"loc":{"start":{"line":109,"column":4},"end":{"line":111,"column":5}},"type":"if","locations":[{"start":{"line":109,"column":4},"end":{"line":111,"column":5}}]},"6":{"loc":{"start":{"line":113,"column":4},"end":{"line":123,"column":5}},"type":"if","locations":[{"start":{"line":113,"column":4},"end":{"line":123,"column":5}}]},"7":{"loc":{"start":{"line":118,"column":8},"end":{"line":120,"column":9}},"type":"if","locations":[{"start":{"line":118,"column":8},"end":{"line":120,"column":9}}]},"8":{"loc":{"start":{"line":129,"column":4},"end":{"line":132,"column":5}},"type":"if","locations":[{"start":{"line":129,"column":4},"end":{"line":132,"column":5}}]},"9":{"loc":{"start":{"line":141,"column":6},"end":{"line":143,"column":7}},"type":"if","locations":[{"start":{"line":141,"column":6},"end":{"line":143,"column":7}}]},"10":{"loc":{"start":{"line":149,"column":11},"end":{"line":149,"column":35}},"type":"binary-expr","locations":[{"start":{"line":149,"column":11},"end":{"line":149,"column":19}},{"start":{"line":149,"column":23},"end":{"line":149,"column":35}}]},"11":{"loc":{"start":{"line":150,"column":11},"end":{"line":150,"column":25}},"type":"binary-expr","locations":[{"start":{"line":150,"column":11},"end":{"line":150,"column":14}},{"start":{"line":150,"column":18},"end":{"line":150,"column":25}}]},"12":{"loc":{"start":{"line":163,"column":29},"end":{"line":163,"column":53}},"type":"default-arg","locations":[{"start":{"line":163,"column":48},"end":{"line":163,"column":53}}]},"13":{"loc":{"start":{"line":168,"column":6},"end":{"line":170,"column":7}},"type":"if","locations":[{"start":{"line":168,"column":6},"end":{"line":170,"column":7}}]},"14":{"loc":{"start":{"line":182,"column":4},"end":{"line":182,"column":23}},"type":"default-arg","locations":[{"start":{"line":182,"column":22},"end":{"line":182,"column":23}}]},"15":{"loc":{"start":{"line":187,"column":6},"end":{"line":189,"column":7}},"type":"if","locations":[{"start":{"line":187,"column":6},"end":{"line":189,"column":7}}]},"16":{"loc":{"start":{"line":195,"column":11},"end":{"line":195,"column":59}},"type":"binary-expr","locations":[{"start":{"line":195,"column":11},"end":{"line":195,"column":31}},{"start":{"line":195,"column":35},"end":{"line":195,"column":59}}]},"17":{"loc":{"start":{"line":213,"column":23},"end":{"line":213,"column":42}},"type":"default-arg","locations":[{"start":{"line":213,"column":41},"end":{"line":213,"column":42}}]},"18":{"loc":{"start":{"line":213,"column":44},"end":{"line":213,"column":68}},"type":"default-arg","locations":[{"start":{"line":213,"column":63},"end":{"line":213,"column":68}}]},"19":{"loc":{"start":{"line":218,"column":6},"end":{"line":220,"column":7}},"type":"if","locations":[{"start":{"line":218,"column":6},"end":{"line":220,"column":7}}]}},"s":{"0":4,"1":4,"2":4,"3":4,"4":4,"5":7,"6":7,"7":7,"8":7,"9":7,"10":7,"11":15,"12":15,"13":15,"14":0,"15":5,"16":0,"17":5,"18":5,"19":5,"20":5,"21":0,"22":0,"23":0,"24":5,"25":22,"26":5,"27":17,"28":5,"29":5,"30":5,"31":0,"32":0,"33":0,"34":17,"35":5,"36":5,"37":5,"38":6,"39":6,"40":6,"41":6,"42":2,"43":4,"44":4,"45":4,"46":4,"47":1,"48":1,"49":1,"50":1,"51":1,"52":0,"53":0,"54":0,"55":0,"56":7,"57":7,"58":7,"59":7,"60":2,"61":5,"62":5,"63":5,"64":5,"65":5,"66":5,"67":5,"68":3,"69":3,"70":3,"71":3,"72":2,"73":1,"74":1,"75":1,"76":1,"77":1,"78":0,"79":2,"80":2,"81":2,"82":4},"f":{"0":7,"1":15,"2":5,"3":22,"4":5,"5":6,"6":6,"7":1,"8":1,"9":7,"10":7,"11":3,"12":3,"13":0,"14":2},"b":{"0":[7,7],"1":[15],"2":[0],"3":[5],"4":[0],"5":[5],"6":[5],"7":[0],"8":[5],"9":[2],"10":[4,4],"11":[4,4],"12":[1],"13":[1],"14":[0],"15":[2],"16":[5,5],"17":[1],"18":[3],"19":[2]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/dekregistry/mock-dekregistry-client.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/dekregistry/mock-dekregistry-client.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":38}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":53}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"3":{"start":{"line":11,"column":4},"end":{"line":11,"column":43}},"4":{"start":{"line":12,"column":4},"end":{"line":12,"column":43}},"5":{"start":{"line":17,"column":21},"end":{"line":17,"column":56}},"6":{"start":{"line":18,"column":22},"end":{"line":18,"column":49}},"7":{"start":{"line":19,"column":4},"end":{"line":21,"column":5}},"8":{"start":{"line":20,"column":6},"end":{"line":20,"column":23}},"9":{"start":{"line":23,"column":21},"end":{"line":30,"column":6}},"10":{"start":{"line":32,"column":4},"end":{"line":32,"column":37}},"11":{"start":{"line":33,"column":4},"end":{"line":33,"column":15}},"12":{"start":{"line":37,"column":21},"end":{"line":37,"column":49}},"13":{"start":{"line":38,"column":22},"end":{"line":38,"column":49}},"14":{"start":{"line":39,"column":4},"end":{"line":41,"column":5}},"15":{"start":{"line":40,"column":6},"end":{"line":40,"column":23}},"16":{"start":{"line":43,"column":4},"end":{"line":43,"column":62}},"17":{"start":{"line":48,"column":21},"end":{"line":48,"column":88}},"18":{"start":{"line":49,"column":22},"end":{"line":49,"column":49}},"19":{"start":{"line":50,"column":4},"end":{"line":52,"column":5}},"20":{"start":{"line":51,"column":6},"end":{"line":51,"column":23}},"21":{"start":{"line":54,"column":21},"end":{"line":61,"column":6}},"22":{"start":{"line":63,"column":4},"end":{"line":63,"column":37}},"23":{"start":{"line":64,"column":4},"end":{"line":64,"column":15}},"24":{"start":{"line":69,"column":4},"end":{"line":82,"column":5}},"25":{"start":{"line":70,"column":26},"end":{"line":70,"column":27}},"26":{"start":{"line":71,"column":6},"end":{"line":77,"column":7}},"27":{"start":{"line":72,"column":26},"end":{"line":72,"column":41}},"28":{"start":{"line":73,"column":8},"end":{"line":76,"column":9}},"29":{"start":{"line":75,"column":10},"end":{"line":75,"column":69}},"30":{"start":{"line":78,"column":6},"end":{"line":80,"column":7}},"31":{"start":{"line":79,"column":8},"end":{"line":79,"column":69}},"32":{"start":{"line":81,"column":6},"end":{"line":81,"column":30}},"33":{"start":{"line":84,"column":21},"end":{"line":84,"column":88}},"34":{"start":{"line":85,"column":22},"end":{"line":85,"column":49}},"35":{"start":{"line":86,"column":4},"end":{"line":88,"column":5}},"36":{"start":{"line":87,"column":6},"end":{"line":87,"column":23}},"37":{"start":{"line":90,"column":4},"end":{"line":90,"column":65}},"38":{"start":{"line":94,"column":4},"end":{"line":94,"column":11}},"39":{"start":{"line":98,"column":9},"end":{"line":98,"column":30}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":null}},"loc":{"start":{"line":10,"column":2},"end":{"line":13,"column":3}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":7}},"loc":{"start":{"line":16,"column":54},"end":{"line":34,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":36,"column":2},"end":{"line":36,"column":7}},"loc":{"start":{"line":36,"column":53},"end":{"line":44,"column":3}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":46,"column":2},"end":{"line":46,"column":7}},"loc":{"start":{"line":47,"column":54},"end":{"line":65,"column":3}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":67,"column":2},"end":{"line":67,"column":7}},"loc":{"start":{"line":68,"column":68},"end":{"line":91,"column":3}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":93,"column":2},"end":{"line":93,"column":7}},"loc":{"start":{"line":93,"column":13},"end":{"line":95,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":4},"end":{"line":21,"column":5}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":21,"column":5}}]},"1":{"loc":{"start":{"line":27,"column":9},"end":{"line":27,"column":33}},"type":"binary-expr","locations":[{"start":{"line":27,"column":9},"end":{"line":27,"column":17}},{"start":{"line":27,"column":21},"end":{"line":27,"column":33}}]},"2":{"loc":{"start":{"line":28,"column":9},"end":{"line":28,"column":23}},"type":"binary-expr","locations":[{"start":{"line":28,"column":9},"end":{"line":28,"column":12}},{"start":{"line":28,"column":16},"end":{"line":28,"column":23}}]},"3":{"loc":{"start":{"line":36,"column":29},"end":{"line":36,"column":53}},"type":"default-arg","locations":[{"start":{"line":36,"column":48},"end":{"line":36,"column":53}}]},"4":{"loc":{"start":{"line":39,"column":4},"end":{"line":41,"column":5}},"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":41,"column":5}}]},"5":{"loc":{"start":{"line":39,"column":8},"end":{"line":39,"column":52}},"type":"binary-expr","locations":[{"start":{"line":39,"column":8},"end":{"line":39,"column":17}},{"start":{"line":39,"column":22},"end":{"line":39,"column":40}},{"start":{"line":39,"column":44},"end":{"line":39,"column":51}}]},"6":{"loc":{"start":{"line":47,"column":4},"end":{"line":47,"column":23}},"type":"default-arg","locations":[{"start":{"line":47,"column":22},"end":{"line":47,"column":23}}]},"7":{"loc":{"start":{"line":50,"column":4},"end":{"line":52,"column":5}},"type":"if","locations":[{"start":{"line":50,"column":4},"end":{"line":52,"column":5}}]},"8":{"loc":{"start":{"line":58,"column":9},"end":{"line":58,"column":57}},"type":"binary-expr","locations":[{"start":{"line":58,"column":9},"end":{"line":58,"column":29}},{"start":{"line":58,"column":33},"end":{"line":58,"column":57}}]},"9":{"loc":{"start":{"line":68,"column":23},"end":{"line":68,"column":42}},"type":"default-arg","locations":[{"start":{"line":68,"column":41},"end":{"line":68,"column":42}}]},"10":{"loc":{"start":{"line":68,"column":44},"end":{"line":68,"column":68}},"type":"default-arg","locations":[{"start":{"line":68,"column":63},"end":{"line":68,"column":68}}]},"11":{"loc":{"start":{"line":69,"column":4},"end":{"line":82,"column":5}},"type":"if","locations":[{"start":{"line":69,"column":4},"end":{"line":82,"column":5}}]},"12":{"loc":{"start":{"line":73,"column":8},"end":{"line":76,"column":9}},"type":"if","locations":[{"start":{"line":73,"column":8},"end":{"line":76,"column":9}}]},"13":{"loc":{"start":{"line":73,"column":12},"end":{"line":74,"column":79}},"type":"binary-expr","locations":[{"start":{"line":73,"column":12},"end":{"line":73,"column":41}},{"start":{"line":73,"column":45},"end":{"line":73,"column":74}},{"start":{"line":74,"column":13},"end":{"line":74,"column":46}},{"start":{"line":74,"column":50},"end":{"line":74,"column":79}}]},"14":{"loc":{"start":{"line":78,"column":6},"end":{"line":80,"column":7}},"type":"if","locations":[{"start":{"line":78,"column":6},"end":{"line":80,"column":7}}]},"15":{"loc":{"start":{"line":86,"column":4},"end":{"line":88,"column":5}},"type":"if","locations":[{"start":{"line":86,"column":4},"end":{"line":88,"column":5}}]}},"s":{"0":5,"1":5,"2":5,"3":20,"4":20,"5":7,"6":7,"7":7,"8":0,"9":7,"10":7,"11":7,"12":8,"13":8,"14":8,"15":6,"16":2,"17":9,"18":9,"19":9,"20":0,"21":9,"22":9,"23":9,"24":13,"25":1,"26":1,"27":2,"28":2,"29":2,"30":1,"31":0,"32":1,"33":13,"34":13,"35":13,"36":11,"37":2,"38":0,"39":5},"f":{"0":20,"1":7,"2":8,"3":9,"4":13,"5":0},"b":{"0":[0],"1":[7,2],"2":[7,2],"3":[1],"4":[6],"5":[8,6,0],"6":[0],"7":[0],"8":[9,9],"9":[0],"10":[2],"11":[1],"12":[2],"13":[2,2,2,2],"14":[0],"15":[11]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/calendar_period_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/calendar_period_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":66}},"1":{"start":{"line":25,"column":13},"end":{"line":26,"column":425}},"2":{"start":{"line":35,"column":0},"end":{"line":35,"column":null}},"3":{"start":{"line":41,"column":2},"end":{"line":41,"column":null}},"4":{"start":{"line":48,"column":2},"end":{"line":48,"column":null}},"5":{"start":{"line":56,"column":2},"end":{"line":56,"column":null}},"6":{"start":{"line":65,"column":2},"end":{"line":65,"column":null}},"7":{"start":{"line":72,"column":2},"end":{"line":72,"column":null}},"8":{"start":{"line":80,"column":2},"end":{"line":80,"column":null}},"9":{"start":{"line":87,"column":2},"end":{"line":87,"column":null}},"10":{"start":{"line":94,"column":2},"end":{"line":94,"column":null}},"11":{"start":{"line":100,"column":13},"end":{"line":101,"column":48}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":35,"column":0},"end":{"line":35,"column":12}},"loc":{"start":{"line":35,"column":26},"end":{"line":95,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":35,"column":12},"end":{"line":35,"column":null}},"type":"binary-expr","locations":[{"start":{"line":35,"column":12},"end":{"line":35,"column":26}},{"start":{"line":35,"column":26},"end":{"line":35,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"f":{"0":1},"b":{"0":[1,1]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/color_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/color_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":21,"column":0},"end":{"line":21,"column":71}},"2":{"start":{"line":27,"column":13},"end":{"line":28,"column":367}},"3":{"start":{"line":202,"column":13},"end":{"line":203,"column":41}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/date_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/date_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":26,"column":13},"end":{"line":27,"column":269}},"2":{"start":{"line":77,"column":13},"end":{"line":78,"column":40}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/datetime_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/datetime_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":22,"column":0},"end":{"line":22,"column":71}},"2":{"start":{"line":28,"column":13},"end":{"line":29,"column":614}},"3":{"start":{"line":149,"column":13},"end":{"line":150,"column":44}},"4":{"start":{"line":178,"column":13},"end":{"line":179,"column":44}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/dayofweek_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/dayofweek_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":66}},"1":{"start":{"line":25,"column":13},"end":{"line":26,"column":405}},"2":{"start":{"line":33,"column":0},"end":{"line":33,"column":null}},"3":{"start":{"line":39,"column":2},"end":{"line":39,"column":null}},"4":{"start":{"line":46,"column":2},"end":{"line":46,"column":null}},"5":{"start":{"line":53,"column":2},"end":{"line":53,"column":null}},"6":{"start":{"line":60,"column":2},"end":{"line":60,"column":null}},"7":{"start":{"line":67,"column":2},"end":{"line":67,"column":null}},"8":{"start":{"line":74,"column":2},"end":{"line":74,"column":null}},"9":{"start":{"line":81,"column":2},"end":{"line":81,"column":null}},"10":{"start":{"line":88,"column":2},"end":{"line":88,"column":null}},"11":{"start":{"line":94,"column":13},"end":{"line":95,"column":42}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":33,"column":0},"end":{"line":33,"column":12}},"loc":{"start":{"line":33,"column":21},"end":{"line":89,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":33,"column":12},"end":{"line":33,"column":null}},"type":"binary-expr","locations":[{"start":{"line":33,"column":12},"end":{"line":33,"column":21}},{"start":{"line":33,"column":21},"end":{"line":33,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"f":{"0":1},"b":{"0":[1,1]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/expr_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/expr_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":26,"column":13},"end":{"line":27,"column":307}},"2":{"start":{"line":103,"column":13},"end":{"line":104,"column":40}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/fraction_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/fraction_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":26,"column":13},"end":{"line":27,"column":289}},"2":{"start":{"line":55,"column":13},"end":{"line":56,"column":44}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/latlng_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/latlng_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":26,"column":13},"end":{"line":27,"column":275}},"2":{"start":{"line":58,"column":13},"end":{"line":59,"column":42}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/money_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/money_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":26,"column":13},"end":{"line":27,"column":290}},"2":{"start":{"line":67,"column":13},"end":{"line":68,"column":41}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/month_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/month_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":66}},"1":{"start":{"line":25,"column":13},"end":{"line":26,"column":442}},"2":{"start":{"line":33,"column":0},"end":{"line":33,"column":null}},"3":{"start":{"line":39,"column":2},"end":{"line":39,"column":null}},"4":{"start":{"line":46,"column":2},"end":{"line":46,"column":null}},"5":{"start":{"line":53,"column":2},"end":{"line":53,"column":null}},"6":{"start":{"line":60,"column":2},"end":{"line":60,"column":null}},"7":{"start":{"line":67,"column":2},"end":{"line":67,"column":null}},"8":{"start":{"line":74,"column":2},"end":{"line":74,"column":null}},"9":{"start":{"line":81,"column":2},"end":{"line":81,"column":null}},"10":{"start":{"line":88,"column":2},"end":{"line":88,"column":null}},"11":{"start":{"line":95,"column":2},"end":{"line":95,"column":null}},"12":{"start":{"line":102,"column":2},"end":{"line":102,"column":null}},"13":{"start":{"line":109,"column":2},"end":{"line":109,"column":null}},"14":{"start":{"line":116,"column":2},"end":{"line":116,"column":null}},"15":{"start":{"line":123,"column":2},"end":{"line":123,"column":null}},"16":{"start":{"line":129,"column":13},"end":{"line":130,"column":38}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":33,"column":0},"end":{"line":33,"column":12}},"loc":{"start":{"line":33,"column":17},"end":{"line":124,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":33,"column":12},"end":{"line":33,"column":null}},"type":"binary-expr","locations":[{"start":{"line":33,"column":12},"end":{"line":33,"column":17}},{"start":{"line":33,"column":17},"end":{"line":33,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1},"f":{"0":1},"b":{"0":[1,1]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/postal_address_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/postal_address_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":26,"column":13},"end":{"line":27,"column":593}},"2":{"start":{"line":191,"column":13},"end":{"line":192,"column":50}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/quaternion_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/quaternion_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":26,"column":13},"end":{"line":27,"column":311}},"2":{"start":{"line":123,"column":13},"end":{"line":124,"column":46}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/timeofday_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/google/type/timeofday_pb.ts","statementMap":{"0":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"1":{"start":{"line":26,"column":13},"end":{"line":27,"column":331}},"2":{"start":{"line":73,"column":13},"end":{"line":74,"column":45}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/encrypt-executor.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/encrypt-executor.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":null}},"1":{"start":{"line":10,"column":0},"end":{"line":10,"column":54}},"2":{"start":{"line":11,"column":0},"end":{"line":11,"column":89}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":63}},"4":{"start":{"line":14,"column":0},"end":{"line":14,"column":43}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":40}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":42}},"7":{"start":{"line":18,"column":0},"end":{"line":18,"column":67}},"8":{"start":{"line":19,"column":0},"end":{"line":19,"column":67}},"9":{"start":{"line":20,"column":0},"end":{"line":20,"column":64}},"10":{"start":{"line":21,"column":0},"end":{"line":21,"column":62}},"11":{"start":{"line":22,"column":0},"end":{"line":22,"column":62}},"12":{"start":{"line":25,"column":25},"end":{"line":25,"column":43}},"13":{"start":{"line":27,"column":27},"end":{"line":27,"column":47}},"14":{"start":{"line":29,"column":25},"end":{"line":29,"column":43}},"15":{"start":{"line":31,"column":30},"end":{"line":31,"column":53}},"16":{"start":{"line":33,"column":32},"end":{"line":33,"column":57}},"17":{"start":{"line":36,"column":22},"end":{"line":36,"column":41}},"18":{"start":{"line":38,"column":0},"end":{"line":38,"column":null}},"19":{"start":{"line":39,"column":2},"end":{"line":39,"column":null}},"20":{"start":{"line":40,"column":2},"end":{"line":40,"column":null}},"21":{"start":{"line":41,"column":2},"end":{"line":41,"column":null}},"22":{"start":{"line":58,"column":2},"end":{"line":58,"column":null}},"23":{"start":{"line":61,"column":21},"end":{"line":61,"column":50}},"24":{"start":{"line":62,"column":4},"end":{"line":62,"column":null}},"25":{"start":{"line":63,"column":4},"end":{"line":63,"column":null}},"26":{"start":{"line":67,"column":4},"end":{"line":67,"column":null}},"27":{"start":{"line":68,"column":4},"end":{"line":68,"column":null}},"28":{"start":{"line":72,"column":4},"end":{"line":72,"column":null}},"29":{"start":{"line":76,"column":20},"end":{"line":76,"column":40}},"30":{"start":{"line":77,"column":20},"end":{"line":77,"column":40}},"31":{"start":{"line":78,"column":26},"end":{"line":78,"column":52}},"32":{"start":{"line":80,"column":6},"end":{"line":80,"column":81}},"33":{"start":{"line":81,"column":4},"end":{"line":81,"column":null}},"34":{"start":{"line":85,"column":4},"end":{"line":87,"column":5}},"35":{"start":{"line":86,"column":6},"end":{"line":86,"column":null}},"36":{"start":{"line":91,"column":23},"end":{"line":91,"column":43}},"37":{"start":{"line":92,"column":28},"end":{"line":92,"column":67}},"38":{"start":{"line":93,"column":4},"end":{"line":95,"column":5}},"39":{"start":{"line":94,"column":6},"end":{"line":94,"column":null}},"40":{"start":{"line":96,"column":20},"end":{"line":96,"column":45}},"41":{"start":{"line":97,"column":4},"end":{"line":97,"column":null}},"42":{"start":{"line":101,"column":20},"end":{"line":101,"column":54}},"43":{"start":{"line":102,"column":4},"end":{"line":104,"column":5}},"44":{"start":{"line":103,"column":6},"end":{"line":103,"column":null}},"45":{"start":{"line":105,"column":4},"end":{"line":107,"column":5}},"46":{"start":{"line":106,"column":6},"end":{"line":106,"column":null}},"47":{"start":{"line":108,"column":4},"end":{"line":108,"column":null}},"48":{"start":{"line":112,"column":26},"end":{"line":112,"column":67}},"49":{"start":{"line":113,"column":4},"end":{"line":115,"column":5}},"50":{"start":{"line":114,"column":6},"end":{"line":114,"column":null}},"51":{"start":{"line":116,"column":23},"end":{"line":116,"column":44}},"52":{"start":{"line":117,"column":4},"end":{"line":119,"column":5}},"53":{"start":{"line":118,"column":6},"end":{"line":118,"column":null}},"54":{"start":{"line":120,"column":4},"end":{"line":122,"column":5}},"55":{"start":{"line":121,"column":6},"end":{"line":121,"column":null}},"56":{"start":{"line":123,"column":4},"end":{"line":123,"column":null}},"57":{"start":{"line":57,"column":0},"end":{"line":57,"column":13}},"58":{"start":{"line":134,"column":4},"end":{"line":134,"column":null}},"59":{"start":{"line":135,"column":4},"end":{"line":135,"column":null}},"60":{"start":{"line":139,"column":4},"end":{"line":151,"column":5}},"61":{"start":{"line":142,"column":8},"end":{"line":142,"column":null}},"62":{"start":{"line":145,"column":8},"end":{"line":145,"column":null}},"63":{"start":{"line":148,"column":8},"end":{"line":148,"column":null}},"64":{"start":{"line":150,"column":8},"end":{"line":150,"column":null}},"65":{"start":{"line":155,"column":17},"end":{"line":155,"column":49}},"66":{"start":{"line":156,"column":4},"end":{"line":172,"column":5}},"67":{"start":{"line":158,"column":37},"end":{"line":161,"column":10}},"68":{"start":{"line":162,"column":8},"end":{"line":162,"column":null}},"69":{"start":{"line":165,"column":37},"end":{"line":168,"column":10}},"70":{"start":{"line":169,"column":8},"end":{"line":169,"column":null}},"71":{"start":{"line":171,"column":8},"end":{"line":171,"column":null}},"72":{"start":{"line":177,"column":4},"end":{"line":189,"column":5}},"73":{"start":{"line":179,"column":26},"end":{"line":179,"column":58}},"74":{"start":{"line":180,"column":8},"end":{"line":180,"column":null}},"75":{"start":{"line":181,"column":8},"end":{"line":181,"column":null}},"76":{"start":{"line":184,"column":26},"end":{"line":184,"column":58}},"77":{"start":{"line":185,"column":8},"end":{"line":185,"column":null}},"78":{"start":{"line":186,"column":8},"end":{"line":186,"column":null}},"79":{"start":{"line":188,"column":8},"end":{"line":188,"column":null}},"80":{"start":{"line":194,"column":4},"end":{"line":206,"column":5}},"81":{"start":{"line":196,"column":26},"end":{"line":196,"column":58}},"82":{"start":{"line":197,"column":8},"end":{"line":197,"column":null}},"83":{"start":{"line":198,"column":8},"end":{"line":198,"column":null}},"84":{"start":{"line":201,"column":26},"end":{"line":201,"column":58}},"85":{"start":{"line":202,"column":8},"end":{"line":202,"column":null}},"86":{"start":{"line":203,"column":8},"end":{"line":203,"column":null}},"87":{"start":{"line":205,"column":8},"end":{"line":205,"column":null}},"88":{"start":{"line":210,"column":17},"end":{"line":210,"column":44}},"89":{"start":{"line":211,"column":4},"end":{"line":211,"column":null}},"90":{"start":{"line":215,"column":17},"end":{"line":215,"column":44}},"91":{"start":{"line":216,"column":4},"end":{"line":216,"column":null}},"92":{"start":{"line":220,"column":17},"end":{"line":220,"column":44}},"93":{"start":{"line":221,"column":4},"end":{"line":221,"column":null}},"94":{"start":{"line":225,"column":17},"end":{"line":225,"column":44}},"95":{"start":{"line":226,"column":4},"end":{"line":226,"column":null}},"96":{"start":{"line":127,"column":0},"end":{"line":127,"column":13}},"97":{"start":{"line":128,"column":18},"end":{"line":128,"column":null}},"98":{"start":{"line":234,"column":10},"end":{"line":234,"column":null}},"99":{"start":{"line":243,"column":4},"end":{"line":243,"column":null}},"100":{"start":{"line":244,"column":4},"end":{"line":244,"column":null}},"101":{"start":{"line":245,"column":4},"end":{"line":245,"column":null}},"102":{"start":{"line":246,"column":4},"end":{"line":246,"column":null}},"103":{"start":{"line":250,"column":4},"end":{"line":250,"column":null}},"104":{"start":{"line":254,"column":4},"end":{"line":256,"column":5}},"105":{"start":{"line":255,"column":6},"end":{"line":255,"column":null}},"106":{"start":{"line":257,"column":4},"end":{"line":257,"column":null}},"107":{"start":{"line":261,"column":19},"end":{"line":261,"column":49}},"108":{"start":{"line":262,"column":20},"end":{"line":262,"column":54}},"109":{"start":{"line":263,"column":21},"end":{"line":263,"column":57}},"110":{"start":{"line":264,"column":25},"end":{"line":267,"column":null}},"111":{"start":{"line":268,"column":14},"end":{"line":268,"column":55}},"112":{"start":{"line":269,"column":4},"end":{"line":287,"column":5}},"113":{"start":{"line":270,"column":6},"end":{"line":272,"column":7}},"114":{"start":{"line":271,"column":8},"end":{"line":271,"column":null}},"115":{"start":{"line":273,"column":6},"end":{"line":275,"column":7}},"116":{"start":{"line":274,"column":8},"end":{"line":274,"column":null}},"117":{"start":{"line":276,"column":6},"end":{"line":278,"column":7}},"118":{"start":{"line":277,"column":8},"end":{"line":277,"column":null}},"119":{"start":{"line":279,"column":6},"end":{"line":279,"column":null}},"120":{"start":{"line":280,"column":6},"end":{"line":283,"column":7}},"121":{"start":{"line":282,"column":8},"end":{"line":282,"column":null}},"122":{"start":{"line":284,"column":6},"end":{"line":286,"column":7}},"123":{"start":{"line":285,"column":8},"end":{"line":285,"column":null}},"124":{"start":{"line":288,"column":4},"end":{"line":292,"column":5}},"125":{"start":{"line":289,"column":6},"end":{"line":291,"column":null}},"126":{"start":{"line":293,"column":4},"end":{"line":297,"column":5}},"127":{"start":{"line":294,"column":6},"end":{"line":296,"column":null}},"128":{"start":{"line":298,"column":4},"end":{"line":298,"column":null}},"129":{"start":{"line":302,"column":4},"end":{"line":309,"column":5}},"130":{"start":{"line":303,"column":6},"end":{"line":303,"column":null}},"131":{"start":{"line":305,"column":6},"end":{"line":307,"column":7}},"132":{"start":{"line":306,"column":8},"end":{"line":306,"column":null}},"133":{"start":{"line":308,"column":6},"end":{"line":308,"column":null}},"134":{"start":{"line":313,"column":4},"end":{"line":320,"column":5}},"135":{"start":{"line":314,"column":6},"end":{"line":314,"column":null}},"136":{"start":{"line":316,"column":6},"end":{"line":318,"column":7}},"137":{"start":{"line":317,"column":8},"end":{"line":317,"column":null}},"138":{"start":{"line":319,"column":6},"end":{"line":319,"column":null}},"139":{"start":{"line":324,"column":16},"end":{"line":324,"column":38}},"140":{"start":{"line":325,"column":19},"end":{"line":325,"column":49}},"141":{"start":{"line":326,"column":4},"end":{"line":328,"column":5}},"142":{"start":{"line":327,"column":6},"end":{"line":327,"column":null}},"143":{"start":{"line":329,"column":25},"end":{"line":335,"column":null}},"144":{"start":{"line":336,"column":14},"end":{"line":336,"column":55}},"145":{"start":{"line":337,"column":22},"end":{"line":337,"column":46}},"146":{"start":{"line":338,"column":38},"end":{"line":338,"column":42}},"147":{"start":{"line":339,"column":4},"end":{"line":367,"column":5}},"148":{"start":{"line":340,"column":6},"end":{"line":342,"column":7}},"149":{"start":{"line":341,"column":8},"end":{"line":341,"column":null}},"150":{"start":{"line":343,"column":40},"end":{"line":343,"column":44}},"151":{"start":{"line":344,"column":6},"end":{"line":349,"column":7}},"152":{"start":{"line":345,"column":8},"end":{"line":345,"column":null}},"153":{"start":{"line":347,"column":23},"end":{"line":347,"column":49}},"154":{"start":{"line":348,"column":8},"end":{"line":348,"column":null}},"155":{"start":{"line":350,"column":25},"end":{"line":350,"column":61}},"156":{"start":{"line":351,"column":30},"end":{"line":357,"column":null}},"157":{"start":{"line":359,"column":6},"end":{"line":359,"column":null}},"158":{"start":{"line":360,"column":6},"end":{"line":363,"column":7}},"159":{"start":{"line":362,"column":8},"end":{"line":362,"column":null}},"160":{"start":{"line":364,"column":6},"end":{"line":366,"column":7}},"161":{"start":{"line":365,"column":8},"end":{"line":365,"column":null}},"162":{"start":{"line":369,"column":4},"end":{"line":375,"column":5}},"163":{"start":{"line":370,"column":6},"end":{"line":372,"column":7}},"164":{"start":{"line":371,"column":8},"end":{"line":371,"column":null}},"165":{"start":{"line":373,"column":21},"end":{"line":373,"column":98}},"166":{"start":{"line":374,"column":6},"end":{"line":374,"column":null}},"167":{"start":{"line":377,"column":4},"end":{"line":377,"column":null}},"168":{"start":{"line":381,"column":4},"end":{"line":394,"column":7}},"169":{"start":{"line":383,"column":22},"end":{"line":383,"column":33}},"170":{"start":{"line":384,"column":8},"end":{"line":386,"column":9}},"171":{"start":{"line":385,"column":10},"end":{"line":385,"column":null}},"172":{"start":{"line":387,"column":8},"end":{"line":387,"column":null}},"173":{"start":{"line":388,"column":8},"end":{"line":388,"column":null}},"174":{"start":{"line":390,"column":8},"end":{"line":392,"column":9}},"175":{"start":{"line":391,"column":10},"end":{"line":391,"column":null}},"176":{"start":{"line":393,"column":8},"end":{"line":393,"column":null}},"177":{"start":{"line":398,"column":6},"end":{"line":415,"column":7}},"178":{"start":{"line":400,"column":50},"end":{"line":400,"column":59}},"179":{"start":{"line":401,"column":8},"end":{"line":403,"column":9}},"180":{"start":{"line":402,"column":10},"end":{"line":402,"column":null}},"181":{"start":{"line":404,"column":22},"end":{"line":404,"column":33}},"182":{"start":{"line":405,"column":8},"end":{"line":407,"column":9}},"183":{"start":{"line":406,"column":10},"end":{"line":406,"column":null}},"184":{"start":{"line":408,"column":8},"end":{"line":408,"column":null}},"185":{"start":{"line":409,"column":8},"end":{"line":409,"column":null}},"186":{"start":{"line":411,"column":8},"end":{"line":413,"column":9}},"187":{"start":{"line":412,"column":10},"end":{"line":412,"column":null}},"188":{"start":{"line":414,"column":8},"end":{"line":414,"column":null}},"189":{"start":{"line":419,"column":16},"end":{"line":419,"column":26}},"190":{"start":{"line":420,"column":4},"end":{"line":423,"column":null}},"191":{"start":{"line":427,"column":4},"end":{"line":429,"column":5}},"192":{"start":{"line":428,"column":6},"end":{"line":428,"column":null}},"193":{"start":{"line":430,"column":4},"end":{"line":477,"column":5}},"194":{"start":{"line":432,"column":24},"end":{"line":432,"column":63}},"195":{"start":{"line":433,"column":8},"end":{"line":435,"column":9}},"196":{"start":{"line":434,"column":10},"end":{"line":434,"column":null}},"197":{"start":{"line":436,"column":37},"end":{"line":436,"column":41}},"198":{"start":{"line":437,"column":8},"end":{"line":439,"column":9}},"199":{"start":{"line":438,"column":10},"end":{"line":438,"column":null}},"200":{"start":{"line":440,"column":18},"end":{"line":440,"column":57}},"201":{"start":{"line":441,"column":31},"end":{"line":441,"column":74}},"202":{"start":{"line":442,"column":25},"end":{"line":442,"column":80}},"203":{"start":{"line":443,"column":8},"end":{"line":445,"column":9}},"204":{"start":{"line":444,"column":10},"end":{"line":444,"column":null}},"205":{"start":{"line":446,"column":8},"end":{"line":450,"column":9}},"206":{"start":{"line":447,"column":10},"end":{"line":447,"column":null}},"207":{"start":{"line":449,"column":10},"end":{"line":449,"column":null}},"208":{"start":{"line":454,"column":8},"end":{"line":458,"column":9}},"209":{"start":{"line":455,"column":10},"end":{"line":455,"column":null}},"210":{"start":{"line":457,"column":10},"end":{"line":457,"column":null}},"211":{"start":{"line":459,"column":8},"end":{"line":461,"column":9}},"212":{"start":{"line":460,"column":10},"end":{"line":460,"column":null}},"213":{"start":{"line":462,"column":37},"end":{"line":462,"column":41}},"214":{"start":{"line":463,"column":8},"end":{"line":469,"column":9}},"215":{"start":{"line":464,"column":10},"end":{"line":464,"column":null}},"216":{"start":{"line":465,"column":10},"end":{"line":467,"column":11}},"217":{"start":{"line":466,"column":12},"end":{"line":466,"column":null}},"218":{"start":{"line":468,"column":10},"end":{"line":468,"column":null}},"219":{"start":{"line":470,"column":18},"end":{"line":470,"column":57}},"220":{"start":{"line":471,"column":31},"end":{"line":471,"column":74}},"221":{"start":{"line":472,"column":24},"end":{"line":472,"column":80}},"222":{"start":{"line":473,"column":8},"end":{"line":473,"column":null}},"223":{"start":{"line":476,"column":8},"end":{"line":476,"column":null}},"224":{"start":{"line":481,"column":23},"end":{"line":481,"column":38}},"225":{"start":{"line":482,"column":4},"end":{"line":482,"column":null}},"226":{"start":{"line":483,"column":4},"end":{"line":483,"column":null}},"227":{"start":{"line":487,"column":20},"end":{"line":487,"column":45}},"228":{"start":{"line":488,"column":4},"end":{"line":494,"column":5}},"229":{"start":{"line":489,"column":6},"end":{"line":493,"column":null}},"230":{"start":{"line":495,"column":4},"end":{"line":495,"column":null}},"231":{"start":{"line":499,"column":4},"end":{"line":506,"column":5}},"232":{"start":{"line":501,"column":8},"end":{"line":501,"column":null}},"233":{"start":{"line":503,"column":8},"end":{"line":503,"column":null}},"234":{"start":{"line":505,"column":8},"end":{"line":505,"column":null}},"235":{"start":{"line":510,"column":4},"end":{"line":517,"column":5}},"236":{"start":{"line":512,"column":8},"end":{"line":512,"column":null}},"237":{"start":{"line":514,"column":8},"end":{"line":514,"column":null}},"238":{"start":{"line":516,"column":8},"end":{"line":516,"column":null}},"239":{"start":{"line":230,"column":0},"end":{"line":230,"column":13}},"240":{"start":{"line":522,"column":15},"end":{"line":522,"column":49}},"241":{"start":{"line":523,"column":18},"end":{"line":523,"column":47}},"242":{"start":{"line":524,"column":2},"end":{"line":528,"column":3}},"243":{"start":{"line":525,"column":20},"end":{"line":525,"column":49}},"244":{"start":{"line":526,"column":4},"end":{"line":526,"column":null}},"245":{"start":{"line":527,"column":4},"end":{"line":527,"column":null}},"246":{"start":{"line":529,"column":2},"end":{"line":529,"column":null}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":38,"column":0},"end":{"line":38,"column":12}},"loc":{"start":{"line":38,"column":21},"end":{"line":42,"column":1}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":57,"column":0},"end":{"line":57,"column":13}},"loc":{"start":{"line":57,"column":0},"end":{"line":125,"column":1}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":60,"column":2},"end":{"line":60,"column":8}},"loc":{"start":{"line":60,"column":17},"end":{"line":64,"column":3}}},"3":{"name":"(anonymous_9)","decl":{"start":{"line":66,"column":11},"end":{"line":66,"column":20}},"loc":{"start":{"line":66,"column":76},"end":{"line":69,"column":3}}},"4":{"name":"(anonymous_10)","decl":{"start":{"line":71,"column":2},"end":{"line":71,"column":6}},"loc":{"start":{"line":71,"column":6},"end":{"line":73,"column":3}}},"5":{"name":"(anonymous_11)","decl":{"start":{"line":75,"column":2},"end":{"line":75,"column":14}},"loc":{"start":{"line":75,"column":31},"end":{"line":82,"column":3}}},"6":{"name":"(anonymous_12)","decl":{"start":{"line":84,"column":2},"end":{"line":84,"column":7}},"loc":{"start":{"line":84,"column":13},"end":{"line":88,"column":3}}},"7":{"name":"(anonymous_13)","decl":{"start":{"line":90,"column":10},"end":{"line":90,"column":20}},"loc":{"start":{"line":90,"column":37},"end":{"line":98,"column":3}}},"8":{"name":"(anonymous_14)","decl":{"start":{"line":100,"column":10},"end":{"line":100,"column":20}},"loc":{"start":{"line":100,"column":37},"end":{"line":109,"column":3}}},"9":{"name":"(anonymous_15)","decl":{"start":{"line":111,"column":10},"end":{"line":111,"column":26}},"loc":{"start":{"line":111,"column":43},"end":{"line":124,"column":3}}},"10":{"name":"(anonymous_16)","decl":{"start":{"line":133,"column":2},"end":{"line":133,"column":14}},"loc":{"start":{"line":133,"column":34},"end":{"line":136,"column":3}}},"11":{"name":"(anonymous_17)","decl":{"start":{"line":138,"column":10},"end":{"line":138,"column":17}},"loc":{"start":{"line":138,"column":17},"end":{"line":152,"column":3}}},"12":{"name":"(anonymous_18)","decl":{"start":{"line":154,"column":2},"end":{"line":154,"column":13}},"loc":{"start":{"line":154,"column":13},"end":{"line":173,"column":3}}},"13":{"name":"(anonymous_19)","decl":{"start":{"line":175,"column":2},"end":{"line":175,"column":7}},"loc":{"start":{"line":175,"column":46},"end":{"line":190,"column":3}}},"14":{"name":"(anonymous_20)","decl":{"start":{"line":192,"column":2},"end":{"line":192,"column":7}},"loc":{"start":{"line":192,"column":47},"end":{"line":207,"column":3}}},"15":{"name":"(anonymous_21)","decl":{"start":{"line":209,"column":2},"end":{"line":209,"column":7}},"loc":{"start":{"line":209,"column":64},"end":{"line":212,"column":3}}},"16":{"name":"(anonymous_22)","decl":{"start":{"line":214,"column":2},"end":{"line":214,"column":7}},"loc":{"start":{"line":214,"column":65},"end":{"line":217,"column":3}}},"17":{"name":"(anonymous_23)","decl":{"start":{"line":219,"column":2},"end":{"line":219,"column":7}},"loc":{"start":{"line":219,"column":64},"end":{"line":222,"column":3}}},"18":{"name":"(anonymous_24)","decl":{"start":{"line":224,"column":2},"end":{"line":224,"column":7}},"loc":{"start":{"line":224,"column":65},"end":{"line":227,"column":3}}},"19":{"name":"(anonymous_25)","decl":{"start":{"line":237,"column":2},"end":{"line":237,"column":null}},"loc":{"start":{"line":241,"column":25},"end":{"line":247,"column":3}}},"20":{"name":"(anonymous_26)","decl":{"start":{"line":249,"column":2},"end":{"line":249,"column":14}},"loc":{"start":{"line":249,"column":14},"end":{"line":251,"column":3}}},"21":{"name":"(anonymous_27)","decl":{"start":{"line":253,"column":2},"end":{"line":253,"column":7}},"loc":{"start":{"line":253,"column":31},"end":{"line":258,"column":3}}},"22":{"name":"(anonymous_28)","decl":{"start":{"line":260,"column":2},"end":{"line":260,"column":7}},"loc":{"start":{"line":260,"column":39},"end":{"line":299,"column":3}}},"23":{"name":"(anonymous_29)","decl":{"start":{"line":301,"column":2},"end":{"line":301,"column":7}},"loc":{"start":{"line":301,"column":42},"end":{"line":310,"column":3}}},"24":{"name":"(anonymous_30)","decl":{"start":{"line":312,"column":2},"end":{"line":312,"column":7}},"loc":{"start":{"line":312,"column":89},"end":{"line":321,"column":3}}},"25":{"name":"(anonymous_31)","decl":{"start":{"line":323,"column":2},"end":{"line":323,"column":7}},"loc":{"start":{"line":323,"column":63},"end":{"line":378,"column":3}}},"26":{"name":"(anonymous_32)","decl":{"start":{"line":380,"column":2},"end":{"line":380,"column":7}},"loc":{"start":{"line":380,"column":42},"end":{"line":395,"column":5}}},"27":{"name":"(anonymous_33)","decl":{"start":{"line":397,"column":4},"end":{"line":397,"column":9}},"loc":{"start":{"line":397,"column":68},"end":{"line":416,"column":3}}},"28":{"name":"(anonymous_34)","decl":{"start":{"line":418,"column":2},"end":{"line":418,"column":11}},"loc":{"start":{"line":418,"column":45},"end":{"line":424,"column":3}}},"29":{"name":"(anonymous_35)","decl":{"start":{"line":426,"column":2},"end":{"line":426,"column":7}},"loc":{"start":{"line":426,"column":75},"end":{"line":478,"column":3}}},"30":{"name":"(anonymous_36)","decl":{"start":{"line":480,"column":2},"end":{"line":480,"column":15}},"loc":{"start":{"line":480,"column":51},"end":{"line":484,"column":3}}},"31":{"name":"(anonymous_37)","decl":{"start":{"line":486,"column":2},"end":{"line":486,"column":16}},"loc":{"start":{"line":486,"column":35},"end":{"line":496,"column":3}}},"32":{"name":"(anonymous_38)","decl":{"start":{"line":498,"column":2},"end":{"line":498,"column":9}},"loc":{"start":{"line":498,"column":37},"end":{"line":507,"column":3}}},"33":{"name":"(anonymous_39)","decl":{"start":{"line":509,"column":2},"end":{"line":509,"column":10}},"loc":{"start":{"line":509,"column":41},"end":{"line":518,"column":3}}},"34":{"name":"getKmsClient","decl":{"start":{"line":521,"column":9},"end":{"line":521,"column":21}},"loc":{"start":{"line":521,"column":59},"end":{"line":530,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":38,"column":12},"end":{"line":38,"column":null}},"type":"binary-expr","locations":[{"start":{"line":38,"column":12},"end":{"line":38,"column":21}},{"start":{"line":38,"column":21},"end":{"line":38,"column":null}}]},"1":{"loc":{"start":{"line":85,"column":4},"end":{"line":87,"column":5}},"type":"if","locations":[{"start":{"line":85,"column":4},"end":{"line":87,"column":5}}]},"2":{"loc":{"start":{"line":93,"column":4},"end":{"line":95,"column":5}},"type":"if","locations":[{"start":{"line":93,"column":4},"end":{"line":95,"column":5}}]},"3":{"loc":{"start":{"line":102,"column":4},"end":{"line":104,"column":5}},"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":104,"column":5}}]},"4":{"loc":{"start":{"line":105,"column":4},"end":{"line":107,"column":5}},"type":"if","locations":[{"start":{"line":105,"column":4},"end":{"line":107,"column":5}}]},"5":{"loc":{"start":{"line":113,"column":4},"end":{"line":115,"column":5}},"type":"if","locations":[{"start":{"line":113,"column":4},"end":{"line":115,"column":5}}]},"6":{"loc":{"start":{"line":117,"column":4},"end":{"line":119,"column":5}},"type":"if","locations":[{"start":{"line":117,"column":4},"end":{"line":119,"column":5}}]},"7":{"loc":{"start":{"line":120,"column":4},"end":{"line":122,"column":5}},"type":"if","locations":[{"start":{"line":120,"column":4},"end":{"line":122,"column":5}}]},"8":{"loc":{"start":{"line":139,"column":4},"end":{"line":151,"column":5}},"type":"switch","locations":[{"start":{"line":140,"column":6},"end":{"line":142,"column":null}},{"start":{"line":143,"column":6},"end":{"line":145,"column":null}},{"start":{"line":146,"column":6},"end":{"line":148,"column":null}},{"start":{"line":149,"column":6},"end":{"line":150,"column":null}}]},"9":{"loc":{"start":{"line":156,"column":4},"end":{"line":172,"column":5}},"type":"switch","locations":[{"start":{"line":157,"column":6},"end":{"line":162,"column":null}},{"start":{"line":163,"column":6},"end":{"line":163,"column":32}},{"start":{"line":164,"column":6},"end":{"line":169,"column":null}},{"start":{"line":170,"column":6},"end":{"line":171,"column":null}}]},"10":{"loc":{"start":{"line":177,"column":4},"end":{"line":189,"column":5}},"type":"switch","locations":[{"start":{"line":178,"column":6},"end":{"line":181,"column":null}},{"start":{"line":182,"column":6},"end":{"line":182,"column":32}},{"start":{"line":183,"column":6},"end":{"line":186,"column":null}},{"start":{"line":187,"column":6},"end":{"line":188,"column":null}}]},"11":{"loc":{"start":{"line":194,"column":4},"end":{"line":206,"column":5}},"type":"switch","locations":[{"start":{"line":195,"column":6},"end":{"line":198,"column":null}},{"start":{"line":199,"column":6},"end":{"line":199,"column":32}},{"start":{"line":200,"column":6},"end":{"line":203,"column":null}},{"start":{"line":204,"column":6},"end":{"line":205,"column":null}}]},"12":{"loc":{"start":{"line":254,"column":4},"end":{"line":256,"column":5}},"type":"if","locations":[{"start":{"line":254,"column":4},"end":{"line":256,"column":5}}]},"13":{"loc":{"start":{"line":269,"column":4},"end":{"line":287,"column":5}},"type":"if","locations":[{"start":{"line":269,"column":4},"end":{"line":287,"column":5}}]},"14":{"loc":{"start":{"line":270,"column":6},"end":{"line":272,"column":7}},"type":"if","locations":[{"start":{"line":270,"column":6},"end":{"line":272,"column":7}}]},"15":{"loc":{"start":{"line":273,"column":6},"end":{"line":275,"column":7}},"type":"if","locations":[{"start":{"line":273,"column":6},"end":{"line":275,"column":7}}]},"16":{"loc":{"start":{"line":273,"column":10},"end":{"line":273,"column":49}},"type":"binary-expr","locations":[{"start":{"line":273,"column":10},"end":{"line":273,"column":25}},{"start":{"line":273,"column":29},"end":{"line":273,"column":49}}]},"17":{"loc":{"start":{"line":276,"column":6},"end":{"line":278,"column":7}},"type":"if","locations":[{"start":{"line":276,"column":6},"end":{"line":278,"column":7}}]},"18":{"loc":{"start":{"line":276,"column":10},"end":{"line":276,"column":51}},"type":"binary-expr","locations":[{"start":{"line":276,"column":10},"end":{"line":276,"column":26}},{"start":{"line":276,"column":30},"end":{"line":276,"column":51}}]},"19":{"loc":{"start":{"line":280,"column":6},"end":{"line":283,"column":7}},"type":"if","locations":[{"start":{"line":280,"column":6},"end":{"line":283,"column":7}}]},"20":{"loc":{"start":{"line":284,"column":6},"end":{"line":286,"column":7}},"type":"if","locations":[{"start":{"line":284,"column":6},"end":{"line":286,"column":7}}]},"21":{"loc":{"start":{"line":288,"column":4},"end":{"line":292,"column":5}},"type":"if","locations":[{"start":{"line":288,"column":4},"end":{"line":292,"column":5}}]},"22":{"loc":{"start":{"line":288,"column":8},"end":{"line":288,"column":74}},"type":"binary-expr","locations":[{"start":{"line":288,"column":8},"end":{"line":288,"column":23}},{"start":{"line":288,"column":27},"end":{"line":288,"column":47}},{"start":{"line":288,"column":51},"end":{"line":288,"column":74}}]},"23":{"loc":{"start":{"line":293,"column":4},"end":{"line":297,"column":5}},"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":297,"column":5}}]},"24":{"loc":{"start":{"line":293,"column":8},"end":{"line":293,"column":78}},"type":"binary-expr","locations":[{"start":{"line":293,"column":8},"end":{"line":293,"column":24}},{"start":{"line":293,"column":28},"end":{"line":293,"column":49}},{"start":{"line":293,"column":53},"end":{"line":293,"column":78}}]},"25":{"loc":{"start":{"line":305,"column":6},"end":{"line":307,"column":7}},"type":"if","locations":[{"start":{"line":305,"column":6},"end":{"line":307,"column":7}}]},"26":{"loc":{"start":{"line":305,"column":10},"end":{"line":305,"column":56}},"type":"binary-expr","locations":[{"start":{"line":305,"column":10},"end":{"line":305,"column":34}},{"start":{"line":305,"column":38},"end":{"line":305,"column":56}}]},"27":{"loc":{"start":{"line":316,"column":6},"end":{"line":318,"column":7}},"type":"if","locations":[{"start":{"line":316,"column":6},"end":{"line":318,"column":7}}]},"28":{"loc":{"start":{"line":316,"column":10},"end":{"line":316,"column":56}},"type":"binary-expr","locations":[{"start":{"line":316,"column":10},"end":{"line":316,"column":34}},{"start":{"line":316,"column":38},"end":{"line":316,"column":56}}]},"29":{"loc":{"start":{"line":326,"column":4},"end":{"line":328,"column":5}},"type":"if","locations":[{"start":{"line":326,"column":4},"end":{"line":328,"column":5}}]},"30":{"loc":{"start":{"line":326,"column":8},"end":{"line":326,"column":40}},"type":"binary-expr","locations":[{"start":{"line":326,"column":8},"end":{"line":326,"column":23}},{"start":{"line":326,"column":27},"end":{"line":326,"column":40}}]},"31":{"loc":{"start":{"line":339,"column":4},"end":{"line":367,"column":5}},"type":"if","locations":[{"start":{"line":339,"column":4},"end":{"line":367,"column":5}}]},"32":{"loc":{"start":{"line":339,"column":8},"end":{"line":339,"column":32}},"type":"binary-expr","locations":[{"start":{"line":339,"column":8},"end":{"line":339,"column":19}},{"start":{"line":339,"column":23},"end":{"line":339,"column":32}}]},"33":{"loc":{"start":{"line":340,"column":6},"end":{"line":342,"column":7}},"type":"if","locations":[{"start":{"line":340,"column":6},"end":{"line":342,"column":7}}]},"34":{"loc":{"start":{"line":344,"column":6},"end":{"line":349,"column":7}},"type":"if","locations":[{"start":{"line":344,"column":6},"end":{"line":349,"column":7}}]},"35":{"loc":{"start":{"line":350,"column":25},"end":{"line":350,"column":61}},"type":"cond-expr","locations":[{"start":{"line":350,"column":37},"end":{"line":350,"column":54}},{"start":{"line":350,"column":57},"end":{"line":350,"column":61}}]},"36":{"loc":{"start":{"line":360,"column":6},"end":{"line":363,"column":7}},"type":"if","locations":[{"start":{"line":360,"column":6},"end":{"line":363,"column":7}}]},"37":{"loc":{"start":{"line":364,"column":6},"end":{"line":366,"column":7}},"type":"if","locations":[{"start":{"line":364,"column":6},"end":{"line":366,"column":7}}]},"38":{"loc":{"start":{"line":369,"column":4},"end":{"line":375,"column":5}},"type":"if","locations":[{"start":{"line":369,"column":4},"end":{"line":375,"column":5}}]},"39":{"loc":{"start":{"line":370,"column":6},"end":{"line":372,"column":7}},"type":"if","locations":[{"start":{"line":370,"column":6},"end":{"line":372,"column":7}}]},"40":{"loc":{"start":{"line":384,"column":8},"end":{"line":386,"column":9}},"type":"if","locations":[{"start":{"line":384,"column":8},"end":{"line":386,"column":9}}]},"41":{"loc":{"start":{"line":384,"column":12},"end":{"line":384,"column":44}},"type":"binary-expr","locations":[{"start":{"line":384,"column":12},"end":{"line":384,"column":27}},{"start":{"line":384,"column":31},"end":{"line":384,"column":44}}]},"42":{"loc":{"start":{"line":388,"column":15},"end":{"line":388,"column":75}},"type":"cond-expr","locations":[{"start":{"line":388,"column":65},"end":{"line":388,"column":68}},{"start":{"line":388,"column":71},"end":{"line":388,"column":75}}]},"43":{"loc":{"start":{"line":388,"column":15},"end":{"line":388,"column":62}},"type":"binary-expr","locations":[{"start":{"line":388,"column":15},"end":{"line":388,"column":26}},{"start":{"line":388,"column":30},"end":{"line":388,"column":62}}]},"44":{"loc":{"start":{"line":390,"column":8},"end":{"line":392,"column":9}},"type":"if","locations":[{"start":{"line":390,"column":8},"end":{"line":392,"column":9}}]},"45":{"loc":{"start":{"line":390,"column":12},"end":{"line":390,"column":58}},"type":"binary-expr","locations":[{"start":{"line":390,"column":12},"end":{"line":390,"column":36}},{"start":{"line":390,"column":40},"end":{"line":390,"column":58}}]},"46":{"loc":{"start":{"line":401,"column":8},"end":{"line":403,"column":9}},"type":"if","locations":[{"start":{"line":401,"column":8},"end":{"line":403,"column":9}}]},"47":{"loc":{"start":{"line":405,"column":8},"end":{"line":407,"column":9}},"type":"if","locations":[{"start":{"line":405,"column":8},"end":{"line":407,"column":9}}]},"48":{"loc":{"start":{"line":405,"column":12},"end":{"line":405,"column":44}},"type":"binary-expr","locations":[{"start":{"line":405,"column":12},"end":{"line":405,"column":27}},{"start":{"line":405,"column":31},"end":{"line":405,"column":44}}]},"49":{"loc":{"start":{"line":411,"column":8},"end":{"line":413,"column":9}},"type":"if","locations":[{"start":{"line":411,"column":8},"end":{"line":413,"column":9}}]},"50":{"loc":{"start":{"line":411,"column":12},"end":{"line":411,"column":58}},"type":"binary-expr","locations":[{"start":{"line":411,"column":12},"end":{"line":411,"column":36}},{"start":{"line":411,"column":40},"end":{"line":411,"column":58}}]},"51":{"loc":{"start":{"line":420,"column":11},"end":{"line":423,"column":59}},"type":"binary-expr","locations":[{"start":{"line":420,"column":11},"end":{"line":420,"column":41}},{"start":{"line":421,"column":6},"end":{"line":421,"column":28}},{"start":{"line":422,"column":6},"end":{"line":422,"column":17}},{"start":{"line":423,"column":6},"end":{"line":423,"column":59}}]},"52":{"loc":{"start":{"line":427,"column":4},"end":{"line":429,"column":5}},"type":"if","locations":[{"start":{"line":427,"column":4},"end":{"line":429,"column":5}}]},"53":{"loc":{"start":{"line":430,"column":4},"end":{"line":477,"column":5}},"type":"switch","locations":[{"start":{"line":431,"column":6},"end":{"line":451,"column":7}},{"start":{"line":452,"column":6},"end":{"line":474,"column":7}},{"start":{"line":475,"column":6},"end":{"line":476,"column":null}}]},"54":{"loc":{"start":{"line":433,"column":8},"end":{"line":435,"column":9}},"type":"if","locations":[{"start":{"line":433,"column":8},"end":{"line":435,"column":9}}]},"55":{"loc":{"start":{"line":437,"column":8},"end":{"line":439,"column":9}},"type":"if","locations":[{"start":{"line":437,"column":8},"end":{"line":439,"column":9}}]},"56":{"loc":{"start":{"line":443,"column":8},"end":{"line":445,"column":9}},"type":"if","locations":[{"start":{"line":443,"column":8},"end":{"line":445,"column":9}}]},"57":{"loc":{"start":{"line":446,"column":8},"end":{"line":450,"column":9}},"type":"if","locations":[{"start":{"line":446,"column":8},"end":{"line":450,"column":9}},{"start":{"line":448,"column":15},"end":{"line":450,"column":9}}]},"58":{"loc":{"start":{"line":454,"column":8},"end":{"line":458,"column":9}},"type":"if","locations":[{"start":{"line":454,"column":8},"end":{"line":458,"column":9}},{"start":{"line":456,"column":15},"end":{"line":458,"column":9}}]},"59":{"loc":{"start":{"line":459,"column":8},"end":{"line":461,"column":9}},"type":"if","locations":[{"start":{"line":459,"column":8},"end":{"line":461,"column":9}}]},"60":{"loc":{"start":{"line":463,"column":8},"end":{"line":469,"column":9}},"type":"if","locations":[{"start":{"line":463,"column":8},"end":{"line":469,"column":9}}]},"61":{"loc":{"start":{"line":465,"column":10},"end":{"line":467,"column":11}},"type":"if","locations":[{"start":{"line":465,"column":10},"end":{"line":467,"column":11}}]},"62":{"loc":{"start":{"line":488,"column":4},"end":{"line":494,"column":5}},"type":"if","locations":[{"start":{"line":488,"column":4},"end":{"line":494,"column":5}}]},"63":{"loc":{"start":{"line":499,"column":4},"end":{"line":506,"column":5}},"type":"switch","locations":[{"start":{"line":500,"column":6},"end":{"line":501,"column":null}},{"start":{"line":502,"column":6},"end":{"line":503,"column":null}},{"start":{"line":504,"column":6},"end":{"line":505,"column":null}}]},"64":{"loc":{"start":{"line":510,"column":4},"end":{"line":517,"column":5}},"type":"switch","locations":[{"start":{"line":511,"column":6},"end":{"line":512,"column":null}},{"start":{"line":513,"column":6},"end":{"line":514,"column":null}},{"start":{"line":515,"column":6},"end":{"line":516,"column":null}}]},"65":{"loc":{"start":{"line":524,"column":2},"end":{"line":528,"column":3}},"type":"if","locations":[{"start":{"line":524,"column":2},"end":{"line":528,"column":3}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":3,"9":3,"10":3,"11":3,"12":3,"13":3,"14":3,"15":3,"16":3,"17":3,"18":3,"19":3,"20":3,"21":3,"22":3,"23":3,"24":3,"25":3,"26":15,"27":15,"28":3,"29":9,"30":9,"31":9,"32":9,"33":9,"34":0,"35":0,"36":9,"37":9,"38":9,"39":1,"40":9,"41":9,"42":9,"43":9,"44":0,"45":9,"46":0,"47":9,"48":9,"49":9,"50":8,"51":1,"52":1,"53":0,"54":1,"55":0,"56":1,"57":3,"58":11,"59":11,"60":2,"61":0,"62":0,"63":2,"64":0,"65":2,"66":2,"67":0,"68":0,"69":2,"70":2,"71":0,"72":6,"73":0,"74":0,"75":0,"76":6,"77":6,"78":6,"79":0,"80":12,"81":1,"82":1,"83":1,"84":11,"85":11,"86":11,"87":0,"88":0,"89":0,"90":1,"91":1,"92":6,"93":6,"94":11,"95":11,"96":3,"97":3,"98":9,"99":9,"100":9,"101":9,"102":9,"103":15,"104":11,"105":7,"106":11,"107":7,"108":7,"109":7,"110":7,"111":7,"112":7,"113":2,"114":0,"115":2,"116":0,"117":2,"118":0,"119":2,"120":2,"121":0,"122":2,"123":0,"124":7,"125":0,"126":7,"127":0,"128":7,"129":7,"130":7,"131":2,"132":2,"133":0,"134":2,"135":2,"136":0,"137":0,"138":0,"139":11,"140":11,"141":11,"142":10,"143":11,"144":11,"145":11,"146":11,"147":11,"148":2,"149":0,"150":2,"151":2,"152":2,"153":2,"154":2,"155":2,"156":2,"157":2,"158":2,"159":0,"160":2,"161":0,"162":11,"163":5,"164":3,"165":5,"166":5,"167":11,"168":11,"169":11,"170":11,"171":0,"172":11,"173":9,"174":2,"175":2,"176":0,"177":2,"178":2,"179":2,"180":2,"181":2,"182":2,"183":2,"184":2,"185":2,"186":0,"187":0,"188":0,"189":11,"190":11,"191":11,"192":0,"193":11,"194":4,"195":4,"196":0,"197":4,"198":4,"199":0,"200":4,"201":4,"202":4,"203":4,"204":0,"205":4,"206":2,"207":2,"208":7,"209":5,"210":2,"211":7,"212":0,"213":7,"214":7,"215":1,"216":1,"217":0,"218":1,"219":7,"220":7,"221":7,"222":7,"223":0,"224":0,"225":0,"226":0,"227":1,"228":1,"229":0,"230":1,"231":6,"232":4,"233":2,"234":0,"235":9,"236":4,"237":5,"238":0,"239":3,"240":5,"241":5,"242":5,"243":2,"244":2,"245":2,"246":5},"f":{"0":3,"1":3,"2":3,"3":15,"4":3,"5":9,"6":0,"7":9,"8":9,"9":9,"10":11,"11":2,"12":2,"13":6,"14":12,"15":0,"16":1,"17":6,"18":11,"19":9,"20":15,"21":11,"22":7,"23":7,"24":2,"25":11,"26":11,"27":2,"28":11,"29":11,"30":0,"31":1,"32":6,"33":9,"34":5},"b":{"0":[3,3],"1":[0],"2":[1],"3":[0],"4":[0],"5":[8],"6":[0],"7":[0],"8":[0,0,2,0],"9":[0,0,2,0],"10":[0,2,6,0],"11":[1,5,11,0],"12":[7],"13":[2],"14":[0],"15":[0],"16":[2,2],"17":[0],"18":[2,2],"19":[0],"20":[0],"21":[0],"22":[7,7,7],"23":[0],"24":[7,7,7],"25":[2],"26":[2,2],"27":[0],"28":[0,0],"29":[10],"30":[11,1],"31":[2],"32":[11,9],"33":[0],"34":[2],"35":[0,2],"36":[0],"37":[0],"38":[5],"39":[3],"40":[0],"41":[11,11],"42":[9,0],"43":[9,9],"44":[2],"45":[2,2],"46":[2],"47":[2],"48":[2,0],"49":[0],"50":[0,0],"51":[11,4,0,0],"52":[0],"53":[4,7,0],"54":[0],"55":[0],"56":[0],"57":[2,2],"58":[5,2],"59":[0],"60":[1],"61":[0],"62":[0],"63":[4,2,0],"64":[4,5,0],"65":[2]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/kms-registry.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/kms-registry.ts","statementMap":{"0":{"start":{"line":19,"column":0},"end":{"line":19,"column":16}},"1":{"start":{"line":23,"column":0},"end":{"line":23,"column":16}},"2":{"start":{"line":32,"column":0},"end":{"line":32,"column":16}},"3":{"start":{"line":36,"column":0},"end":{"line":36,"column":16}},"4":{"start":{"line":1,"column":0},"end":{"line":1,"column":70}},"5":{"start":{"line":14,"column":32},"end":{"line":14,"column":34}},"6":{"start":{"line":16,"column":32},"end":{"line":16,"column":34}},"7":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"8":{"start":{"line":24,"column":2},"end":{"line":28,"column":3}},"9":{"start":{"line":25,"column":4},"end":{"line":27,"column":5}},"10":{"start":{"line":26,"column":6},"end":{"line":26,"column":null}},"11":{"start":{"line":29,"column":2},"end":{"line":29,"column":null}},"12":{"start":{"line":33,"column":2},"end":{"line":33,"column":null}},"13":{"start":{"line":37,"column":2},"end":{"line":41,"column":3}},"14":{"start":{"line":38,"column":4},"end":{"line":40,"column":5}},"15":{"start":{"line":39,"column":6},"end":{"line":39,"column":null}},"16":{"start":{"line":42,"column":2},"end":{"line":42,"column":null}}},"fnMap":{"0":{"name":"registerKmsDriver","decl":{"start":{"line":19,"column":16},"end":{"line":19,"column":33}},"loc":{"start":{"line":19,"column":54},"end":{"line":21,"column":1}}},"1":{"name":"getKmsDriver","decl":{"start":{"line":23,"column":16},"end":{"line":23,"column":28}},"loc":{"start":{"line":23,"column":43},"end":{"line":30,"column":1}}},"2":{"name":"registerKmsClient","decl":{"start":{"line":32,"column":16},"end":{"line":32,"column":33}},"loc":{"start":{"line":32,"column":54},"end":{"line":34,"column":1}}},"3":{"name":"getKmsClient","decl":{"start":{"line":36,"column":16},"end":{"line":36,"column":28}},"loc":{"start":{"line":36,"column":43},"end":{"line":43,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":25,"column":4},"end":{"line":27,"column":5}},"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":27,"column":5}}]},"1":{"loc":{"start":{"line":38,"column":4},"end":{"line":40,"column":5}},"type":"if","locations":[{"start":{"line":38,"column":4},"end":{"line":40,"column":5}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":2,"9":2,"10":2,"11":0,"12":2,"13":5,"14":3,"15":3,"16":2},"f":{"0":3,"1":2,"2":2,"3":5},"b":{"0":[2],"1":[3]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/localkms/local-client.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/localkms/local-client.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":55}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":37}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":46}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":68}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":52}},"5":{"start":{"line":14,"column":4},"end":{"line":16,"column":5}},"6":{"start":{"line":15,"column":6},"end":{"line":15,"column":null}},"7":{"start":{"line":17,"column":4},"end":{"line":19,"column":5}},"8":{"start":{"line":18,"column":6},"end":{"line":18,"column":null}},"9":{"start":{"line":20,"column":4},"end":{"line":20,"column":null}},"10":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}},"11":{"start":{"line":25,"column":19},"end":{"line":25,"column":105}},"12":{"start":{"line":26,"column":33},"end":{"line":29,"column":6}},"13":{"start":{"line":30,"column":4},"end":{"line":30,"column":null}},"14":{"start":{"line":34,"column":4},"end":{"line":34,"column":null}},"15":{"start":{"line":38,"column":4},"end":{"line":38,"column":null}},"16":{"start":{"line":42,"column":4},"end":{"line":42,"column":null}},"17":{"start":{"line":8,"column":0},"end":{"line":8,"column":13}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":14}},"loc":{"start":{"line":13,"column":29},"end":{"line":22,"column":3}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":24,"column":2},"end":{"line":24,"column":7}},"loc":{"start":{"line":24,"column":14},"end":{"line":31,"column":3}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":33,"column":2},"end":{"line":33,"column":11}},"loc":{"start":{"line":33,"column":26},"end":{"line":35,"column":3}}},"3":{"name":"(anonymous_9)","decl":{"start":{"line":37,"column":2},"end":{"line":37,"column":7}},"loc":{"start":{"line":37,"column":33},"end":{"line":39,"column":3}}},"4":{"name":"(anonymous_10)","decl":{"start":{"line":41,"column":2},"end":{"line":41,"column":7}},"loc":{"start":{"line":41,"column":34},"end":{"line":43,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":4},"end":{"line":16,"column":5}},"type":"if","locations":[{"start":{"line":14,"column":4},"end":{"line":16,"column":5}}]},"1":{"loc":{"start":{"line":17,"column":4},"end":{"line":19,"column":5}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":19,"column":5}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":2,"6":0,"7":2,"8":0,"9":2,"10":2,"11":7,"12":7,"13":7,"14":3,"15":2,"16":5,"17":3},"f":{"0":2,"1":7,"2":3,"3":2,"4":5},"b":{"0":[0],"1":[0]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/localkms/local-driver.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/localkms/local-driver.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":72}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":46}},"2":{"start":{"line":10,"column":4},"end":{"line":10,"column":null}},"3":{"start":{"line":14,"column":4},"end":{"line":14,"column":null}},"4":{"start":{"line":18,"column":19},"end":{"line":18,"column":52}},"5":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"6":{"start":{"line":4,"column":0},"end":{"line":4,"column":13}},"7":{"start":{"line":6,"column":9},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":9},"end":{"line":7,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":8}},"loc":{"start":{"line":9,"column":17},"end":{"line":11,"column":3}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":17}},"loc":{"start":{"line":13,"column":17},"end":{"line":15,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":17,"column":2},"end":{"line":17,"column":14}},"loc":{"start":{"line":17,"column":58},"end":{"line":20,"column":3}}}},"branchMap":{},"s":{"0":3,"1":3,"2":3,"3":2,"4":2,"5":2,"6":3,"7":3,"8":3},"f":{"0":3,"1":2,"2":2},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/aead.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/aead.ts","statementMap":{"0":{"start":{"line":18,"column":0},"end":{"line":18,"column":22}}},"fnMap":{},"branchMap":{},"s":{"0":3},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/aes_gcm.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/aes_gcm.ts","statementMap":{"0":{"start":{"line":93,"column":0},"end":{"line":93,"column":7}},"1":{"start":{"line":7,"column":0},"end":{"line":7,"column":28}},"2":{"start":{"line":8,"column":0},"end":{"line":8,"column":65}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":33}},"4":{"start":{"line":11,"column":0},"end":{"line":11,"column":35}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":43}},"6":{"start":{"line":13,"column":0},"end":{"line":13,"column":33}},"7":{"start":{"line":19,"column":33},"end":{"line":19,"column":35}},"8":{"start":{"line":25,"column":33},"end":{"line":25,"column":36}},"9":{"start":{"line":34,"column":4},"end":{"line":34,"column":12}},"10":{"start":{"line":33,"column":31},"end":{"line":33,"column":45}},"11":{"start":{"line":41,"column":4},"end":{"line":41,"column":44}},"12":{"start":{"line":42,"column":4},"end":{"line":44,"column":5}},"13":{"start":{"line":43,"column":6},"end":{"line":43,"column":51}},"14":{"start":{"line":45,"column":15},"end":{"line":45,"column":49}},"15":{"start":{"line":46,"column":30},"end":{"line":50,"column":6}},"16":{"start":{"line":51,"column":4},"end":{"line":53,"column":5}},"17":{"start":{"line":52,"column":6},"end":{"line":52,"column":45}},"18":{"start":{"line":55,"column":8},"end":{"line":55,"column":61}},"19":{"start":{"line":56,"column":4},"end":{"line":56,"column":56}},"20":{"start":{"line":63,"column":4},"end":{"line":63,"column":45}},"21":{"start":{"line":64,"column":4},"end":{"line":66,"column":5}},"22":{"start":{"line":65,"column":6},"end":{"line":65,"column":58}},"23":{"start":{"line":67,"column":4},"end":{"line":69,"column":5}},"24":{"start":{"line":68,"column":6},"end":{"line":68,"column":51}},"25":{"start":{"line":70,"column":15},"end":{"line":70,"column":47}},"26":{"start":{"line":71,"column":4},"end":{"line":71,"column":53}},"27":{"start":{"line":72,"column":30},"end":{"line":76,"column":6}},"28":{"start":{"line":77,"column":4},"end":{"line":79,"column":5}},"29":{"start":{"line":78,"column":6},"end":{"line":78,"column":45}},"30":{"start":{"line":80,"column":4},"end":{"line":89,"column":5}},"31":{"start":{"line":81,"column":6},"end":{"line":83,"column":66}},"32":{"start":{"line":88,"column":6},"end":{"line":88,"column":48}},"33":{"start":{"line":32,"column":0},"end":{"line":32,"column":13}},"34":{"start":{"line":94,"column":2},"end":{"line":94,"column":36}},"35":{"start":{"line":95,"column":2},"end":{"line":95,"column":44}},"36":{"start":{"line":96,"column":23},"end":{"line":104,"column":29}},"37":{"start":{"line":107,"column":2},"end":{"line":107,"column":34}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":33,"column":2},"end":{"line":33,"column":31}},"loc":{"start":{"line":33,"column":45},"end":{"line":35,"column":3}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":39,"column":2},"end":{"line":39,"column":7}},"loc":{"start":{"line":39,"column":66},"end":{"line":57,"column":3}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":61,"column":2},"end":{"line":61,"column":7}},"loc":{"start":{"line":61,"column":67},"end":{"line":90,"column":3}}},"3":{"name":"fromRawKey","decl":{"start":{"line":93,"column":22},"end":{"line":93,"column":32}},"loc":{"start":{"line":93,"column":48},"end":{"line":108,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":42,"column":4},"end":{"line":44,"column":5}},"type":"if","locations":[{"start":{"line":42,"column":4},"end":{"line":44,"column":5}}]},"1":{"loc":{"start":{"line":51,"column":4},"end":{"line":53,"column":5}},"type":"if","locations":[{"start":{"line":51,"column":4},"end":{"line":53,"column":5}}]},"2":{"loc":{"start":{"line":64,"column":4},"end":{"line":66,"column":5}},"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":66,"column":5}}]},"3":{"loc":{"start":{"line":67,"column":4},"end":{"line":69,"column":5}},"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":69,"column":5}}]},"4":{"loc":{"start":{"line":77,"column":4},"end":{"line":79,"column":5}},"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":79,"column":5}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":3,"9":17,"10":17,"11":6,"12":6,"13":6,"14":6,"15":6,"16":6,"17":6,"18":6,"19":6,"20":11,"21":11,"22":0,"23":11,"24":11,"25":11,"26":11,"27":11,"28":11,"29":11,"30":11,"31":11,"32":0,"33":3,"34":17,"35":17,"36":17,"37":17},"f":{"0":17,"1":6,"2":11,"3":17},"b":{"0":[6],"1":[6],"2":[0],"3":[11],"4":[11]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/aes_siv.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/aes_siv.ts","statementMap":{"0":{"start":{"line":40,"column":0},"end":{"line":40,"column":7}},"1":{"start":{"line":7,"column":0},"end":{"line":7,"column":28}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":61}},"3":{"start":{"line":11,"column":0},"end":{"line":11,"column":33}},"4":{"start":{"line":20,"column":4},"end":{"line":20,"column":12}},"5":{"start":{"line":19,"column":31},"end":{"line":19,"column":46}},"6":{"start":{"line":27,"column":14},"end":{"line":27,"column":90}},"7":{"start":{"line":28,"column":4},"end":{"line":28,"column":49}},"8":{"start":{"line":35,"column":14},"end":{"line":35,"column":90}},"9":{"start":{"line":36,"column":4},"end":{"line":36,"column":50}},"10":{"start":{"line":18,"column":0},"end":{"line":18,"column":13}},"11":{"start":{"line":41,"column":2},"end":{"line":41,"column":25}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":19,"column":2},"end":{"line":19,"column":31}},"loc":{"start":{"line":19,"column":46},"end":{"line":21,"column":3}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":25,"column":2},"end":{"line":25,"column":7}},"loc":{"start":{"line":25,"column":66},"end":{"line":29,"column":3}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":33,"column":2},"end":{"line":33,"column":7}},"loc":{"start":{"line":33,"column":67},"end":{"line":37,"column":3}}},"3":{"name":"fromRawKey","decl":{"start":{"line":40,"column":22},"end":{"line":40,"column":32}},"loc":{"start":{"line":40,"column":48},"end":{"line":42,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":3,"3":3,"4":1,"5":1,"6":0,"7":0,"8":1,"9":1,"10":3,"11":1},"f":{"0":1,"1":0,"2":1,"3":1},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/bytes.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/bytes.ts","statementMap":{"0":{"start":{"line":15,"column":0},"end":{"line":15,"column":16}},"1":{"start":{"line":29,"column":0},"end":{"line":29,"column":16}},"2":{"start":{"line":53,"column":0},"end":{"line":53,"column":16}},"3":{"start":{"line":87,"column":0},"end":{"line":87,"column":16}},"4":{"start":{"line":106,"column":0},"end":{"line":106,"column":16}},"5":{"start":{"line":124,"column":0},"end":{"line":124,"column":16}},"6":{"start":{"line":141,"column":0},"end":{"line":141,"column":16}},"7":{"start":{"line":161,"column":0},"end":{"line":161,"column":16}},"8":{"start":{"line":180,"column":0},"end":{"line":180,"column":16}},"9":{"start":{"line":7,"column":0},"end":{"line":7,"column":82}},"10":{"start":{"line":16,"column":2},"end":{"line":18,"column":3}},"11":{"start":{"line":17,"column":4},"end":{"line":17,"column":17}},"12":{"start":{"line":19,"column":15},"end":{"line":19,"column":16}},"13":{"start":{"line":20,"column":2},"end":{"line":22,"column":3}},"14":{"start":{"line":20,"column":15},"end":{"line":20,"column":16}},"15":{"start":{"line":21,"column":4},"end":{"line":21,"column":30}},"16":{"start":{"line":23,"column":2},"end":{"line":23,"column":21}},"17":{"start":{"line":30,"column":15},"end":{"line":30,"column":16}},"18":{"start":{"line":31,"column":2},"end":{"line":34,"column":3}},"19":{"start":{"line":31,"column":15},"end":{"line":31,"column":16}},"20":{"start":{"line":33,"column":4},"end":{"line":33,"column":34}},"21":{"start":{"line":35,"column":17},"end":{"line":35,"column":39}},"22":{"start":{"line":36,"column":18},"end":{"line":36,"column":19}},"23":{"start":{"line":37,"column":2},"end":{"line":42,"column":3}},"24":{"start":{"line":37,"column":15},"end":{"line":37,"column":16}},"25":{"start":{"line":39,"column":4},"end":{"line":39,"column":40}},"26":{"start":{"line":41,"column":4},"end":{"line":41,"column":37}},"27":{"start":{"line":43,"column":2},"end":{"line":43,"column":16}},"28":{"start":{"line":54,"column":2},"end":{"line":56,"column":3}},"29":{"start":{"line":55,"column":4},"end":{"line":55,"column":76}},"30":{"start":{"line":57,"column":2},"end":{"line":59,"column":3}},"31":{"start":{"line":58,"column":4},"end":{"line":58,"column":74}},"32":{"start":{"line":60,"column":2},"end":{"line":63,"column":3}},"33":{"start":{"line":61,"column":4},"end":{"line":62,"column":72}},"34":{"start":{"line":64,"column":21},"end":{"line":64,"column":28}},"35":{"start":{"line":65,"column":12},"end":{"line":65,"column":30}},"36":{"start":{"line":66,"column":13},"end":{"line":66,"column":31}},"37":{"start":{"line":67,"column":17},"end":{"line":67,"column":34}},"38":{"start":{"line":68,"column":2},"end":{"line":71,"column":3}},"39":{"start":{"line":68,"column":15},"end":{"line":68,"column":16}},"40":{"start":{"line":69,"column":4},"end":{"line":69,"column":26}},"41":{"start":{"line":70,"column":4},"end":{"line":70,"column":15}},"42":{"start":{"line":72,"column":2},"end":{"line":75,"column":3}},"43":{"start":{"line":72,"column":15},"end":{"line":72,"column":16}},"44":{"start":{"line":73,"column":4},"end":{"line":73,"column":27}},"45":{"start":{"line":74,"column":4},"end":{"line":74,"column":16}},"46":{"start":{"line":76,"column":2},"end":{"line":76,"column":16}},"47":{"start":{"line":88,"column":2},"end":{"line":91,"column":3}},"48":{"start":{"line":89,"column":4},"end":{"line":90,"column":51}},"49":{"start":{"line":92,"column":14},"end":{"line":92,"column":44}},"50":{"start":{"line":93,"column":2},"end":{"line":95,"column":3}},"51":{"start":{"line":93,"column":15},"end":{"line":93,"column":16}},"52":{"start":{"line":94,"column":4},"end":{"line":94,"column":55}},"53":{"start":{"line":96,"column":2},"end":{"line":96,"column":13}},"54":{"start":{"line":107,"column":15},"end":{"line":107,"column":17}},"55":{"start":{"line":108,"column":2},"end":{"line":111,"column":3}},"56":{"start":{"line":108,"column":15},"end":{"line":108,"column":16}},"57":{"start":{"line":109,"column":20},"end":{"line":109,"column":41}},"58":{"start":{"line":110,"column":4},"end":{"line":110,"column":59}},"59":{"start":{"line":112,"column":2},"end":{"line":112,"column":16}},"60":{"start":{"line":125,"column":2},"end":{"line":128,"column":3}},"61":{"start":{"line":126,"column":25},"end":{"line":126,"column":70}},"62":{"start":{"line":127,"column":4},"end":{"line":127,"column":53}},"63":{"start":{"line":129,"column":2},"end":{"line":129,"column":46}},"64":{"start":{"line":142,"column":18},"end":{"line":146,"column":40}},"65":{"start":{"line":147,"column":2},"end":{"line":149,"column":3}},"66":{"start":{"line":148,"column":4},"end":{"line":148,"column":59}},"67":{"start":{"line":150,"column":2},"end":{"line":150,"column":17}},"68":{"start":{"line":162,"column":17},"end":{"line":162,"column":19}},"69":{"start":{"line":163,"column":10},"end":{"line":163,"column":11}},"70":{"start":{"line":164,"column":2},"end":{"line":167,"column":3}},"71":{"start":{"line":164,"column":15},"end":{"line":164,"column":16}},"72":{"start":{"line":165,"column":14},"end":{"line":165,"column":31}},"73":{"start":{"line":166,"column":4},"end":{"line":166,"column":20}},"74":{"start":{"line":168,"column":2},"end":{"line":168,"column":32}},"75":{"start":{"line":181,"column":12},"end":{"line":181,"column":14}},"76":{"start":{"line":182,"column":2},"end":{"line":184,"column":3}},"77":{"start":{"line":182,"column":15},"end":{"line":182,"column":16}},"78":{"start":{"line":183,"column":4},"end":{"line":183,"column":41}},"79":{"start":{"line":185,"column":2},"end":{"line":185,"column":13}}},"fnMap":{"0":{"name":"isEqual","decl":{"start":{"line":15,"column":16},"end":{"line":15,"column":23}},"loc":{"start":{"line":15,"column":56},"end":{"line":24,"column":1}}},"1":{"name":"concat","decl":{"start":{"line":29,"column":16},"end":{"line":29,"column":22}},"loc":{"start":{"line":29,"column":48},"end":{"line":44,"column":1}}},"2":{"name":"fromNumber","decl":{"start":{"line":53,"column":16},"end":{"line":53,"column":26}},"loc":{"start":{"line":53,"column":40},"end":{"line":77,"column":1}}},"3":{"name":"fromHex","decl":{"start":{"line":87,"column":16},"end":{"line":87,"column":23}},"loc":{"start":{"line":87,"column":35},"end":{"line":97,"column":1}}},"4":{"name":"toHex","decl":{"start":{"line":106,"column":16},"end":{"line":106,"column":21}},"loc":{"start":{"line":106,"column":39},"end":{"line":113,"column":1}}},"5":{"name":"fromBase64","decl":{"start":{"line":124,"column":16},"end":{"line":124,"column":26}},"loc":{"start":{"line":124,"column":65},"end":{"line":130,"column":1}}},"6":{"name":"toBase64","decl":{"start":{"line":141,"column":16},"end":{"line":141,"column":24}},"loc":{"start":{"line":141,"column":65},"end":{"line":151,"column":1}}},"7":{"name":"fromByteString","decl":{"start":{"line":161,"column":16},"end":{"line":161,"column":30}},"loc":{"start":{"line":161,"column":42},"end":{"line":169,"column":1}}},"8":{"name":"toByteString","decl":{"start":{"line":180,"column":16},"end":{"line":180,"column":28}},"loc":{"start":{"line":180,"column":46},"end":{"line":186,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":2},"end":{"line":18,"column":3}},"type":"if","locations":[{"start":{"line":16,"column":2},"end":{"line":18,"column":3}}]},"1":{"loc":{"start":{"line":54,"column":2},"end":{"line":56,"column":3}},"type":"if","locations":[{"start":{"line":54,"column":2},"end":{"line":56,"column":3}}]},"2":{"loc":{"start":{"line":54,"column":6},"end":{"line":54,"column":44}},"type":"binary-expr","locations":[{"start":{"line":54,"column":6},"end":{"line":54,"column":25}},{"start":{"line":54,"column":29},"end":{"line":54,"column":44}}]},"3":{"loc":{"start":{"line":57,"column":2},"end":{"line":59,"column":3}},"type":"if","locations":[{"start":{"line":57,"column":2},"end":{"line":59,"column":3}}]},"4":{"loc":{"start":{"line":60,"column":2},"end":{"line":63,"column":3}},"type":"if","locations":[{"start":{"line":60,"column":2},"end":{"line":63,"column":3}}]},"5":{"loc":{"start":{"line":88,"column":2},"end":{"line":91,"column":3}},"type":"if","locations":[{"start":{"line":88,"column":2},"end":{"line":91,"column":3}}]},"6":{"loc":{"start":{"line":110,"column":14},"end":{"line":110,"column":58}},"type":"cond-expr","locations":[{"start":{"line":110,"column":35},"end":{"line":110,"column":42}},{"start":{"line":110,"column":45},"end":{"line":110,"column":58}}]},"7":{"loc":{"start":{"line":125,"column":2},"end":{"line":128,"column":3}},"type":"if","locations":[{"start":{"line":125,"column":2},"end":{"line":128,"column":3}}]},"8":{"loc":{"start":{"line":147,"column":2},"end":{"line":149,"column":3}},"type":"if","locations":[{"start":{"line":147,"column":2},"end":{"line":149,"column":3}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":3,"9":3,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":6,"18":6,"19":6,"20":12,"21":6,"22":6,"23":6,"24":6,"25":12,"26":12,"27":6,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0},"f":{"0":0,"1":6,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0},"b":{"0":[0],"1":[0],"2":[0,0],"3":[0],"4":[0],"5":[0],"6":[0,0],"7":[0],"8":[0]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/hkdf.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/hkdf.ts","statementMap":{"0":{"start":{"line":31,"column":0},"end":{"line":31,"column":7}},"1":{"start":{"line":11,"column":0},"end":{"line":11,"column":82}},"2":{"start":{"line":13,"column":0},"end":{"line":13,"column":52}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":43}},"4":{"start":{"line":35,"column":2},"end":{"line":37,"column":3}},"5":{"start":{"line":36,"column":4},"end":{"line":36,"column":67}},"6":{"start":{"line":38,"column":2},"end":{"line":40,"column":3}},"7":{"start":{"line":39,"column":4},"end":{"line":39,"column":65}},"8":{"start":{"line":41,"column":2},"end":{"line":62,"column":3}},"9":{"start":{"line":43,"column":6},"end":{"line":43,"column":22}},"10":{"start":{"line":44,"column":6},"end":{"line":46,"column":7}},"11":{"start":{"line":45,"column":8},"end":{"line":45,"column":62}},"12":{"start":{"line":47,"column":6},"end":{"line":47,"column":12}},"13":{"start":{"line":49,"column":6},"end":{"line":49,"column":22}},"14":{"start":{"line":50,"column":6},"end":{"line":52,"column":7}},"15":{"start":{"line":51,"column":8},"end":{"line":51,"column":62}},"16":{"start":{"line":53,"column":6},"end":{"line":53,"column":12}},"17":{"start":{"line":55,"column":6},"end":{"line":55,"column":22}},"18":{"start":{"line":56,"column":6},"end":{"line":58,"column":7}},"19":{"start":{"line":57,"column":8},"end":{"line":57,"column":62}},"20":{"start":{"line":59,"column":6},"end":{"line":59,"column":12}},"21":{"start":{"line":61,"column":6},"end":{"line":61,"column":70}},"22":{"start":{"line":63,"column":2},"end":{"line":63,"column":36}},"23":{"start":{"line":64,"column":2},"end":{"line":64,"column":37}},"24":{"start":{"line":65,"column":13},"end":{"line":65,"column":21}},"25":{"start":{"line":66,"column":2},"end":{"line":68,"column":3}},"26":{"start":{"line":67,"column":4},"end":{"line":67,"column":38}},"27":{"start":{"line":69,"column":2},"end":{"line":69,"column":37}},"28":{"start":{"line":72,"column":13},"end":{"line":72,"column":57}},"29":{"start":{"line":73,"column":14},"end":{"line":75,"column":10}},"30":{"start":{"line":78,"column":2},"end":{"line":78,"column":53}},"31":{"start":{"line":79,"column":12},"end":{"line":79,"column":13}},"32":{"start":{"line":80,"column":12},"end":{"line":80,"column":13}},"33":{"start":{"line":81,"column":15},"end":{"line":81,"column":32}},"34":{"start":{"line":82,"column":17},"end":{"line":82,"column":37}},"35":{"start":{"line":83,"column":2},"end":{"line":97,"column":3}},"36":{"start":{"line":84,"column":18},"end":{"line":84,"column":65}},"37":{"start":{"line":85,"column":4},"end":{"line":85,"column":25}},"38":{"start":{"line":86,"column":4},"end":{"line":86,"column":35}},"39":{"start":{"line":87,"column":4},"end":{"line":87,"column":34}},"40":{"start":{"line":88,"column":4},"end":{"line":88,"column":42}},"41":{"start":{"line":89,"column":4},"end":{"line":96,"column":5}},"42":{"start":{"line":90,"column":6},"end":{"line":90,"column":30}},"43":{"start":{"line":91,"column":6},"end":{"line":91,"column":27}},"44":{"start":{"line":92,"column":6},"end":{"line":92,"column":12}},"45":{"start":{"line":94,"column":6},"end":{"line":94,"column":54}},"46":{"start":{"line":95,"column":6},"end":{"line":95,"column":12}},"47":{"start":{"line":98,"column":2},"end":{"line":98,"column":16}}},"fnMap":{"0":{"name":"compute","decl":{"start":{"line":31,"column":22},"end":{"line":31,"column":29}},"loc":{"start":{"line":33,"column":25},"end":{"line":99,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":35,"column":2},"end":{"line":37,"column":3}},"type":"if","locations":[{"start":{"line":35,"column":2},"end":{"line":37,"column":3}}]},"1":{"loc":{"start":{"line":38,"column":2},"end":{"line":40,"column":3}},"type":"if","locations":[{"start":{"line":38,"column":2},"end":{"line":40,"column":3}}]},"2":{"loc":{"start":{"line":41,"column":2},"end":{"line":62,"column":3}},"type":"switch","locations":[{"start":{"line":42,"column":4},"end":{"line":47,"column":12}},{"start":{"line":48,"column":4},"end":{"line":53,"column":12}},{"start":{"line":54,"column":4},"end":{"line":59,"column":12}},{"start":{"line":60,"column":4},"end":{"line":61,"column":70}}]},"3":{"loc":{"start":{"line":44,"column":6},"end":{"line":46,"column":7}},"type":"if","locations":[{"start":{"line":44,"column":6},"end":{"line":46,"column":7}}]},"4":{"loc":{"start":{"line":50,"column":6},"end":{"line":52,"column":7}},"type":"if","locations":[{"start":{"line":50,"column":6},"end":{"line":52,"column":7}}]},"5":{"loc":{"start":{"line":56,"column":6},"end":{"line":58,"column":7}},"type":"if","locations":[{"start":{"line":56,"column":6},"end":{"line":58,"column":7}}]},"6":{"loc":{"start":{"line":66,"column":2},"end":{"line":68,"column":3}},"type":"if","locations":[{"start":{"line":66,"column":2},"end":{"line":68,"column":3}}]},"7":{"loc":{"start":{"line":66,"column":6},"end":{"line":66,"column":64}},"type":"binary-expr","locations":[{"start":{"line":66,"column":6},"end":{"line":66,"column":22}},{"start":{"line":66,"column":26},"end":{"line":66,"column":44}},{"start":{"line":66,"column":48},"end":{"line":66,"column":64}}]},"8":{"loc":{"start":{"line":89,"column":4},"end":{"line":96,"column":5}},"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":96,"column":5}},{"start":{"line":93,"column":11},"end":{"line":96,"column":5}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":7,"5":0,"6":7,"7":0,"8":7,"9":0,"10":0,"11":0,"12":0,"13":7,"14":7,"15":0,"16":7,"17":0,"18":0,"19":0,"20":0,"21":0,"22":7,"23":7,"24":7,"25":7,"26":7,"27":7,"28":7,"29":7,"30":7,"31":7,"32":7,"33":7,"34":7,"35":7,"36":7,"37":7,"38":7,"39":7,"40":7,"41":7,"42":0,"43":0,"44":0,"45":7,"46":7,"47":7},"f":{"0":7},"b":{"0":[0],"1":[0],"2":[0,7,0,0],"3":[0],"4":[0],"5":[0],"6":[7],"7":[7,0,0],"8":[0,7]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/hmac.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/hmac.ts","statementMap":{"0":{"start":{"line":59,"column":0},"end":{"line":59,"column":7}},"1":{"start":{"line":7,"column":0},"end":{"line":7,"column":82}},"2":{"start":{"line":8,"column":0},"end":{"line":8,"column":26}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":33}},"4":{"start":{"line":11,"column":0},"end":{"line":11,"column":43}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":33}},"6":{"start":{"line":18,"column":38},"end":{"line":18,"column":40}},"7":{"start":{"line":33,"column":4},"end":{"line":33,"column":12}},"8":{"start":{"line":31,"column":23},"end":{"line":31,"column":35}},"9":{"start":{"line":31,"column":54},"end":{"line":31,"column":68}},"10":{"start":{"line":32,"column":23},"end":{"line":32,"column":38}},"11":{"start":{"line":39,"column":4},"end":{"line":39,"column":39}},"12":{"start":{"line":40,"column":16},"end":{"line":41,"column":70}},"13":{"start":{"line":42,"column":4},"end":{"line":42,"column":54}},"14":{"start":{"line":48,"column":4},"end":{"line":48,"column":38}},"15":{"start":{"line":49,"column":4},"end":{"line":49,"column":39}},"16":{"start":{"line":50,"column":24},"end":{"line":50,"column":51}},"17":{"start":{"line":51,"column":4},"end":{"line":51,"column":43}},"18":{"start":{"line":25,"column":0},"end":{"line":25,"column":13}},"19":{"start":{"line":61,"column":2},"end":{"line":61,"column":36}},"20":{"start":{"line":62,"column":2},"end":{"line":64,"column":3}},"21":{"start":{"line":63,"column":4},"end":{"line":63,"column":80}},"22":{"start":{"line":65,"column":2},"end":{"line":68,"column":3}},"23":{"start":{"line":66,"column":4},"end":{"line":67,"column":79}},"24":{"start":{"line":69,"column":2},"end":{"line":90,"column":3}},"25":{"start":{"line":71,"column":6},"end":{"line":74,"column":7}},"26":{"start":{"line":72,"column":8},"end":{"line":73,"column":62}},"27":{"start":{"line":75,"column":6},"end":{"line":75,"column":12}},"28":{"start":{"line":77,"column":6},"end":{"line":80,"column":7}},"29":{"start":{"line":78,"column":8},"end":{"line":79,"column":62}},"30":{"start":{"line":81,"column":6},"end":{"line":81,"column":12}},"31":{"start":{"line":83,"column":6},"end":{"line":86,"column":7}},"32":{"start":{"line":84,"column":8},"end":{"line":85,"column":62}},"33":{"start":{"line":87,"column":6},"end":{"line":87,"column":12}},"34":{"start":{"line":89,"column":6},"end":{"line":89,"column":70}},"35":{"start":{"line":93,"column":20},"end":{"line":96,"column":25}},"36":{"start":{"line":97,"column":2},"end":{"line":97,"column":44}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}},"loc":{"start":{"line":32,"column":38},"end":{"line":34,"column":3}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":38,"column":2},"end":{"line":38,"column":7}},"loc":{"start":{"line":38,"column":35},"end":{"line":43,"column":3}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":47,"column":2},"end":{"line":47,"column":7}},"loc":{"start":{"line":47,"column":51},"end":{"line":52,"column":3}}},"3":{"name":"fromRawKey","decl":{"start":{"line":59,"column":22},"end":{"line":59,"column":32}},"loc":{"start":{"line":60,"column":50},"end":{"line":98,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":62,"column":2},"end":{"line":64,"column":3}},"type":"if","locations":[{"start":{"line":62,"column":2},"end":{"line":64,"column":3}}]},"1":{"loc":{"start":{"line":65,"column":2},"end":{"line":68,"column":3}},"type":"if","locations":[{"start":{"line":65,"column":2},"end":{"line":68,"column":3}}]},"2":{"loc":{"start":{"line":69,"column":2},"end":{"line":90,"column":3}},"type":"switch","locations":[{"start":{"line":70,"column":4},"end":{"line":75,"column":12}},{"start":{"line":76,"column":4},"end":{"line":81,"column":12}},{"start":{"line":82,"column":4},"end":{"line":87,"column":12}},{"start":{"line":88,"column":4},"end":{"line":89,"column":70}}]},"3":{"loc":{"start":{"line":71,"column":6},"end":{"line":74,"column":7}},"type":"if","locations":[{"start":{"line":71,"column":6},"end":{"line":74,"column":7}}]},"4":{"loc":{"start":{"line":77,"column":6},"end":{"line":80,"column":7}},"type":"if","locations":[{"start":{"line":77,"column":6},"end":{"line":80,"column":7}}]},"5":{"loc":{"start":{"line":83,"column":6},"end":{"line":86,"column":7}},"type":"if","locations":[{"start":{"line":83,"column":6},"end":{"line":86,"column":7}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":14,"8":14,"9":14,"10":14,"11":14,"12":14,"13":14,"14":0,"15":0,"16":0,"17":0,"18":3,"19":14,"20":14,"21":0,"22":14,"23":0,"24":14,"25":0,"26":0,"27":0,"28":14,"29":0,"30":14,"31":0,"32":0,"33":0,"34":0,"35":14,"36":14},"f":{"0":14,"1":14,"2":0,"3":14},"b":{"0":[0],"1":[0],"2":[0,14,0,0],"3":[0],"4":[0],"5":[0]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/mac.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/mac.ts","statementMap":{"0":{"start":{"line":18,"column":0},"end":{"line":18,"column":22}}},"fnMap":{},"branchMap":{},"s":{"0":3},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/random.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/random.ts","statementMap":{"0":{"start":{"line":21,"column":0},"end":{"line":21,"column":16}},"1":{"start":{"line":11,"column":0},"end":{"line":11,"column":82}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":33}},"3":{"start":{"line":22,"column":2},"end":{"line":24,"column":3}},"4":{"start":{"line":23,"column":4},"end":{"line":23,"column":75}},"5":{"start":{"line":25,"column":17},"end":{"line":25,"column":34}},"6":{"start":{"line":26,"column":2},"end":{"line":26,"column":33}},"7":{"start":{"line":27,"column":2},"end":{"line":27,"column":16}}},"fnMap":{"0":{"name":"randBytes","decl":{"start":{"line":21,"column":16},"end":{"line":21,"column":25}},"loc":{"start":{"line":21,"column":35},"end":{"line":28,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":22,"column":2},"end":{"line":24,"column":3}},"type":"if","locations":[{"start":{"line":22,"column":2},"end":{"line":24,"column":3}}]},"1":{"loc":{"start":{"line":22,"column":6},"end":{"line":22,"column":35}},"type":"binary-expr","locations":[{"start":{"line":22,"column":6},"end":{"line":22,"column":26}},{"start":{"line":22,"column":30},"end":{"line":22,"column":35}}]}},"s":{"0":3,"1":3,"2":3,"3":8,"4":0,"5":8,"6":8,"7":8},"f":{"0":8},"b":{"0":[0],"1":[8,8]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/validators.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/validators.ts","statementMap":{"0":{"start":{"line":19,"column":0},"end":{"line":19,"column":16}},"1":{"start":{"line":31,"column":0},"end":{"line":31,"column":16}},"2":{"start":{"line":46,"column":0},"end":{"line":46,"column":16}},"3":{"start":{"line":59,"column":0},"end":{"line":59,"column":16}},"4":{"start":{"line":7,"column":0},"end":{"line":7,"column":82}},"5":{"start":{"line":8,"column":0},"end":{"line":8,"column":65}},"6":{"start":{"line":9,"column":42},"end":{"line":9,"column":50}},"7":{"start":{"line":20,"column":2},"end":{"line":22,"column":3}},"8":{"start":{"line":21,"column":4},"end":{"line":21,"column":74}},"9":{"start":{"line":32,"column":2},"end":{"line":34,"column":3}},"10":{"start":{"line":33,"column":4},"end":{"line":33,"column":79}},"11":{"start":{"line":47,"column":2},"end":{"line":51,"column":3}},"12":{"start":{"line":48,"column":4},"end":{"line":50,"column":45}},"13":{"start":{"line":60,"column":2},"end":{"line":82,"column":3}},"14":{"start":{"line":62,"column":6},"end":{"line":65,"column":7}},"15":{"start":{"line":63,"column":8},"end":{"line":64,"column":73}},"16":{"start":{"line":66,"column":6},"end":{"line":66,"column":12}},"17":{"start":{"line":68,"column":6},"end":{"line":72,"column":7}},"18":{"start":{"line":69,"column":8},"end":{"line":71,"column":18}},"19":{"start":{"line":73,"column":6},"end":{"line":73,"column":12}},"20":{"start":{"line":75,"column":6},"end":{"line":78,"column":7}},"21":{"start":{"line":76,"column":8},"end":{"line":77,"column":73}},"22":{"start":{"line":79,"column":6},"end":{"line":79,"column":12}},"23":{"start":{"line":81,"column":6},"end":{"line":81,"column":65}}},"fnMap":{"0":{"name":"validateAesKeySize","decl":{"start":{"line":19,"column":16},"end":{"line":19,"column":34}},"loc":{"start":{"line":19,"column":44},"end":{"line":23,"column":1}}},"1":{"name":"requireUint8Array","decl":{"start":{"line":31,"column":16},"end":{"line":31,"column":33}},"loc":{"start":{"line":31,"column":51},"end":{"line":35,"column":1}}},"2":{"name":"validateVersion","decl":{"start":{"line":46,"column":16},"end":{"line":46,"column":31}},"loc":{"start":{"line":46,"column":69},"end":{"line":52,"column":1}}},"3":{"name":"validateEcdsaParams","decl":{"start":{"line":59,"column":16},"end":{"line":59,"column":35}},"loc":{"start":{"line":59,"column":63},"end":{"line":83,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":20,"column":2},"end":{"line":22,"column":3}},"type":"if","locations":[{"start":{"line":20,"column":2},"end":{"line":22,"column":3}}]},"1":{"loc":{"start":{"line":32,"column":2},"end":{"line":34,"column":3}},"type":"if","locations":[{"start":{"line":32,"column":2},"end":{"line":34,"column":3}}]},"2":{"loc":{"start":{"line":32,"column":6},"end":{"line":32,"column":53}},"type":"binary-expr","locations":[{"start":{"line":32,"column":6},"end":{"line":32,"column":19}},{"start":{"line":32,"column":23},"end":{"line":32,"column":53}}]},"3":{"loc":{"start":{"line":47,"column":2},"end":{"line":51,"column":3}},"type":"if","locations":[{"start":{"line":47,"column":2},"end":{"line":51,"column":3}}]},"4":{"loc":{"start":{"line":47,"column":6},"end":{"line":47,"column":45}},"type":"binary-expr","locations":[{"start":{"line":47,"column":6},"end":{"line":47,"column":19}},{"start":{"line":47,"column":23},"end":{"line":47,"column":45}}]},"5":{"loc":{"start":{"line":60,"column":2},"end":{"line":82,"column":3}},"type":"switch","locations":[{"start":{"line":61,"column":4},"end":{"line":66,"column":12}},{"start":{"line":67,"column":4},"end":{"line":73,"column":12}},{"start":{"line":74,"column":4},"end":{"line":79,"column":12}},{"start":{"line":80,"column":4},"end":{"line":81,"column":65}}]},"6":{"loc":{"start":{"line":62,"column":6},"end":{"line":65,"column":7}},"type":"if","locations":[{"start":{"line":62,"column":6},"end":{"line":65,"column":7}}]},"7":{"loc":{"start":{"line":68,"column":6},"end":{"line":72,"column":7}},"type":"if","locations":[{"start":{"line":68,"column":6},"end":{"line":72,"column":7}}]},"8":{"loc":{"start":{"line":68,"column":10},"end":{"line":68,"column":48}},"type":"binary-expr","locations":[{"start":{"line":68,"column":10},"end":{"line":68,"column":27}},{"start":{"line":68,"column":31},"end":{"line":68,"column":48}}]},"9":{"loc":{"start":{"line":75,"column":6},"end":{"line":78,"column":7}},"type":"if","locations":[{"start":{"line":75,"column":6},"end":{"line":78,"column":7}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":17,"8":0,"9":100,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0},"f":{"0":17,"1":100,"2":0,"3":0},"b":{"0":[0],"1":[0],"2":[100,100],"3":[0],"4":[0,0],"5":[0,0,0,0],"6":[0],"7":[0],"8":[0,0],"9":[0]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/exception/invalid_arguments_exception.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/exception/invalid_arguments_exception.ts","statementMap":{"0":{"start":{"line":13,"column":4},"end":{"line":13,"column":19}},"1":{"start":{"line":14,"column":4},"end":{"line":14,"column":69}},"2":{"start":{"line":11,"column":0},"end":{"line":11,"column":13}},"3":{"start":{"line":17,"column":0},"end":{"line":17,"column":71}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":14}},"loc":{"start":{"line":12,"column":30},"end":{"line":15,"column":3}}}},"branchMap":{},"s":{"0":0,"1":0,"2":3,"3":3},"f":{"0":0},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/exception/security_exception.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/exception/security_exception.ts","statementMap":{"0":{"start":{"line":13,"column":4},"end":{"line":13,"column":19}},"1":{"start":{"line":14,"column":4},"end":{"line":14,"column":61}},"2":{"start":{"line":11,"column":0},"end":{"line":11,"column":13}},"3":{"start":{"line":17,"column":0},"end":{"line":17,"column":55}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":14}},"loc":{"start":{"line":12,"column":30},"end":{"line":15,"column":3}}}},"branchMap":{},"s":{"0":0,"1":0,"2":3,"3":3},"f":{"0":0},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/proto/aes_gcm_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/proto/aes_gcm_pb.ts","statementMap":{"0":{"start":{"line":22,"column":0},"end":{"line":22,"column":69}},"1":{"start":{"line":28,"column":13},"end":{"line":29,"column":367}},"2":{"start":{"line":50,"column":13},"end":{"line":51,"column":59}},"3":{"start":{"line":72,"column":13},"end":{"line":73,"column":59}}},"fnMap":{},"branchMap":{},"s":{"0":3,"1":3,"2":3,"3":3},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/proto/aes_siv_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/rules/encryption/tink/proto/aes_siv_pb.ts","statementMap":{"0":{"start":{"line":22,"column":0},"end":{"line":22,"column":69}},"1":{"start":{"line":28,"column":13},"end":{"line":29,"column":355}},"2":{"start":{"line":52,"column":13},"end":{"line":53,"column":59}},"3":{"start":{"line":78,"column":13},"end":{"line":79,"column":59}}},"fnMap":{},"branchMap":{},"s":{"0":3,"1":3,"2":3,"3":3},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/avro.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/avro.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":null}},"1":{"start":{"line":9,"column":0},"end":{"line":9,"column":null}},"2":{"start":{"line":13,"column":0},"end":{"line":13,"column":59}},"3":{"start":{"line":20,"column":0},"end":{"line":20,"column":36}},"4":{"start":{"line":21,"column":0},"end":{"line":21,"column":49}},"5":{"start":{"line":22,"column":0},"end":{"line":22,"column":53}},"6":{"start":{"line":38,"column":4},"end":{"line":38,"column":null}},"7":{"start":{"line":39,"column":4},"end":{"line":39,"column":null}},"8":{"start":{"line":40,"column":4},"end":{"line":42,"column":null}},"9":{"start":{"line":41,"column":6},"end":{"line":41,"column":null}},"10":{"start":{"line":43,"column":4},"end":{"line":45,"column":5}},"11":{"start":{"line":44,"column":6},"end":{"line":44,"column":null}},"12":{"start":{"line":49,"column":4},"end":{"line":51,"column":5}},"13":{"start":{"line":50,"column":6},"end":{"line":50,"column":null}},"14":{"start":{"line":52,"column":4},"end":{"line":54,"column":5}},"15":{"start":{"line":53,"column":6},"end":{"line":53,"column":null}},"16":{"start":{"line":56,"column":21},"end":{"line":56,"column":39}},"17":{"start":{"line":57,"column":31},"end":{"line":60,"column":null}},"18":{"start":{"line":61,"column":23},"end":{"line":61,"column":59}},"19":{"start":{"line":63,"column":4},"end":{"line":63,"column":null}},"20":{"start":{"line":64,"column":20},"end":{"line":64,"column":49}},"21":{"start":{"line":65,"column":4},"end":{"line":66,"column":null}},"22":{"start":{"line":67,"column":21},"end":{"line":67,"column":45}},"23":{"start":{"line":68,"column":4},"end":{"line":68,"column":null}},"24":{"start":{"line":72,"column":23},"end":{"line":72,"column":52}},"25":{"start":{"line":73,"column":4},"end":{"line":73,"column":null}},"26":{"start":{"line":77,"column":4},"end":{"line":81,"column":null}},"27":{"start":{"line":78,"column":19},"end":{"line":78,"column":44}},"28":{"start":{"line":79,"column":6},"end":{"line":79,"column":null}},"29":{"start":{"line":80,"column":6},"end":{"line":80,"column":null}},"30":{"start":{"line":34,"column":0},"end":{"line":34,"column":13}},"31":{"start":{"line":91,"column":4},"end":{"line":91,"column":null}},"32":{"start":{"line":92,"column":4},"end":{"line":92,"column":null}},"33":{"start":{"line":93,"column":4},"end":{"line":95,"column":null}},"34":{"start":{"line":94,"column":6},"end":{"line":94,"column":null}},"35":{"start":{"line":96,"column":4},"end":{"line":98,"column":5}},"36":{"start":{"line":97,"column":6},"end":{"line":97,"column":null}},"37":{"start":{"line":102,"column":4},"end":{"line":104,"column":5}},"38":{"start":{"line":103,"column":6},"end":{"line":103,"column":null}},"39":{"start":{"line":105,"column":4},"end":{"line":107,"column":5}},"40":{"start":{"line":106,"column":6},"end":{"line":106,"column":null}},"41":{"start":{"line":109,"column":17},"end":{"line":109,"column":53}},"42":{"start":{"line":110,"column":20},"end":{"line":110,"column":49}},"43":{"start":{"line":111,"column":23},"end":{"line":111,"column":58}},"44":{"start":{"line":112,"column":34},"end":{"line":112,"column":36}},"45":{"start":{"line":113,"column":4},"end":{"line":115,"column":5}},"46":{"start":{"line":114,"column":6},"end":{"line":114,"column":null}},"47":{"start":{"line":116,"column":27},"end":{"line":116,"column":50}},"48":{"start":{"line":119,"column":21},"end":{"line":119,"column":40}},"49":{"start":{"line":120,"column":4},"end":{"line":134,"column":5}},"50":{"start":{"line":121,"column":6},"end":{"line":121,"column":null}},"51":{"start":{"line":122,"column":6},"end":{"line":122,"column":null}},"52":{"start":{"line":124,"column":6},"end":{"line":133,"column":7}},"53":{"start":{"line":125,"column":27},"end":{"line":125,"column":56}},"54":{"start":{"line":126,"column":8},"end":{"line":130,"column":9}},"55":{"start":{"line":127,"column":10},"end":{"line":127,"column":null}},"56":{"start":{"line":129,"column":10},"end":{"line":129,"column":null}},"57":{"start":{"line":132,"column":8},"end":{"line":132,"column":null}},"58":{"start":{"line":136,"column":4},"end":{"line":140,"column":5}},"59":{"start":{"line":137,"column":6},"end":{"line":137,"column":null}},"60":{"start":{"line":139,"column":6},"end":{"line":139,"column":null}},"61":{"start":{"line":141,"column":4},"end":{"line":142,"column":null}},"62":{"start":{"line":143,"column":4},"end":{"line":143,"column":null}},"63":{"start":{"line":147,"column":23},"end":{"line":147,"column":52}},"64":{"start":{"line":148,"column":4},"end":{"line":148,"column":null}},"65":{"start":{"line":152,"column":4},"end":{"line":156,"column":null}},"66":{"start":{"line":153,"column":19},"end":{"line":153,"column":44}},"67":{"start":{"line":154,"column":6},"end":{"line":154,"column":null}},"68":{"start":{"line":155,"column":6},"end":{"line":155,"column":null}},"69":{"start":{"line":87,"column":0},"end":{"line":87,"column":13}},"70":{"start":{"line":167,"column":14},"end":{"line":167,"column":65}},"71":{"start":{"line":168,"column":2},"end":{"line":170,"column":3}},"72":{"start":{"line":169,"column":4},"end":{"line":169,"column":null}},"73":{"start":{"line":172,"column":15},"end":{"line":172,"column":46}},"74":{"start":{"line":174,"column":31},"end":{"line":185,"column":3}},"75":{"start":{"line":174,"column":78},"end":{"line":185,"column":3}},"76":{"start":{"line":178,"column":4},"end":{"line":180,"column":null}},"77":{"start":{"line":179,"column":6},"end":{"line":179,"column":null}},"78":{"start":{"line":181,"column":4},"end":{"line":183,"column":5}},"79":{"start":{"line":182,"column":6},"end":{"line":182,"column":null}},"80":{"start":{"line":184,"column":4},"end":{"line":184,"column":10}},"81":{"start":{"line":187,"column":19},"end":{"line":187,"column":23}},"82":{"start":{"line":188,"column":13},"end":{"line":191,"column":4}},"83":{"start":{"line":192,"column":2},"end":{"line":192,"column":null}},"84":{"start":{"line":193,"column":2},"end":{"line":193,"column":null}},"85":{"start":{"line":197,"column":2},"end":{"line":199,"column":3}},"86":{"start":{"line":198,"column":4},"end":{"line":198,"column":null}},"87":{"start":{"line":200,"column":19},"end":{"line":200,"column":37}},"88":{"start":{"line":201,"column":2},"end":{"line":203,"column":3}},"89":{"start":{"line":202,"column":4},"end":{"line":202,"column":null}},"90":{"start":{"line":204,"column":2},"end":{"line":238,"column":3}},"91":{"start":{"line":207,"column":24},"end":{"line":207,"column":49}},"92":{"start":{"line":208,"column":6},"end":{"line":210,"column":7}},"93":{"start":{"line":209,"column":8},"end":{"line":209,"column":null}},"94":{"start":{"line":211,"column":6},"end":{"line":211,"column":null}},"95":{"start":{"line":213,"column":26},"end":{"line":213,"column":45}},"96":{"start":{"line":214,"column":20},"end":{"line":214,"column":32}},"97":{"start":{"line":215,"column":6},"end":{"line":215,"column":null}},"98":{"start":{"line":215,"column":49},"end":{"line":215,"column":108}},"99":{"start":{"line":217,"column":24},"end":{"line":217,"column":41}},"100":{"start":{"line":218,"column":18},"end":{"line":218,"column":41}},"101":{"start":{"line":219,"column":6},"end":{"line":221,"column":7}},"102":{"start":{"line":220,"column":8},"end":{"line":220,"column":null}},"103":{"start":{"line":222,"column":6},"end":{"line":222,"column":null}},"104":{"start":{"line":224,"column":27},"end":{"line":224,"column":47}},"105":{"start":{"line":225,"column":21},"end":{"line":225,"column":47}},"106":{"start":{"line":226,"column":6},"end":{"line":228,"column":7}},"107":{"start":{"line":227,"column":8},"end":{"line":227,"column":null}},"108":{"start":{"line":229,"column":6},"end":{"line":229,"column":null}},"109":{"start":{"line":231,"column":6},"end":{"line":236,"column":7}},"110":{"start":{"line":232,"column":25},"end":{"line":232,"column":44}},"111":{"start":{"line":233,"column":8},"end":{"line":235,"column":9}},"112":{"start":{"line":234,"column":10},"end":{"line":234,"column":null}},"113":{"start":{"line":237,"column":6},"end":{"line":237,"column":null}},"114":{"start":{"line":249,"column":19},"end":{"line":249,"column":55}},"115":{"start":{"line":250,"column":2},"end":{"line":268,"column":3}},"116":{"start":{"line":251,"column":4},"end":{"line":257,"column":null}},"117":{"start":{"line":258,"column":19},"end":{"line":258,"column":87}},"118":{"start":{"line":259,"column":4},"end":{"line":265,"column":5}},"119":{"start":{"line":260,"column":6},"end":{"line":262,"column":7}},"120":{"start":{"line":261,"column":8},"end":{"line":261,"column":null}},"121":{"start":{"line":264,"column":6},"end":{"line":264,"column":null}},"122":{"start":{"line":267,"column":4},"end":{"line":267,"column":null}},"123":{"start":{"line":272,"column":2},"end":{"line":305,"column":3}},"124":{"start":{"line":274,"column":6},"end":{"line":274,"column":null}},"125":{"start":{"line":276,"column":6},"end":{"line":276,"column":null}},"126":{"start":{"line":278,"column":6},"end":{"line":278,"column":null}},"127":{"start":{"line":280,"column":6},"end":{"line":280,"column":null}},"128":{"start":{"line":283,"column":6},"end":{"line":283,"column":null}},"129":{"start":{"line":285,"column":6},"end":{"line":285,"column":null}},"130":{"start":{"line":287,"column":6},"end":{"line":287,"column":null}},"131":{"start":{"line":289,"column":6},"end":{"line":289,"column":null}},"132":{"start":{"line":291,"column":6},"end":{"line":291,"column":null}},"133":{"start":{"line":294,"column":6},"end":{"line":294,"column":null}},"134":{"start":{"line":296,"column":6},"end":{"line":296,"column":null}},"135":{"start":{"line":298,"column":6},"end":{"line":298,"column":null}},"136":{"start":{"line":300,"column":6},"end":{"line":300,"column":null}},"137":{"start":{"line":302,"column":6},"end":{"line":302,"column":null}},"138":{"start":{"line":304,"column":6},"end":{"line":304,"column":null}},"139":{"start":{"line":309,"column":2},"end":{"line":313,"column":3}},"140":{"start":{"line":310,"column":4},"end":{"line":312,"column":5}},"141":{"start":{"line":311,"column":6},"end":{"line":311,"column":null}},"142":{"start":{"line":314,"column":2},"end":{"line":314,"column":null}},"143":{"start":{"line":318,"column":19},"end":{"line":318,"column":23}},"144":{"start":{"line":319,"column":2},"end":{"line":325,"column":3}},"145":{"start":{"line":320,"column":18},"end":{"line":320,"column":46}},"146":{"start":{"line":321,"column":4},"end":{"line":321,"column":null}},"147":{"start":{"line":322,"column":9},"end":{"line":325,"column":3}},"148":{"start":{"line":323,"column":18},"end":{"line":323,"column":44}},"149":{"start":{"line":324,"column":4},"end":{"line":324,"column":null}},"150":{"start":{"line":326,"column":2},"end":{"line":332,"column":3}},"151":{"start":{"line":327,"column":4},"end":{"line":331,"column":5}},"152":{"start":{"line":327,"column":17},"end":{"line":327,"column":18}},"153":{"start":{"line":328,"column":6},"end":{"line":330,"column":7}},"154":{"start":{"line":329,"column":8},"end":{"line":329,"column":null}},"155":{"start":{"line":333,"column":2},"end":{"line":333,"column":null}},"156":{"start":{"line":337,"column":21},"end":{"line":337,"column":51}},"157":{"start":{"line":338,"column":2},"end":{"line":338,"column":null}},"158":{"start":{"line":339,"column":2},"end":{"line":341,"column":3}},"159":{"start":{"line":340,"column":4},"end":{"line":340,"column":null}},"160":{"start":{"line":342,"column":2},"end":{"line":342,"column":null}},"161":{"start":{"line":347,"column":2},"end":{"line":380,"column":3}},"162":{"start":{"line":348,"column":4},"end":{"line":348,"column":10}},"163":{"start":{"line":349,"column":9},"end":{"line":380,"column":3}},"164":{"start":{"line":350,"column":4},"end":{"line":352,"column":5}},"165":{"start":{"line":350,"column":17},"end":{"line":350,"column":18}},"166":{"start":{"line":351,"column":6},"end":{"line":351,"column":null}},"167":{"start":{"line":353,"column":9},"end":{"line":380,"column":3}},"168":{"start":{"line":354,"column":17},"end":{"line":354,"column":31}},"169":{"start":{"line":355,"column":4},"end":{"line":379,"column":5}},"170":{"start":{"line":356,"column":21},"end":{"line":356,"column":40}},"171":{"start":{"line":357,"column":23},"end":{"line":357,"column":37}},"172":{"start":{"line":358,"column":6},"end":{"line":360,"column":7}},"173":{"start":{"line":359,"column":8},"end":{"line":359,"column":null}},"174":{"start":{"line":361,"column":6},"end":{"line":363,"column":7}},"175":{"start":{"line":362,"column":8},"end":{"line":362,"column":null}},"176":{"start":{"line":364,"column":6},"end":{"line":366,"column":7}},"177":{"start":{"line":365,"column":8},"end":{"line":365,"column":null}},"178":{"start":{"line":367,"column":21},"end":{"line":367,"column":37}},"179":{"start":{"line":368,"column":6},"end":{"line":378,"column":7}},"180":{"start":{"line":369,"column":26},"end":{"line":369,"column":49}},"181":{"start":{"line":370,"column":26},"end":{"line":370,"column":39}},"182":{"start":{"line":371,"column":8},"end":{"line":373,"column":9}},"183":{"start":{"line":372,"column":10},"end":{"line":372,"column":null}},"184":{"start":{"line":374,"column":26},"end":{"line":374,"column":39}},"185":{"start":{"line":375,"column":8},"end":{"line":377,"column":9}},"186":{"start":{"line":376,"column":10},"end":{"line":376,"column":null}},"187":{"start":{"line":384,"column":16},"end":{"line":384,"column":42}},"188":{"start":{"line":385,"column":2},"end":{"line":385,"column":null}}},"fnMap":{"0":{"name":"(anonymous_7)","decl":{"start":{"line":37,"column":2},"end":{"line":37,"column":14}},"loc":{"start":{"line":37,"column":78},"end":{"line":46,"column":3}}},"1":{"name":"(anonymous_8)","decl":{"start":{"line":40,"column":28},"end":{"line":40,"column":33}},"loc":{"start":{"line":40,"column":97},"end":{"line":42,"column":5}}},"2":{"name":"(anonymous_9)","decl":{"start":{"line":48,"column":2},"end":{"line":48,"column":7}},"loc":{"start":{"line":48,"column":41},"end":{"line":69,"column":3}}},"3":{"name":"(anonymous_10)","decl":{"start":{"line":71,"column":2},"end":{"line":71,"column":7}},"loc":{"start":{"line":71,"column":81},"end":{"line":74,"column":3}}},"4":{"name":"(anonymous_11)","decl":{"start":{"line":76,"column":2},"end":{"line":76,"column":7}},"loc":{"start":{"line":76,"column":31},"end":{"line":82,"column":3}}},"5":{"name":"(anonymous_12)","decl":{"start":{"line":77,"column":80},"end":{"line":77,"column":85}},"loc":{"start":{"line":77,"column":103},"end":{"line":81,"column":5}}},"6":{"name":"(anonymous_13)","decl":{"start":{"line":90,"column":2},"end":{"line":90,"column":14}},"loc":{"start":{"line":90,"column":80},"end":{"line":99,"column":3}}},"7":{"name":"(anonymous_14)","decl":{"start":{"line":93,"column":28},"end":{"line":93,"column":33}},"loc":{"start":{"line":93,"column":97},"end":{"line":95,"column":5}}},"8":{"name":"(anonymous_15)","decl":{"start":{"line":101,"column":2},"end":{"line":101,"column":7}},"loc":{"start":{"line":101,"column":50},"end":{"line":144,"column":3}}},"9":{"name":"(anonymous_16)","decl":{"start":{"line":146,"column":2},"end":{"line":146,"column":7}},"loc":{"start":{"line":146,"column":81},"end":{"line":149,"column":3}}},"10":{"name":"(anonymous_17)","decl":{"start":{"line":151,"column":2},"end":{"line":151,"column":7}},"loc":{"start":{"line":151,"column":31},"end":{"line":157,"column":3}}},"11":{"name":"(anonymous_18)","decl":{"start":{"line":152,"column":80},"end":{"line":152,"column":85}},"loc":{"start":{"line":152,"column":103},"end":{"line":156,"column":5}}},"12":{"name":"toType","decl":{"start":{"line":160,"column":15},"end":{"line":160,"column":21}},"loc":{"start":{"line":165,"column":26},"end":{"line":194,"column":1}}},"13":{"name":"(anonymous_20)","decl":{"start":{"line":174,"column":31},"end":{"line":174,"column":32}},"loc":{"start":{"line":174,"column":78},"end":{"line":185,"column":3}}},"14":{"name":"(anonymous_21)","decl":{"start":{"line":174,"column":78},"end":{"line":174,"column":null}},"loc":{"start":{"line":177,"column":6},"end":{"line":185,"column":3}}},"15":{"name":"(anonymous_22)","decl":{"start":{"line":178,"column":17},"end":{"line":178,"column":18}},"loc":{"start":{"line":178,"column":35},"end":{"line":180,"column":5}}},"16":{"name":"transform","decl":{"start":{"line":196,"column":15},"end":{"line":196,"column":24}},"loc":{"start":{"line":196,"column":97},"end":{"line":239,"column":1}}},"17":{"name":"(anonymous_24)","decl":{"start":{"line":215,"column":41},"end":{"line":215,"column":45}},"loc":{"start":{"line":215,"column":49},"end":{"line":215,"column":108}}},"18":{"name":"transformField","decl":{"start":{"line":241,"column":15},"end":{"line":241,"column":29}},"loc":{"start":{"line":247,"column":32},"end":{"line":269,"column":1}}},"19":{"name":"getType","decl":{"start":{"line":271,"column":9},"end":{"line":271,"column":16}},"loc":{"start":{"line":271,"column":29},"end":{"line":306,"column":1}}},"20":{"name":"disjoint","decl":{"start":{"line":308,"column":9},"end":{"line":308,"column":17}},"loc":{"start":{"line":308,"column":56},"end":{"line":315,"column":1}}},"21":{"name":"resolveUnion","decl":{"start":{"line":317,"column":9},"end":{"line":317,"column":21}},"loc":{"start":{"line":317,"column":44},"end":{"line":334,"column":1}}},"22":{"name":"getInlineTags","decl":{"start":{"line":336,"column":9},"end":{"line":336,"column":22}},"loc":{"start":{"line":336,"column":66},"end":{"line":343,"column":1}}},"23":{"name":"getInlineTagsRecursively","decl":{"start":{"line":346,"column":9},"end":{"line":346,"column":33}},"loc":{"start":{"line":346,"column":103},"end":{"line":381,"column":1}}},"24":{"name":"impliedNamespace","decl":{"start":{"line":383,"column":9},"end":{"line":383,"column":25}},"loc":{"start":{"line":383,"column":38},"end":{"line":386,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":39,"column":86},"end":{"line":39,"column":117}},"type":"binary-expr","locations":[{"start":{"line":39,"column":86},"end":{"line":39,"column":109}},{"start":{"line":39,"column":113},"end":{"line":39,"column":117}}]},"1":{"loc":{"start":{"line":44,"column":77},"end":{"line":44,"column":98}},"type":"binary-expr","locations":[{"start":{"line":44,"column":77},"end":{"line":44,"column":92}},{"start":{"line":44,"column":96},"end":{"line":44,"column":98}}]},"2":{"loc":{"start":{"line":49,"column":4},"end":{"line":51,"column":5}},"type":"if","locations":[{"start":{"line":49,"column":4},"end":{"line":51,"column":5}}]},"3":{"loc":{"start":{"line":52,"column":4},"end":{"line":54,"column":5}},"type":"if","locations":[{"start":{"line":52,"column":4},"end":{"line":54,"column":5}}]},"4":{"loc":{"start":{"line":92,"column":86},"end":{"line":92,"column":117}},"type":"binary-expr","locations":[{"start":{"line":92,"column":86},"end":{"line":92,"column":109}},{"start":{"line":92,"column":113},"end":{"line":92,"column":117}}]},"5":{"loc":{"start":{"line":97,"column":77},"end":{"line":97,"column":98}},"type":"binary-expr","locations":[{"start":{"line":97,"column":77},"end":{"line":97,"column":92}},{"start":{"line":97,"column":96},"end":{"line":97,"column":98}}]},"6":{"loc":{"start":{"line":102,"column":4},"end":{"line":104,"column":5}},"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":104,"column":5}}]},"7":{"loc":{"start":{"line":105,"column":4},"end":{"line":107,"column":5}},"type":"if","locations":[{"start":{"line":105,"column":4},"end":{"line":107,"column":5}}]},"8":{"loc":{"start":{"line":113,"column":4},"end":{"line":115,"column":5}},"type":"if","locations":[{"start":{"line":113,"column":4},"end":{"line":115,"column":5}}]},"9":{"loc":{"start":{"line":120,"column":4},"end":{"line":134,"column":5}},"type":"if","locations":[{"start":{"line":120,"column":4},"end":{"line":134,"column":5}},{"start":{"line":123,"column":11},"end":{"line":134,"column":5}}]},"10":{"loc":{"start":{"line":124,"column":6},"end":{"line":133,"column":7}},"type":"if","locations":[{"start":{"line":124,"column":6},"end":{"line":133,"column":7}},{"start":{"line":131,"column":13},"end":{"line":133,"column":7}}]},"11":{"loc":{"start":{"line":126,"column":8},"end":{"line":130,"column":9}},"type":"if","locations":[{"start":{"line":126,"column":8},"end":{"line":130,"column":9}},{"start":{"line":128,"column":15},"end":{"line":130,"column":9}}]},"12":{"loc":{"start":{"line":136,"column":4},"end":{"line":140,"column":5}},"type":"if","locations":[{"start":{"line":136,"column":4},"end":{"line":140,"column":5}},{"start":{"line":138,"column":11},"end":{"line":140,"column":5}}]},"13":{"loc":{"start":{"line":168,"column":2},"end":{"line":170,"column":3}},"type":"if","locations":[{"start":{"line":168,"column":2},"end":{"line":170,"column":3}}]},"14":{"loc":{"start":{"line":181,"column":4},"end":{"line":183,"column":5}},"type":"if","locations":[{"start":{"line":181,"column":4},"end":{"line":183,"column":5}}]},"15":{"loc":{"start":{"line":197,"column":2},"end":{"line":199,"column":3}},"type":"if","locations":[{"start":{"line":197,"column":2},"end":{"line":199,"column":3}}]},"16":{"loc":{"start":{"line":197,"column":6},"end":{"line":197,"column":35}},"type":"binary-expr","locations":[{"start":{"line":197,"column":6},"end":{"line":197,"column":17}},{"start":{"line":197,"column":21},"end":{"line":197,"column":35}}]},"17":{"loc":{"start":{"line":201,"column":2},"end":{"line":203,"column":3}},"type":"if","locations":[{"start":{"line":201,"column":2},"end":{"line":203,"column":3}}]},"18":{"loc":{"start":{"line":204,"column":2},"end":{"line":238,"column":3}},"type":"switch","locations":[{"start":{"line":205,"column":4},"end":{"line":205,"column":27}},{"start":{"line":206,"column":4},"end":{"line":211,"column":null}},{"start":{"line":212,"column":4},"end":{"line":215,"column":null}},{"start":{"line":216,"column":4},"end":{"line":222,"column":null}},{"start":{"line":223,"column":4},"end":{"line":229,"column":null}},{"start":{"line":230,"column":4},"end":{"line":237,"column":null}}]},"19":{"loc":{"start":{"line":208,"column":6},"end":{"line":210,"column":7}},"type":"if","locations":[{"start":{"line":208,"column":6},"end":{"line":210,"column":7}}]},"20":{"loc":{"start":{"line":231,"column":6},"end":{"line":236,"column":7}},"type":"if","locations":[{"start":{"line":231,"column":6},"end":{"line":236,"column":7}}]},"21":{"loc":{"start":{"line":232,"column":25},"end":{"line":232,"column":44}},"type":"binary-expr","locations":[{"start":{"line":232,"column":25},"end":{"line":232,"column":38}},{"start":{"line":232,"column":42},"end":{"line":232,"column":44}}]},"22":{"loc":{"start":{"line":233,"column":8},"end":{"line":235,"column":9}},"type":"if","locations":[{"start":{"line":233,"column":8},"end":{"line":235,"column":9}}]},"23":{"loc":{"start":{"line":233,"column":12},"end":{"line":233,"column":108}},"type":"binary-expr","locations":[{"start":{"line":233,"column":12},"end":{"line":233,"column":28}},{"start":{"line":233,"column":32},"end":{"line":233,"column":53}},{"start":{"line":233,"column":57},"end":{"line":233,"column":108}}]},"24":{"loc":{"start":{"line":259,"column":4},"end":{"line":265,"column":5}},"type":"if","locations":[{"start":{"line":259,"column":4},"end":{"line":265,"column":5}},{"start":{"line":263,"column":11},"end":{"line":265,"column":5}}]},"25":{"loc":{"start":{"line":260,"column":6},"end":{"line":262,"column":7}},"type":"if","locations":[{"start":{"line":260,"column":6},"end":{"line":262,"column":7}}]},"26":{"loc":{"start":{"line":272,"column":2},"end":{"line":305,"column":3}},"type":"switch","locations":[{"start":{"line":273,"column":4},"end":{"line":274,"column":null}},{"start":{"line":275,"column":4},"end":{"line":276,"column":null}},{"start":{"line":277,"column":4},"end":{"line":278,"column":null}},{"start":{"line":279,"column":4},"end":{"line":280,"column":null}},{"start":{"line":281,"column":4},"end":{"line":281,"column":27}},{"start":{"line":282,"column":4},"end":{"line":283,"column":null}},{"start":{"line":284,"column":4},"end":{"line":285,"column":null}},{"start":{"line":286,"column":4},"end":{"line":287,"column":null}},{"start":{"line":288,"column":4},"end":{"line":289,"column":null}},{"start":{"line":290,"column":4},"end":{"line":291,"column":null}},{"start":{"line":292,"column":4},"end":{"line":292,"column":25}},{"start":{"line":293,"column":4},"end":{"line":294,"column":null}},{"start":{"line":295,"column":4},"end":{"line":296,"column":null}},{"start":{"line":297,"column":4},"end":{"line":298,"column":null}},{"start":{"line":299,"column":4},"end":{"line":300,"column":null}},{"start":{"line":301,"column":4},"end":{"line":302,"column":null}},{"start":{"line":303,"column":4},"end":{"line":304,"column":null}}]},"27":{"loc":{"start":{"line":310,"column":4},"end":{"line":312,"column":5}},"type":"if","locations":[{"start":{"line":310,"column":4},"end":{"line":312,"column":5}}]},"28":{"loc":{"start":{"line":319,"column":2},"end":{"line":325,"column":3}},"type":"if","locations":[{"start":{"line":319,"column":2},"end":{"line":325,"column":3}},{"start":{"line":322,"column":9},"end":{"line":325,"column":3}}]},"29":{"loc":{"start":{"line":322,"column":9},"end":{"line":325,"column":3}},"type":"if","locations":[{"start":{"line":322,"column":9},"end":{"line":325,"column":3}}]},"30":{"loc":{"start":{"line":326,"column":2},"end":{"line":332,"column":3}},"type":"if","locations":[{"start":{"line":326,"column":2},"end":{"line":332,"column":3}}]},"31":{"loc":{"start":{"line":328,"column":6},"end":{"line":330,"column":7}},"type":"if","locations":[{"start":{"line":328,"column":6},"end":{"line":330,"column":7}}]},"32":{"loc":{"start":{"line":347,"column":2},"end":{"line":380,"column":3}},"type":"if","locations":[{"start":{"line":347,"column":2},"end":{"line":380,"column":3}},{"start":{"line":349,"column":9},"end":{"line":380,"column":3}}]},"33":{"loc":{"start":{"line":347,"column":6},"end":{"line":347,"column":50}},"type":"binary-expr","locations":[{"start":{"line":347,"column":6},"end":{"line":347,"column":20}},{"start":{"line":347,"column":24},"end":{"line":347,"column":50}}]},"34":{"loc":{"start":{"line":349,"column":9},"end":{"line":380,"column":3}},"type":"if","locations":[{"start":{"line":349,"column":9},"end":{"line":380,"column":3}},{"start":{"line":353,"column":9},"end":{"line":380,"column":3}}]},"35":{"loc":{"start":{"line":353,"column":9},"end":{"line":380,"column":3}},"type":"if","locations":[{"start":{"line":353,"column":9},"end":{"line":380,"column":3}}]},"36":{"loc":{"start":{"line":355,"column":4},"end":{"line":379,"column":5}},"type":"if","locations":[{"start":{"line":355,"column":4},"end":{"line":379,"column":5}}]},"37":{"loc":{"start":{"line":358,"column":6},"end":{"line":360,"column":7}},"type":"if","locations":[{"start":{"line":358,"column":6},"end":{"line":360,"column":7}}]},"38":{"loc":{"start":{"line":361,"column":6},"end":{"line":363,"column":7}},"type":"if","locations":[{"start":{"line":361,"column":6},"end":{"line":363,"column":7}}]},"39":{"loc":{"start":{"line":364,"column":6},"end":{"line":366,"column":7}},"type":"if","locations":[{"start":{"line":364,"column":6},"end":{"line":366,"column":7}}]},"40":{"loc":{"start":{"line":364,"column":10},"end":{"line":364,"column":61}},"type":"binary-expr","locations":[{"start":{"line":364,"column":10},"end":{"line":364,"column":25}},{"start":{"line":364,"column":29},"end":{"line":364,"column":61}}]},"41":{"loc":{"start":{"line":371,"column":8},"end":{"line":373,"column":9}},"type":"if","locations":[{"start":{"line":371,"column":8},"end":{"line":373,"column":9}}]},"42":{"loc":{"start":{"line":371,"column":12},"end":{"line":371,"column":62}},"type":"binary-expr","locations":[{"start":{"line":371,"column":12},"end":{"line":371,"column":35}},{"start":{"line":371,"column":39},"end":{"line":371,"column":62}}]},"43":{"loc":{"start":{"line":375,"column":8},"end":{"line":377,"column":9}},"type":"if","locations":[{"start":{"line":375,"column":8},"end":{"line":377,"column":9}}]},"44":{"loc":{"start":{"line":385,"column":9},"end":{"line":385,"column":32}},"type":"cond-expr","locations":[{"start":{"line":385,"column":17},"end":{"line":385,"column":25}},{"start":{"line":385,"column":28},"end":{"line":385,"column":32}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":2,"7":2,"8":2,"9":1,"10":2,"11":2,"12":2,"13":0,"14":2,"15":0,"16":2,"17":2,"18":2,"19":2,"20":2,"21":2,"22":2,"23":2,"24":1,"25":1,"26":3,"27":2,"28":2,"29":2,"30":1,"31":5,"32":5,"33":5,"34":4,"35":5,"36":5,"37":5,"38":0,"39":5,"40":0,"41":5,"42":5,"43":5,"44":5,"45":5,"46":0,"47":5,"48":5,"49":5,"50":0,"51":0,"52":5,"53":0,"54":0,"55":0,"56":0,"57":5,"58":5,"59":0,"60":5,"61":5,"62":5,"63":4,"64":4,"65":9,"66":5,"67":5,"68":5,"69":1,"70":12,"71":12,"72":5,"73":7,"74":7,"75":7,"76":53,"77":0,"78":53,"79":0,"80":53,"81":7,"82":7,"83":7,"84":7,"85":18,"86":0,"87":18,"88":18,"89":13,"90":18,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":5,"105":5,"106":5,"107":13,"108":5,"109":13,"110":13,"111":13,"112":7,"113":6,"114":13,"115":13,"116":13,"117":13,"118":13,"119":0,"120":0,"121":13,"122":13,"123":26,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":10,"131":4,"132":4,"133":0,"134":0,"135":4,"136":4,"137":0,"138":0,"139":13,"140":13,"141":7,"142":6,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":7,"157":7,"158":7,"159":0,"160":7,"161":30,"162":23,"163":7,"164":0,"165":0,"166":0,"167":7,"168":7,"169":7,"170":7,"171":7,"172":7,"173":7,"174":7,"175":7,"176":7,"177":0,"178":7,"179":7,"180":23,"181":23,"182":23,"183":7,"184":23,"185":23,"186":23,"187":7,"188":7},"f":{"0":2,"1":1,"2":2,"3":1,"4":3,"5":2,"6":5,"7":4,"8":5,"9":4,"10":9,"11":5,"12":12,"13":7,"14":53,"15":0,"16":18,"17":0,"18":13,"19":26,"20":13,"21":0,"22":7,"23":30,"24":7},"b":{"0":[2,2],"1":[2,1],"2":[0],"3":[0],"4":[5,5],"5":[5,1],"6":[0],"7":[0],"8":[0],"9":[0,5],"10":[0,5],"11":[0,0],"12":[0,5],"13":[5],"14":[0],"15":[0],"16":[18,18],"17":[13],"18":[0,0,0,0,5,13],"19":[0],"20":[13],"21":[13,0],"22":[7],"23":[13,13,13],"24":[0,13],"25":[0],"26":[0,0,0,0,0,0,0,10,4,4,0,0,0,4,4,0,0],"27":[7],"28":[0,0],"29":[0],"30":[0],"31":[0],"32":[23,7],"33":[30,30],"34":[0,7],"35":[7],"36":[7],"37":[7],"38":[7],"39":[0],"40":[7,0],"41":[7],"42":[23,7],"43":[23],"44":[0,7]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/buffer-wrapper.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/buffer-wrapper.ts","statementMap":{"0":{"start":{"line":1,"column":13},"end":{"line":1,"column":null}},"1":{"start":{"line":2,"column":13},"end":{"line":2,"column":null}},"2":{"start":{"line":3,"column":13},"end":{"line":3,"column":null}},"3":{"start":{"line":10,"column":4},"end":{"line":10,"column":null}},"4":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"5":{"start":{"line":18,"column":4},"end":{"line":32,"column":5}},"6":{"start":{"line":20,"column":6},"end":{"line":20,"column":null}},"7":{"start":{"line":21,"column":6},"end":{"line":24,"column":51}},"8":{"start":{"line":22,"column":8},"end":{"line":22,"column":null}},"9":{"start":{"line":23,"column":8},"end":{"line":23,"column":null}},"10":{"start":{"line":27,"column":6},"end":{"line":27,"column":null}},"11":{"start":{"line":28,"column":6},"end":{"line":31,"column":56}},"12":{"start":{"line":29,"column":8},"end":{"line":29,"column":null}},"13":{"start":{"line":30,"column":8},"end":{"line":30,"column":null}},"14":{"start":{"line":33,"column":4},"end":{"line":33,"column":null}},"15":{"start":{"line":38,"column":12},"end":{"line":38,"column":13}},"16":{"start":{"line":39,"column":12},"end":{"line":39,"column":13}},"17":{"start":{"line":42,"column":4},"end":{"line":47,"column":25}},"18":{"start":{"line":43,"column":6},"end":{"line":43,"column":null}},"19":{"start":{"line":44,"column":6},"end":{"line":44,"column":null}},"20":{"start":{"line":45,"column":6},"end":{"line":45,"column":null}},"21":{"start":{"line":46,"column":6},"end":{"line":46,"column":null}},"22":{"start":{"line":49,"column":4},"end":{"line":59,"column":5}},"23":{"start":{"line":51,"column":6},"end":{"line":51,"column":null}},"24":{"start":{"line":52,"column":6},"end":{"line":52,"column":21}},"25":{"start":{"line":53,"column":6},"end":{"line":57,"column":24}},"26":{"start":{"line":54,"column":8},"end":{"line":54,"column":null}},"27":{"start":{"line":55,"column":8},"end":{"line":55,"column":null}},"28":{"start":{"line":56,"column":8},"end":{"line":56,"column":null}},"29":{"start":{"line":58,"column":6},"end":{"line":58,"column":null}},"30":{"start":{"line":61,"column":4},"end":{"line":61,"column":null}},"31":{"start":{"line":5,"column":0},"end":{"line":5,"column":13}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":14}},"loc":{"start":{"line":9,"column":25},"end":{"line":12,"column":3}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":13}},"loc":{"start":{"line":15,"column":23},"end":{"line":34,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":37,"column":2},"end":{"line":37,"column":12}},"loc":{"start":{"line":37,"column":12},"end":{"line":62,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":4},"end":{"line":32,"column":5}},"type":"if","locations":[{"start":{"line":18,"column":4},"end":{"line":32,"column":5}},{"start":{"line":25,"column":11},"end":{"line":32,"column":5}}]},"1":{"loc":{"start":{"line":18,"column":8},"end":{"line":18,"column":42}},"type":"binary-expr","locations":[{"start":{"line":18,"column":8},"end":{"line":18,"column":24}},{"start":{"line":18,"column":28},"end":{"line":18,"column":42}}]},"2":{"loc":{"start":{"line":20,"column":10},"end":{"line":20,"column":41}},"type":"cond-expr","locations":[{"start":{"line":20,"column":19},"end":{"line":20,"column":25}},{"start":{"line":20,"column":28},"end":{"line":20,"column":41}}]},"3":{"loc":{"start":{"line":24,"column":15},"end":{"line":24,"column":50}},"type":"binary-expr","locations":[{"start":{"line":24,"column":15},"end":{"line":24,"column":16}},{"start":{"line":24,"column":21},"end":{"line":24,"column":49}}]},"4":{"loc":{"start":{"line":27,"column":10},"end":{"line":27,"column":37}},"type":"cond-expr","locations":[{"start":{"line":27,"column":19},"end":{"line":27,"column":24}},{"start":{"line":27,"column":27},"end":{"line":27,"column":37}}]},"5":{"loc":{"start":{"line":31,"column":15},"end":{"line":31,"column":55}},"type":"binary-expr","locations":[{"start":{"line":31,"column":15},"end":{"line":31,"column":21}},{"start":{"line":31,"column":26},"end":{"line":31,"column":54}}]},"6":{"loc":{"start":{"line":47,"column":13},"end":{"line":47,"column":24}},"type":"binary-expr","locations":[{"start":{"line":47,"column":13},"end":{"line":47,"column":14}},{"start":{"line":47,"column":18},"end":{"line":47,"column":24}}]},"7":{"loc":{"start":{"line":49,"column":4},"end":{"line":59,"column":5}},"type":"if","locations":[{"start":{"line":49,"column":4},"end":{"line":59,"column":5}}]},"8":{"loc":{"start":{"line":58,"column":14},"end":{"line":58,"column":34}},"type":"cond-expr","locations":[{"start":{"line":58,"column":22},"end":{"line":58,"column":30}},{"start":{"line":58,"column":33},"end":{"line":58,"column":34}}]}},"s":{"0":2,"1":2,"2":2,"3":10,"4":10,"5":7,"6":5,"7":5,"8":6,"9":6,"10":2,"11":2,"12":10,"13":10,"14":7,"15":7,"16":7,"17":7,"18":14,"19":14,"20":14,"21":14,"22":7,"23":2,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":5,"31":2},"f":{"0":10,"1":7,"2":7},"b":{"0":[5,2],"1":[7,6],"2":[5,0],"3":[6,1],"4":[1,1],"5":[10,8],"6":[14,9],"7":[2],"8":[1,1]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/json-util.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/json-util.ts","statementMap":{"0":{"start":{"line":17,"column":0},"end":{"line":17,"column":16}},"1":{"start":{"line":110,"column":0},"end":{"line":110,"column":16}},"2":{"start":{"line":8,"column":0},"end":{"line":8,"column":34}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":41}},"4":{"start":{"line":18,"column":2},"end":{"line":104,"column":3}},"5":{"start":{"line":24,"column":6},"end":{"line":24,"column":66}},"6":{"start":{"line":30,"column":6},"end":{"line":30,"column":30}},"7":{"start":{"line":36,"column":6},"end":{"line":36,"column":70}},"8":{"start":{"line":42,"column":6},"end":{"line":42,"column":33}},"9":{"start":{"line":48,"column":6},"end":{"line":53,"column":7}},"10":{"start":{"line":49,"column":8},"end":{"line":52,"column":10}},"11":{"start":{"line":55,"column":6},"end":{"line":57,"column":7}},"12":{"start":{"line":56,"column":8},"end":{"line":56,"column":50}},"13":{"start":{"line":59,"column":6},"end":{"line":61,"column":7}},"14":{"start":{"line":60,"column":8},"end":{"line":60,"column":51}},"15":{"start":{"line":63,"column":6},"end":{"line":63,"column":32}},"16":{"start":{"line":69,"column":6},"end":{"line":71,"column":7}},"17":{"start":{"line":70,"column":8},"end":{"line":70,"column":66}},"18":{"start":{"line":73,"column":6},"end":{"line":78,"column":7}},"19":{"start":{"line":74,"column":22},"end":{"line":74,"column":47}},"20":{"start":{"line":75,"column":8},"end":{"line":77,"column":9}},"21":{"start":{"line":76,"column":10},"end":{"line":76,"column":52}},"22":{"start":{"line":80,"column":6},"end":{"line":80,"column":31}},"23":{"start":{"line":86,"column":6},"end":{"line":88,"column":7}},"24":{"start":{"line":87,"column":8},"end":{"line":87,"column":34}},"25":{"start":{"line":90,"column":6},"end":{"line":99,"column":8}},"26":{"start":{"line":94,"column":12},"end":{"line":94,"column":53}},"27":{"start":{"line":95,"column":12},"end":{"line":95,"column":31}},"28":{"start":{"line":111,"column":2},"end":{"line":121,"column":3}},"29":{"start":{"line":112,"column":4},"end":{"line":117,"column":5}},"30":{"start":{"line":112,"column":21},"end":{"line":112,"column":22}},"31":{"start":{"line":112,"column":32},"end":{"line":112,"column":43}},"32":{"start":{"line":113,"column":6},"end":{"line":115,"column":7}},"33":{"start":{"line":114,"column":8},"end":{"line":114,"column":17}},"34":{"start":{"line":116,"column":6},"end":{"line":116,"column":52}},"35":{"start":{"line":118,"column":4},"end":{"line":118,"column":16}},"36":{"start":{"line":120,"column":4},"end":{"line":120,"column":17}}},"fnMap":{"0":{"name":"generateSchema","decl":{"start":{"line":17,"column":16},"end":{"line":17,"column":30}},"loc":{"start":{"line":17,"column":41},"end":{"line":105,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":93,"column":10},"end":{"line":93,"column":11}},"loc":{"start":{"line":93,"column":40},"end":{"line":96,"column":11}}},"2":{"name":"deepEqual","decl":{"start":{"line":110,"column":16},"end":{"line":110,"column":25}},"loc":{"start":{"line":110,"column":44},"end":{"line":122,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":2},"end":{"line":104,"column":3}},"type":"switch","locations":[{"start":{"line":19,"column":4},"end":{"line":19,"column":29}},{"start":{"line":20,"column":4},"end":{"line":20,"column":38}},{"start":{"line":21,"column":4},"end":{"line":21,"column":37}},{"start":{"line":22,"column":4},"end":{"line":22,"column":35}},{"start":{"line":23,"column":4},"end":{"line":24,"column":66}},{"start":{"line":29,"column":4},"end":{"line":30,"column":30}},{"start":{"line":35,"column":4},"end":{"line":36,"column":70}},{"start":{"line":41,"column":4},"end":{"line":42,"column":33}},{"start":{"line":47,"column":4},"end":{"line":63,"column":32}},{"start":{"line":68,"column":4},"end":{"line":80,"column":31}},{"start":{"line":85,"column":4},"end":{"line":99,"column":8}}]},"1":{"loc":{"start":{"line":36,"column":21},"end":{"line":36,"column":67}},"type":"cond-expr","locations":[{"start":{"line":36,"column":47},"end":{"line":36,"column":56}},{"start":{"line":36,"column":59},"end":{"line":36,"column":67}}]},"2":{"loc":{"start":{"line":48,"column":6},"end":{"line":53,"column":7}},"type":"if","locations":[{"start":{"line":48,"column":6},"end":{"line":53,"column":7}}]},"3":{"loc":{"start":{"line":51,"column":18},"end":{"line":51,"column":60}},"type":"cond-expr","locations":[{"start":{"line":51,"column":40},"end":{"line":51,"column":51}},{"start":{"line":51,"column":54},"end":{"line":51,"column":60}}]},"4":{"loc":{"start":{"line":55,"column":6},"end":{"line":57,"column":7}},"type":"if","locations":[{"start":{"line":55,"column":6},"end":{"line":57,"column":7}}]},"5":{"loc":{"start":{"line":59,"column":6},"end":{"line":61,"column":7}},"type":"if","locations":[{"start":{"line":59,"column":6},"end":{"line":61,"column":7}}]},"6":{"loc":{"start":{"line":69,"column":6},"end":{"line":71,"column":7}},"type":"if","locations":[{"start":{"line":69,"column":6},"end":{"line":71,"column":7}}]},"7":{"loc":{"start":{"line":73,"column":6},"end":{"line":78,"column":7}},"type":"if","locations":[{"start":{"line":73,"column":6},"end":{"line":78,"column":7}}]},"8":{"loc":{"start":{"line":75,"column":8},"end":{"line":77,"column":9}},"type":"if","locations":[{"start":{"line":75,"column":8},"end":{"line":77,"column":9}}]},"9":{"loc":{"start":{"line":86,"column":6},"end":{"line":88,"column":7}},"type":"if","locations":[{"start":{"line":86,"column":6},"end":{"line":88,"column":7}}]},"10":{"loc":{"start":{"line":113,"column":6},"end":{"line":115,"column":7}},"type":"if","locations":[{"start":{"line":113,"column":6},"end":{"line":115,"column":7}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":12,"5":0,"6":0,"7":4,"8":2,"9":4,"10":0,"11":4,"12":0,"13":4,"14":0,"15":4,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":2,"24":0,"25":2,"26":10,"27":10,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0},"f":{"0":12,"1":10,"2":0},"b":{"0":[0,0,0,0,0,0,4,2,4,0,2],"1":[2,2],"2":[0],"3":[0,0],"4":[0],"5":[0],"6":[0],"7":[0],"8":[0],"9":[0],"10":[0]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/json.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/json.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":null}},"1":{"start":{"line":9,"column":0},"end":{"line":9,"column":null}},"2":{"start":{"line":14,"column":0},"end":{"line":14,"column":36}},"3":{"start":{"line":15,"column":0},"end":{"line":15,"column":36}},"4":{"start":{"line":16,"column":0},"end":{"line":16,"column":75}},"5":{"start":{"line":17,"column":0},"end":{"line":17,"column":75}},"6":{"start":{"line":22,"column":0},"end":{"line":22,"column":null}},"7":{"start":{"line":25,"column":0},"end":{"line":25,"column":null}},"8":{"start":{"line":28,"column":0},"end":{"line":28,"column":63}},"9":{"start":{"line":29,"column":0},"end":{"line":29,"column":37}},"10":{"start":{"line":30,"column":0},"end":{"line":30,"column":45}},"11":{"start":{"line":31,"column":0},"end":{"line":31,"column":49}},"12":{"start":{"line":32,"column":0},"end":{"line":32,"column":53}},"13":{"start":{"line":57,"column":4},"end":{"line":57,"column":null}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":null}},"15":{"start":{"line":59,"column":4},"end":{"line":59,"column":null}},"16":{"start":{"line":60,"column":4},"end":{"line":62,"column":null}},"17":{"start":{"line":61,"column":6},"end":{"line":61,"column":null}},"18":{"start":{"line":63,"column":4},"end":{"line":65,"column":5}},"19":{"start":{"line":64,"column":6},"end":{"line":64,"column":null}},"20":{"start":{"line":69,"column":4},"end":{"line":71,"column":5}},"21":{"start":{"line":70,"column":6},"end":{"line":70,"column":null}},"22":{"start":{"line":72,"column":4},"end":{"line":74,"column":5}},"23":{"start":{"line":73,"column":6},"end":{"line":73,"column":null}},"24":{"start":{"line":76,"column":23},"end":{"line":76,"column":42}},"25":{"start":{"line":77,"column":31},"end":{"line":80,"column":null}},"26":{"start":{"line":81,"column":23},"end":{"line":81,"column":59}},"27":{"start":{"line":82,"column":20},"end":{"line":82,"column":49}},"28":{"start":{"line":83,"column":4},"end":{"line":83,"column":null}},"29":{"start":{"line":84,"column":21},"end":{"line":84,"column":53}},"30":{"start":{"line":85,"column":4},"end":{"line":90,"column":5}},"31":{"start":{"line":86,"column":23},"end":{"line":86,"column":58}},"32":{"start":{"line":87,"column":6},"end":{"line":89,"column":7}},"33":{"start":{"line":88,"column":8},"end":{"line":88,"column":null}},"34":{"start":{"line":91,"column":4},"end":{"line":91,"column":null}},"35":{"start":{"line":95,"column":19},"end":{"line":95,"column":42}},"36":{"start":{"line":96,"column":4},"end":{"line":98,"column":5}},"37":{"start":{"line":97,"column":6},"end":{"line":97,"column":null}},"38":{"start":{"line":99,"column":4},"end":{"line":99,"column":null}},"39":{"start":{"line":103,"column":4},"end":{"line":107,"column":null}},"40":{"start":{"line":104,"column":19},"end":{"line":104,"column":44}},"41":{"start":{"line":105,"column":6},"end":{"line":105,"column":null}},"42":{"start":{"line":106,"column":6},"end":{"line":106,"column":null}},"43":{"start":{"line":111,"column":4},"end":{"line":116,"column":null}},"44":{"start":{"line":112,"column":21},"end":{"line":112,"column":46}},"45":{"start":{"line":113,"column":8},"end":{"line":113,"column":null}},"46":{"start":{"line":114,"column":8},"end":{"line":114,"column":null}},"47":{"start":{"line":52,"column":0},"end":{"line":52,"column":13}},"48":{"start":{"line":127,"column":4},"end":{"line":127,"column":null}},"49":{"start":{"line":128,"column":4},"end":{"line":128,"column":null}},"50":{"start":{"line":129,"column":4},"end":{"line":129,"column":null}},"51":{"start":{"line":130,"column":4},"end":{"line":132,"column":null}},"52":{"start":{"line":131,"column":6},"end":{"line":131,"column":null}},"53":{"start":{"line":133,"column":4},"end":{"line":135,"column":5}},"54":{"start":{"line":134,"column":6},"end":{"line":134,"column":null}},"55":{"start":{"line":139,"column":4},"end":{"line":141,"column":5}},"56":{"start":{"line":140,"column":6},"end":{"line":140,"column":null}},"57":{"start":{"line":142,"column":4},"end":{"line":144,"column":5}},"58":{"start":{"line":143,"column":6},"end":{"line":143,"column":null}},"59":{"start":{"line":146,"column":17},"end":{"line":146,"column":53}},"60":{"start":{"line":147,"column":4},"end":{"line":153,"column":5}},"61":{"start":{"line":148,"column":23},"end":{"line":148,"column":58}},"62":{"start":{"line":149,"column":6},"end":{"line":151,"column":7}},"63":{"start":{"line":150,"column":8},"end":{"line":150,"column":null}},"64":{"start":{"line":154,"column":20},"end":{"line":154,"column":49}},"65":{"start":{"line":155,"column":23},"end":{"line":155,"column":58}},"66":{"start":{"line":156,"column":34},"end":{"line":156,"column":36}},"67":{"start":{"line":157,"column":4},"end":{"line":159,"column":5}},"68":{"start":{"line":158,"column":6},"end":{"line":158,"column":null}},"69":{"start":{"line":160,"column":21},"end":{"line":160,"column":40}},"70":{"start":{"line":161,"column":14},"end":{"line":161,"column":45}},"71":{"start":{"line":162,"column":4},"end":{"line":164,"column":5}},"72":{"start":{"line":163,"column":6},"end":{"line":163,"column":null}},"73":{"start":{"line":166,"column":4},"end":{"line":170,"column":5}},"74":{"start":{"line":167,"column":6},"end":{"line":167,"column":null}},"75":{"start":{"line":169,"column":6},"end":{"line":169,"column":null}},"76":{"start":{"line":171,"column":4},"end":{"line":171,"column":null}},"77":{"start":{"line":172,"column":4},"end":{"line":172,"column":null}},"78":{"start":{"line":176,"column":19},"end":{"line":176,"column":42}},"79":{"start":{"line":177,"column":4},"end":{"line":177,"column":null}},"80":{"start":{"line":181,"column":4},"end":{"line":185,"column":null}},"81":{"start":{"line":182,"column":19},"end":{"line":182,"column":44}},"82":{"start":{"line":183,"column":6},"end":{"line":183,"column":null}},"83":{"start":{"line":184,"column":6},"end":{"line":184,"column":null}},"84":{"start":{"line":189,"column":4},"end":{"line":194,"column":null}},"85":{"start":{"line":190,"column":21},"end":{"line":190,"column":46}},"86":{"start":{"line":191,"column":8},"end":{"line":191,"column":null}},"87":{"start":{"line":192,"column":8},"end":{"line":192,"column":null}},"88":{"start":{"line":122,"column":0},"end":{"line":122,"column":13}},"89":{"start":{"line":205,"column":11},"end":{"line":205,"column":66}},"90":{"start":{"line":206,"column":2},"end":{"line":208,"column":3}},"91":{"start":{"line":207,"column":4},"end":{"line":207,"column":null}},"92":{"start":{"line":210,"column":15},"end":{"line":210,"column":46}},"93":{"start":{"line":212,"column":15},"end":{"line":212,"column":38}},"94":{"start":{"line":213,"column":15},"end":{"line":213,"column":27}},"95":{"start":{"line":214,"column":2},"end":{"line":228,"column":3}},"96":{"start":{"line":215,"column":20},"end":{"line":215,"column":56}},"97":{"start":{"line":216,"column":4},"end":{"line":218,"column":null}},"98":{"start":{"line":217,"column":6},"end":{"line":217,"column":null}},"99":{"start":{"line":219,"column":4},"end":{"line":219,"column":null}},"100":{"start":{"line":221,"column":16},"end":{"line":221,"column":52}},"101":{"start":{"line":222,"column":4},"end":{"line":222,"column":null}},"102":{"start":{"line":223,"column":4},"end":{"line":223,"column":null}},"103":{"start":{"line":224,"column":4},"end":{"line":226,"column":null}},"104":{"start":{"line":225,"column":6},"end":{"line":225,"column":null}},"105":{"start":{"line":227,"column":4},"end":{"line":227,"column":null}},"106":{"start":{"line":229,"column":2},"end":{"line":229,"column":null}},"107":{"start":{"line":230,"column":2},"end":{"line":230,"column":null}},"108":{"start":{"line":240,"column":13},"end":{"line":240,"column":64}},"109":{"start":{"line":241,"column":2},"end":{"line":243,"column":3}},"110":{"start":{"line":242,"column":4},"end":{"line":242,"column":null}},"111":{"start":{"line":245,"column":15},"end":{"line":245,"column":46}},"112":{"start":{"line":247,"column":19},"end":{"line":253,"column":3}},"113":{"start":{"line":248,"column":17},"end":{"line":248,"column":30}},"114":{"start":{"line":249,"column":4},"end":{"line":251,"column":5}},"115":{"start":{"line":250,"column":6},"end":{"line":250,"column":null}},"116":{"start":{"line":252,"column":4},"end":{"line":252,"column":null}},"117":{"start":{"line":255,"column":15},"end":{"line":255,"column":38}},"118":{"start":{"line":256,"column":15},"end":{"line":256,"column":27}},"119":{"start":{"line":258,"column":2},"end":{"line":262,"column":3}},"120":{"start":{"line":259,"column":4},"end":{"line":259,"column":null}},"121":{"start":{"line":261,"column":4},"end":{"line":261,"column":null}},"122":{"start":{"line":263,"column":2},"end":{"line":263,"column":null}},"123":{"start":{"line":264,"column":2},"end":{"line":264,"column":null}},"124":{"start":{"line":268,"column":2},"end":{"line":270,"column":3}},"125":{"start":{"line":269,"column":4},"end":{"line":269,"column":null}},"126":{"start":{"line":271,"column":17},"end":{"line":271,"column":35}},"127":{"start":{"line":272,"column":2},"end":{"line":274,"column":3}},"128":{"start":{"line":273,"column":4},"end":{"line":273,"column":null}},"129":{"start":{"line":275,"column":2},"end":{"line":280,"column":3}},"130":{"start":{"line":276,"column":20},"end":{"line":276,"column":57}},"131":{"start":{"line":277,"column":4},"end":{"line":279,"column":5}},"132":{"start":{"line":278,"column":6},"end":{"line":278,"column":null}},"133":{"start":{"line":281,"column":2},"end":{"line":286,"column":3}},"134":{"start":{"line":282,"column":20},"end":{"line":282,"column":57}},"135":{"start":{"line":283,"column":4},"end":{"line":285,"column":5}},"136":{"start":{"line":284,"column":6},"end":{"line":284,"column":null}},"137":{"start":{"line":287,"column":2},"end":{"line":292,"column":3}},"138":{"start":{"line":288,"column":20},"end":{"line":288,"column":57}},"139":{"start":{"line":289,"column":4},"end":{"line":291,"column":5}},"140":{"start":{"line":290,"column":6},"end":{"line":290,"column":null}},"141":{"start":{"line":293,"column":2},"end":{"line":299,"column":3}},"142":{"start":{"line":294,"column":4},"end":{"line":298,"column":5}},"143":{"start":{"line":295,"column":6},"end":{"line":297,"column":7}},"144":{"start":{"line":295,"column":19},"end":{"line":295,"column":20}},"145":{"start":{"line":296,"column":8},"end":{"line":296,"column":null}},"146":{"start":{"line":300,"column":2},"end":{"line":302,"column":3}},"147":{"start":{"line":301,"column":4},"end":{"line":301,"column":null}},"148":{"start":{"line":303,"column":13},"end":{"line":303,"column":28}},"149":{"start":{"line":304,"column":2},"end":{"line":324,"column":3}},"150":{"start":{"line":306,"column":6},"end":{"line":311,"column":7}},"151":{"start":{"line":307,"column":8},"end":{"line":310,"column":9}},"152":{"start":{"line":308,"column":22},"end":{"line":308,"column":35}},"153":{"start":{"line":309,"column":10},"end":{"line":309,"column":null}},"154":{"start":{"line":312,"column":6},"end":{"line":312,"column":null}},"155":{"start":{"line":318,"column":6},"end":{"line":323,"column":7}},"156":{"start":{"line":319,"column":25},"end":{"line":319,"column":38}},"157":{"start":{"line":320,"column":8},"end":{"line":322,"column":9}},"158":{"start":{"line":321,"column":10},"end":{"line":321,"column":null}},"159":{"start":{"line":326,"column":2},"end":{"line":326,"column":null}},"160":{"start":{"line":332,"column":19},"end":{"line":332,"column":40}},"161":{"start":{"line":333,"column":2},"end":{"line":345,"column":3}},"162":{"start":{"line":334,"column":4},"end":{"line":334,"column":null}},"163":{"start":{"line":335,"column":19},"end":{"line":335,"column":84}},"164":{"start":{"line":336,"column":4},"end":{"line":342,"column":5}},"165":{"start":{"line":337,"column":6},"end":{"line":339,"column":7}},"166":{"start":{"line":338,"column":8},"end":{"line":338,"column":null}},"167":{"start":{"line":341,"column":6},"end":{"line":341,"column":null}},"168":{"start":{"line":344,"column":4},"end":{"line":344,"column":null}},"169":{"start":{"line":349,"column":2},"end":{"line":356,"column":3}},"170":{"start":{"line":350,"column":4},"end":{"line":355,"column":5}},"171":{"start":{"line":351,"column":6},"end":{"line":351,"column":null}},"172":{"start":{"line":352,"column":6},"end":{"line":352,"column":null}},"173":{"start":{"line":357,"column":2},"end":{"line":357,"column":null}},"174":{"start":{"line":361,"column":2},"end":{"line":363,"column":3}},"175":{"start":{"line":362,"column":4},"end":{"line":362,"column":null}},"176":{"start":{"line":364,"column":2},"end":{"line":366,"column":3}},"177":{"start":{"line":365,"column":4},"end":{"line":365,"column":null}},"178":{"start":{"line":367,"column":2},"end":{"line":369,"column":3}},"179":{"start":{"line":368,"column":4},"end":{"line":368,"column":null}},"180":{"start":{"line":370,"column":2},"end":{"line":372,"column":3}},"181":{"start":{"line":371,"column":4},"end":{"line":371,"column":null}},"182":{"start":{"line":373,"column":2},"end":{"line":393,"column":3}},"183":{"start":{"line":375,"column":6},"end":{"line":377,"column":7}},"184":{"start":{"line":376,"column":8},"end":{"line":376,"column":null}},"185":{"start":{"line":378,"column":6},"end":{"line":378,"column":null}},"186":{"start":{"line":380,"column":6},"end":{"line":380,"column":null}},"187":{"start":{"line":382,"column":6},"end":{"line":382,"column":null}},"188":{"start":{"line":384,"column":6},"end":{"line":384,"column":null}},"189":{"start":{"line":386,"column":6},"end":{"line":386,"column":null}},"190":{"start":{"line":388,"column":6},"end":{"line":388,"column":null}},"191":{"start":{"line":390,"column":6},"end":{"line":390,"column":null}},"192":{"start":{"line":392,"column":6},"end":{"line":392,"column":null}},"193":{"start":{"line":397,"column":16},"end":{"line":397,"column":64}},"194":{"start":{"line":398,"column":2},"end":{"line":398,"column":null}},"195":{"start":{"line":402,"column":2},"end":{"line":406,"column":3}},"196":{"start":{"line":403,"column":4},"end":{"line":405,"column":5}},"197":{"start":{"line":404,"column":6},"end":{"line":404,"column":null}},"198":{"start":{"line":407,"column":2},"end":{"line":407,"column":null}}},"fnMap":{"0":{"name":"(anonymous_7)","decl":{"start":{"line":56,"column":2},"end":{"line":56,"column":14}},"loc":{"start":{"line":56,"column":78},"end":{"line":66,"column":3}}},"1":{"name":"(anonymous_8)","decl":{"start":{"line":60,"column":28},"end":{"line":60,"column":33}},"loc":{"start":{"line":60,"column":97},"end":{"line":62,"column":5}}},"2":{"name":"(anonymous_9)","decl":{"start":{"line":68,"column":2},"end":{"line":68,"column":7}},"loc":{"start":{"line":68,"column":41},"end":{"line":92,"column":3}}},"3":{"name":"(anonymous_10)","decl":{"start":{"line":94,"column":2},"end":{"line":94,"column":7}},"loc":{"start":{"line":94,"column":81},"end":{"line":100,"column":3}}},"4":{"name":"(anonymous_11)","decl":{"start":{"line":102,"column":2},"end":{"line":102,"column":8}},"loc":{"start":{"line":102,"column":25},"end":{"line":108,"column":3}}},"5":{"name":"(anonymous_12)","decl":{"start":{"line":103,"column":80},"end":{"line":103,"column":85}},"loc":{"start":{"line":103,"column":103},"end":{"line":107,"column":5}}},"6":{"name":"(anonymous_13)","decl":{"start":{"line":110,"column":2},"end":{"line":110,"column":7}},"loc":{"start":{"line":110,"column":43},"end":{"line":117,"column":3}}},"7":{"name":"(anonymous_14)","decl":{"start":{"line":111,"column":98},"end":{"line":111,"column":103}},"loc":{"start":{"line":111,"column":121},"end":{"line":115,"column":7}}},"8":{"name":"(anonymous_15)","decl":{"start":{"line":126,"column":2},"end":{"line":126,"column":14}},"loc":{"start":{"line":126,"column":80},"end":{"line":136,"column":3}}},"9":{"name":"(anonymous_16)","decl":{"start":{"line":130,"column":28},"end":{"line":130,"column":33}},"loc":{"start":{"line":130,"column":97},"end":{"line":132,"column":5}}},"10":{"name":"(anonymous_17)","decl":{"start":{"line":138,"column":2},"end":{"line":138,"column":7}},"loc":{"start":{"line":138,"column":50},"end":{"line":173,"column":3}}},"11":{"name":"(anonymous_18)","decl":{"start":{"line":175,"column":2},"end":{"line":175,"column":7}},"loc":{"start":{"line":175,"column":81},"end":{"line":178,"column":3}}},"12":{"name":"(anonymous_19)","decl":{"start":{"line":180,"column":2},"end":{"line":180,"column":8}},"loc":{"start":{"line":180,"column":25},"end":{"line":186,"column":3}}},"13":{"name":"(anonymous_20)","decl":{"start":{"line":181,"column":80},"end":{"line":181,"column":85}},"loc":{"start":{"line":181,"column":103},"end":{"line":185,"column":5}}},"14":{"name":"(anonymous_21)","decl":{"start":{"line":188,"column":2},"end":{"line":188,"column":7}},"loc":{"start":{"line":188,"column":43},"end":{"line":195,"column":3}}},"15":{"name":"(anonymous_22)","decl":{"start":{"line":189,"column":98},"end":{"line":189,"column":103}},"loc":{"start":{"line":189,"column":121},"end":{"line":193,"column":7}}},"16":{"name":"toValidateFunction","decl":{"start":{"line":198,"column":15},"end":{"line":198,"column":33}},"loc":{"start":{"line":203,"column":28},"end":{"line":231,"column":1}}},"17":{"name":"(anonymous_24)","decl":{"start":{"line":216,"column":17},"end":{"line":216,"column":18}},"loc":{"start":{"line":216,"column":34},"end":{"line":218,"column":5}}},"18":{"name":"(anonymous_25)","decl":{"start":{"line":224,"column":17},"end":{"line":224,"column":18}},"loc":{"start":{"line":224,"column":34},"end":{"line":226,"column":5}}},"19":{"name":"toType","decl":{"start":{"line":233,"column":15},"end":{"line":233,"column":21}},"loc":{"start":{"line":238,"column":26},"end":{"line":265,"column":1}}},"20":{"name":"(anonymous_27)","decl":{"start":{"line":247,"column":19},"end":{"line":247,"column":20}},"loc":{"start":{"line":247,"column":35},"end":{"line":253,"column":3}}},"21":{"name":"transform","decl":{"start":{"line":267,"column":15},"end":{"line":267,"column":24}},"loc":{"start":{"line":267,"column":128},"end":{"line":327,"column":1}}},"22":{"name":"transformField","decl":{"start":{"line":329,"column":15},"end":{"line":329,"column":29}},"loc":{"start":{"line":331,"column":54},"end":{"line":346,"column":1}}},"23":{"name":"validateSubschemas","decl":{"start":{"line":348,"column":9},"end":{"line":348,"column":27}},"loc":{"start":{"line":348,"column":74},"end":{"line":358,"column":1}}},"24":{"name":"getType","decl":{"start":{"line":360,"column":9},"end":{"line":360,"column":16}},"loc":{"start":{"line":360,"column":47},"end":{"line":394,"column":1}}},"25":{"name":"getInlineTags","decl":{"start":{"line":396,"column":9},"end":{"line":396,"column":22}},"loc":{"start":{"line":396,"column":53},"end":{"line":399,"column":1}}},"26":{"name":"disjoint","decl":{"start":{"line":401,"column":9},"end":{"line":401,"column":17}},"loc":{"start":{"line":401,"column":56},"end":{"line":408,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":58,"column":81},"end":{"line":58,"column":116}},"type":"binary-expr","locations":[{"start":{"line":58,"column":81},"end":{"line":58,"column":108}},{"start":{"line":58,"column":112},"end":{"line":58,"column":116}}]},"1":{"loc":{"start":{"line":59,"column":79},"end":{"line":59,"column":114}},"type":"binary-expr","locations":[{"start":{"line":59,"column":79},"end":{"line":59,"column":106}},{"start":{"line":59,"column":110},"end":{"line":59,"column":114}}]},"2":{"loc":{"start":{"line":64,"column":77},"end":{"line":64,"column":98}},"type":"binary-expr","locations":[{"start":{"line":64,"column":77},"end":{"line":64,"column":92}},{"start":{"line":64,"column":96},"end":{"line":64,"column":98}}]},"3":{"loc":{"start":{"line":69,"column":4},"end":{"line":71,"column":5}},"type":"if","locations":[{"start":{"line":69,"column":4},"end":{"line":71,"column":5}}]},"4":{"loc":{"start":{"line":72,"column":4},"end":{"line":74,"column":5}},"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":74,"column":5}}]},"5":{"loc":{"start":{"line":85,"column":4},"end":{"line":90,"column":5}},"type":"if","locations":[{"start":{"line":85,"column":4},"end":{"line":90,"column":5}}]},"6":{"loc":{"start":{"line":87,"column":6},"end":{"line":89,"column":7}},"type":"if","locations":[{"start":{"line":87,"column":6},"end":{"line":89,"column":7}}]},"7":{"loc":{"start":{"line":87,"column":10},"end":{"line":87,"column":44}},"type":"binary-expr","locations":[{"start":{"line":87,"column":10},"end":{"line":87,"column":26}},{"start":{"line":87,"column":30},"end":{"line":87,"column":44}}]},"8":{"loc":{"start":{"line":96,"column":4},"end":{"line":98,"column":5}},"type":"if","locations":[{"start":{"line":96,"column":4},"end":{"line":98,"column":5}}]},"9":{"loc":{"start":{"line":128,"column":81},"end":{"line":128,"column":116}},"type":"binary-expr","locations":[{"start":{"line":128,"column":81},"end":{"line":128,"column":108}},{"start":{"line":128,"column":112},"end":{"line":128,"column":116}}]},"10":{"loc":{"start":{"line":129,"column":79},"end":{"line":129,"column":114}},"type":"binary-expr","locations":[{"start":{"line":129,"column":79},"end":{"line":129,"column":106}},{"start":{"line":129,"column":110},"end":{"line":129,"column":114}}]},"11":{"loc":{"start":{"line":134,"column":77},"end":{"line":134,"column":98}},"type":"binary-expr","locations":[{"start":{"line":134,"column":77},"end":{"line":134,"column":92}},{"start":{"line":134,"column":96},"end":{"line":134,"column":98}}]},"12":{"loc":{"start":{"line":139,"column":4},"end":{"line":141,"column":5}},"type":"if","locations":[{"start":{"line":139,"column":4},"end":{"line":141,"column":5}}]},"13":{"loc":{"start":{"line":142,"column":4},"end":{"line":144,"column":5}},"type":"if","locations":[{"start":{"line":142,"column":4},"end":{"line":144,"column":5}}]},"14":{"loc":{"start":{"line":147,"column":4},"end":{"line":153,"column":5}},"type":"if","locations":[{"start":{"line":147,"column":4},"end":{"line":153,"column":5}}]},"15":{"loc":{"start":{"line":149,"column":6},"end":{"line":151,"column":7}},"type":"if","locations":[{"start":{"line":149,"column":6},"end":{"line":151,"column":7}}]},"16":{"loc":{"start":{"line":149,"column":10},"end":{"line":149,"column":83}},"type":"binary-expr","locations":[{"start":{"line":149,"column":10},"end":{"line":149,"column":26}},{"start":{"line":149,"column":30},"end":{"line":149,"column":83}}]},"17":{"loc":{"start":{"line":157,"column":4},"end":{"line":159,"column":5}},"type":"if","locations":[{"start":{"line":157,"column":4},"end":{"line":159,"column":5}}]},"18":{"loc":{"start":{"line":162,"column":4},"end":{"line":164,"column":5}},"type":"if","locations":[{"start":{"line":162,"column":4},"end":{"line":164,"column":5}}]},"19":{"loc":{"start":{"line":166,"column":4},"end":{"line":170,"column":5}},"type":"if","locations":[{"start":{"line":166,"column":4},"end":{"line":170,"column":5}},{"start":{"line":168,"column":11},"end":{"line":170,"column":5}}]},"20":{"loc":{"start":{"line":206,"column":2},"end":{"line":208,"column":3}},"type":"if","locations":[{"start":{"line":206,"column":2},"end":{"line":208,"column":3}}]},"21":{"loc":{"start":{"line":214,"column":2},"end":{"line":228,"column":3}},"type":"if","locations":[{"start":{"line":214,"column":2},"end":{"line":228,"column":3}},{"start":{"line":220,"column":9},"end":{"line":228,"column":3}}]},"22":{"loc":{"start":{"line":241,"column":2},"end":{"line":243,"column":3}},"type":"if","locations":[{"start":{"line":241,"column":2},"end":{"line":243,"column":3}}]},"23":{"loc":{"start":{"line":249,"column":4},"end":{"line":251,"column":5}},"type":"if","locations":[{"start":{"line":249,"column":4},"end":{"line":251,"column":5}}]},"24":{"loc":{"start":{"line":258,"column":2},"end":{"line":262,"column":3}},"type":"if","locations":[{"start":{"line":258,"column":2},"end":{"line":262,"column":3}},{"start":{"line":260,"column":9},"end":{"line":262,"column":3}}]},"25":{"loc":{"start":{"line":268,"column":2},"end":{"line":270,"column":3}},"type":"if","locations":[{"start":{"line":268,"column":2},"end":{"line":270,"column":3}}]},"26":{"loc":{"start":{"line":268,"column":6},"end":{"line":268,"column":66}},"type":"binary-expr","locations":[{"start":{"line":268,"column":6},"end":{"line":268,"column":17}},{"start":{"line":268,"column":21},"end":{"line":268,"column":35}},{"start":{"line":268,"column":39},"end":{"line":268,"column":66}}]},"27":{"loc":{"start":{"line":272,"column":2},"end":{"line":274,"column":3}},"type":"if","locations":[{"start":{"line":272,"column":2},"end":{"line":274,"column":3}}]},"28":{"loc":{"start":{"line":275,"column":2},"end":{"line":280,"column":3}},"type":"if","locations":[{"start":{"line":275,"column":2},"end":{"line":280,"column":3}}]},"29":{"loc":{"start":{"line":275,"column":6},"end":{"line":275,"column":53}},"type":"binary-expr","locations":[{"start":{"line":275,"column":6},"end":{"line":275,"column":26}},{"start":{"line":275,"column":30},"end":{"line":275,"column":53}}]},"30":{"loc":{"start":{"line":277,"column":4},"end":{"line":279,"column":5}},"type":"if","locations":[{"start":{"line":277,"column":4},"end":{"line":279,"column":5}}]},"31":{"loc":{"start":{"line":281,"column":2},"end":{"line":286,"column":3}},"type":"if","locations":[{"start":{"line":281,"column":2},"end":{"line":286,"column":3}}]},"32":{"loc":{"start":{"line":281,"column":6},"end":{"line":281,"column":53}},"type":"binary-expr","locations":[{"start":{"line":281,"column":6},"end":{"line":281,"column":26}},{"start":{"line":281,"column":30},"end":{"line":281,"column":53}}]},"33":{"loc":{"start":{"line":283,"column":4},"end":{"line":285,"column":5}},"type":"if","locations":[{"start":{"line":283,"column":4},"end":{"line":285,"column":5}}]},"34":{"loc":{"start":{"line":287,"column":2},"end":{"line":292,"column":3}},"type":"if","locations":[{"start":{"line":287,"column":2},"end":{"line":292,"column":3}}]},"35":{"loc":{"start":{"line":287,"column":6},"end":{"line":287,"column":53}},"type":"binary-expr","locations":[{"start":{"line":287,"column":6},"end":{"line":287,"column":26}},{"start":{"line":287,"column":30},"end":{"line":287,"column":53}}]},"36":{"loc":{"start":{"line":289,"column":4},"end":{"line":291,"column":5}},"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":291,"column":5}}]},"37":{"loc":{"start":{"line":293,"column":2},"end":{"line":299,"column":3}},"type":"if","locations":[{"start":{"line":293,"column":2},"end":{"line":299,"column":3}}]},"38":{"loc":{"start":{"line":294,"column":4},"end":{"line":298,"column":5}},"type":"if","locations":[{"start":{"line":294,"column":4},"end":{"line":298,"column":5}}]},"39":{"loc":{"start":{"line":300,"column":2},"end":{"line":302,"column":3}},"type":"if","locations":[{"start":{"line":300,"column":2},"end":{"line":302,"column":3}}]},"40":{"loc":{"start":{"line":304,"column":2},"end":{"line":324,"column":3}},"type":"switch","locations":[{"start":{"line":305,"column":4},"end":{"line":312,"column":null}},{"start":{"line":313,"column":4},"end":{"line":313,"column":24}},{"start":{"line":314,"column":4},"end":{"line":314,"column":26}},{"start":{"line":315,"column":4},"end":{"line":315,"column":23}},{"start":{"line":316,"column":4},"end":{"line":316,"column":26}},{"start":{"line":317,"column":4},"end":{"line":323,"column":7}}]},"41":{"loc":{"start":{"line":306,"column":6},"end":{"line":311,"column":7}},"type":"if","locations":[{"start":{"line":306,"column":6},"end":{"line":311,"column":7}}]},"42":{"loc":{"start":{"line":318,"column":6},"end":{"line":323,"column":7}},"type":"if","locations":[{"start":{"line":318,"column":6},"end":{"line":323,"column":7}}]},"43":{"loc":{"start":{"line":320,"column":8},"end":{"line":322,"column":9}},"type":"if","locations":[{"start":{"line":320,"column":8},"end":{"line":322,"column":9}}]},"44":{"loc":{"start":{"line":320,"column":12},"end":{"line":320,"column":108}},"type":"binary-expr","locations":[{"start":{"line":320,"column":12},"end":{"line":320,"column":28}},{"start":{"line":320,"column":32},"end":{"line":320,"column":53}},{"start":{"line":320,"column":57},"end":{"line":320,"column":108}}]},"45":{"loc":{"start":{"line":336,"column":4},"end":{"line":342,"column":5}},"type":"if","locations":[{"start":{"line":336,"column":4},"end":{"line":342,"column":5}},{"start":{"line":340,"column":11},"end":{"line":342,"column":5}}]},"46":{"loc":{"start":{"line":337,"column":6},"end":{"line":339,"column":7}},"type":"if","locations":[{"start":{"line":337,"column":6},"end":{"line":339,"column":7}}]},"47":{"loc":{"start":{"line":361,"column":2},"end":{"line":363,"column":3}},"type":"if","locations":[{"start":{"line":361,"column":2},"end":{"line":363,"column":3}}]},"48":{"loc":{"start":{"line":364,"column":2},"end":{"line":366,"column":3}},"type":"if","locations":[{"start":{"line":364,"column":2},"end":{"line":366,"column":3}}]},"49":{"loc":{"start":{"line":367,"column":2},"end":{"line":369,"column":3}},"type":"if","locations":[{"start":{"line":367,"column":2},"end":{"line":369,"column":3}}]},"50":{"loc":{"start":{"line":370,"column":2},"end":{"line":372,"column":3}},"type":"if","locations":[{"start":{"line":370,"column":2},"end":{"line":372,"column":3}}]},"51":{"loc":{"start":{"line":370,"column":6},"end":{"line":370,"column":49}},"type":"binary-expr","locations":[{"start":{"line":370,"column":6},"end":{"line":370,"column":26}},{"start":{"line":370,"column":30},"end":{"line":370,"column":49}}]},"52":{"loc":{"start":{"line":373,"column":2},"end":{"line":393,"column":3}},"type":"switch","locations":[{"start":{"line":374,"column":4},"end":{"line":378,"column":null}},{"start":{"line":379,"column":4},"end":{"line":380,"column":null}},{"start":{"line":381,"column":4},"end":{"line":382,"column":null}},{"start":{"line":383,"column":4},"end":{"line":384,"column":null}},{"start":{"line":385,"column":4},"end":{"line":386,"column":null}},{"start":{"line":387,"column":4},"end":{"line":388,"column":null}},{"start":{"line":389,"column":4},"end":{"line":390,"column":null}},{"start":{"line":391,"column":4},"end":{"line":392,"column":null}}]},"53":{"loc":{"start":{"line":375,"column":6},"end":{"line":377,"column":7}},"type":"if","locations":[{"start":{"line":375,"column":6},"end":{"line":377,"column":7}}]},"54":{"loc":{"start":{"line":375,"column":10},"end":{"line":375,"column":82}},"type":"binary-expr","locations":[{"start":{"line":375,"column":10},"end":{"line":375,"column":35}},{"start":{"line":375,"column":39},"end":{"line":375,"column":82}}]},"55":{"loc":{"start":{"line":403,"column":4},"end":{"line":405,"column":5}},"type":"if","locations":[{"start":{"line":403,"column":4},"end":{"line":405,"column":5}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":2,"14":2,"15":2,"16":2,"17":1,"18":2,"19":2,"20":2,"21":0,"22":2,"23":0,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":2,"31":0,"32":0,"33":0,"34":2,"35":1,"36":1,"37":0,"38":1,"39":1,"40":1,"41":1,"42":1,"43":0,"44":0,"45":0,"46":0,"47":1,"48":2,"49":2,"50":2,"51":2,"52":1,"53":2,"54":2,"55":2,"56":0,"57":2,"58":0,"59":2,"60":2,"61":0,"62":0,"63":0,"64":2,"65":2,"66":2,"67":2,"68":0,"69":2,"70":2,"71":2,"72":0,"73":2,"74":0,"75":2,"76":2,"77":2,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":0,"85":0,"86":0,"87":0,"88":1,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":2,"109":2,"110":0,"111":2,"112":2,"113":0,"114":0,"115":0,"116":0,"117":2,"118":2,"119":2,"120":0,"121":2,"122":2,"123":2,"124":2,"125":0,"126":2,"127":2,"128":0,"129":2,"130":0,"131":0,"132":0,"133":2,"134":0,"135":0,"136":0,"137":2,"138":0,"139":0,"140":0,"141":2,"142":0,"143":0,"144":0,"145":0,"146":2,"147":0,"148":2,"149":2,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":2,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":2,"175":0,"176":2,"177":2,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0},"f":{"0":2,"1":1,"2":2,"3":1,"4":1,"5":1,"6":0,"7":0,"8":2,"9":1,"10":2,"11":1,"12":1,"13":1,"14":0,"15":0,"16":0,"17":0,"18":0,"19":2,"20":0,"21":2,"22":0,"23":0,"24":2,"25":0,"26":0},"b":{"0":[2,2],"1":[2,2],"2":[2,1],"3":[0],"4":[0],"5":[0],"6":[0],"7":[0,0],"8":[0],"9":[2,2],"10":[2,2],"11":[2,1],"12":[0],"13":[0],"14":[0],"15":[0],"16":[0,0],"17":[0],"18":[0],"19":[0,2],"20":[0],"21":[0,0],"22":[0],"23":[0],"24":[0,2],"25":[0],"26":[2,2,2],"27":[0],"28":[0],"29":[2,0],"30":[0],"31":[0],"32":[2,0],"33":[0],"34":[0],"35":[2,0],"36":[0],"37":[0],"38":[0],"39":[0],"40":[0,0,0,0,0,0],"41":[0],"42":[0],"43":[0],"44":[0,0,0],"45":[0,0],"46":[0],"47":[0],"48":[2],"49":[0],"50":[0],"51":[0,0],"52":[0,0,0,0,0,0,0,0],"53":[0],"54":[0,0],"55":[0]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/protobuf.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/protobuf.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":null}},"1":{"start":{"line":11,"column":0},"end":{"line":11,"column":null}},"2":{"start":{"line":16,"column":0},"end":{"line":16,"column":null}},"3":{"start":{"line":26,"column":0},"end":{"line":26,"column":null}},"4":{"start":{"line":38,"column":0},"end":{"line":38,"column":68}},"5":{"start":{"line":39,"column":0},"end":{"line":39,"column":37}},"6":{"start":{"line":40,"column":0},"end":{"line":40,"column":75}},"7":{"start":{"line":41,"column":0},"end":{"line":41,"column":49}},"8":{"start":{"line":42,"column":0},"end":{"line":42,"column":53}},"9":{"start":{"line":43,"column":0},"end":{"line":43,"column":75}},"10":{"start":{"line":44,"column":0},"end":{"line":44,"column":83}},"11":{"start":{"line":45,"column":0},"end":{"line":45,"column":63}},"12":{"start":{"line":46,"column":0},"end":{"line":46,"column":61}},"13":{"start":{"line":47,"column":0},"end":{"line":47,"column":69}},"14":{"start":{"line":48,"column":0},"end":{"line":48,"column":71}},"15":{"start":{"line":49,"column":0},"end":{"line":49,"column":69}},"16":{"start":{"line":50,"column":0},"end":{"line":50,"column":61}},"17":{"start":{"line":51,"column":0},"end":{"line":51,"column":65}},"18":{"start":{"line":52,"column":0},"end":{"line":52,"column":63}},"19":{"start":{"line":53,"column":0},"end":{"line":53,"column":81}},"20":{"start":{"line":54,"column":0},"end":{"line":54,"column":73}},"21":{"start":{"line":55,"column":0},"end":{"line":55,"column":71}},"22":{"start":{"line":56,"column":0},"end":{"line":56,"column":63}},"23":{"start":{"line":58,"column":20},"end":{"line":85,"column":2}},"24":{"start":{"line":101,"column":4},"end":{"line":101,"column":null}},"25":{"start":{"line":102,"column":4},"end":{"line":102,"column":null}},"26":{"start":{"line":103,"column":4},"end":{"line":103,"column":null}},"27":{"start":{"line":104,"column":4},"end":{"line":104,"column":null}},"28":{"start":{"line":105,"column":4},"end":{"line":107,"column":null}},"29":{"start":{"line":106,"column":6},"end":{"line":106,"column":null}},"30":{"start":{"line":108,"column":4},"end":{"line":110,"column":5}},"31":{"start":{"line":109,"column":6},"end":{"line":109,"column":null}},"32":{"start":{"line":114,"column":4},"end":{"line":116,"column":5}},"33":{"start":{"line":115,"column":6},"end":{"line":115,"column":null}},"34":{"start":{"line":117,"column":4},"end":{"line":119,"column":5}},"35":{"start":{"line":118,"column":6},"end":{"line":118,"column":null}},"36":{"start":{"line":121,"column":21},"end":{"line":121,"column":34}},"37":{"start":{"line":122,"column":4},"end":{"line":124,"column":5}},"38":{"start":{"line":123,"column":6},"end":{"line":123,"column":null}},"39":{"start":{"line":125,"column":24},"end":{"line":125,"column":58}},"40":{"start":{"line":126,"column":4},"end":{"line":128,"column":5}},"41":{"start":{"line":127,"column":6},"end":{"line":127,"column":null}},"42":{"start":{"line":129,"column":21},"end":{"line":129,"column":37}},"43":{"start":{"line":130,"column":19},"end":{"line":130,"column":53}},"44":{"start":{"line":131,"column":23},"end":{"line":131,"column":73}},"45":{"start":{"line":132,"column":20},"end":{"line":132,"column":49}},"46":{"start":{"line":133,"column":4},"end":{"line":133,"column":null}},"47":{"start":{"line":134,"column":26},"end":{"line":134,"column":63}},"48":{"start":{"line":135,"column":21},"end":{"line":135,"column":60}},"49":{"start":{"line":136,"column":4},"end":{"line":136,"column":null}},"50":{"start":{"line":140,"column":18},"end":{"line":140,"column":59}},"51":{"start":{"line":141,"column":4},"end":{"line":143,"column":5}},"52":{"start":{"line":142,"column":6},"end":{"line":142,"column":null}},"53":{"start":{"line":144,"column":17},"end":{"line":144,"column":48}},"54":{"start":{"line":145,"column":25},"end":{"line":145,"column":58}},"55":{"start":{"line":146,"column":22},"end":{"line":146,"column":52}},"56":{"start":{"line":147,"column":21},"end":{"line":148,"column":68}},"57":{"start":{"line":149,"column":17},"end":{"line":155,"column":null}},"58":{"start":{"line":156,"column":4},"end":{"line":156,"column":null}},"59":{"start":{"line":157,"column":4},"end":{"line":157,"column":null}},"60":{"start":{"line":161,"column":17},"end":{"line":161,"column":42}},"61":{"start":{"line":162,"column":4},"end":{"line":162,"column":null}},"62":{"start":{"line":163,"column":4},"end":{"line":163,"column":null}},"63":{"start":{"line":167,"column":4},"end":{"line":167,"column":null}},"64":{"start":{"line":168,"column":4},"end":{"line":172,"column":null}},"65":{"start":{"line":169,"column":6},"end":{"line":171,"column":7}},"66":{"start":{"line":170,"column":8},"end":{"line":170,"column":null}},"67":{"start":{"line":177,"column":30},"end":{"line":177,"column":32}},"68":{"start":{"line":178,"column":4},"end":{"line":188,"column":5}},"69":{"start":{"line":178,"column":17},"end":{"line":178,"column":18}},"70":{"start":{"line":179,"column":18},"end":{"line":179,"column":42}},"71":{"start":{"line":180,"column":6},"end":{"line":182,"column":7}},"72":{"start":{"line":181,"column":8},"end":{"line":181,"column":16}},"73":{"start":{"line":183,"column":18},"end":{"line":183,"column":94}},"74":{"start":{"line":184,"column":6},"end":{"line":186,"column":7}},"75":{"start":{"line":185,"column":8},"end":{"line":185,"column":null}},"76":{"start":{"line":187,"column":6},"end":{"line":187,"column":null}},"77":{"start":{"line":189,"column":29},"end":{"line":193,"column":null}},"78":{"start":{"line":194,"column":13},"end":{"line":194,"column":15}},"79":{"start":{"line":195,"column":18},"end":{"line":195,"column":19}},"80":{"start":{"line":196,"column":4},"end":{"line":204,"column":5}},"81":{"start":{"line":197,"column":6},"end":{"line":202,"column":7}},"82":{"start":{"line":198,"column":8},"end":{"line":198,"column":null}},"83":{"start":{"line":200,"column":8},"end":{"line":200,"column":null}},"84":{"start":{"line":203,"column":6},"end":{"line":203,"column":null}},"85":{"start":{"line":205,"column":4},"end":{"line":214,"column":null}},"86":{"start":{"line":218,"column":33},"end":{"line":218,"column":70}},"87":{"start":{"line":219,"column":19},"end":{"line":219,"column":76}},"88":{"start":{"line":220,"column":15},"end":{"line":220,"column":40}},"89":{"start":{"line":221,"column":4},"end":{"line":221,"column":null}},"90":{"start":{"line":222,"column":4},"end":{"line":224,"column":5}},"91":{"start":{"line":222,"column":17},"end":{"line":222,"column":18}},"92":{"start":{"line":223,"column":6},"end":{"line":223,"column":null}},"93":{"start":{"line":225,"column":4},"end":{"line":225,"column":null}},"94":{"start":{"line":229,"column":18},"end":{"line":229,"column":43}},"95":{"start":{"line":230,"column":19},"end":{"line":230,"column":37}},"96":{"start":{"line":231,"column":4},"end":{"line":243,"column":5}},"97":{"start":{"line":235,"column":35},"end":{"line":235,"column":37}},"98":{"start":{"line":236,"column":6},"end":{"line":236,"column":null}},"99":{"start":{"line":237,"column":6},"end":{"line":237,"column":null}},"100":{"start":{"line":238,"column":6},"end":{"line":238,"column":null}},"101":{"start":{"line":240,"column":25},"end":{"line":240,"column":65}},"102":{"start":{"line":241,"column":6},"end":{"line":241,"column":null}},"103":{"start":{"line":242,"column":6},"end":{"line":242,"column":null}},"104":{"start":{"line":247,"column":19},"end":{"line":247,"column":37}},"105":{"start":{"line":248,"column":4},"end":{"line":261,"column":5}},"106":{"start":{"line":249,"column":23},"end":{"line":249,"column":39}},"107":{"start":{"line":250,"column":6},"end":{"line":254,"column":7}},"108":{"start":{"line":250,"column":19},"end":{"line":250,"column":20}},"109":{"start":{"line":251,"column":8},"end":{"line":253,"column":9}},"110":{"start":{"line":252,"column":10},"end":{"line":252,"column":null}},"111":{"start":{"line":256,"column":6},"end":{"line":260,"column":7}},"112":{"start":{"line":256,"column":19},"end":{"line":256,"column":20}},"113":{"start":{"line":257,"column":8},"end":{"line":259,"column":9}},"114":{"start":{"line":258,"column":10},"end":{"line":258,"column":null}},"115":{"start":{"line":262,"column":4},"end":{"line":262,"column":84}},"116":{"start":{"line":266,"column":21},"end":{"line":266,"column":34}},"117":{"start":{"line":267,"column":4},"end":{"line":269,"column":5}},"118":{"start":{"line":268,"column":6},"end":{"line":268,"column":null}},"119":{"start":{"line":270,"column":24},"end":{"line":270,"column":58}},"120":{"start":{"line":271,"column":4},"end":{"line":273,"column":5}},"121":{"start":{"line":272,"column":6},"end":{"line":272,"column":null}},"122":{"start":{"line":274,"column":4},"end":{"line":274,"column":null}},"123":{"start":{"line":95,"column":0},"end":{"line":95,"column":13}},"124":{"start":{"line":285,"column":4},"end":{"line":285,"column":null}},"125":{"start":{"line":286,"column":4},"end":{"line":286,"column":null}},"126":{"start":{"line":287,"column":4},"end":{"line":287,"column":null}},"127":{"start":{"line":288,"column":4},"end":{"line":290,"column":null}},"128":{"start":{"line":289,"column":6},"end":{"line":289,"column":null}},"129":{"start":{"line":291,"column":4},"end":{"line":293,"column":5}},"130":{"start":{"line":292,"column":6},"end":{"line":292,"column":null}},"131":{"start":{"line":297,"column":4},"end":{"line":299,"column":5}},"132":{"start":{"line":298,"column":6},"end":{"line":298,"column":null}},"133":{"start":{"line":300,"column":4},"end":{"line":302,"column":5}},"134":{"start":{"line":301,"column":6},"end":{"line":301,"column":null}},"135":{"start":{"line":304,"column":17},"end":{"line":304,"column":67}},"136":{"start":{"line":305,"column":15},"end":{"line":305,"column":55}},"137":{"start":{"line":306,"column":36},"end":{"line":306,"column":80}},"138":{"start":{"line":307,"column":24},"end":{"line":307,"column":58}},"139":{"start":{"line":309,"column":20},"end":{"line":309,"column":49}},"140":{"start":{"line":310,"column":23},"end":{"line":310,"column":58}},"141":{"start":{"line":312,"column":21},"end":{"line":312,"column":52}},"142":{"start":{"line":313,"column":14},"end":{"line":313,"column":47}},"143":{"start":{"line":318,"column":4},"end":{"line":322,"column":5}},"144":{"start":{"line":319,"column":6},"end":{"line":319,"column":null}},"145":{"start":{"line":321,"column":6},"end":{"line":321,"column":null}},"146":{"start":{"line":323,"column":4},"end":{"line":323,"column":null}},"147":{"start":{"line":324,"column":4},"end":{"line":324,"column":null}},"148":{"start":{"line":328,"column":21},"end":{"line":328,"column":34}},"149":{"start":{"line":329,"column":4},"end":{"line":331,"column":5}},"150":{"start":{"line":330,"column":6},"end":{"line":330,"column":null}},"151":{"start":{"line":332,"column":24},"end":{"line":332,"column":58}},"152":{"start":{"line":333,"column":4},"end":{"line":335,"column":5}},"153":{"start":{"line":334,"column":6},"end":{"line":334,"column":null}},"154":{"start":{"line":336,"column":4},"end":{"line":336,"column":null}},"155":{"start":{"line":340,"column":18},"end":{"line":340,"column":68}},"156":{"start":{"line":341,"column":4},"end":{"line":343,"column":5}},"157":{"start":{"line":342,"column":6},"end":{"line":342,"column":null}},"158":{"start":{"line":344,"column":21},"end":{"line":344,"column":59}},"159":{"start":{"line":345,"column":4},"end":{"line":347,"column":5}},"160":{"start":{"line":346,"column":6},"end":{"line":346,"column":null}},"161":{"start":{"line":348,"column":4},"end":{"line":348,"column":null}},"162":{"start":{"line":349,"column":4},"end":{"line":349,"column":null}},"163":{"start":{"line":353,"column":17},"end":{"line":353,"column":42}},"164":{"start":{"line":354,"column":4},"end":{"line":354,"column":null}},"165":{"start":{"line":355,"column":21},"end":{"line":355,"column":94}},"166":{"start":{"line":356,"column":20},"end":{"line":370,"column":5}},"167":{"start":{"line":357,"column":6},"end":{"line":369,"column":7}},"168":{"start":{"line":358,"column":20},"end":{"line":358,"column":44}},"169":{"start":{"line":359,"column":8},"end":{"line":361,"column":9}},"170":{"start":{"line":360,"column":10},"end":{"line":360,"column":null}},"171":{"start":{"line":362,"column":8},"end":{"line":362,"column":null}},"172":{"start":{"line":364,"column":20},"end":{"line":364,"column":37}},"173":{"start":{"line":365,"column":8},"end":{"line":367,"column":9}},"174":{"start":{"line":366,"column":10},"end":{"line":366,"column":null}},"175":{"start":{"line":368,"column":8},"end":{"line":368,"column":null}},"176":{"start":{"line":372,"column":25},"end":{"line":372,"column":62}},"177":{"start":{"line":373,"column":4},"end":{"line":373,"column":null}},"178":{"start":{"line":374,"column":4},"end":{"line":374,"column":null}},"179":{"start":{"line":378,"column":15},"end":{"line":378,"column":41}},"180":{"start":{"line":379,"column":18},"end":{"line":379,"column":33}},"181":{"start":{"line":380,"column":23},"end":{"line":380,"column":25}},"182":{"start":{"line":381,"column":4},"end":{"line":381,"column":null}},"183":{"start":{"line":382,"column":4},"end":{"line":384,"column":5}},"184":{"start":{"line":382,"column":17},"end":{"line":382,"column":18}},"185":{"start":{"line":383,"column":6},"end":{"line":383,"column":null}},"186":{"start":{"line":385,"column":4},"end":{"line":385,"column":null}},"187":{"start":{"line":389,"column":16},"end":{"line":389,"column":29}},"188":{"start":{"line":390,"column":4},"end":{"line":392,"column":5}},"189":{"start":{"line":391,"column":6},"end":{"line":391,"column":null}},"190":{"start":{"line":393,"column":4},"end":{"line":393,"column":null}},"191":{"start":{"line":397,"column":16},"end":{"line":397,"column":29}},"192":{"start":{"line":398,"column":4},"end":{"line":400,"column":5}},"193":{"start":{"line":399,"column":6},"end":{"line":399,"column":null}},"194":{"start":{"line":401,"column":4},"end":{"line":401,"column":null}},"195":{"start":{"line":280,"column":0},"end":{"line":280,"column":13}},"196":{"start":{"line":406,"column":2},"end":{"line":408,"column":3}},"197":{"start":{"line":407,"column":4},"end":{"line":407,"column":null}},"198":{"start":{"line":409,"column":2},"end":{"line":413,"column":3}},"199":{"start":{"line":410,"column":4},"end":{"line":412,"column":5}},"200":{"start":{"line":410,"column":17},"end":{"line":410,"column":18}},"201":{"start":{"line":411,"column":6},"end":{"line":411,"column":null}},"202":{"start":{"line":414,"column":2},"end":{"line":416,"column":3}},"203":{"start":{"line":415,"column":4},"end":{"line":415,"column":null}},"204":{"start":{"line":417,"column":19},"end":{"line":417,"column":32}},"205":{"start":{"line":418,"column":2},"end":{"line":425,"column":3}},"206":{"start":{"line":419,"column":19},"end":{"line":419,"column":36}},"207":{"start":{"line":420,"column":4},"end":{"line":423,"column":5}},"208":{"start":{"line":420,"column":17},"end":{"line":420,"column":18}},"209":{"start":{"line":421,"column":17},"end":{"line":421,"column":26}},"210":{"start":{"line":422,"column":6},"end":{"line":422,"column":null}},"211":{"start":{"line":424,"column":4},"end":{"line":424,"column":null}},"212":{"start":{"line":426,"column":19},"end":{"line":426,"column":37}},"213":{"start":{"line":427,"column":2},"end":{"line":432,"column":3}},"214":{"start":{"line":428,"column":21},"end":{"line":428,"column":40}},"215":{"start":{"line":429,"column":4},"end":{"line":431,"column":5}},"216":{"start":{"line":430,"column":6},"end":{"line":430,"column":null}},"217":{"start":{"line":433,"column":2},"end":{"line":433,"column":null}},"218":{"start":{"line":438,"column":2},"end":{"line":457,"column":3}},"219":{"start":{"line":439,"column":4},"end":{"line":445,"column":null}},"220":{"start":{"line":446,"column":18},"end":{"line":446,"column":30}},"221":{"start":{"line":447,"column":21},"end":{"line":447,"column":70}},"222":{"start":{"line":448,"column":4},"end":{"line":454,"column":5}},"223":{"start":{"line":449,"column":6},"end":{"line":451,"column":7}},"224":{"start":{"line":450,"column":8},"end":{"line":450,"column":null}},"225":{"start":{"line":453,"column":6},"end":{"line":453,"column":null}},"226":{"start":{"line":456,"column":4},"end":{"line":456,"column":null}},"227":{"start":{"line":461,"column":2},"end":{"line":496,"column":3}},"228":{"start":{"line":463,"column":6},"end":{"line":463,"column":null}},"229":{"start":{"line":465,"column":6},"end":{"line":465,"column":null}},"230":{"start":{"line":467,"column":6},"end":{"line":467,"column":null}},"231":{"start":{"line":469,"column":6},"end":{"line":469,"column":null}},"232":{"start":{"line":471,"column":6},"end":{"line":493,"column":7}},"233":{"start":{"line":473,"column":10},"end":{"line":473,"column":null}},"234":{"start":{"line":475,"column":10},"end":{"line":475,"column":null}},"235":{"start":{"line":481,"column":10},"end":{"line":481,"column":null}},"236":{"start":{"line":487,"column":10},"end":{"line":487,"column":null}},"237":{"start":{"line":490,"column":10},"end":{"line":490,"column":null}},"238":{"start":{"line":492,"column":10},"end":{"line":492,"column":null}},"239":{"start":{"line":495,"column":6},"end":{"line":495,"column":null}},"240":{"start":{"line":500,"column":18},"end":{"line":500,"column":34}},"241":{"start":{"line":501,"column":2},"end":{"line":504,"column":3}},"242":{"start":{"line":502,"column":25},"end":{"line":502,"column":58}},"243":{"start":{"line":503,"column":4},"end":{"line":503,"column":null}},"244":{"start":{"line":505,"column":2},"end":{"line":505,"column":null}},"245":{"start":{"line":509,"column":2},"end":{"line":513,"column":3}},"246":{"start":{"line":510,"column":4},"end":{"line":512,"column":5}},"247":{"start":{"line":511,"column":6},"end":{"line":511,"column":null}},"248":{"start":{"line":514,"column":2},"end":{"line":514,"column":null}},"249":{"start":{"line":518,"column":2},"end":{"line":520,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":100,"column":2},"end":{"line":100,"column":14}},"loc":{"start":{"line":100,"column":82},"end":{"line":111,"column":3}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":105,"column":28},"end":{"line":105,"column":33}},"loc":{"start":{"line":105,"column":97},"end":{"line":107,"column":5}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":113,"column":2},"end":{"line":113,"column":7}},"loc":{"start":{"line":113,"column":41},"end":{"line":137,"column":3}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":139,"column":2},"end":{"line":139,"column":7}},"loc":{"start":{"line":139,"column":40},"end":{"line":158,"column":3}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":160,"column":2},"end":{"line":160,"column":18}},"loc":{"start":{"line":160,"column":37},"end":{"line":164,"column":3}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":166,"column":2},"end":{"line":166,"column":16}},"loc":{"start":{"line":166,"column":62},"end":{"line":173,"column":3}}},"6":{"name":"(anonymous_7)","decl":{"start":{"line":168,"column":34},"end":{"line":168,"column":35}},"loc":{"start":{"line":168,"column":42},"end":{"line":172,"column":5}}},"7":{"name":"(anonymous_8)","decl":{"start":{"line":175,"column":2},"end":{"line":175,"column":7}},"loc":{"start":{"line":176,"column":69},"end":{"line":215,"column":3}}},"8":{"name":"(anonymous_9)","decl":{"start":{"line":217,"column":2},"end":{"line":217,"column":21}},"loc":{"start":{"line":217,"column":46},"end":{"line":226,"column":3}}},"9":{"name":"(anonymous_10)","decl":{"start":{"line":228,"column":2},"end":{"line":228,"column":18}},"loc":{"start":{"line":228,"column":58},"end":{"line":244,"column":3}}},"10":{"name":"(anonymous_11)","decl":{"start":{"line":246,"column":2},"end":{"line":246,"column":9}},"loc":{"start":{"line":246,"column":34},"end":{"line":263,"column":3}}},"11":{"name":"(anonymous_12)","decl":{"start":{"line":265,"column":2},"end":{"line":265,"column":7}},"loc":{"start":{"line":265,"column":81},"end":{"line":275,"column":3}}},"12":{"name":"(anonymous_13)","decl":{"start":{"line":284,"column":2},"end":{"line":284,"column":14}},"loc":{"start":{"line":284,"column":84},"end":{"line":294,"column":3}}},"13":{"name":"(anonymous_14)","decl":{"start":{"line":288,"column":28},"end":{"line":288,"column":33}},"loc":{"start":{"line":288,"column":97},"end":{"line":290,"column":5}}},"14":{"name":"(anonymous_15)","decl":{"start":{"line":296,"column":2},"end":{"line":296,"column":7}},"loc":{"start":{"line":296,"column":50},"end":{"line":325,"column":3}}},"15":{"name":"(anonymous_16)","decl":{"start":{"line":327,"column":2},"end":{"line":327,"column":7}},"loc":{"start":{"line":327,"column":81},"end":{"line":337,"column":3}}},"16":{"name":"(anonymous_17)","decl":{"start":{"line":339,"column":2},"end":{"line":339,"column":7}},"loc":{"start":{"line":339,"column":51},"end":{"line":350,"column":3}}},"17":{"name":"(anonymous_18)","decl":{"start":{"line":352,"column":2},"end":{"line":352,"column":7}},"loc":{"start":{"line":352,"column":54},"end":{"line":375,"column":3}}},"18":{"name":"(anonymous_19)","decl":{"start":{"line":356,"column":20},"end":{"line":356,"column":21}},"loc":{"start":{"line":356,"column":40},"end":{"line":370,"column":5}}},"19":{"name":"(anonymous_20)","decl":{"start":{"line":377,"column":2},"end":{"line":377,"column":20}},"loc":{"start":{"line":377,"column":36},"end":{"line":386,"column":3}}},"20":{"name":"(anonymous_21)","decl":{"start":{"line":388,"column":2},"end":{"line":388,"column":15}},"loc":{"start":{"line":388,"column":50},"end":{"line":394,"column":3}}},"21":{"name":"(anonymous_22)","decl":{"start":{"line":396,"column":2},"end":{"line":396,"column":21}},"loc":{"start":{"line":396,"column":63},"end":{"line":402,"column":3}}},"22":{"name":"transform","decl":{"start":{"line":405,"column":15},"end":{"line":405,"column":24}},"loc":{"start":{"line":405,"column":108},"end":{"line":434,"column":1}}},"23":{"name":"transformField","decl":{"start":{"line":436,"column":15},"end":{"line":436,"column":29}},"loc":{"start":{"line":437,"column":64},"end":{"line":458,"column":1}}},"24":{"name":"getType","decl":{"start":{"line":460,"column":9},"end":{"line":460,"column":16}},"loc":{"start":{"line":460,"column":30},"end":{"line":497,"column":1}}},"25":{"name":"getInlineTags","decl":{"start":{"line":499,"column":9},"end":{"line":499,"column":22}},"loc":{"start":{"line":499,"column":36},"end":{"line":506,"column":1}}},"26":{"name":"disjoint","decl":{"start":{"line":508,"column":9},"end":{"line":508,"column":17}},"loc":{"start":{"line":508,"column":56},"end":{"line":515,"column":1}}},"27":{"name":"isBuiltin","decl":{"start":{"line":517,"column":9},"end":{"line":517,"column":18}},"loc":{"start":{"line":517,"column":31},"end":{"line":521,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":102,"column":20},"end":{"line":102,"column":60}},"type":"binary-expr","locations":[{"start":{"line":102,"column":20},"end":{"line":102,"column":33}},{"start":{"line":102,"column":37},"end":{"line":102,"column":60}}]},"1":{"loc":{"start":{"line":103,"column":67},"end":{"line":103,"column":102}},"type":"binary-expr","locations":[{"start":{"line":103,"column":67},"end":{"line":103,"column":94}},{"start":{"line":103,"column":98},"end":{"line":103,"column":102}}]},"2":{"loc":{"start":{"line":104,"column":69},"end":{"line":104,"column":104}},"type":"binary-expr","locations":[{"start":{"line":104,"column":69},"end":{"line":104,"column":96}},{"start":{"line":104,"column":100},"end":{"line":104,"column":104}}]},"3":{"loc":{"start":{"line":109,"column":77},"end":{"line":109,"column":98}},"type":"binary-expr","locations":[{"start":{"line":109,"column":77},"end":{"line":109,"column":92}},{"start":{"line":109,"column":96},"end":{"line":109,"column":98}}]},"4":{"loc":{"start":{"line":114,"column":4},"end":{"line":116,"column":5}},"type":"if","locations":[{"start":{"line":114,"column":4},"end":{"line":116,"column":5}}]},"5":{"loc":{"start":{"line":117,"column":4},"end":{"line":119,"column":5}},"type":"if","locations":[{"start":{"line":117,"column":4},"end":{"line":119,"column":5}}]},"6":{"loc":{"start":{"line":122,"column":4},"end":{"line":124,"column":5}},"type":"if","locations":[{"start":{"line":122,"column":4},"end":{"line":124,"column":5}}]},"7":{"loc":{"start":{"line":126,"column":4},"end":{"line":128,"column":5}},"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":128,"column":5}}]},"8":{"loc":{"start":{"line":141,"column":4},"end":{"line":143,"column":5}},"type":"if","locations":[{"start":{"line":141,"column":4},"end":{"line":143,"column":5}}]},"9":{"loc":{"start":{"line":169,"column":6},"end":{"line":171,"column":7}},"type":"if","locations":[{"start":{"line":169,"column":6},"end":{"line":171,"column":7}}]},"10":{"loc":{"start":{"line":180,"column":6},"end":{"line":182,"column":7}},"type":"if","locations":[{"start":{"line":180,"column":6},"end":{"line":182,"column":7}}]},"11":{"loc":{"start":{"line":184,"column":6},"end":{"line":186,"column":7}},"type":"if","locations":[{"start":{"line":184,"column":6},"end":{"line":186,"column":7}}]},"12":{"loc":{"start":{"line":196,"column":4},"end":{"line":204,"column":5}},"type":"if","locations":[{"start":{"line":196,"column":4},"end":{"line":204,"column":5}}]},"13":{"loc":{"start":{"line":197,"column":6},"end":{"line":202,"column":7}},"type":"if","locations":[{"start":{"line":197,"column":6},"end":{"line":202,"column":7}},{"start":{"line":199,"column":13},"end":{"line":202,"column":7}}]},"14":{"loc":{"start":{"line":231,"column":4},"end":{"line":243,"column":5}},"type":"if","locations":[{"start":{"line":231,"column":4},"end":{"line":243,"column":5}},{"start":{"line":239,"column":11},"end":{"line":243,"column":5}}]},"15":{"loc":{"start":{"line":248,"column":4},"end":{"line":261,"column":5}},"type":"if","locations":[{"start":{"line":248,"column":4},"end":{"line":261,"column":5}},{"start":{"line":255,"column":11},"end":{"line":261,"column":5}}]},"16":{"loc":{"start":{"line":251,"column":8},"end":{"line":253,"column":9}},"type":"if","locations":[{"start":{"line":251,"column":8},"end":{"line":253,"column":9}}]},"17":{"loc":{"start":{"line":257,"column":8},"end":{"line":259,"column":9}},"type":"if","locations":[{"start":{"line":257,"column":8},"end":{"line":259,"column":9}}]},"18":{"loc":{"start":{"line":267,"column":4},"end":{"line":269,"column":5}},"type":"if","locations":[{"start":{"line":267,"column":4},"end":{"line":269,"column":5}}]},"19":{"loc":{"start":{"line":271,"column":4},"end":{"line":273,"column":5}},"type":"if","locations":[{"start":{"line":271,"column":4},"end":{"line":273,"column":5}}]},"20":{"loc":{"start":{"line":287,"column":67},"end":{"line":287,"column":102}},"type":"binary-expr","locations":[{"start":{"line":287,"column":67},"end":{"line":287,"column":94}},{"start":{"line":287,"column":98},"end":{"line":287,"column":102}}]},"21":{"loc":{"start":{"line":292,"column":77},"end":{"line":292,"column":98}},"type":"binary-expr","locations":[{"start":{"line":292,"column":77},"end":{"line":292,"column":92}},{"start":{"line":292,"column":96},"end":{"line":292,"column":98}}]},"22":{"loc":{"start":{"line":297,"column":4},"end":{"line":299,"column":5}},"type":"if","locations":[{"start":{"line":297,"column":4},"end":{"line":299,"column":5}}]},"23":{"loc":{"start":{"line":300,"column":4},"end":{"line":302,"column":5}},"type":"if","locations":[{"start":{"line":300,"column":4},"end":{"line":302,"column":5}}]},"24":{"loc":{"start":{"line":318,"column":4},"end":{"line":322,"column":5}},"type":"if","locations":[{"start":{"line":318,"column":4},"end":{"line":322,"column":5}},{"start":{"line":320,"column":11},"end":{"line":322,"column":5}}]},"25":{"loc":{"start":{"line":329,"column":4},"end":{"line":331,"column":5}},"type":"if","locations":[{"start":{"line":329,"column":4},"end":{"line":331,"column":5}}]},"26":{"loc":{"start":{"line":333,"column":4},"end":{"line":335,"column":5}},"type":"if","locations":[{"start":{"line":333,"column":4},"end":{"line":335,"column":5}}]},"27":{"loc":{"start":{"line":341,"column":4},"end":{"line":343,"column":5}},"type":"if","locations":[{"start":{"line":341,"column":4},"end":{"line":343,"column":5}}]},"28":{"loc":{"start":{"line":345,"column":4},"end":{"line":347,"column":5}},"type":"if","locations":[{"start":{"line":345,"column":4},"end":{"line":347,"column":5}}]},"29":{"loc":{"start":{"line":357,"column":6},"end":{"line":369,"column":7}},"type":"if","locations":[{"start":{"line":357,"column":6},"end":{"line":369,"column":7}},{"start":{"line":363,"column":13},"end":{"line":369,"column":7}}]},"30":{"loc":{"start":{"line":359,"column":8},"end":{"line":361,"column":9}},"type":"if","locations":[{"start":{"line":359,"column":8},"end":{"line":361,"column":9}}]},"31":{"loc":{"start":{"line":365,"column":8},"end":{"line":367,"column":9}},"type":"if","locations":[{"start":{"line":365,"column":8},"end":{"line":367,"column":9}}]},"32":{"loc":{"start":{"line":390,"column":4},"end":{"line":392,"column":5}},"type":"if","locations":[{"start":{"line":390,"column":4},"end":{"line":392,"column":5}}]},"33":{"loc":{"start":{"line":398,"column":4},"end":{"line":400,"column":5}},"type":"if","locations":[{"start":{"line":398,"column":4},"end":{"line":400,"column":5}}]},"34":{"loc":{"start":{"line":406,"column":2},"end":{"line":408,"column":3}},"type":"if","locations":[{"start":{"line":406,"column":2},"end":{"line":408,"column":3}}]},"35":{"loc":{"start":{"line":406,"column":6},"end":{"line":406,"column":39}},"type":"binary-expr","locations":[{"start":{"line":406,"column":6},"end":{"line":406,"column":17}},{"start":{"line":406,"column":21},"end":{"line":406,"column":39}}]},"36":{"loc":{"start":{"line":409,"column":2},"end":{"line":413,"column":3}},"type":"if","locations":[{"start":{"line":409,"column":2},"end":{"line":413,"column":3}}]},"37":{"loc":{"start":{"line":414,"column":2},"end":{"line":416,"column":3}},"type":"if","locations":[{"start":{"line":414,"column":2},"end":{"line":416,"column":3}}]},"38":{"loc":{"start":{"line":418,"column":2},"end":{"line":425,"column":3}},"type":"if","locations":[{"start":{"line":418,"column":2},"end":{"line":425,"column":3}}]},"39":{"loc":{"start":{"line":427,"column":2},"end":{"line":432,"column":3}},"type":"if","locations":[{"start":{"line":427,"column":2},"end":{"line":432,"column":3}}]},"40":{"loc":{"start":{"line":428,"column":21},"end":{"line":428,"column":40}},"type":"binary-expr","locations":[{"start":{"line":428,"column":21},"end":{"line":428,"column":34}},{"start":{"line":428,"column":38},"end":{"line":428,"column":40}}]},"41":{"loc":{"start":{"line":429,"column":4},"end":{"line":431,"column":5}},"type":"if","locations":[{"start":{"line":429,"column":4},"end":{"line":431,"column":5}}]},"42":{"loc":{"start":{"line":429,"column":8},"end":{"line":429,"column":104}},"type":"binary-expr","locations":[{"start":{"line":429,"column":8},"end":{"line":429,"column":24}},{"start":{"line":429,"column":28},"end":{"line":429,"column":49}},{"start":{"line":429,"column":53},"end":{"line":429,"column":104}}]},"43":{"loc":{"start":{"line":448,"column":4},"end":{"line":454,"column":5}},"type":"if","locations":[{"start":{"line":448,"column":4},"end":{"line":454,"column":5}},{"start":{"line":452,"column":11},"end":{"line":454,"column":5}}]},"44":{"loc":{"start":{"line":449,"column":6},"end":{"line":451,"column":7}},"type":"if","locations":[{"start":{"line":449,"column":6},"end":{"line":451,"column":7}}]},"45":{"loc":{"start":{"line":461,"column":2},"end":{"line":496,"column":3}},"type":"switch","locations":[{"start":{"line":462,"column":4},"end":{"line":463,"column":null}},{"start":{"line":464,"column":4},"end":{"line":465,"column":null}},{"start":{"line":466,"column":4},"end":{"line":467,"column":null}},{"start":{"line":468,"column":4},"end":{"line":469,"column":null}},{"start":{"line":470,"column":4},"end":{"line":493,"column":7}},{"start":{"line":494,"column":4},"end":{"line":495,"column":null}}]},"46":{"loc":{"start":{"line":471,"column":6},"end":{"line":493,"column":7}},"type":"switch","locations":[{"start":{"line":472,"column":8},"end":{"line":473,"column":null}},{"start":{"line":474,"column":8},"end":{"line":475,"column":null}},{"start":{"line":476,"column":8},"end":{"line":476,"column":30}},{"start":{"line":477,"column":8},"end":{"line":477,"column":31}},{"start":{"line":478,"column":8},"end":{"line":478,"column":31}},{"start":{"line":479,"column":8},"end":{"line":479,"column":32}},{"start":{"line":480,"column":8},"end":{"line":481,"column":null}},{"start":{"line":482,"column":8},"end":{"line":482,"column":30}},{"start":{"line":483,"column":8},"end":{"line":483,"column":31}},{"start":{"line":484,"column":8},"end":{"line":484,"column":31}},{"start":{"line":485,"column":8},"end":{"line":485,"column":32}},{"start":{"line":486,"column":8},"end":{"line":487,"column":null}},{"start":{"line":488,"column":8},"end":{"line":488,"column":30}},{"start":{"line":489,"column":8},"end":{"line":490,"column":null}},{"start":{"line":491,"column":8},"end":{"line":492,"column":null}}]},"47":{"loc":{"start":{"line":501,"column":2},"end":{"line":504,"column":3}},"type":"if","locations":[{"start":{"line":501,"column":2},"end":{"line":504,"column":3}}]},"48":{"loc":{"start":{"line":501,"column":6},"end":{"line":501,"column":58}},"type":"binary-expr","locations":[{"start":{"line":501,"column":6},"end":{"line":501,"column":21}},{"start":{"line":501,"column":25},"end":{"line":501,"column":58}}]},"49":{"loc":{"start":{"line":510,"column":4},"end":{"line":512,"column":5}},"type":"if","locations":[{"start":{"line":510,"column":4},"end":{"line":512,"column":5}}]},"50":{"loc":{"start":{"line":518,"column":9},"end":{"line":520,"column":35}},"type":"binary-expr","locations":[{"start":{"line":518,"column":9},"end":{"line":518,"column":38}},{"start":{"line":519,"column":4},"end":{"line":519,"column":39}},{"start":{"line":520,"column":4},"end":{"line":520,"column":35}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":2,"25":2,"26":2,"27":2,"28":2,"29":1,"30":2,"31":2,"32":2,"33":0,"34":2,"35":0,"36":2,"37":2,"38":0,"39":2,"40":2,"41":0,"42":2,"43":2,"44":2,"45":2,"46":2,"47":2,"48":2,"49":2,"50":2,"51":2,"52":0,"53":2,"54":2,"55":2,"56":2,"57":2,"58":2,"59":2,"60":2,"61":2,"62":2,"63":2,"64":2,"65":2,"66":0,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"73":0,"74":0,"75":0,"76":0,"77":2,"78":2,"79":2,"80":2,"81":0,"82":0,"83":0,"84":0,"85":2,"86":2,"87":2,"88":2,"89":2,"90":2,"91":2,"92":2,"93":2,"94":2,"95":2,"96":2,"97":2,"98":2,"99":2,"100":2,"101":0,"102":0,"103":0,"104":2,"105":2,"106":2,"107":2,"108":2,"109":2,"110":2,"111":0,"112":0,"113":0,"114":0,"115":0,"116":1,"117":1,"118":0,"119":1,"120":1,"121":0,"122":1,"123":1,"124":2,"125":2,"126":2,"127":2,"128":1,"129":2,"130":2,"131":2,"132":0,"133":2,"134":0,"135":2,"136":2,"137":2,"138":2,"139":2,"140":2,"141":2,"142":2,"143":2,"144":0,"145":2,"146":2,"147":2,"148":1,"149":1,"150":0,"151":1,"152":1,"153":0,"154":1,"155":2,"156":2,"157":0,"158":2,"159":2,"160":0,"161":2,"162":2,"163":2,"164":2,"165":2,"166":2,"167":2,"168":2,"169":2,"170":0,"171":2,"172":0,"173":0,"174":0,"175":0,"176":2,"177":2,"178":2,"179":2,"180":2,"181":2,"182":2,"183":2,"184":2,"185":2,"186":2,"187":2,"188":2,"189":2,"190":0,"191":0,"192":0,"193":0,"194":0,"195":1,"196":14,"197":0,"198":14,"199":2,"200":2,"201":4,"202":14,"203":0,"204":14,"205":14,"206":2,"207":2,"208":2,"209":8,"210":8,"211":2,"212":12,"213":12,"214":12,"215":12,"216":4,"217":8,"218":8,"219":8,"220":8,"221":8,"222":8,"223":0,"224":0,"225":8,"226":8,"227":8,"228":0,"229":2,"230":0,"231":0,"232":6,"233":2,"234":2,"235":2,"236":0,"237":0,"238":0,"239":0,"240":8,"241":8,"242":4,"243":4,"244":4,"245":12,"246":12,"247":4,"248":8,"249":6},"f":{"0":2,"1":1,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":1,"12":2,"13":1,"14":2,"15":1,"16":2,"17":2,"18":2,"19":2,"20":2,"21":0,"22":14,"23":8,"24":8,"25":8,"26":12,"27":6},"b":{"0":[2,2],"1":[2,2],"2":[2,2],"3":[2,1],"4":[0],"5":[0],"6":[0],"7":[0],"8":[0],"9":[0],"10":[2],"11":[0],"12":[0],"13":[0,0],"14":[2,0],"15":[2,0],"16":[2],"17":[0],"18":[0],"19":[0],"20":[2,2],"21":[2,1],"22":[0],"23":[0],"24":[0,2],"25":[0],"26":[0],"27":[0],"28":[0],"29":[2,0],"30":[0],"31":[0],"32":[2],"33":[0],"34":[0],"35":[14,14],"36":[2],"37":[0],"38":[2],"39":[12],"40":[12,0],"41":[4],"42":[12,12,12],"43":[0,8],"44":[0],"45":[0,2,0,0,6,0],"46":[2,2,2,2,2,2,2,0,0,0,0,0,0,0,0],"47":[4],"48":[8,4],"49":[4],"50":[6,0,0]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/rule-registry.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/rule-registry.ts","statementMap":{"0":{"start":{"line":9,"column":0},"end":{"line":9,"column":16}},"1":{"start":{"line":14,"column":0},"end":{"line":14,"column":16}},"2":{"start":{"line":19,"column":0},"end":{"line":19,"column":16}},"3":{"start":{"line":24,"column":0},"end":{"line":24,"column":16}},"4":{"start":{"line":29,"column":0},"end":{"line":29,"column":16}},"5":{"start":{"line":34,"column":0},"end":{"line":34,"column":16}},"6":{"start":{"line":39,"column":0},"end":{"line":39,"column":16}},"7":{"start":{"line":3,"column":22},"end":{"line":3,"column":51}},"8":{"start":{"line":5,"column":20},"end":{"line":5,"column":47}},"9":{"start":{"line":10,"column":2},"end":{"line":10,"column":null}},"10":{"start":{"line":15,"column":2},"end":{"line":15,"column":null}},"11":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"12":{"start":{"line":25,"column":2},"end":{"line":25,"column":null}},"13":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}},"14":{"start":{"line":35,"column":2},"end":{"line":35,"column":null}},"15":{"start":{"line":40,"column":2},"end":{"line":40,"column":null}},"16":{"start":{"line":41,"column":2},"end":{"line":41,"column":null}}},"fnMap":{"0":{"name":"registerRuleExecutor","decl":{"start":{"line":9,"column":16},"end":{"line":9,"column":36}},"loc":{"start":{"line":9,"column":63},"end":{"line":11,"column":1}}},"1":{"name":"getRuleExecutor","decl":{"start":{"line":14,"column":16},"end":{"line":14,"column":31}},"loc":{"start":{"line":14,"column":44},"end":{"line":16,"column":1}}},"2":{"name":"getRuleExecutors","decl":{"start":{"line":19,"column":16},"end":{"line":19,"column":32}},"loc":{"start":{"line":19,"column":32},"end":{"line":21,"column":1}}},"3":{"name":"registerRuleAction","decl":{"start":{"line":24,"column":16},"end":{"line":24,"column":34}},"loc":{"start":{"line":24,"column":57},"end":{"line":26,"column":1}}},"4":{"name":"getRuleAction","decl":{"start":{"line":29,"column":16},"end":{"line":29,"column":29}},"loc":{"start":{"line":29,"column":42},"end":{"line":31,"column":1}}},"5":{"name":"getRuleActions","decl":{"start":{"line":34,"column":16},"end":{"line":34,"column":30}},"loc":{"start":{"line":34,"column":30},"end":{"line":36,"column":1}}},"6":{"name":"clearRules","decl":{"start":{"line":39,"column":16},"end":{"line":39,"column":26}},"loc":{"start":{"line":39,"column":26},"end":{"line":42,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":3,"9":3,"10":9,"11":15,"12":0,"13":0,"14":0,"15":0,"16":0},"f":{"0":3,"1":9,"2":15,"3":0,"4":0,"5":0,"6":0},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/serde.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/serde.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":41}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":null}},"2":{"start":{"line":10,"column":0},"end":{"line":10,"column":63}},"3":{"start":{"line":13,"column":0},"end":{"line":13,"column":null}},"4":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"5":{"start":{"line":15,"column":2},"end":{"line":15,"column":null}},"6":{"start":{"line":18,"column":13},"end":{"line":18,"column":null}},"7":{"start":{"line":23,"column":4},"end":{"line":23,"column":null}},"8":{"start":{"line":20,"column":0},"end":{"line":20,"column":13}},"9":{"start":{"line":48,"column":2},"end":{"line":48,"column":null}},"10":{"start":{"line":51,"column":4},"end":{"line":51,"column":null}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":null}},"12":{"start":{"line":53,"column":4},"end":{"line":53,"column":null}},"13":{"start":{"line":59,"column":4},"end":{"line":59,"column":10}},"14":{"start":{"line":63,"column":21},"end":{"line":63,"column":71}},"15":{"start":{"line":64,"column":4},"end":{"line":64,"column":null}},"16":{"start":{"line":68,"column":21},"end":{"line":68,"column":38}},"17":{"start":{"line":69,"column":4},"end":{"line":71,"column":5}},"18":{"start":{"line":70,"column":6},"end":{"line":70,"column":12}},"19":{"start":{"line":72,"column":4},"end":{"line":83,"column":5}},"20":{"start":{"line":73,"column":21},"end":{"line":73,"column":83}},"21":{"start":{"line":74,"column":17},"end":{"line":80,"column":null}},"22":{"start":{"line":81,"column":6},"end":{"line":81,"column":null}},"23":{"start":{"line":82,"column":6},"end":{"line":82,"column":null}},"24":{"start":{"line":89,"column":4},"end":{"line":91,"column":5}},"25":{"start":{"line":90,"column":6},"end":{"line":90,"column":null}},"26":{"start":{"line":93,"column":4},"end":{"line":107,"column":5}},"27":{"start":{"line":95,"column":8},"end":{"line":95,"column":null}},"28":{"start":{"line":96,"column":8},"end":{"line":96,"column":13}},"29":{"start":{"line":98,"column":8},"end":{"line":98,"column":null}},"30":{"start":{"line":99,"column":8},"end":{"line":99,"column":13}},"31":{"start":{"line":101,"column":8},"end":{"line":101,"column":null}},"32":{"start":{"line":102,"column":8},"end":{"line":105,"column":9}},"33":{"start":{"line":104,"column":10},"end":{"line":104,"column":null}},"34":{"start":{"line":106,"column":8},"end":{"line":106,"column":13}},"35":{"start":{"line":108,"column":4},"end":{"line":110,"column":5}},"36":{"start":{"line":109,"column":6},"end":{"line":109,"column":null}},"37":{"start":{"line":111,"column":4},"end":{"line":162,"column":5}},"38":{"start":{"line":111,"column":17},"end":{"line":111,"column":18}},"39":{"start":{"line":112,"column":17},"end":{"line":112,"column":25}},"40":{"start":{"line":113,"column":6},"end":{"line":115,"column":7}},"41":{"start":{"line":114,"column":8},"end":{"line":114,"column":16}},"42":{"start":{"line":116,"column":17},"end":{"line":116,"column":26}},"43":{"start":{"line":117,"column":6},"end":{"line":133,"column":7}},"44":{"start":{"line":119,"column":10},"end":{"line":121,"column":11}},"45":{"start":{"line":120,"column":12},"end":{"line":120,"column":20}},"46":{"start":{"line":122,"column":10},"end":{"line":122,"column":15}},"47":{"start":{"line":124,"column":10},"end":{"line":126,"column":11}},"48":{"start":{"line":125,"column":12},"end":{"line":125,"column":20}},"49":{"start":{"line":127,"column":10},"end":{"line":127,"column":15}},"50":{"start":{"line":129,"column":10},"end":{"line":131,"column":11}},"51":{"start":{"line":130,"column":12},"end":{"line":130,"column":20}},"52":{"start":{"line":132,"column":10},"end":{"line":132,"column":15}},"53":{"start":{"line":134,"column":16},"end":{"line":135,"column":103}},"54":{"start":{"line":136,"column":25},"end":{"line":136,"column":51}},"55":{"start":{"line":137,"column":6},"end":{"line":141,"column":7}},"56":{"start":{"line":138,"column":8},"end":{"line":139,"column":null}},"57":{"start":{"line":140,"column":8},"end":{"line":140,"column":null}},"58":{"start":{"line":142,"column":6},"end":{"line":161,"column":7}},"59":{"start":{"line":143,"column":21},"end":{"line":143,"column":59}},"60":{"start":{"line":144,"column":8},"end":{"line":153,"column":9}},"61":{"start":{"line":146,"column":12},"end":{"line":148,"column":13}},"62":{"start":{"line":147,"column":14},"end":{"line":147,"column":null}},"63":{"start":{"line":149,"column":12},"end":{"line":149,"column":17}},"64":{"start":{"line":151,"column":12},"end":{"line":151,"column":null}},"65":{"start":{"line":152,"column":12},"end":{"line":152,"column":17}},"66":{"start":{"line":154,"column":8},"end":{"line":155,"column":null}},"67":{"start":{"line":157,"column":8},"end":{"line":159,"column":9}},"68":{"start":{"line":158,"column":10},"end":{"line":158,"column":null}},"69":{"start":{"line":160,"column":8},"end":{"line":160,"column":null}},"70":{"start":{"line":163,"column":4},"end":{"line":163,"column":null}},"71":{"start":{"line":168,"column":21},"end":{"line":168,"column":67}},"72":{"start":{"line":169,"column":4},"end":{"line":171,"column":5}},"73":{"start":{"line":170,"column":6},"end":{"line":170,"column":null}},"74":{"start":{"line":172,"column":21},"end":{"line":172,"column":56}},"75":{"start":{"line":173,"column":4},"end":{"line":175,"column":5}},"76":{"start":{"line":174,"column":6},"end":{"line":174,"column":null}},"77":{"start":{"line":176,"column":4},"end":{"line":183,"column":5}},"78":{"start":{"line":177,"column":6},"end":{"line":177,"column":null}},"79":{"start":{"line":179,"column":6},"end":{"line":181,"column":7}},"80":{"start":{"line":180,"column":8},"end":{"line":180,"column":null}},"81":{"start":{"line":182,"column":6},"end":{"line":182,"column":null}},"82":{"start":{"line":187,"column":4},"end":{"line":189,"column":5}},"83":{"start":{"line":188,"column":6},"end":{"line":188,"column":null}},"84":{"start":{"line":190,"column":4},"end":{"line":200,"column":5}},"85":{"start":{"line":191,"column":18},"end":{"line":191,"column":39}},"86":{"start":{"line":192,"column":6},"end":{"line":199,"column":7}},"87":{"start":{"line":195,"column":10},"end":{"line":195,"column":null}},"88":{"start":{"line":198,"column":10},"end":{"line":198,"column":null}},"89":{"start":{"line":201,"column":4},"end":{"line":201,"column":null}},"90":{"start":{"line":205,"column":4},"end":{"line":209,"column":5}},"91":{"start":{"line":206,"column":6},"end":{"line":206,"column":31}},"92":{"start":{"line":207,"column":11},"end":{"line":209,"column":5}},"93":{"start":{"line":208,"column":6},"end":{"line":208,"column":null}},"94":{"start":{"line":210,"column":4},"end":{"line":210,"column":null}},"95":{"start":{"line":44,"column":0},"end":{"line":44,"column":22}},"96":{"start":{"line":225,"column":4},"end":{"line":225,"column":null}},"97":{"start":{"line":229,"column":4},"end":{"line":229,"column":null}},"98":{"start":{"line":237,"column":23},"end":{"line":237,"column":56}},"99":{"start":{"line":238,"column":22},"end":{"line":238,"column":47}},"100":{"start":{"line":239,"column":32},"end":{"line":239,"column":63}},"101":{"start":{"line":240,"column":20},"end":{"line":240,"column":50}},"102":{"start":{"line":241,"column":26},"end":{"line":241,"column":56}},"103":{"start":{"line":243,"column":13},"end":{"line":243,"column":15}},"104":{"start":{"line":244,"column":18},"end":{"line":244,"column":47}},"105":{"start":{"line":245,"column":4},"end":{"line":261,"column":5}},"106":{"start":{"line":246,"column":6},"end":{"line":246,"column":null}},"107":{"start":{"line":247,"column":11},"end":{"line":261,"column":5}},"108":{"start":{"line":248,"column":6},"end":{"line":248,"column":null}},"109":{"start":{"line":249,"column":6},"end":{"line":249,"column":null}},"110":{"start":{"line":250,"column":6},"end":{"line":252,"column":7}},"111":{"start":{"line":251,"column":8},"end":{"line":251,"column":null}},"112":{"start":{"line":253,"column":11},"end":{"line":261,"column":5}},"113":{"start":{"line":254,"column":6},"end":{"line":254,"column":null}},"114":{"start":{"line":255,"column":6},"end":{"line":255,"column":null}},"115":{"start":{"line":256,"column":11},"end":{"line":261,"column":5}},"116":{"start":{"line":257,"column":6},"end":{"line":257,"column":null}},"117":{"start":{"line":258,"column":6},"end":{"line":258,"column":null}},"118":{"start":{"line":260,"column":6},"end":{"line":260,"column":null}},"119":{"start":{"line":262,"column":4},"end":{"line":262,"column":null}},"120":{"start":{"line":266,"column":21},"end":{"line":266,"column":36}},"121":{"start":{"line":267,"column":4},"end":{"line":267,"column":null}},"122":{"start":{"line":268,"column":4},"end":{"line":268,"column":null}},"123":{"start":{"line":223,"column":0},"end":{"line":223,"column":22}},"124":{"start":{"line":283,"column":4},"end":{"line":283,"column":null}},"125":{"start":{"line":287,"column":4},"end":{"line":287,"column":null}},"126":{"start":{"line":291,"column":22},"end":{"line":291,"column":44}},"127":{"start":{"line":292,"column":4},"end":{"line":298,"column":5}},"128":{"start":{"line":293,"column":6},"end":{"line":297,"column":null}},"129":{"start":{"line":299,"column":15},"end":{"line":299,"column":52}},"130":{"start":{"line":300,"column":18},"end":{"line":300,"column":41}},"131":{"start":{"line":301,"column":4},"end":{"line":301,"column":null}},"132":{"start":{"line":305,"column":32},"end":{"line":305,"column":67}},"133":{"start":{"line":306,"column":20},"end":{"line":306,"column":50}},"134":{"start":{"line":307,"column":4},"end":{"line":309,"column":5}},"135":{"start":{"line":308,"column":6},"end":{"line":308,"column":null}},"136":{"start":{"line":310,"column":4},"end":{"line":312,"column":5}},"137":{"start":{"line":311,"column":6},"end":{"line":311,"column":null}},"138":{"start":{"line":313,"column":4},"end":{"line":313,"column":null}},"139":{"start":{"line":317,"column":4},"end":{"line":332,"column":5}},"140":{"start":{"line":320,"column":8},"end":{"line":321,"column":null}},"141":{"start":{"line":321,"column":10},"end":{"line":321,"column":59}},"142":{"start":{"line":323,"column":8},"end":{"line":324,"column":null}},"143":{"start":{"line":324,"column":10},"end":{"line":324,"column":27}},"144":{"start":{"line":327,"column":8},"end":{"line":328,"column":null}},"145":{"start":{"line":328,"column":10},"end":{"line":328,"column":62}},"146":{"start":{"line":330,"column":8},"end":{"line":331,"column":null}},"147":{"start":{"line":331,"column":10},"end":{"line":331,"column":27}},"148":{"start":{"line":336,"column":4},"end":{"line":338,"column":5}},"149":{"start":{"line":337,"column":6},"end":{"line":337,"column":null}},"150":{"start":{"line":339,"column":4},"end":{"line":344,"column":5}},"151":{"start":{"line":340,"column":21},"end":{"line":340,"column":30}},"152":{"start":{"line":341,"column":6},"end":{"line":343,"column":7}},"153":{"start":{"line":342,"column":8},"end":{"line":342,"column":null}},"154":{"start":{"line":345,"column":4},"end":{"line":345,"column":null}},"155":{"start":{"line":350,"column":18},"end":{"line":350,"column":74}},"156":{"start":{"line":351,"column":33},"end":{"line":358,"column":null}},"157":{"start":{"line":360,"column":34},"end":{"line":360,"column":36}},"158":{"start":{"line":363,"column":4},"end":{"line":373,"column":5}},"159":{"start":{"line":364,"column":6},"end":{"line":364,"column":null}},"160":{"start":{"line":365,"column":6},"end":{"line":365,"column":null}},"161":{"start":{"line":366,"column":6},"end":{"line":366,"column":null}},"162":{"start":{"line":367,"column":11},"end":{"line":373,"column":5}},"163":{"start":{"line":368,"column":6},"end":{"line":368,"column":null}},"164":{"start":{"line":369,"column":6},"end":{"line":369,"column":null}},"165":{"start":{"line":370,"column":6},"end":{"line":370,"column":null}},"166":{"start":{"line":372,"column":6},"end":{"line":372,"column":null}},"167":{"start":{"line":374,"column":42},"end":{"line":374,"column":46}},"168":{"start":{"line":375,"column":19},"end":{"line":375,"column":69}},"169":{"start":{"line":376,"column":4},"end":{"line":400,"column":5}},"170":{"start":{"line":376,"column":17},"end":{"line":376,"column":18}},"171":{"start":{"line":377,"column":20},"end":{"line":377,"column":31}},"172":{"start":{"line":378,"column":6},"end":{"line":381,"column":7}},"173":{"start":{"line":379,"column":8},"end":{"line":379,"column":null}},"174":{"start":{"line":380,"column":8},"end":{"line":380,"column":16}},"175":{"start":{"line":382,"column":6},"end":{"line":398,"column":7}},"176":{"start":{"line":384,"column":8},"end":{"line":396,"column":9}},"177":{"start":{"line":385,"column":10},"end":{"line":389,"column":null}},"178":{"start":{"line":391,"column":10},"end":{"line":395,"column":null}},"179":{"start":{"line":397,"column":8},"end":{"line":397,"column":null}},"180":{"start":{"line":399,"column":6},"end":{"line":399,"column":null}},"181":{"start":{"line":401,"column":4},"end":{"line":403,"column":5}},"182":{"start":{"line":402,"column":6},"end":{"line":402,"column":null}},"183":{"start":{"line":404,"column":4},"end":{"line":404,"column":null}},"184":{"start":{"line":409,"column":4},"end":{"line":411,"column":5}},"185":{"start":{"line":410,"column":6},"end":{"line":410,"column":null}},"186":{"start":{"line":412,"column":19},"end":{"line":412,"column":33}},"187":{"start":{"line":413,"column":19},"end":{"line":413,"column":32}},"188":{"start":{"line":414,"column":17},"end":{"line":414,"column":24}},"189":{"start":{"line":415,"column":4},"end":{"line":418,"column":5}},"190":{"start":{"line":415,"column":17},"end":{"line":415,"column":29}},"191":{"start":{"line":416,"column":17},"end":{"line":416,"column":70}},"192":{"start":{"line":417,"column":6},"end":{"line":417,"column":null}},"193":{"start":{"line":419,"column":4},"end":{"line":419,"column":null}},"194":{"start":{"line":420,"column":4},"end":{"line":420,"column":null}},"195":{"start":{"line":424,"column":4},"end":{"line":427,"column":5}},"196":{"start":{"line":426,"column":6},"end":{"line":426,"column":null}},"197":{"start":{"line":428,"column":4},"end":{"line":428,"column":null}},"198":{"start":{"line":281,"column":0},"end":{"line":281,"column":22}},"199":{"start":{"line":439,"column":58},"end":{"line":445,"column":1}},"200":{"start":{"line":440,"column":15},"end":{"line":440,"column":23}},"201":{"start":{"line":441,"column":2},"end":{"line":443,"column":3}},"202":{"start":{"line":442,"column":4},"end":{"line":442,"column":null}},"203":{"start":{"line":444,"column":2},"end":{"line":444,"column":null}},"204":{"start":{"line":439,"column":13},"end":{"line":439,"column":58}},"205":{"start":{"line":465,"column":4},"end":{"line":465,"column":null}},"206":{"start":{"line":466,"column":4},"end":{"line":466,"column":null}},"207":{"start":{"line":467,"column":4},"end":{"line":467,"column":null}},"208":{"start":{"line":468,"column":4},"end":{"line":468,"column":null}},"209":{"start":{"line":469,"column":4},"end":{"line":469,"column":null}},"210":{"start":{"line":470,"column":4},"end":{"line":470,"column":null}},"211":{"start":{"line":471,"column":4},"end":{"line":471,"column":null}},"212":{"start":{"line":472,"column":4},"end":{"line":472,"column":null}},"213":{"start":{"line":473,"column":4},"end":{"line":473,"column":null}},"214":{"start":{"line":474,"column":4},"end":{"line":474,"column":null}},"215":{"start":{"line":475,"column":4},"end":{"line":475,"column":null}},"216":{"start":{"line":476,"column":4},"end":{"line":476,"column":null}},"217":{"start":{"line":480,"column":19},"end":{"line":480,"column":35}},"218":{"start":{"line":481,"column":4},"end":{"line":483,"column":5}},"219":{"start":{"line":482,"column":6},"end":{"line":482,"column":null}},"220":{"start":{"line":484,"column":16},"end":{"line":484,"column":28}},"221":{"start":{"line":485,"column":4},"end":{"line":487,"column":5}},"222":{"start":{"line":486,"column":6},"end":{"line":486,"column":null}},"223":{"start":{"line":488,"column":19},"end":{"line":488,"column":39}},"224":{"start":{"line":489,"column":4},"end":{"line":494,"column":5}},"225":{"start":{"line":490,"column":6},"end":{"line":490,"column":null}},"226":{"start":{"line":491,"column":6},"end":{"line":493,"column":7}},"227":{"start":{"line":492,"column":8},"end":{"line":492,"column":null}},"228":{"start":{"line":495,"column":4},"end":{"line":495,"column":null}},"229":{"start":{"line":499,"column":15},"end":{"line":499,"column":41}},"230":{"start":{"line":500,"column":4},"end":{"line":502,"column":5}},"231":{"start":{"line":501,"column":6},"end":{"line":501,"column":null}},"232":{"start":{"line":503,"column":4},"end":{"line":503,"column":null}},"233":{"start":{"line":507,"column":15},"end":{"line":507,"column":40}},"234":{"start":{"line":508,"column":4},"end":{"line":510,"column":5}},"235":{"start":{"line":509,"column":6},"end":{"line":509,"column":null}},"236":{"start":{"line":511,"column":4},"end":{"line":511,"column":null}},"237":{"start":{"line":515,"column":18},"end":{"line":515,"column":39}},"238":{"start":{"line":516,"column":4},"end":{"line":518,"column":5}},"239":{"start":{"line":517,"column":6},"end":{"line":517,"column":null}},"240":{"start":{"line":519,"column":23},"end":{"line":524,"column":null}},"241":{"start":{"line":526,"column":4},"end":{"line":526,"column":null}},"242":{"start":{"line":527,"column":4},"end":{"line":527,"column":null}},"243":{"start":{"line":531,"column":15},"end":{"line":531,"column":32}},"244":{"start":{"line":532,"column":19},"end":{"line":532,"column":39}},"245":{"start":{"line":533,"column":4},"end":{"line":541,"column":5}},"246":{"start":{"line":534,"column":6},"end":{"line":540,"column":7}},"247":{"start":{"line":535,"column":8},"end":{"line":539,"column":9}},"248":{"start":{"line":536,"column":10},"end":{"line":538,"column":11}},"249":{"start":{"line":537,"column":12},"end":{"line":537,"column":null}},"250":{"start":{"line":542,"column":4},"end":{"line":542,"column":null}},"251":{"start":{"line":546,"column":15},"end":{"line":546,"column":44}},"252":{"start":{"line":547,"column":4},"end":{"line":547,"column":null}},"253":{"start":{"line":448,"column":0},"end":{"line":448,"column":13}},"254":{"start":{"line":575,"column":2},"end":{"line":575,"column":null}},"255":{"start":{"line":585,"column":4},"end":{"line":606,"column":5}},"256":{"start":{"line":588,"column":8},"end":{"line":594,"column":9}},"257":{"start":{"line":588,"column":21},"end":{"line":588,"column":22}},"258":{"start":{"line":589,"column":26},"end":{"line":589,"column":38}},"259":{"start":{"line":590,"column":10},"end":{"line":593,"column":11}},"260":{"start":{"line":592,"column":12},"end":{"line":592,"column":null}},"261":{"start":{"line":595,"column":8},"end":{"line":595,"column":13}},"262":{"start":{"line":598,"column":8},"end":{"line":604,"column":9}},"263":{"start":{"line":598,"column":21},"end":{"line":598,"column":34}},"264":{"start":{"line":599,"column":26},"end":{"line":599,"column":38}},"265":{"start":{"line":600,"column":10},"end":{"line":603,"column":11}},"266":{"start":{"line":602,"column":12},"end":{"line":602,"column":null}},"267":{"start":{"line":605,"column":8},"end":{"line":605,"column":13}},"268":{"start":{"line":607,"column":25},"end":{"line":607,"column":47}},"269":{"start":{"line":608,"column":4},"end":{"line":608,"column":null}},"270":{"start":{"line":574,"column":0},"end":{"line":574,"column":22}},"271":{"start":{"line":615,"column":2},"end":{"line":620,"column":null}},"272":{"start":{"line":632,"column":4},"end":{"line":632,"column":null}},"273":{"start":{"line":633,"column":4},"end":{"line":633,"column":null}},"274":{"start":{"line":634,"column":4},"end":{"line":634,"column":null}},"275":{"start":{"line":635,"column":4},"end":{"line":635,"column":null}},"276":{"start":{"line":636,"column":4},"end":{"line":636,"column":null}},"277":{"start":{"line":640,"column":12},"end":{"line":640,"column":21}},"278":{"start":{"line":641,"column":4},"end":{"line":643,"column":null}},"279":{"start":{"line":647,"column":4},"end":{"line":647,"column":null}},"280":{"start":{"line":624,"column":0},"end":{"line":624,"column":13}},"281":{"start":{"line":652,"column":0},"end":{"line":652,"column":null}},"282":{"start":{"line":653,"column":2},"end":{"line":653,"column":null}},"283":{"start":{"line":654,"column":2},"end":{"line":654,"column":null}},"284":{"start":{"line":655,"column":2},"end":{"line":655,"column":null}},"285":{"start":{"line":656,"column":2},"end":{"line":656,"column":null}},"286":{"start":{"line":657,"column":2},"end":{"line":657,"column":null}},"287":{"start":{"line":658,"column":2},"end":{"line":658,"column":null}},"288":{"start":{"line":659,"column":2},"end":{"line":659,"column":null}},"289":{"start":{"line":660,"column":2},"end":{"line":660,"column":null}},"290":{"start":{"line":661,"column":2},"end":{"line":661,"column":null}},"291":{"start":{"line":662,"column":2},"end":{"line":662,"column":null}},"292":{"start":{"line":663,"column":2},"end":{"line":663,"column":null}},"293":{"start":{"line":664,"column":2},"end":{"line":664,"column":null}},"294":{"start":{"line":665,"column":2},"end":{"line":665,"column":null}},"295":{"start":{"line":666,"column":2},"end":{"line":666,"column":null}},"296":{"start":{"line":680,"column":4},"end":{"line":680,"column":null}},"297":{"start":{"line":684,"column":4},"end":{"line":684,"column":null}},"298":{"start":{"line":675,"column":0},"end":{"line":675,"column":13}},"299":{"start":{"line":697,"column":4},"end":{"line":697,"column":null}},"300":{"start":{"line":701,"column":4},"end":{"line":701,"column":10}},"301":{"start":{"line":692,"column":0},"end":{"line":692,"column":13}},"302":{"start":{"line":712,"column":4},"end":{"line":712,"column":null}},"303":{"start":{"line":709,"column":0},"end":{"line":709,"column":13}},"304":{"start":{"line":721,"column":4},"end":{"line":721,"column":null}},"305":{"start":{"line":722,"column":4},"end":{"line":722,"column":null}},"306":{"start":{"line":726,"column":17},"end":{"line":726,"column":25}},"307":{"start":{"line":727,"column":4},"end":{"line":732,"column":5}},"308":{"start":{"line":728,"column":6},"end":{"line":730,"column":7}},"309":{"start":{"line":729,"column":8},"end":{"line":729,"column":null}},"310":{"start":{"line":731,"column":6},"end":{"line":731,"column":null}},"311":{"start":{"line":733,"column":4},"end":{"line":733,"column":null}},"312":{"start":{"line":717,"column":0},"end":{"line":717,"column":13}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":13,"column":0},"end":{"line":13,"column":12}},"loc":{"start":{"line":13,"column":21},"end":{"line":16,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":22,"column":2},"end":{"line":22,"column":14}},"loc":{"start":{"line":22,"column":30},"end":{"line":24,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":50,"column":2},"end":{"line":50,"column":24}},"loc":{"start":{"line":50,"column":79},"end":{"line":54,"column":3}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":58,"column":2},"end":{"line":58,"column":7}},"loc":{"start":{"line":58,"column":7},"end":{"line":60,"column":3}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":62,"column":2},"end":{"line":62,"column":13}},"loc":{"start":{"line":62,"column":46},"end":{"line":65,"column":3}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":67,"column":2},"end":{"line":67,"column":7}},"loc":{"start":{"line":67,"column":87},"end":{"line":84,"column":3}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":86,"column":2},"end":{"line":86,"column":7}},"loc":{"start":{"line":88,"column":58},"end":{"line":164,"column":3}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":166,"column":2},"end":{"line":166,"column":7}},"loc":{"start":{"line":167,"column":62},"end":{"line":184,"column":3}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":186,"column":2},"end":{"line":186,"column":19}},"loc":{"start":{"line":186,"column":82},"end":{"line":202,"column":3}}},"9":{"name":"(anonymous_9)","decl":{"start":{"line":204,"column":2},"end":{"line":204,"column":15}},"loc":{"start":{"line":204,"column":52},"end":{"line":211,"column":3}}},"10":{"name":"(anonymous_10)","decl":{"start":{"line":224,"column":2},"end":{"line":224,"column":24}},"loc":{"start":{"line":224,"column":84},"end":{"line":226,"column":3}}},"11":{"name":"(anonymous_11)","decl":{"start":{"line":228,"column":11},"end":{"line":228,"column":17}},"loc":{"start":{"line":228,"column":17},"end":{"line":230,"column":3}}},"12":{"name":"(anonymous_12)","decl":{"start":{"line":236,"column":2},"end":{"line":236,"column":7}},"loc":{"start":{"line":236,"column":72},"end":{"line":263,"column":3}}},"13":{"name":"(anonymous_13)","decl":{"start":{"line":265,"column":2},"end":{"line":265,"column":12}},"loc":{"start":{"line":265,"column":41},"end":{"line":269,"column":3}}},"14":{"name":"(anonymous_14)","decl":{"start":{"line":282,"column":2},"end":{"line":282,"column":24}},"loc":{"start":{"line":282,"column":86},"end":{"line":284,"column":3}}},"15":{"name":"(anonymous_15)","decl":{"start":{"line":286,"column":11},"end":{"line":286,"column":17}},"loc":{"start":{"line":286,"column":17},"end":{"line":288,"column":3}}},"16":{"name":"(anonymous_16)","decl":{"start":{"line":290,"column":2},"end":{"line":290,"column":7}},"loc":{"start":{"line":290,"column":65},"end":{"line":302,"column":3}}},"17":{"name":"(anonymous_17)","decl":{"start":{"line":304,"column":2},"end":{"line":304,"column":7}},"loc":{"start":{"line":304,"column":39},"end":{"line":314,"column":3}}},"18":{"name":"(anonymous_18)","decl":{"start":{"line":316,"column":2},"end":{"line":316,"column":10}},"loc":{"start":{"line":316,"column":43},"end":{"line":333,"column":3}}},"19":{"name":"(anonymous_19)","decl":{"start":{"line":320,"column":56},"end":{"line":320,"column":57}},"loc":{"start":{"line":321,"column":10},"end":{"line":321,"column":59}}},"20":{"name":"(anonymous_20)","decl":{"start":{"line":323,"column":56},"end":{"line":323,"column":57}},"loc":{"start":{"line":324,"column":10},"end":{"line":324,"column":27}}},"21":{"name":"(anonymous_21)","decl":{"start":{"line":327,"column":53},"end":{"line":327,"column":54}},"loc":{"start":{"line":328,"column":10},"end":{"line":328,"column":62}}},"22":{"name":"(anonymous_22)","decl":{"start":{"line":330,"column":53},"end":{"line":330,"column":54}},"loc":{"start":{"line":331,"column":10},"end":{"line":331,"column":27}}},"23":{"name":"(anonymous_23)","decl":{"start":{"line":335,"column":2},"end":{"line":335,"column":12}},"loc":{"start":{"line":335,"column":79},"end":{"line":346,"column":3}}},"24":{"name":"(anonymous_24)","decl":{"start":{"line":348,"column":2},"end":{"line":348,"column":7}},"loc":{"start":{"line":349,"column":38},"end":{"line":405,"column":3}}},"25":{"name":"(anonymous_25)","decl":{"start":{"line":407,"column":2},"end":{"line":407,"column":7}},"loc":{"start":{"line":408,"column":40},"end":{"line":421,"column":3}}},"26":{"name":"(anonymous_26)","decl":{"start":{"line":423,"column":2},"end":{"line":423,"column":7}},"loc":{"start":{"line":423,"column":91},"end":{"line":429,"column":3}}},"27":{"name":"(anonymous_27)","decl":{"start":{"line":439,"column":58},"end":{"line":439,"column":59}},"loc":{"start":{"line":439,"column":98},"end":{"line":445,"column":1}}},"28":{"name":"(anonymous_28)","decl":{"start":{"line":462,"column":2},"end":{"line":462,"column":14}},"loc":{"start":{"line":464,"column":93},"end":{"line":477,"column":3}}},"29":{"name":"(anonymous_29)","decl":{"start":{"line":479,"column":2},"end":{"line":479,"column":14}},"loc":{"start":{"line":479,"column":27},"end":{"line":496,"column":3}}},"30":{"name":"(anonymous_30)","decl":{"start":{"line":498,"column":2},"end":{"line":498,"column":15}},"loc":{"start":{"line":498,"column":28},"end":{"line":504,"column":3}}},"31":{"name":"(anonymous_31)","decl":{"start":{"line":506,"column":2},"end":{"line":506,"column":14}},"loc":{"start":{"line":506,"column":14},"end":{"line":512,"column":3}}},"32":{"name":"(anonymous_32)","decl":{"start":{"line":514,"column":2},"end":{"line":514,"column":12}},"loc":{"start":{"line":514,"column":108},"end":{"line":528,"column":3}}},"33":{"name":"(anonymous_33)","decl":{"start":{"line":530,"column":2},"end":{"line":530,"column":9}},"loc":{"start":{"line":530,"column":26},"end":{"line":543,"column":3}}},"34":{"name":"(anonymous_34)","decl":{"start":{"line":545,"column":2},"end":{"line":545,"column":12}},"loc":{"start":{"line":545,"column":12},"end":{"line":548,"column":3}}},"35":{"name":"(anonymous_35)","decl":{"start":{"line":574,"column":0},"end":{"line":574,"column":22}},"loc":{"start":{"line":574,"column":0},"end":{"line":612,"column":1}}},"36":{"name":"(anonymous_36)","decl":{"start":{"line":583,"column":2},"end":{"line":583,"column":7}},"loc":{"start":{"line":583,"column":44},"end":{"line":609,"column":3}}},"37":{"name":"areTransformsWithSameTag","decl":{"start":{"line":614,"column":9},"end":{"line":614,"column":33}},"loc":{"start":{"line":614,"column":58},"end":{"line":621,"column":1}}},"38":{"name":"(anonymous_38)","decl":{"start":{"line":631,"column":2},"end":{"line":631,"column":14}},"loc":{"start":{"line":631,"column":109},"end":{"line":637,"column":3}}},"39":{"name":"(anonymous_39)","decl":{"start":{"line":639,"column":2},"end":{"line":639,"column":13}},"loc":{"start":{"line":639,"column":13},"end":{"line":644,"column":3}}},"40":{"name":"(anonymous_40)","decl":{"start":{"line":646,"column":2},"end":{"line":646,"column":10}},"loc":{"start":{"line":646,"column":10},"end":{"line":648,"column":3}}},"41":{"name":"(anonymous_41)","decl":{"start":{"line":652,"column":0},"end":{"line":652,"column":12}},"loc":{"start":{"line":652,"column":21},"end":{"line":667,"column":1}}},"42":{"name":"(anonymous_42)","decl":{"start":{"line":676,"column":2},"end":{"line":676,"column":11}},"loc":{"start":{"line":676,"column":67},"end":{"line":677,"column":3}}},"43":{"name":"(anonymous_43)","decl":{"start":{"line":679,"column":2},"end":{"line":679,"column":6}},"loc":{"start":{"line":679,"column":6},"end":{"line":681,"column":3}}},"44":{"name":"(anonymous_44)","decl":{"start":{"line":683,"column":2},"end":{"line":683,"column":7}},"loc":{"start":{"line":683,"column":50},"end":{"line":685,"column":3}}},"45":{"name":"(anonymous_45)","decl":{"start":{"line":687,"column":2},"end":{"line":687,"column":7}},"loc":{"start":{"line":687,"column":7},"end":{"line":688,"column":3}}},"46":{"name":"(anonymous_46)","decl":{"start":{"line":693,"column":2},"end":{"line":693,"column":11}},"loc":{"start":{"line":693,"column":67},"end":{"line":694,"column":3}}},"47":{"name":"(anonymous_47)","decl":{"start":{"line":696,"column":2},"end":{"line":696,"column":6}},"loc":{"start":{"line":696,"column":6},"end":{"line":698,"column":3}}},"48":{"name":"(anonymous_48)","decl":{"start":{"line":700,"column":2},"end":{"line":700,"column":7}},"loc":{"start":{"line":700,"column":50},"end":{"line":702,"column":3}}},"49":{"name":"(anonymous_49)","decl":{"start":{"line":704,"column":2},"end":{"line":704,"column":7}},"loc":{"start":{"line":704,"column":7},"end":{"line":705,"column":3}}},"50":{"name":"(anonymous_50)","decl":{"start":{"line":711,"column":2},"end":{"line":711,"column":14}},"loc":{"start":{"line":711,"column":30},"end":{"line":713,"column":3}}},"51":{"name":"(anonymous_51)","decl":{"start":{"line":720,"column":2},"end":{"line":720,"column":14}},"loc":{"start":{"line":720,"column":24},"end":{"line":723,"column":3}}},"52":{"name":"(anonymous_52)","decl":{"start":{"line":725,"column":2},"end":{"line":725,"column":8}},"loc":{"start":{"line":725,"column":25},"end":{"line":734,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":12},"end":{"line":13,"column":null}},"type":"binary-expr","locations":[{"start":{"line":13,"column":12},"end":{"line":13,"column":21}},{"start":{"line":13,"column":21},"end":{"line":13,"column":null}}]},"1":{"loc":{"start":{"line":63,"column":21},"end":{"line":63,"column":71}},"type":"binary-expr","locations":[{"start":{"line":63,"column":21},"end":{"line":63,"column":50}},{"start":{"line":63,"column":54},"end":{"line":63,"column":71}}]},"2":{"loc":{"start":{"line":69,"column":4},"end":{"line":71,"column":5}},"type":"if","locations":[{"start":{"line":69,"column":4},"end":{"line":71,"column":5}}]},"3":{"loc":{"start":{"line":89,"column":4},"end":{"line":91,"column":5}},"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":91,"column":5}}]},"4":{"loc":{"start":{"line":89,"column":8},"end":{"line":89,"column":37}},"type":"binary-expr","locations":[{"start":{"line":89,"column":8},"end":{"line":89,"column":19}},{"start":{"line":89,"column":23},"end":{"line":89,"column":37}}]},"5":{"loc":{"start":{"line":93,"column":4},"end":{"line":107,"column":5}},"type":"switch","locations":[{"start":{"line":94,"column":6},"end":{"line":96,"column":13}},{"start":{"line":97,"column":6},"end":{"line":99,"column":13}},{"start":{"line":100,"column":6},"end":{"line":106,"column":13}}]},"6":{"loc":{"start":{"line":102,"column":8},"end":{"line":105,"column":9}},"type":"if","locations":[{"start":{"line":102,"column":8},"end":{"line":105,"column":9}}]},"7":{"loc":{"start":{"line":108,"column":4},"end":{"line":110,"column":5}},"type":"if","locations":[{"start":{"line":108,"column":4},"end":{"line":110,"column":5}}]},"8":{"loc":{"start":{"line":113,"column":6},"end":{"line":115,"column":7}},"type":"if","locations":[{"start":{"line":113,"column":6},"end":{"line":115,"column":7}}]},"9":{"loc":{"start":{"line":117,"column":6},"end":{"line":133,"column":7}},"type":"switch","locations":[{"start":{"line":118,"column":8},"end":{"line":122,"column":15}},{"start":{"line":123,"column":8},"end":{"line":127,"column":15}},{"start":{"line":128,"column":8},"end":{"line":132,"column":15}}]},"10":{"loc":{"start":{"line":119,"column":10},"end":{"line":121,"column":11}},"type":"if","locations":[{"start":{"line":119,"column":10},"end":{"line":121,"column":11}}]},"11":{"loc":{"start":{"line":119,"column":14},"end":{"line":119,"column":71}},"type":"binary-expr","locations":[{"start":{"line":119,"column":14},"end":{"line":119,"column":41}},{"start":{"line":119,"column":45},"end":{"line":119,"column":71}}]},"12":{"loc":{"start":{"line":124,"column":10},"end":{"line":126,"column":11}},"type":"if","locations":[{"start":{"line":124,"column":10},"end":{"line":126,"column":11}}]},"13":{"loc":{"start":{"line":124,"column":14},"end":{"line":124,"column":78}},"type":"binary-expr","locations":[{"start":{"line":124,"column":14},"end":{"line":124,"column":43}},{"start":{"line":124,"column":47},"end":{"line":124,"column":78}}]},"14":{"loc":{"start":{"line":129,"column":10},"end":{"line":131,"column":11}},"type":"if","locations":[{"start":{"line":129,"column":10},"end":{"line":131,"column":11}}]},"15":{"loc":{"start":{"line":137,"column":6},"end":{"line":141,"column":7}},"type":"if","locations":[{"start":{"line":137,"column":6},"end":{"line":141,"column":7}}]},"16":{"loc":{"start":{"line":144,"column":8},"end":{"line":153,"column":9}},"type":"switch","locations":[{"start":{"line":145,"column":10},"end":{"line":149,"column":17}},{"start":{"line":150,"column":10},"end":{"line":152,"column":17}}]},"17":{"loc":{"start":{"line":146,"column":12},"end":{"line":148,"column":13}},"type":"if","locations":[{"start":{"line":146,"column":12},"end":{"line":148,"column":13}}]},"18":{"loc":{"start":{"line":154,"column":50},"end":{"line":154,"column":95}},"type":"cond-expr","locations":[{"start":{"line":154,"column":64},"end":{"line":154,"column":78}},{"start":{"line":154,"column":81},"end":{"line":154,"column":95}}]},"19":{"loc":{"start":{"line":155,"column":21},"end":{"line":155,"column":51}},"type":"cond-expr","locations":[{"start":{"line":155,"column":35},"end":{"line":155,"column":41}},{"start":{"line":155,"column":44},"end":{"line":155,"column":51}}]},"20":{"loc":{"start":{"line":157,"column":8},"end":{"line":159,"column":9}},"type":"if","locations":[{"start":{"line":157,"column":8},"end":{"line":159,"column":9}}]},"21":{"loc":{"start":{"line":169,"column":4},"end":{"line":171,"column":5}},"type":"if","locations":[{"start":{"line":169,"column":4},"end":{"line":171,"column":5}}]},"22":{"loc":{"start":{"line":173,"column":4},"end":{"line":175,"column":5}},"type":"if","locations":[{"start":{"line":173,"column":4},"end":{"line":175,"column":5}}]},"23":{"loc":{"start":{"line":179,"column":6},"end":{"line":181,"column":7}},"type":"if","locations":[{"start":{"line":179,"column":6},"end":{"line":181,"column":7}}]},"24":{"loc":{"start":{"line":187,"column":4},"end":{"line":189,"column":5}},"type":"if","locations":[{"start":{"line":187,"column":4},"end":{"line":189,"column":5}}]},"25":{"loc":{"start":{"line":187,"column":8},"end":{"line":187,"column":47}},"type":"binary-expr","locations":[{"start":{"line":187,"column":8},"end":{"line":187,"column":26}},{"start":{"line":187,"column":30},"end":{"line":187,"column":47}}]},"26":{"loc":{"start":{"line":190,"column":4},"end":{"line":200,"column":5}},"type":"if","locations":[{"start":{"line":190,"column":4},"end":{"line":200,"column":5}}]},"27":{"loc":{"start":{"line":190,"column":8},"end":{"line":190,"column":103}},"type":"binary-expr","locations":[{"start":{"line":190,"column":9},"end":{"line":190,"column":41}},{"start":{"line":190,"column":45},"end":{"line":190,"column":74}},{"start":{"line":190,"column":79},"end":{"line":190,"column":103}}]},"28":{"loc":{"start":{"line":192,"column":6},"end":{"line":199,"column":7}},"type":"switch","locations":[{"start":{"line":193,"column":8},"end":{"line":193,"column":28}},{"start":{"line":194,"column":8},"end":{"line":195,"column":null}},{"start":{"line":196,"column":8},"end":{"line":196,"column":27}},{"start":{"line":197,"column":8},"end":{"line":198,"column":null}}]},"29":{"loc":{"start":{"line":205,"column":4},"end":{"line":209,"column":5}},"type":"if","locations":[{"start":{"line":205,"column":4},"end":{"line":209,"column":5}},{"start":{"line":207,"column":11},"end":{"line":209,"column":5}}]},"30":{"loc":{"start":{"line":207,"column":11},"end":{"line":209,"column":5}},"type":"if","locations":[{"start":{"line":207,"column":11},"end":{"line":209,"column":5}}]},"31":{"loc":{"start":{"line":245,"column":4},"end":{"line":261,"column":5}},"type":"if","locations":[{"start":{"line":245,"column":4},"end":{"line":261,"column":5}},{"start":{"line":247,"column":11},"end":{"line":261,"column":5}}]},"32":{"loc":{"start":{"line":247,"column":11},"end":{"line":261,"column":5}},"type":"if","locations":[{"start":{"line":247,"column":11},"end":{"line":261,"column":5}},{"start":{"line":253,"column":11},"end":{"line":261,"column":5}}]},"33":{"loc":{"start":{"line":247,"column":15},"end":{"line":247,"column":54}},"type":"binary-expr","locations":[{"start":{"line":247,"column":15},"end":{"line":247,"column":34}},{"start":{"line":247,"column":38},"end":{"line":247,"column":54}}]},"34":{"loc":{"start":{"line":250,"column":6},"end":{"line":252,"column":7}},"type":"if","locations":[{"start":{"line":250,"column":6},"end":{"line":252,"column":7}}]},"35":{"loc":{"start":{"line":253,"column":11},"end":{"line":261,"column":5}},"type":"if","locations":[{"start":{"line":253,"column":11},"end":{"line":261,"column":5}},{"start":{"line":256,"column":11},"end":{"line":261,"column":5}}]},"36":{"loc":{"start":{"line":253,"column":15},"end":{"line":253,"column":95}},"type":"binary-expr","locations":[{"start":{"line":253,"column":15},"end":{"line":253,"column":44}},{"start":{"line":253,"column":48},"end":{"line":253,"column":95}}]},"37":{"loc":{"start":{"line":256,"column":11},"end":{"line":261,"column":5}},"type":"if","locations":[{"start":{"line":256,"column":11},"end":{"line":261,"column":5}},{"start":{"line":259,"column":11},"end":{"line":261,"column":5}}]},"38":{"loc":{"start":{"line":292,"column":4},"end":{"line":298,"column":5}},"type":"if","locations":[{"start":{"line":292,"column":4},"end":{"line":298,"column":5}}]},"39":{"loc":{"start":{"line":307,"column":4},"end":{"line":309,"column":5}},"type":"if","locations":[{"start":{"line":307,"column":4},"end":{"line":309,"column":5}}]},"40":{"loc":{"start":{"line":307,"column":8},"end":{"line":307,"column":88}},"type":"binary-expr","locations":[{"start":{"line":307,"column":8},"end":{"line":307,"column":37}},{"start":{"line":307,"column":41},"end":{"line":307,"column":88}}]},"41":{"loc":{"start":{"line":310,"column":4},"end":{"line":312,"column":5}},"type":"if","locations":[{"start":{"line":310,"column":4},"end":{"line":312,"column":5}}]},"42":{"loc":{"start":{"line":317,"column":4},"end":{"line":332,"column":5}},"type":"switch","locations":[{"start":{"line":318,"column":6},"end":{"line":318,"column":28}},{"start":{"line":319,"column":6},"end":{"line":321,"column":null}},{"start":{"line":322,"column":6},"end":{"line":324,"column":null}},{"start":{"line":325,"column":6},"end":{"line":325,"column":26}},{"start":{"line":326,"column":6},"end":{"line":328,"column":null}},{"start":{"line":329,"column":6},"end":{"line":331,"column":null}}]},"43":{"loc":{"start":{"line":321,"column":10},"end":{"line":321,"column":59}},"type":"binary-expr","locations":[{"start":{"line":321,"column":10},"end":{"line":321,"column":27}},{"start":{"line":321,"column":31},"end":{"line":321,"column":59}}]},"44":{"loc":{"start":{"line":328,"column":10},"end":{"line":328,"column":62}},"type":"binary-expr","locations":[{"start":{"line":328,"column":10},"end":{"line":328,"column":27}},{"start":{"line":328,"column":31},"end":{"line":328,"column":62}}]},"45":{"loc":{"start":{"line":336,"column":4},"end":{"line":338,"column":5}},"type":"if","locations":[{"start":{"line":336,"column":4},"end":{"line":338,"column":5}}]},"46":{"loc":{"start":{"line":341,"column":6},"end":{"line":343,"column":7}},"type":"if","locations":[{"start":{"line":341,"column":6},"end":{"line":343,"column":7}}]},"47":{"loc":{"start":{"line":341,"column":10},"end":{"line":341,"column":38}},"type":"binary-expr","locations":[{"start":{"line":341,"column":10},"end":{"line":341,"column":18}},{"start":{"line":341,"column":22},"end":{"line":341,"column":38}}]},"48":{"loc":{"start":{"line":363,"column":4},"end":{"line":373,"column":5}},"type":"if","locations":[{"start":{"line":363,"column":4},"end":{"line":373,"column":5}},{"start":{"line":367,"column":11},"end":{"line":373,"column":5}}]},"49":{"loc":{"start":{"line":367,"column":11},"end":{"line":373,"column":5}},"type":"if","locations":[{"start":{"line":367,"column":11},"end":{"line":373,"column":5}},{"start":{"line":371,"column":11},"end":{"line":373,"column":5}}]},"50":{"loc":{"start":{"line":378,"column":6},"end":{"line":381,"column":7}},"type":"if","locations":[{"start":{"line":378,"column":6},"end":{"line":381,"column":7}}]},"51":{"loc":{"start":{"line":382,"column":6},"end":{"line":398,"column":7}},"type":"if","locations":[{"start":{"line":382,"column":6},"end":{"line":398,"column":7}}]},"52":{"loc":{"start":{"line":382,"column":10},"end":{"line":382,"column":82}},"type":"binary-expr","locations":[{"start":{"line":382,"column":10},"end":{"line":382,"column":33}},{"start":{"line":382,"column":37},"end":{"line":382,"column":82}}]},"53":{"loc":{"start":{"line":384,"column":8},"end":{"line":396,"column":9}},"type":"if","locations":[{"start":{"line":384,"column":8},"end":{"line":396,"column":9}},{"start":{"line":390,"column":15},"end":{"line":396,"column":9}}]},"54":{"loc":{"start":{"line":401,"column":4},"end":{"line":403,"column":5}},"type":"if","locations":[{"start":{"line":401,"column":4},"end":{"line":403,"column":5}}]},"55":{"loc":{"start":{"line":409,"column":4},"end":{"line":411,"column":5}},"type":"if","locations":[{"start":{"line":409,"column":4},"end":{"line":411,"column":5}}]},"56":{"loc":{"start":{"line":441,"column":2},"end":{"line":443,"column":3}},"type":"if","locations":[{"start":{"line":441,"column":2},"end":{"line":443,"column":3}}]},"57":{"loc":{"start":{"line":481,"column":4},"end":{"line":483,"column":5}},"type":"if","locations":[{"start":{"line":481,"column":4},"end":{"line":483,"column":5}}]},"58":{"loc":{"start":{"line":485,"column":4},"end":{"line":487,"column":5}},"type":"if","locations":[{"start":{"line":485,"column":4},"end":{"line":487,"column":5}}]},"59":{"loc":{"start":{"line":489,"column":4},"end":{"line":494,"column":5}},"type":"if","locations":[{"start":{"line":489,"column":4},"end":{"line":494,"column":5}}]},"60":{"loc":{"start":{"line":489,"column":8},"end":{"line":489,"column":55}},"type":"binary-expr","locations":[{"start":{"line":489,"column":8},"end":{"line":489,"column":24}},{"start":{"line":489,"column":28},"end":{"line":489,"column":55}}]},"61":{"loc":{"start":{"line":491,"column":6},"end":{"line":493,"column":7}},"type":"if","locations":[{"start":{"line":491,"column":6},"end":{"line":493,"column":7}}]},"62":{"loc":{"start":{"line":500,"column":4},"end":{"line":502,"column":5}},"type":"if","locations":[{"start":{"line":500,"column":4},"end":{"line":502,"column":5}}]},"63":{"loc":{"start":{"line":508,"column":4},"end":{"line":510,"column":5}},"type":"if","locations":[{"start":{"line":508,"column":4},"end":{"line":510,"column":5}}]},"64":{"loc":{"start":{"line":533,"column":4},"end":{"line":541,"column":5}},"type":"if","locations":[{"start":{"line":533,"column":4},"end":{"line":541,"column":5}}]},"65":{"loc":{"start":{"line":535,"column":8},"end":{"line":539,"column":9}},"type":"if","locations":[{"start":{"line":535,"column":8},"end":{"line":539,"column":9}}]},"66":{"loc":{"start":{"line":585,"column":4},"end":{"line":606,"column":5}},"type":"switch","locations":[{"start":{"line":586,"column":6},"end":{"line":586,"column":26}},{"start":{"line":587,"column":6},"end":{"line":595,"column":13}},{"start":{"line":596,"column":6},"end":{"line":596,"column":25}},{"start":{"line":597,"column":6},"end":{"line":605,"column":13}}]},"67":{"loc":{"start":{"line":590,"column":10},"end":{"line":593,"column":11}},"type":"if","locations":[{"start":{"line":590,"column":10},"end":{"line":593,"column":11}}]},"68":{"loc":{"start":{"line":600,"column":10},"end":{"line":603,"column":11}},"type":"if","locations":[{"start":{"line":600,"column":10},"end":{"line":603,"column":11}}]},"69":{"loc":{"start":{"line":615,"column":9},"end":{"line":620,"column":32}},"type":"binary-expr","locations":[{"start":{"line":615,"column":9},"end":{"line":615,"column":27}},{"start":{"line":615,"column":31},"end":{"line":615,"column":52}},{"start":{"line":616,"column":7},"end":{"line":616,"column":33}},{"start":{"line":617,"column":7},"end":{"line":617,"column":32}},{"start":{"line":618,"column":7},"end":{"line":618,"column":32}},{"start":{"line":619,"column":7},"end":{"line":619,"column":32}},{"start":{"line":620,"column":7},"end":{"line":620,"column":32}}]},"70":{"loc":{"start":{"line":641,"column":11},"end":{"line":643,"column":56}},"type":"binary-expr","locations":[{"start":{"line":641,"column":11},"end":{"line":641,"column":33}},{"start":{"line":641,"column":37},"end":{"line":641,"column":58}},{"start":{"line":641,"column":62},"end":{"line":641,"column":81}},{"start":{"line":642,"column":9},"end":{"line":642,"column":29}},{"start":{"line":642,"column":33},"end":{"line":642,"column":54}},{"start":{"line":642,"column":58},"end":{"line":642,"column":80}},{"start":{"line":643,"column":9},"end":{"line":643,"column":32}},{"start":{"line":643,"column":36},"end":{"line":643,"column":56}}]},"71":{"loc":{"start":{"line":652,"column":12},"end":{"line":652,"column":null}},"type":"binary-expr","locations":[{"start":{"line":652,"column":12},"end":{"line":652,"column":21}},{"start":{"line":652,"column":21},"end":{"line":652,"column":null}}]},"72":{"loc":{"start":{"line":727,"column":4},"end":{"line":732,"column":5}},"type":"if","locations":[{"start":{"line":727,"column":4},"end":{"line":732,"column":5}}]},"73":{"loc":{"start":{"line":728,"column":6},"end":{"line":730,"column":7}},"type":"if","locations":[{"start":{"line":728,"column":6},"end":{"line":730,"column":7}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":0,"8":3,"9":15,"10":15,"11":15,"12":15,"13":0,"14":30,"15":30,"16":11,"17":11,"18":10,"19":1,"20":0,"21":0,"22":0,"23":0,"24":15,"25":0,"26":15,"27":0,"28":0,"29":0,"30":0,"31":15,"32":15,"33":9,"34":15,"35":15,"36":6,"37":9,"38":9,"39":9,"40":9,"41":0,"42":9,"43":9,"44":9,"45":0,"46":9,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":9,"54":9,"55":9,"56":0,"57":0,"58":9,"59":9,"60":9,"61":0,"62":0,"63":0,"64":9,"65":9,"66":9,"67":0,"68":0,"69":0,"70":9,"71":9,"72":9,"73":9,"74":9,"75":9,"76":0,"77":9,"78":9,"79":0,"80":0,"81":0,"82":9,"83":9,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":9,"91":0,"92":9,"93":9,"94":0,"95":3,"96":6,"97":36,"98":6,"99":6,"100":6,"101":6,"102":6,"103":6,"104":6,"105":6,"106":3,"107":3,"108":0,"109":0,"110":0,"111":0,"112":3,"113":0,"114":0,"115":3,"116":3,"117":3,"118":0,"119":6,"120":6,"121":6,"122":6,"123":3,"124":9,"125":24,"126":9,"127":9,"128":0,"129":9,"130":9,"131":9,"132":9,"133":9,"134":9,"135":0,"136":9,"137":0,"138":9,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":3,"199":3,"200":30,"201":30,"202":0,"203":30,"204":3,"205":9,"206":9,"207":9,"208":9,"209":9,"210":9,"211":9,"212":9,"213":9,"214":9,"215":9,"216":9,"217":41,"218":41,"219":0,"220":41,"221":41,"222":25,"223":16,"224":16,"225":0,"226":0,"227":0,"228":16,"229":13,"230":13,"231":7,"232":6,"233":32,"234":32,"235":7,"236":25,"237":21,"238":21,"239":0,"240":21,"241":21,"242":21,"243":21,"244":21,"245":21,"246":0,"247":0,"248":0,"249":0,"250":21,"251":21,"252":21,"253":3,"254":3,"255":9,"256":3,"257":3,"258":0,"259":0,"260":0,"261":3,"262":6,"263":6,"264":0,"265":0,"266":0,"267":6,"268":9,"269":9,"270":3,"271":0,"272":21,"273":21,"274":21,"275":21,"276":21,"277":0,"278":0,"279":0,"280":3,"281":3,"282":3,"283":3,"284":3,"285":3,"286":3,"287":3,"288":3,"289":3,"290":3,"291":3,"292":3,"293":3,"294":3,"295":3,"296":0,"297":0,"298":3,"299":0,"300":9,"301":3,"302":0,"303":3,"304":0,"305":0,"306":0,"307":0,"308":0,"309":0,"310":0,"311":0,"312":3},"f":{"0":3,"1":0,"2":15,"3":0,"4":30,"5":11,"6":15,"7":9,"8":9,"9":9,"10":6,"11":36,"12":6,"13":6,"14":9,"15":24,"16":9,"17":9,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":30,"28":9,"29":41,"30":13,"31":32,"32":21,"33":21,"34":21,"35":3,"36":9,"37":0,"38":21,"39":0,"40":0,"41":3,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":9,"49":0,"50":0,"51":0,"52":0},"b":{"0":[3,3],"1":[30,30],"2":[10],"3":[0],"4":[15,15],"5":[0,0,15],"6":[9],"7":[6],"8":[0],"9":[9,0,0],"10":[0],"11":[9,6],"12":[0],"13":[0,0],"14":[0],"15":[0],"16":[0,9],"17":[0],"18":[9,0],"19":[9,0],"20":[0],"21":[9],"22":[0],"23":[0],"24":[9],"25":[9,0],"26":[0],"27":[0,0,0],"28":[0,0,0,0],"29":[0,9],"30":[9],"31":[3,3],"32":[0,3],"33":[3,0],"34":[0],"35":[0,3],"36":[3,0],"37":[3,0],"38":[0],"39":[0],"40":[9,0],"41":[0],"42":[0,0,0,0,0,0],"43":[0,0],"44":[0,0],"45":[0],"46":[0],"47":[0,0],"48":[0,0],"49":[0,0],"50":[0],"51":[0],"52":[0,0],"53":[0,0],"54":[0],"55":[0],"56":[0],"57":[0],"58":[25],"59":[0],"60":[16,0],"61":[0],"62":[7],"63":[7],"64":[0],"65":[0],"66":[3,3,6,6],"67":[0],"68":[0],"69":[0,0,0,0,0,0,0],"70":[0,0,0,0,0,0,0,0],"71":[3,3],"72":[0],"73":[0]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/wildcard-matcher.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/schemaregistry/serde/wildcard-matcher.ts","statementMap":{"0":{"start":{"line":23,"column":0},"end":{"line":23,"column":16}},"1":{"start":{"line":24,"column":11},"end":{"line":24,"column":49}},"2":{"start":{"line":26,"column":2},"end":{"line":30,"column":3}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":null}},"4":{"start":{"line":29,"column":4},"end":{"line":29,"column":null}},"5":{"start":{"line":31,"column":14},"end":{"line":31,"column":32}},"6":{"start":{"line":32,"column":2},"end":{"line":32,"column":null}},"7":{"start":{"line":36,"column":12},"end":{"line":36,"column":14}},"8":{"start":{"line":37,"column":12},"end":{"line":37,"column":56}},"9":{"start":{"line":38,"column":10},"end":{"line":38,"column":11}},"10":{"start":{"line":39,"column":13},"end":{"line":39,"column":23}},"11":{"start":{"line":40,"column":2},"end":{"line":75,"column":3}},"12":{"start":{"line":41,"column":12},"end":{"line":41,"column":18}},"13":{"start":{"line":42,"column":4},"end":{"line":42,"column":null}},"14":{"start":{"line":43,"column":4},"end":{"line":74,"column":5}},"15":{"start":{"line":46,"column":6},"end":{"line":51,"column":7}},"16":{"start":{"line":47,"column":8},"end":{"line":47,"column":null}},"17":{"start":{"line":48,"column":8},"end":{"line":48,"column":null}},"18":{"start":{"line":50,"column":8},"end":{"line":50,"column":null}},"19":{"start":{"line":52,"column":6},"end":{"line":52,"column":11}},"20":{"start":{"line":54,"column":6},"end":{"line":54,"column":null}},"21":{"start":{"line":55,"column":6},"end":{"line":55,"column":11}},"22":{"start":{"line":66,"column":6},"end":{"line":66,"column":null}},"23":{"start":{"line":67,"column":6},"end":{"line":67,"column":11}},"24":{"start":{"line":69,"column":6},"end":{"line":69,"column":null}},"25":{"start":{"line":70,"column":6},"end":{"line":70,"column":11}},"26":{"start":{"line":72,"column":6},"end":{"line":72,"column":null}},"27":{"start":{"line":73,"column":6},"end":{"line":73,"column":11}},"28":{"start":{"line":76,"column":2},"end":{"line":76,"column":null}},"29":{"start":{"line":81,"column":2},"end":{"line":81,"column":null}},"30":{"start":{"line":82,"column":2},"end":{"line":88,"column":3}},"31":{"start":{"line":83,"column":4},"end":{"line":83,"column":null}},"32":{"start":{"line":84,"column":4},"end":{"line":84,"column":null}},"33":{"start":{"line":87,"column":4},"end":{"line":87,"column":null}},"34":{"start":{"line":89,"column":2},"end":{"line":89,"column":null}}},"fnMap":{"0":{"name":"match","decl":{"start":{"line":23,"column":16},"end":{"line":23,"column":21}},"loc":{"start":{"line":23,"column":58},"end":{"line":33,"column":1}}},"1":{"name":"wildcardToRegexp","decl":{"start":{"line":35,"column":9},"end":{"line":35,"column":25}},"loc":{"start":{"line":35,"column":60},"end":{"line":77,"column":1}}},"2":{"name":"doubleSlashes","decl":{"start":{"line":79,"column":9},"end":{"line":79,"column":22}},"loc":{"start":{"line":79,"column":58},"end":{"line":90,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":32,"column":9},"end":{"line":32,"column":42}},"type":"binary-expr","locations":[{"start":{"line":32,"column":9},"end":{"line":32,"column":22}},{"start":{"line":32,"column":26},"end":{"line":32,"column":42}}]},"1":{"loc":{"start":{"line":43,"column":4},"end":{"line":74,"column":5}},"type":"switch","locations":[{"start":{"line":44,"column":4},"end":{"line":52,"column":11}},{"start":{"line":53,"column":4},"end":{"line":55,"column":11}},{"start":{"line":56,"column":4},"end":{"line":56,"column":13}},{"start":{"line":57,"column":4},"end":{"line":57,"column":13}},{"start":{"line":58,"column":4},"end":{"line":58,"column":13}},{"start":{"line":59,"column":4},"end":{"line":59,"column":13}},{"start":{"line":60,"column":4},"end":{"line":60,"column":13}},{"start":{"line":61,"column":4},"end":{"line":61,"column":13}},{"start":{"line":62,"column":4},"end":{"line":62,"column":13}},{"start":{"line":63,"column":4},"end":{"line":63,"column":13}},{"start":{"line":64,"column":4},"end":{"line":67,"column":11}},{"start":{"line":68,"column":4},"end":{"line":70,"column":11}},{"start":{"line":71,"column":4},"end":{"line":73,"column":11}}]},"2":{"loc":{"start":{"line":46,"column":6},"end":{"line":51,"column":7}},"type":"if","locations":[{"start":{"line":46,"column":6},"end":{"line":51,"column":7}},{"start":{"line":49,"column":13},"end":{"line":51,"column":7}}]},"3":{"loc":{"start":{"line":46,"column":10},"end":{"line":46,"column":41}},"type":"binary-expr","locations":[{"start":{"line":46,"column":10},"end":{"line":46,"column":24}},{"start":{"line":46,"column":28},"end":{"line":46,"column":41}}]},"4":{"loc":{"start":{"line":82,"column":2},"end":{"line":88,"column":3}},"type":"if","locations":[{"start":{"line":82,"column":2},"end":{"line":88,"column":3}},{"start":{"line":85,"column":9},"end":{"line":88,"column":3}}]}},"s":{"0":4,"1":27,"2":27,"3":27,"4":0,"5":27,"6":27,"7":27,"8":27,"9":27,"10":27,"11":27,"12":121,"13":121,"14":121,"15":21,"16":2,"17":2,"18":19,"19":21,"20":8,"21":8,"22":6,"23":6,"24":0,"25":0,"26":86,"27":86,"28":27,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0},"f":{"0":27,"1":27,"2":0},"b":{"0":[27,20],"1":[21,8,6,6,6,6,6,6,6,6,6,0,86],"2":[2,19],"3":[21,10],"4":[0,0]}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/test/schemaregistry/test-constants.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/test/schemaregistry/test-constants.ts","statementMap":{"0":{"start":{"line":4,"column":17},"end":{"line":4,"column":42}},"1":{"start":{"line":6,"column":21},"end":{"line":6,"column":42}},"2":{"start":{"line":8,"column":49},"end":{"line":17,"column":2}},"3":{"start":{"line":19,"column":35},"end":{"line":25,"column":2}},"4":{"start":{"line":35,"column":9},"end":{"line":35,"column":21}},"5":{"start":{"line":27,"column":39},"end":{"line":33,"column":2}},"6":{"start":{"line":35,"column":23},"end":{"line":35,"column":39}}},"fnMap":{},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/test/schemaregistry/dekregistry/test-constants.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/test/schemaregistry/dekregistry/test-constants.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":72}},"1":{"start":{"line":4,"column":30},"end":{"line":4,"column":45}},"2":{"start":{"line":71,"column":2},"end":{"line":71,"column":15}},"3":{"start":{"line":5,"column":32},"end":{"line":5,"column":48}},"4":{"start":{"line":71,"column":17},"end":{"line":71,"column":32}},"5":{"start":{"line":6,"column":30},"end":{"line":6,"column":45}},"6":{"start":{"line":71,"column":34},"end":{"line":71,"column":47}},"7":{"start":{"line":7,"column":32},"end":{"line":7,"column":49}},"8":{"start":{"line":71,"column":49},"end":{"line":71,"column":64}},"9":{"start":{"line":8,"column":23},"end":{"line":8,"column":47}},"10":{"start":{"line":71,"column":66},"end":{"line":71,"column":80}},"11":{"start":{"line":9,"column":25},"end":{"line":9,"column":35}},"12":{"start":{"line":71,"column":82},"end":{"line":71,"column":90}},"13":{"start":{"line":11,"column":29},"end":{"line":11,"column":43}},"14":{"start":{"line":72,"column":2},"end":{"line":72,"column":14}},"15":{"start":{"line":12,"column":31},"end":{"line":12,"column":47}},"16":{"start":{"line":72,"column":16},"end":{"line":72,"column":30}},"17":{"start":{"line":13,"column":44},"end":{"line":13,"column":73}},"18":{"start":{"line":72,"column":32},"end":{"line":72,"column":59}},"19":{"start":{"line":14,"column":29},"end":{"line":14,"column":30}},"20":{"start":{"line":72,"column":61},"end":{"line":72,"column":73}},"21":{"start":{"line":16,"column":22},"end":{"line":23,"column":2}},"22":{"start":{"line":73,"column":2},"end":{"line":73,"column":10}},"23":{"start":{"line":25,"column":24},"end":{"line":32,"column":2}},"24":{"start":{"line":73,"column":12},"end":{"line":73,"column":22}},"25":{"start":{"line":34,"column":22},"end":{"line":41,"column":2}},"26":{"start":{"line":73,"column":24},"end":{"line":73,"column":32}},"27":{"start":{"line":43,"column":25},"end":{"line":50,"column":2}},"28":{"start":{"line":73,"column":34},"end":{"line":73,"column":45}},"29":{"start":{"line":52,"column":24},"end":{"line":59,"column":2}},"30":{"start":{"line":73,"column":47},"end":{"line":73,"column":57}},"31":{"start":{"line":61,"column":29},"end":{"line":68,"column":2}},"32":{"start":{"line":73,"column":59},"end":{"line":73,"column":74}}},"fnMap":{},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2,"16":2,"17":2,"18":2,"19":2,"20":2,"21":2,"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":2,"31":2,"32":2},"f":{},"b":{}} -,"/Users/robertyokota/code/work/confluent-kafka-javascript/test/schemaregistry/serde/author_pb.ts": {"path":"/Users/robertyokota/code/work/confluent-kafka-javascript/test/schemaregistry/serde/author_pb.ts","statementMap":{"0":{"start":{"line":6,"column":0},"end":{"line":6,"column":69}},"1":{"start":{"line":7,"column":0},"end":{"line":7,"column":80}},"2":{"start":{"line":13,"column":13},"end":{"line":14,"column":297}},"3":{"start":{"line":45,"column":13},"end":{"line":46,"column":56}},"4":{"start":{"line":67,"column":13},"end":{"line":68,"column":56}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"f":{},"b":{}} -} diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css deleted file mode 100644 index f418035b..00000000 --- a/coverage/lcov-report/base.css +++ /dev/null @@ -1,224 +0,0 @@ -body, html { - margin:0; padding: 0; - height: 100%; -} -body { - font-family: Helvetica Neue, Helvetica, Arial; - font-size: 14px; - color:#333; -} -.small { font-size: 12px; } -*, *:after, *:before { - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - } -h1 { font-size: 20px; margin: 0;} -h2 { font-size: 14px; } -pre { - font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; - margin: 0; - padding: 0; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; -} -a { color:#0074D9; text-decoration:none; } -a:hover { text-decoration:underline; } -.strong { font-weight: bold; } -.space-top1 { padding: 10px 0 0 0; } -.pad2y { padding: 20px 0; } -.pad1y { padding: 10px 0; } -.pad2x { padding: 0 20px; } -.pad2 { padding: 20px; } -.pad1 { padding: 10px; } -.space-left2 { padding-left:55px; } -.space-right2 { padding-right:20px; } -.center { text-align:center; } -.clearfix { display:block; } -.clearfix:after { - content:''; - display:block; - height:0; - clear:both; - visibility:hidden; - } -.fl { float: left; } -@media only screen and (max-width:640px) { - .col3 { width:100%; max-width:100%; } - .hide-mobile { display:none!important; } -} - -.quiet { - color: #7f7f7f; - color: rgba(0,0,0,0.5); -} -.quiet a { opacity: 0.7; } - -.fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #E8E8E8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, div.path a:visited { color: #333; } -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; -} - -table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; -} -.missing-if-branch { - display: inline-block; - margin-right: 5px; - border-radius: 3px; - position: relative; - padding: 0 4px; - background: #333; - color: yellow; -} - -.skip-if-branch { - display: none; - margin-right: 10px; - position: relative; - padding: 0 4px; - background: #ccc; - color: white; -} -.missing-if-branch .typ, .skip-if-branch .typ { - color: inherit !important; -} -.coverage-summary { - border-collapse: collapse; - width: 100%; -} -.coverage-summary tr { border-bottom: 1px solid #bbb; } -.keyline-all { border: 1px solid #ddd; } -.coverage-summary td, .coverage-summary th { padding: 10px; } -.coverage-summary tbody { border: 1px solid #bbb; } -.coverage-summary td { border-right: 1px solid #bbb; } -.coverage-summary td:last-child { border-right: none; } -.coverage-summary th { - text-align: left; - font-weight: normal; - white-space: nowrap; -} -.coverage-summary th.file { border-right: none !important; } -.coverage-summary th.pct { } -.coverage-summary th.pic, -.coverage-summary th.abs, -.coverage-summary td.pct, -.coverage-summary td.abs { text-align: right; } -.coverage-summary td.file { white-space: nowrap; } -.coverage-summary td.pic { min-width: 120px !important; } -.coverage-summary tfoot td { } - -.coverage-summary .sorter { - height: 10px; - width: 7px; - display: inline-block; - margin-left: 0.5em; - background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; -} -.coverage-summary .sorted .sorter { - background-position: 0 -20px; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { height: 10px; } -/* yellow */ -.cbranch-no { background: yellow !important; color: #111; } -/* dark red */ -.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } -.low .chart { border:1px solid #C21F39 } -.highlighted, -.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ - background: #C21F39 !important; -} -/* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } -/* light red */ -.low, .cline-no { background:#FCE1E5 } -/* light green */ -.high, .cline-yes { background:rgb(230,245,208) } -/* medium green */ -.cstat-yes { background:rgb(161,215,106) } -/* dark green */ -.status-line.high, .high .cover-fill { background:rgb(77,146,33) } -.high .chart { border:1px solid rgb(77,146,33) } -/* dark yellow (gold) */ -.status-line.medium, .medium .cover-fill { background: #f9cd0b; } -.medium .chart { border:1px solid #f9cd0b; } -/* light yellow */ -.medium { background: #fff4c2; } - -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } - -span.cline-neutral { background: #eaeaea; } - -.coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; -} - -.cover-fill, .cover-empty { - display:inline-block; - height: 12px; -} -.chart { - line-height: 0; -} -.cover-empty { - background: white; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, .push { - height: 48px; -} diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js deleted file mode 100644 index cc121302..00000000 --- a/coverage/lcov-report/block-navigation.js +++ /dev/null @@ -1,87 +0,0 @@ -/* eslint-disable */ -var jumpToCode = (function init() { - // Classes of code we would like to highlight in the file view - var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; - - // Elements to highlight in the file listing view - var fileListingElements = ['td.pct.low']; - - // We don't want to select elements that are direct descendants of another match - var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` - - // Selecter that finds elements on the page to which we can jump - var selector = - fileListingElements.join(', ') + - ', ' + - notSelector + - missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` - - // The NodeList of matching elements - var missingCoverageElements = document.querySelectorAll(selector); - - var currentIndex; - - function toggleClass(index) { - missingCoverageElements - .item(currentIndex) - .classList.remove('highlighted'); - missingCoverageElements.item(index).classList.add('highlighted'); - } - - function makeCurrent(index) { - toggleClass(index); - currentIndex = index; - missingCoverageElements.item(index).scrollIntoView({ - behavior: 'smooth', - block: 'center', - inline: 'center' - }); - } - - function goToPrevious() { - var nextIndex = 0; - if (typeof currentIndex !== 'number' || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1; - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1; - } - - makeCurrent(nextIndex); - } - - function goToNext() { - var nextIndex = 0; - - if ( - typeof currentIndex === 'number' && - currentIndex < missingCoverageElements.length - 1 - ) { - nextIndex = currentIndex + 1; - } - - makeCurrent(nextIndex); - } - - return function jump(event) { - if ( - document.getElementById('fileSearch') === document.activeElement && - document.activeElement != null - ) { - // if we're currently focused on the search input, we don't want to navigate - return; - } - - switch (event.which) { - case 78: // n - case 74: // j - goToNext(); - break; - case 66: // b - case 75: // k - case 80: // p - goToPrevious(); - break; - } - }; -})(); -window.addEventListener('keydown', jumpToCode); diff --git a/coverage/lcov-report/favicon.png b/coverage/lcov-report/favicon.png deleted file mode 100644 index c1525b811a167671e9de1fa78aab9f5c0b61cef7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> - - - - Code coverage report for All files - - - - - - - - - -
-
-

All files

-
- -
- 71.69% - Statements - 1662/2318 -
- - -
- 49.81% - Branches - 403/809 -
- - -
- 76.32% - Functions - 274/359 -
- - -
- 71.88% - Lines - 1634/2273 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
schemaregistry -
-
81.79%355/43472.3%94/13081.81%90/11081.98%355/433
schemaregistry/confluent -
-
100%9/9100%0/0100%0/0100%9/9
schemaregistry/confluent/types -
-
100%3/3100%0/0100%0/0100%3/3
schemaregistry/dekregistry -
-
86.4%108/12579.16%38/4890.47%19/2186.4%108/125
schemaregistry/google/type -
-
100%74/74100%6/6100%3/3100%74/74
schemaregistry/rules/encryption -
-
80.3%212/26457.79%63/10992.3%36/3980.3%212/264
schemaregistry/rules/encryption/localkms -
-
92.59%25/270%0/2100%8/892.59%25/27
schemaregistry/rules/encryption/tink -
-
56.62%141/24922.03%13/5955.55%15/2757.74%138/239
schemaregistry/rules/encryption/tink/exception -
-
50%4/8100%0/00%0/250%4/8
schemaregistry/rules/encryption/tink/proto -
-
100%8/8100%0/0100%0/0100%8/8
schemaregistry/serde -
-
63.24%678/107241.53%189/45569.12%103/14963.4%667/1052
test/schemaregistry -
-
100%7/7100%0/0100%0/0100%6/6
test/schemaregistry/dekregistry -
-
100%33/33100%0/0100%0/0100%20/20
test/schemaregistry/serde -
-
100%5/5100%0/0100%0/0100%5/5
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css deleted file mode 100644 index b317a7cd..00000000 --- a/coverage/lcov-report/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js deleted file mode 100644 index b3225238..00000000 --- a/coverage/lcov-report/prettify.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-disable */ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/lcov-report/schemaregistry/confluent/index.html b/coverage/lcov-report/schemaregistry/confluent/index.html deleted file mode 100644 index a066f12b..00000000 --- a/coverage/lcov-report/schemaregistry/confluent/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Code coverage report for schemaregistry/confluent - - - - - - - - - -
-
-

All files schemaregistry/confluent

-
- -
- 100% - Statements - 9/9 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 9/9 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
meta_pb.ts -
-
100%9/9100%0/0100%0/0100%9/9
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/confluent/meta_pb.ts.html b/coverage/lcov-report/schemaregistry/confluent/meta_pb.ts.html deleted file mode 100644 index fadc1154..00000000 --- a/coverage/lcov-report/schemaregistry/confluent/meta_pb.ts.html +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - Code coverage report for schemaregistry/confluent/meta_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/confluent meta_pb.ts

-
- -
- 100% - Statements - 9/9 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 9/9 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74  -  -  -  -  -1x -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  - 
// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file confluent/meta.proto (package confluent, syntax proto3)
-/* eslint-disable */
- 
-import type { GenExtension, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
-import { extDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
-import type { EnumOptions, EnumValueOptions, FieldOptions, FileOptions, MessageOptions } from "@bufbuild/protobuf/wkt";
-import { file_google_protobuf_descriptor } from "@bufbuild/protobuf/wkt";
-import type { Message } from "@bufbuild/protobuf";
- 
-/**
- * Describes the file confluent/meta.proto.
- */
-export const file_confluent_meta: GenFile = /*@__PURE__*/
-  fileDesc("ChRjb25mbHVlbnQvbWV0YS5wcm90bxIJY29uZmx1ZW50In0KBE1ldGESCwoDZG9jGAEgASgJEisKBnBhcmFtcxgCIAMoCzIbLmNvbmZsdWVudC5NZXRhLlBhcmFtc0VudHJ5EgwKBHRhZ3MYAyADKAkaLQoLUGFyYW1zRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ATpLCglmaWxlX21ldGESHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMYwAggASgLMg8uY29uZmx1ZW50Lk1ldGFSCGZpbGVNZXRhOlQKDG1lc3NhZ2VfbWV0YRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjACCABKAsyDy5jb25mbHVlbnQuTWV0YVILbWVzc2FnZU1ldGE6TgoKZmllbGRfbWV0YRIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYwAggASgLMg8uY29uZmx1ZW50Lk1ldGFSCWZpZWxkTWV0YTpLCgllbnVtX21ldGESHC5nb29nbGUucHJvdG9idWYuRW51bU9wdGlvbnMYwAggASgLMg8uY29uZmx1ZW50Lk1ldGFSCGVudW1NZXRhOlsKD2VudW1fdmFsdWVfbWV0YRIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zGMAIIAEoCzIPLmNvbmZsdWVudC5NZXRhUg1lbnVtVmFsdWVNZXRhQg5aDC4uL2NvbmZsdWVudGIGcHJvdG8z", [file_google_protobuf_descriptor]);
- 
-/**
- * @generated from message confluent.Meta
- */
-export type Meta = Message<"confluent.Meta"> & {
-  /**
-   * @generated from field: string doc = 1;
-   */
-  doc: string;
- 
-  /**
-   * @generated from field: map<string, string> params = 2;
-   */
-  params: { [key: string]: string };
- 
-  /**
-   * @generated from field: repeated string tags = 3;
-   */
-  tags: string[];
-};
- 
-/**
- * Describes the message confluent.Meta.
- * Use `create(MetaSchema)` to create a new message.
- */
-export const MetaSchema: GenMessage<Meta> = /*@__PURE__*/
-  messageDesc(file_confluent_meta, 0);
- 
-/**
- * @generated from extension: confluent.Meta file_meta = 1088;
- */
-export const file_meta: GenExtension<FileOptions, Meta> = /*@__PURE__*/
-  extDesc(file_confluent_meta, 0);
- 
-/**
- * @generated from extension: confluent.Meta message_meta = 1088;
- */
-export const message_meta: GenExtension<MessageOptions, Meta> = /*@__PURE__*/
-  extDesc(file_confluent_meta, 1);
- 
-/**
- * @generated from extension: confluent.Meta field_meta = 1088;
- */
-export const field_meta: GenExtension<FieldOptions, Meta> = /*@__PURE__*/
-  extDesc(file_confluent_meta, 2);
- 
-/**
- * @generated from extension: confluent.Meta enum_meta = 1088;
- */
-export const enum_meta: GenExtension<EnumOptions, Meta> = /*@__PURE__*/
-  extDesc(file_confluent_meta, 3);
- 
-/**
- * @generated from extension: confluent.Meta enum_value_meta = 1088;
- */
-export const enum_value_meta: GenExtension<EnumValueOptions, Meta> = /*@__PURE__*/
-  extDesc(file_confluent_meta, 4);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/confluent/types/decimal_pb.ts.html b/coverage/lcov-report/schemaregistry/confluent/types/decimal_pb.ts.html deleted file mode 100644 index ca396ab6..00000000 --- a/coverage/lcov-report/schemaregistry/confluent/types/decimal_pb.ts.html +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - Code coverage report for schemaregistry/confluent/types/decimal_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/confluent/types decimal_pb.ts

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  - 
// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file confluent/types/decimal.proto (package confluent.type, syntax proto3)
-/* eslint-disable */
- 
-import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
-import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
-import type { Message } from "@bufbuild/protobuf";
- 
-/**
- * Describes the file confluent/types/decimal.proto.
- */
-export const file_confluent_types_decimal: GenFile = /*@__PURE__*/
-  fileDesc("Ch1jb25mbHVlbnQvdHlwZXMvZGVjaW1hbC5wcm90bxIOY29uZmx1ZW50LnR5cGUiOgoHRGVjaW1hbBINCgV2YWx1ZRgBIAEoDBIRCglwcmVjaXNpb24YAiABKA0SDQoFc2NhbGUYAyABKAVCCloILi4vdHlwZXNiBnByb3RvMw");
- 
-/**
- * @generated from message confluent.type.Decimal
- */
-export type Decimal = Message<"confluent.type.Decimal"> & {
-  /**
-   * The two's-complement representation of the unscaled integer value in big-endian byte order
-   *
-   * @generated from field: bytes value = 1;
-   */
-  value: Uint8Array;
- 
-  /**
-   * The precision
-   *
-   * @generated from field: uint32 precision = 2;
-   */
-  precision: number;
- 
-  /**
-   * The scale
-   *
-   * @generated from field: int32 scale = 3;
-   */
-  scale: number;
-};
- 
-/**
- * Describes the message confluent.type.Decimal.
- * Use `create(DecimalSchema)` to create a new message.
- */
-export const DecimalSchema: GenMessage<Decimal> = /*@__PURE__*/
-  messageDesc(file_confluent_types_decimal, 0);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/confluent/types/index.html b/coverage/lcov-report/schemaregistry/confluent/types/index.html deleted file mode 100644 index c1b95ce3..00000000 --- a/coverage/lcov-report/schemaregistry/confluent/types/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Code coverage report for schemaregistry/confluent/types - - - - - - - - - -
-
-

All files schemaregistry/confluent/types

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
decimal_pb.ts -
-
100%3/3100%0/0100%0/0100%3/3
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/dekregistry/constants.ts.html b/coverage/lcov-report/schemaregistry/dekregistry/constants.ts.html deleted file mode 100644 index 2d2d599f..00000000 --- a/coverage/lcov-report/schemaregistry/dekregistry/constants.ts.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - Code coverage report for schemaregistry/dekregistry/constants.ts - - - - - - - - - -
-
-

All files / schemaregistry/dekregistry constants.ts

-
- -
- 100% - Statements - 2/2 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 2/2 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -55x -  -  -5x - 
const MOCK_TS = 11112223334;
- 
-export {
-    MOCK_TS
-};
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/dekregistry/dekregistry-client.ts.html b/coverage/lcov-report/schemaregistry/dekregistry/dekregistry-client.ts.html deleted file mode 100644 index 0bc5addf..00000000 --- a/coverage/lcov-report/schemaregistry/dekregistry/dekregistry-client.ts.html +++ /dev/null @@ -1,820 +0,0 @@ - - - - - - Code coverage report for schemaregistry/dekregistry/dekregistry-client.ts - - - - - - - - - -
-
-

All files / schemaregistry/dekregistry dekregistry-client.ts

-
- -
- 84.33% - Statements - 70/83 -
- - -
- 83.33% - Branches - 20/24 -
- - -
- 93.33% - Functions - 14/15 -
- - -
- 84.33% - Lines - 70/83 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -2464x -4x -4x -4x -4x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -7x -  -  -  -  -  -7x -7x -7x -7x -7x -  -  -  -15x -15x -15x -  -  -  -  -  -5x -  -  -  -5x -5x -5x -5x -  -  -  -  -  -  -  -  -5x -  -  -  -22x -5x -  -  -17x -5x -5x -5x -  -  -  -  -  -  -  -  -17x -  -  -  -5x -5x -5x -  -  -  -  -  -6x -  -6x -6x -6x -2x -  -  -4x -  -  -  -  -  -  -  -  -4x -  -  -  -4x -4x -  -  -  -  -1x -  -1x -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -7x -  -7x -7x -7x -2x -  -  -5x -  -  -  -  -  -5x -  -5x -  -  -  -5x -  -5x -5x -  -5x -  -  -  -  -  -3x -  -3x -3x -3x -2x -  -1x -1x -  -1x -  -  -1x -1x -  -  -  -  -  -  -  -  -  -2x -2x -2x -  -  -  -4x -  - 
import { LRUCache } from 'lru-cache';
-import { Mutex } from 'async-mutex';
-import { ClientConfig, RestService } from '../rest-service';
-import stringify from 'json-stringify-deterministic';
-import {MockDekRegistryClient} from "./mock-dekregistry-client";
- 
-/*
- * Confluent-Schema-Registry-TypeScript - Node.js wrapper for Confluent Schema Registry
- *
- * Copyright (c) 2024 Confluent, Inc.
- *
- * This software may be modified and distributed under the terms
- * of the MIT license.  See the LICENSE.txt file for details.
- */
- 
-interface Kek {
-  name?: string;
-  kmsType?: string;
-  kmsKeyId?: string;
-  kmsProps?: { [key: string]: string };
-  doc?: string;
-  shared?: boolean;
-  ts?: number;
-  deleted?: boolean;
-}
- 
-interface CreateKekRequest {
-  name?: string;
-  kmsType?: string;
-  kmsKeyId?: string;
-  kmsProps?: { [key: string]: string };
-  doc?: string;
-  shared?: boolean;
-}
- 
-interface Dek {
-  kekName?: string;
-  subject?: string;
-  version?: number;
-  algorithm?: string;
-  encryptedKeyMaterial?: string;
-  encryptedKeyMaterialBytes?: Buffer;
-  keyMaterial?: string;
-  keyMaterialBytes?: Buffer;
-  ts?: number;
-  deleted?: boolean;
-}
- 
-interface Client {
-  registerKek(name: string, kmsType: string, kmsKeyId: string, shared: boolean,
-              kmsProps?: { [key: string]: string }, doc?: string): Promise<Kek>;
-  getKek(name: string, deleted: boolean): Promise<Kek>;
-  registerDek(kekName: string, subject: string, algorithm: string, version: number,
-              encryptedKeyMaterial?: string): Promise<Dek>;
-  getDek(kekName: string, subject: string, algorithm: string, version: number, deleted: boolean): Promise<Dek>;
-  close(): Promise<void>;
-}
- 
-class DekRegistryClient implements Client {
-  private restService: RestService;
-  private kekCache: LRUCache<string, Kek>;
-  private dekCache: LRUCache<string, Dek>;
-  private kekMutex: Mutex;
-  private dekMutex: Mutex;
- 
-  constructor(config: ClientConfig) {
-    const cacheOptions = {
-      max: config.cacheCapacity,
-      ...(config.cacheLatestTtlSecs !== undefined && { maxAge: config.cacheLatestTtlSecs * 1000 }),
-    };
- 
- 
-    this.restService = new RestService(config.baseURLs, config.isForward, config.createAxiosDefaults);
-    this.kekCache = new LRUCache<string, Kek>(cacheOptions);
-    this.dekCache = new LRUCache<string, Dek>(cacheOptions);
-    this.kekMutex = new Mutex();
-    this.dekMutex = new Mutex();
-  }
- 
-  static newClient(config: ClientConfig): Client {
-    let url = config.baseURLs[0]
-    if (url.startsWith("mock://")) {
-      return new MockDekRegistryClient()
-    }
-    return new DekRegistryClient(config)
-  }
- 
-  static getEncryptedKeyMaterialBytes(dek: Dek): Buffer | null {
-    Iif (!dek.encryptedKeyMaterial) {
-      return null;
-    }
- 
-    if (!dek.encryptedKeyMaterialBytes) {
-      try {
-        const bytes = Buffer.from(dek.encryptedKeyMaterial, 'base64');
-        dek.encryptedKeyMaterialBytes = bytes;
-      } catch (err) {
-        Iif (err instanceof Error) {
-          throw new Error(`Failed to decode base64 string: ${err.message}`);
-        }
-        throw new Error(`Unknown error: ${err}`);
-      }
-    }
- 
-    return dek.encryptedKeyMaterialBytes;
-  }
- 
-  static getKeyMaterialBytes(dek: Dek): Buffer | null {
-    if (!dek.keyMaterial) {
-      return null;
-    }
- 
-    if (!dek.keyMaterialBytes) {
-      try {
-        const bytes = Buffer.from(dek.keyMaterial, 'base64');
-        dek.keyMaterialBytes = bytes;
-      } catch (err) {
-        Iif (err instanceof Error) {
-          throw new Error(`Failed to decode base64 string: ${err.message}`);
-        }
-        throw new Error(`Unknown error: ${err}`);
-      }
-    }
- 
-    return dek.keyMaterialBytes;
-  }
- 
-  static setKeyMaterial(dek: Dek, keyMaterialBytes: Buffer): void {
-    if (keyMaterialBytes) {
-      const str = keyMaterialBytes.toString('base64');
-      dek.keyMaterial = str;
-    }
-  }
- 
-  async registerKek(name: string, kmsType: string, kmsKeyId: string, shared: boolean,
-    kmsProps?: { [key: string]: string }, doc?: string): Promise<Kek> {
-    const cacheKey = stringify({ name, deleted: false });
- 
-    return await this.kekMutex.runExclusive(async () => {
-      const kek = this.kekCache.get(cacheKey);
-      if (kek) {
-        return kek;
-      }
- 
-      const request: CreateKekRequest = {
-        name,
-        kmsType,
-        kmsKeyId,
-        ...kmsProps && { kmsProps },
-        ...doc && { doc },
-        shared,
-      };
- 
-      const response = await this.restService.handleRequest<Kek>(
-        '/dek-registry/v1/keks',
-        'POST',
-        request);
-      this.kekCache.set(cacheKey, response.data);
-      return response.data;
-    });
-  }
- 
-  async getKek(name: string, deleted: boolean = false): Promise<Kek> {
-    const cacheKey = stringify({ name, deleted });
- 
-    return await this.kekMutex.runExclusive(async () => {
-      const kek = this.kekCache.get(cacheKey);
-      if (kek) {
-        return kek;
-      }
-      name = encodeURIComponent(name);
- 
-      const response = await this.restService.handleRequest<Kek>(
-        `/dek-registry/v1/keks/${name}?deleted=${deleted}`,
-        'GET');
-      this.kekCache.set(cacheKey, response.data);
-      return response.data;
-    });
-  }
- 
-  async registerDek(kekName: string, subject: string, algorithm: string,
-    version: number = 1, encryptedKeyMaterial?: string): Promise<Dek> {
-    const cacheKey = stringify({ kekName, subject, version, algorithm, deleted: false });
- 
-    return await this.dekMutex.runExclusive(async () => {
-      const dek = this.dekCache.get(cacheKey);
-      if (dek) {
-        return dek;
-      }
- 
-      const request: Dek = {
-        subject,
-        version,
-        algorithm,
-        ...encryptedKeyMaterial && { encryptedKeyMaterial },
-      };
-      kekName = encodeURIComponent(kekName);
- 
-      const response = await this.restService.handleRequest<Dek>(
-        `/dek-registry/v1/keks/${kekName}/deks`,
-        'POST',
-        request);
-      this.dekCache.set(cacheKey, response.data);
- 
-      this.dekCache.delete(stringify({ kekName, subject, version: -1, algorithm, deleted: false }));
-      this.dekCache.delete(stringify({ kekName, subject, version: -1, algorithm, deleted: true }));
- 
-      return response.data;
-    });
-  }
- 
-  async getDek(kekName: string, subject: string,
-    algorithm: string, version: number = 1, deleted: boolean = false): Promise<Dek> {
-    const cacheKey = stringify({ kekName, subject, version, algorithm, deleted });
- 
-    return await this.dekMutex.runExclusive(async () => {
-      const dek = this.dekCache.get(cacheKey);
-      if (dek) {
-        return dek;
-      }
-      kekName = encodeURIComponent(kekName);
-      subject = encodeURIComponent(subject);
- 
-      const response = await this.restService.handleRequest<Dek>(
-        `/dek-registry/v1/keks/${kekName}/deks/${subject}/versions/${version}?deleted=${deleted}`,
-        'GET');
-      this.dekCache.set(cacheKey, response.data);
-      return response.data;
-    });
-  }
- 
-  async close(): Promise<void> {
-    return;
-  }
- 
-  //Cache methods for testing
-  async checkLatestDekInCache(kekName: string, subject: string, algorithm: string): Promise<boolean> {
-    const cacheKey = stringify({ kekName, subject, version: -1, algorithm, deleted: false });
-    const cachedDek = this.dekCache.get(cacheKey);
-    return cachedDek !== undefined;
-  }
-}
- 
-export { DekRegistryClient, Client, Kek, Dek };
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/dekregistry/index.html b/coverage/lcov-report/schemaregistry/dekregistry/index.html deleted file mode 100644 index 9fe7b076..00000000 --- a/coverage/lcov-report/schemaregistry/dekregistry/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - Code coverage report for schemaregistry/dekregistry - - - - - - - - - -
-
-

All files schemaregistry/dekregistry

-
- -
- 86.4% - Statements - 108/125 -
- - -
- 79.16% - Branches - 38/48 -
- - -
- 90.47% - Functions - 19/21 -
- - -
- 86.4% - Lines - 108/125 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
constants.ts -
-
100%2/2100%0/0100%0/0100%2/2
dekregistry-client.ts -
-
84.33%70/8383.33%20/2493.33%14/1584.33%70/83
mock-dekregistry-client.ts -
-
90%36/4075%18/2483.33%5/690%36/40
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/dekregistry/mock-dekregistry-client.ts.html b/coverage/lcov-report/schemaregistry/dekregistry/mock-dekregistry-client.ts.html deleted file mode 100644 index e4b97053..00000000 --- a/coverage/lcov-report/schemaregistry/dekregistry/mock-dekregistry-client.ts.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - - - Code coverage report for schemaregistry/dekregistry/mock-dekregistry-client.ts - - - - - - - - - -
-
-

All files / schemaregistry/dekregistry mock-dekregistry-client.ts

-
- -
- 90% - Statements - 36/40 -
- - -
- 75% - Branches - 18/24 -
- - -
- 83.33% - Functions - 5/6 -
- - -
- 90% - Lines - 36/40 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99  -5x -5x -5x -  -  -  -  -  -  -20x -20x -  -  -  -  -7x -7x -7x -  -  -  -7x -  -  -  -  -  -  -  -  -7x -7x -  -  -  -8x -8x -8x -6x -  -  -2x -  -  -  -  -9x -9x -9x -  -  -  -9x -  -  -  -  -  -  -  -  -9x -9x -  -  -  -  -13x -1x -1x -2x -2x -  -2x -  -  -1x -  -  -1x -  -  -13x -13x -13x -11x -  -  -2x -  -  -  -  -  -  -  -5x - 
import { Client, Dek, Kek } from "./dekregistry-client";
-import { MOCK_TS } from "./constants";
-import stringify from "json-stringify-deterministic";
-import {RestError} from "../rest-error";
- 
-class MockDekRegistryClient implements Client {
-  private kekCache: Map<string, Kek>;
-  private dekCache: Map<string, Dek>;
- 
-  constructor() {
-    this.kekCache = new Map<string, Kek>();
-    this.dekCache = new Map<string, Dek>();
-  }
- 
-  async registerKek(name: string, kmsType: string, kmsKeyId: string, shared: boolean,
-    kmsProps?: { [key: string]: string }, doc?: string): Promise<Kek> {
-    const cacheKey = stringify({ name, deleted: false });
-    const cachedKek = this.kekCache.get(cacheKey);
-    Iif (cachedKek) {
-      return cachedKek;
-    }
- 
-    const kek: Kek = {
-      name,
-      kmsType,
-      kmsKeyId,
-      ...kmsProps && { kmsProps },
-      ...doc && { doc },
-      shared
-    };
- 
-    this.kekCache.set(cacheKey, kek);
-    return kek;
-  }
- 
-  async getKek(name: string, deleted: boolean = false): Promise<Kek> {
-    const cacheKey = stringify({ name, deleted });
-    const cachedKek = this.kekCache.get(cacheKey);
-    if (cachedKek && (!cachedKek.deleted || deleted)) {
-      return cachedKek;
-    }
- 
-    throw new RestError(`Kek not found: ${name}`, 404, 40400);
-  }
- 
-  async registerDek(kekName: string, subject: string, algorithm: string,
-    version: number = 1, encryptedKeyMaterial?: string): Promise<Dek> {
-    const cacheKey = stringify({ kekName, subject, version, algorithm, deleted: false });
-    const cachedDek = this.dekCache.get(cacheKey);
-    Iif (cachedDek) {
-      return cachedDek;
-    }
- 
-    const dek: Dek = {
-      kekName,
-      subject,
-      algorithm,
-      ...encryptedKeyMaterial && { encryptedKeyMaterial },
-      version,
-      ts: MOCK_TS
-    };
- 
-    this.dekCache.set(cacheKey, dek);
-    return dek;
-  }
- 
-  async getDek(kekName: string, subject: string,
-    algorithm: string, version: number = 1, deleted: boolean = false): Promise<Dek> {
-    if (version === -1) {
-      let latestVersion = 0;
-      for (let key of this.dekCache.keys()) {
-        const parsedKey = JSON.parse(key);
-        if (parsedKey.kekName === kekName && parsedKey.subject === subject
-          && parsedKey.algorithm === algorithm && parsedKey.deleted === deleted) {
-          latestVersion = Math.max(latestVersion, parsedKey.version);
-        }
-      }
-      Iif (latestVersion === 0) {
-        throw new RestError(`Dek not found: ${subject}`, 404, 40400);
-      }
-      version = latestVersion;
-    }
- 
-    const cacheKey = stringify({ kekName, subject, version, algorithm, deleted: false });
-    const cachedDek = this.dekCache.get(cacheKey);
-    if (cachedDek) {
-      return cachedDek;
-    }
- 
-    throw new RestError(`Dek not found: ${subject}`, 404, 40400);
-  }
- 
-  async close() {
-    return;
-  }
-}
- 
-export { MockDekRegistryClient };
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/calendar_period_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/calendar_period_pb.ts.html deleted file mode 100644 index 5791068c..00000000 --- a/coverage/lcov-report/schemaregistry/google/type/calendar_period_pb.ts.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - Code coverage report for schemaregistry/google/type/calendar_period_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/google/type calendar_period_pb.ts

-
- -
- 100% - Statements - 12/12 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 12/12 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  - 
// Copyright 2021-2024 Buf Technologies, Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
- 
-// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file google/type/calendar_period.proto (package google.type, syntax proto3)
-/* eslint-disable */
- 
-import type { GenEnum, GenFile } from "@bufbuild/protobuf/codegenv1";
-import { enumDesc, fileDesc } from "@bufbuild/protobuf/codegenv1";
- 
-/**
- * Describes the file google/type/calendar_period.proto.
- */
-export const file_google_type_calendar_period: GenFile = /*@__PURE__*/
-  fileDesc("CiFnb29nbGUvdHlwZS9jYWxlbmRhcl9wZXJpb2QucHJvdG8SC2dvb2dsZS50eXBlKn8KDkNhbGVuZGFyUGVyaW9kEh8KG0NBTEVOREFSX1BFUklPRF9VTlNQRUNJRklFRBAAEgcKA0RBWRABEggKBFdFRUsQAhINCglGT1JUTklHSFQQAxIJCgVNT05USBAEEgsKB1FVQVJURVIQBRIICgRIQUxGEAYSCAoEWUVBUhAHQngKD2NvbS5nb29nbGUudHlwZUITQ2FsZW5kYXJQZXJpb2RQcm90b1ABWkhnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvY2FsZW5kYXJwZXJpb2Q7Y2FsZW5kYXJwZXJpb2SiAgNHVFBiBnByb3RvMw");
- 
-/**
- * A `CalendarPeriod` represents the abstract concept of a time period that has
- * a canonical start. Grammatically, "the start of the current
- * `CalendarPeriod`." All calendar times begin at midnight UTC.
- *
- * @generated from enum google.type.CalendarPeriod
- */
-export enum CalendarPeriod {
-  /**
-   * Undefined period, raises an error.
-   *
-   * @generated from enum value: CALENDAR_PERIOD_UNSPECIFIED = 0;
-   */
-  CALENDAR_PERIOD_UNSPECIFIED = 0,
- 
-  /**
-   * A day.
-   *
-   * @generated from enum value: DAY = 1;
-   */
-  DAY = 1,
- 
-  /**
-   * A week. Weeks begin on Monday, following
-   * [ISO 8601](https://en.wikipedia.org/wiki/ISO_week_date).
-   *
-   * @generated from enum value: WEEK = 2;
-   */
-  WEEK = 2,
- 
-  /**
-   * A fortnight. The first calendar fortnight of the year begins at the start
-   * of week 1 according to
-   * [ISO 8601](https://en.wikipedia.org/wiki/ISO_week_date).
-   *
-   * @generated from enum value: FORTNIGHT = 3;
-   */
-  FORTNIGHT = 3,
- 
-  /**
-   * A month.
-   *
-   * @generated from enum value: MONTH = 4;
-   */
-  MONTH = 4,
- 
-  /**
-   * A quarter. Quarters start on dates 1-Jan, 1-Apr, 1-Jul, and 1-Oct of each
-   * year.
-   *
-   * @generated from enum value: QUARTER = 5;
-   */
-  QUARTER = 5,
- 
-  /**
-   * A half-year. Half-years start on dates 1-Jan and 1-Jul.
-   *
-   * @generated from enum value: HALF = 6;
-   */
-  HALF = 6,
- 
-  /**
-   * A year.
-   *
-   * @generated from enum value: YEAR = 7;
-   */
-  YEAR = 7,
-}
- 
-/**
- * Describes the enum google.type.CalendarPeriod.
- */
-export const CalendarPeriodSchema: GenEnum<CalendarPeriod> = /*@__PURE__*/
-  enumDesc(file_google_type_calendar_period, 0);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/color_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/color_pb.ts.html deleted file mode 100644 index 8891f6f2..00000000 --- a/coverage/lcov-report/schemaregistry/google/type/color_pb.ts.html +++ /dev/null @@ -1,697 +0,0 @@ - - - - - - Code coverage report for schemaregistry/google/type/color_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/google/type color_pb.ts

-
- -
- 100% - Statements - 4/4 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 4/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  - 
// Copyright 2021-2024 Buf Technologies, Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
- 
-// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file google/type/color.proto (package google.type, syntax proto3)
-/* eslint-disable */
- 
-import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
-import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
-import { file_google_protobuf_wrappers } from "@bufbuild/protobuf/wkt";
-import type { Message } from "@bufbuild/protobuf";
- 
-/**
- * Describes the file google/type/color.proto.
- */
-export const file_google_type_color: GenFile = /*@__PURE__*/
-  fileDesc("Chdnb29nbGUvdHlwZS9jb2xvci5wcm90bxILZ29vZ2xlLnR5cGUiXQoFQ29sb3ISCwoDcmVkGAEgASgCEg0KBWdyZWVuGAIgASgCEgwKBGJsdWUYAyABKAISKgoFYWxwaGEYBCABKAsyGy5nb29nbGUucHJvdG9idWYuRmxvYXRWYWx1ZUJgCg9jb20uZ29vZ2xlLnR5cGVCCkNvbG9yUHJvdG9QAVo2Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL2NvbG9yO2NvbG9y+AEBogIDR1RQYgZwcm90bzM", [file_google_protobuf_wrappers]);
- 
-/**
- * Represents a color in the RGBA color space. This representation is designed
- * for simplicity of conversion to/from color representations in various
- * languages over compactness. For example, the fields of this representation
- * can be trivially provided to the constructor of `java.awt.Color` in Java; it
- * can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha`
- * method in iOS; and, with just a little work, it can be easily formatted into
- * a CSS `rgba()` string in JavaScript.
- *
- * This reference page doesn't carry information about the absolute color
- * space
- * that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
- * DCI-P3, BT.2020, etc.). By default, applications should assume the sRGB color
- * space.
- *
- * When color equality needs to be decided, implementations, unless
- * documented otherwise, treat two colors as equal if all their red,
- * green, blue, and alpha values each differ by at most 1e-5.
- *
- * Example (Java):
- *
- *      import com.google.type.Color;
- *
- *      // ...
- *      public static java.awt.Color fromProto(Color protocolor) {
- *        float alpha = protocolor.hasAlpha()
- *            ? protocolor.getAlpha().getValue()
- *            : 1.0;
- *
- *        return new java.awt.Color(
- *            protocolor.getRed(),
- *            protocolor.getGreen(),
- *            protocolor.getBlue(),
- *            alpha);
- *      }
- *
- *      public static Color toProto(java.awt.Color color) {
- *        float red = (float) color.getRed();
- *        float green = (float) color.getGreen();
- *        float blue = (float) color.getBlue();
- *        float denominator = 255.0;
- *        Color.Builder resultBuilder =
- *            Color
- *                .newBuilder()
- *                .setRed(red / denominator)
- *                .setGreen(green / denominator)
- *                .setBlue(blue / denominator);
- *        int alpha = color.getAlpha();
- *        if (alpha != 255) {
- *          result.setAlpha(
- *              FloatValue
- *                  .newBuilder()
- *                  .setValue(((float) alpha) / denominator)
- *                  .build());
- *        }
- *        return resultBuilder.build();
- *      }
- *      // ...
- *
- * Example (iOS / Obj-C):
- *
- *      // ...
- *      static UIColor* fromProto(Color* protocolor) {
- *         float red = [protocolor red];
- *         float green = [protocolor green];
- *         float blue = [protocolor blue];
- *         FloatValue* alpha_wrapper = [protocolor alpha];
- *         float alpha = 1.0;
- *         if (alpha_wrapper != nil) {
- *           alpha = [alpha_wrapper value];
- *         }
- *         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
- *      }
- *
- *      static Color* toProto(UIColor* color) {
- *          CGFloat red, green, blue, alpha;
- *          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
- *            return nil;
- *          }
- *          Color* result = [[Color alloc] init];
- *          [result setRed:red];
- *          [result setGreen:green];
- *          [result setBlue:blue];
- *          if (alpha <= 0.9999) {
- *            [result setAlpha:floatWrapperWithValue(alpha)];
- *          }
- *          [result autorelease];
- *          return result;
- *     }
- *     // ...
- *
- *  Example (JavaScript):
- *
- *     // ...
- *
- *     var protoToCssColor = function(rgb_color) {
- *        var redFrac = rgb_color.red || 0.0;
- *        var greenFrac = rgb_color.green || 0.0;
- *        var blueFrac = rgb_color.blue || 0.0;
- *        var red = Math.floor(redFrac * 255);
- *        var green = Math.floor(greenFrac * 255);
- *        var blue = Math.floor(blueFrac * 255);
- *
- *        if (!('alpha' in rgb_color)) {
- *           return rgbToCssColor(red, green, blue);
- *        }
- *
- *        var alphaFrac = rgb_color.alpha.value || 0.0;
- *        var rgbParams = [red, green, blue].join(',');
- *        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
- *     };
- *
- *     var rgbToCssColor = function(red, green, blue) {
- *       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
- *       var hexString = rgbNumber.toString(16);
- *       var missingZeros = 6 - hexString.length;
- *       var resultBuilder = ['#'];
- *       for (var i = 0; i < missingZeros; i++) {
- *          resultBuilder.push('0');
- *       }
- *       resultBuilder.push(hexString);
- *       return resultBuilder.join('');
- *     };
- *
- *     // ...
- *
- * @generated from message google.type.Color
- */
-export type Color = Message<"google.type.Color"> & {
-  /**
-   * The amount of red in the color as a value in the interval [0, 1].
-   *
-   * @generated from field: float red = 1;
-   */
-  red: number;
- 
-  /**
-   * The amount of green in the color as a value in the interval [0, 1].
-   *
-   * @generated from field: float green = 2;
-   */
-  green: number;
- 
-  /**
-   * The amount of blue in the color as a value in the interval [0, 1].
-   *
-   * @generated from field: float blue = 3;
-   */
-  blue: number;
- 
-  /**
-   * The fraction of this color that should be applied to the pixel. That is,
-   * the final pixel color is defined by the equation:
-   *
-   *   `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)`
-   *
-   * This means that a value of 1.0 corresponds to a solid color, whereas
-   * a value of 0.0 corresponds to a completely transparent color. This
-   * uses a wrapper message rather than a simple float scalar so that it is
-   * possible to distinguish between a default value and the value being unset.
-   * If omitted, this color object is rendered as a solid color
-   * (as if the alpha value had been explicitly given a value of 1.0).
-   *
-   * @generated from field: google.protobuf.FloatValue alpha = 4;
-   */
-  alpha?: number;
-};
- 
-/**
- * Describes the message google.type.Color.
- * Use `create(ColorSchema)` to create a new message.
- */
-export const ColorSchema: GenMessage<Color> = /*@__PURE__*/
-  messageDesc(file_google_type_color, 0);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/date_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/date_pb.ts.html deleted file mode 100644 index bb1f2e9d..00000000 --- a/coverage/lcov-report/schemaregistry/google/type/date_pb.ts.html +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - Code coverage report for schemaregistry/google/type/date_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/google/type date_pb.ts

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  - 
// Copyright 2021-2024 Buf Technologies, Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
- 
-// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file google/type/date.proto (package google.type, syntax proto3)
-/* eslint-disable */
- 
-import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
-import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
-import type { Message } from "@bufbuild/protobuf";
- 
-/**
- * Describes the file google/type/date.proto.
- */
-export const file_google_type_date: GenFile = /*@__PURE__*/
-  fileDesc("ChZnb29nbGUvdHlwZS9kYXRlLnByb3RvEgtnb29nbGUudHlwZSIwCgREYXRlEgwKBHllYXIYASABKAUSDQoFbW9udGgYAiABKAUSCwoDZGF5GAMgASgFQl0KD2NvbS5nb29nbGUudHlwZUIJRGF0ZVByb3RvUAFaNGdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvdHlwZS9kYXRlO2RhdGX4AQGiAgNHVFBiBnByb3RvMw");
- 
-/**
- * Represents a whole or partial calendar date, such as a birthday. The time of
- * day and time zone are either specified elsewhere or are insignificant. The
- * date is relative to the Gregorian Calendar. This can represent one of the
- * following:
- *
- * * A full date, with non-zero year, month, and day values
- * * A month and day value, with a zero year, such as an anniversary
- * * A year on its own, with zero month and day values
- * * A year and month value, with a zero day, such as a credit card expiration
- * date
- *
- * Related types are [google.type.TimeOfDay][google.type.TimeOfDay] and
- * `google.protobuf.Timestamp`.
- *
- * @generated from message google.type.Date
- */
-export type Date = Message<"google.type.Date"> & {
-  /**
-   * Year of the date. Must be from 1 to 9999, or 0 to specify a date without
-   * a year.
-   *
-   * @generated from field: int32 year = 1;
-   */
-  year: number;
- 
-  /**
-   * Month of a year. Must be from 1 to 12, or 0 to specify a year without a
-   * month and day.
-   *
-   * @generated from field: int32 month = 2;
-   */
-  month: number;
- 
-  /**
-   * Day of a month. Must be from 1 to 31 and valid for the year and month, or 0
-   * to specify a year by itself or a year and month where the day isn't
-   * significant.
-   *
-   * @generated from field: int32 day = 3;
-   */
-  day: number;
-};
- 
-/**
- * Describes the message google.type.Date.
- * Use `create(DateSchema)` to create a new message.
- */
-export const DateSchema: GenMessage<Date> = /*@__PURE__*/
-  messageDesc(file_google_type_date, 0);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/datetime_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/datetime_pb.ts.html deleted file mode 100644 index 708b91b7..00000000 --- a/coverage/lcov-report/schemaregistry/google/type/datetime_pb.ts.html +++ /dev/null @@ -1,625 +0,0 @@ - - - - - - Code coverage report for schemaregistry/google/type/datetime_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/google/type datetime_pb.ts

-
- -
- 100% - Statements - 5/5 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 5/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  - 
// Copyright 2021-2024 Buf Technologies, Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
- 
-// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file google/type/datetime.proto (package google.type, syntax proto3)
-/* eslint-disable */
- 
-import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
-import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
-import type { Duration } from "@bufbuild/protobuf/wkt";
-import { file_google_protobuf_duration } from "@bufbuild/protobuf/wkt";
-import type { Message } from "@bufbuild/protobuf";
- 
-/**
- * Describes the file google/type/datetime.proto.
- */
-export const file_google_type_datetime: GenFile = /*@__PURE__*/
-  fileDesc("Chpnb29nbGUvdHlwZS9kYXRldGltZS5wcm90bxILZ29vZ2xlLnR5cGUi4AEKCERhdGVUaW1lEgwKBHllYXIYASABKAUSDQoFbW9udGgYAiABKAUSCwoDZGF5GAMgASgFEg0KBWhvdXJzGAQgASgFEg8KB21pbnV0ZXMYBSABKAUSDwoHc2Vjb25kcxgGIAEoBRINCgVuYW5vcxgHIAEoBRIvCgp1dGNfb2Zmc2V0GAggASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uSAASKgoJdGltZV96b25lGAkgASgLMhUuZ29vZ2xlLnR5cGUuVGltZVpvbmVIAEINCgt0aW1lX29mZnNldCInCghUaW1lWm9uZRIKCgJpZBgBIAEoCRIPCgd2ZXJzaW9uGAIgASgJQmkKD2NvbS5nb29nbGUudHlwZUINRGF0ZVRpbWVQcm90b1ABWjxnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvZGF0ZXRpbWU7ZGF0ZXRpbWX4AQGiAgNHVFBiBnByb3RvMw", [file_google_protobuf_duration]);
- 
-/**
- * Represents civil time (or occasionally physical time).
- *
- * This type can represent a civil time in one of a few possible ways:
- *
- *  * When utc_offset is set and time_zone is unset: a civil time on a calendar
- *    day with a particular offset from UTC.
- *  * When time_zone is set and utc_offset is unset: a civil time on a calendar
- *    day in a particular time zone.
- *  * When neither time_zone nor utc_offset is set: a civil time on a calendar
- *    day in local time.
- *
- * The date is relative to the Proleptic Gregorian Calendar.
- *
- * If year is 0, the DateTime is considered not to have a specific year. month
- * and day must have valid, non-zero values.
- *
- * This type may also be used to represent a physical time if all the date and
- * time fields are set and either case of the `time_offset` oneof is set.
- * Consider using `Timestamp` message for physical time instead. If your use
- * case also would like to store the user's timezone, that can be done in
- * another field.
- *
- * This type is more flexible than some applications may want. Make sure to
- * document and validate your application's limitations.
- *
- * @generated from message google.type.DateTime
- */
-export type DateTime = Message<"google.type.DateTime"> & {
-  /**
-   * Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a
-   * datetime without a year.
-   *
-   * @generated from field: int32 year = 1;
-   */
-  year: number;
- 
-  /**
-   * Required. Month of year. Must be from 1 to 12.
-   *
-   * @generated from field: int32 month = 2;
-   */
-  month: number;
- 
-  /**
-   * Required. Day of month. Must be from 1 to 31 and valid for the year and
-   * month.
-   *
-   * @generated from field: int32 day = 3;
-   */
-  day: number;
- 
-  /**
-   * Required. Hours of day in 24 hour format. Should be from 0 to 23. An API
-   * may choose to allow the value "24:00:00" for scenarios like business
-   * closing time.
-   *
-   * @generated from field: int32 hours = 4;
-   */
-  hours: number;
- 
-  /**
-   * Required. Minutes of hour of day. Must be from 0 to 59.
-   *
-   * @generated from field: int32 minutes = 5;
-   */
-  minutes: number;
- 
-  /**
-   * Required. Seconds of minutes of the time. Must normally be from 0 to 59. An
-   * API may allow the value 60 if it allows leap-seconds.
-   *
-   * @generated from field: int32 seconds = 6;
-   */
-  seconds: number;
- 
-  /**
-   * Required. Fractions of seconds in nanoseconds. Must be from 0 to
-   * 999,999,999.
-   *
-   * @generated from field: int32 nanos = 7;
-   */
-  nanos: number;
- 
-  /**
-   * Optional. Specifies either the UTC offset or the time zone of the DateTime.
-   * Choose carefully between them, considering that time zone data may change
-   * in the future (for example, a country modifies their DST start/end dates,
-   * and future DateTimes in the affected range had already been stored).
-   * If omitted, the DateTime is considered to be in local time.
-   *
-   * @generated from oneof google.type.DateTime.time_offset
-   */
-  timeOffset: {
-    /**
-     * UTC offset. Must be whole seconds, between -18 hours and +18 hours.
-     * For example, a UTC offset of -4:00 would be represented as
-     * { seconds: -14400 }.
-     *
-     * @generated from field: google.protobuf.Duration utc_offset = 8;
-     */
-    value: Duration;
-    case: "utcOffset";
-  } | {
-    /**
-     * Time zone.
-     *
-     * @generated from field: google.type.TimeZone time_zone = 9;
-     */
-    value: TimeZone;
-    case: "timeZone";
-  } | { case: undefined; value?: undefined };
-};
- 
-/**
- * Describes the message google.type.DateTime.
- * Use `create(DateTimeSchema)` to create a new message.
- */
-export const DateTimeSchema: GenMessage<DateTime> = /*@__PURE__*/
-  messageDesc(file_google_type_datetime, 0);
- 
-/**
- * Represents a time zone from the
- * [IANA Time Zone Database](https://www.iana.org/time-zones).
- *
- * @generated from message google.type.TimeZone
- */
-export type TimeZone = Message<"google.type.TimeZone"> & {
-  /**
-   * IANA Time Zone Database time zone, e.g. "America/New_York".
-   *
-   * @generated from field: string id = 1;
-   */
-  id: string;
- 
-  /**
-   * Optional. IANA Time Zone Database version number, e.g. "2019a".
-   *
-   * @generated from field: string version = 2;
-   */
-  version: string;
-};
- 
-/**
- * Describes the message google.type.TimeZone.
- * Use `create(TimeZoneSchema)` to create a new message.
- */
-export const TimeZoneSchema: GenMessage<TimeZone> = /*@__PURE__*/
-  messageDesc(file_google_type_datetime, 1);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/dayofweek_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/dayofweek_pb.ts.html deleted file mode 100644 index 4aa928ca..00000000 --- a/coverage/lcov-report/schemaregistry/google/type/dayofweek_pb.ts.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - Code coverage report for schemaregistry/google/type/dayofweek_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/google/type dayofweek_pb.ts

-
- -
- 100% - Statements - 12/12 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 12/12 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -1x -  -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  - 
// Copyright 2021-2024 Buf Technologies, Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
- 
-// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file google/type/dayofweek.proto (package google.type, syntax proto3)
-/* eslint-disable */
- 
-import type { GenEnum, GenFile } from "@bufbuild/protobuf/codegenv1";
-import { enumDesc, fileDesc } from "@bufbuild/protobuf/codegenv1";
- 
-/**
- * Describes the file google/type/dayofweek.proto.
- */
-export const file_google_type_dayofweek: GenFile = /*@__PURE__*/
-  fileDesc("Chtnb29nbGUvdHlwZS9kYXlvZndlZWsucHJvdG8SC2dvb2dsZS50eXBlKoQBCglEYXlPZldlZWsSGwoXREFZX09GX1dFRUtfVU5TUEVDSUZJRUQQABIKCgZNT05EQVkQARILCgdUVUVTREFZEAISDQoJV0VETkVTREFZEAMSDAoIVEhVUlNEQVkQBBIKCgZGUklEQVkQBRIMCghTQVRVUkRBWRAGEgoKBlNVTkRBWRAHQmkKD2NvbS5nb29nbGUudHlwZUIORGF5T2ZXZWVrUHJvdG9QAVo+Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL2RheW9md2VlaztkYXlvZndlZWuiAgNHVFBiBnByb3RvMw");
- 
-/**
- * Represents a day of the week.
- *
- * @generated from enum google.type.DayOfWeek
- */
-export enum DayOfWeek {
-  /**
-   * The day of the week is unspecified.
-   *
-   * @generated from enum value: DAY_OF_WEEK_UNSPECIFIED = 0;
-   */
-  DAY_OF_WEEK_UNSPECIFIED = 0,
- 
-  /**
-   * Monday
-   *
-   * @generated from enum value: MONDAY = 1;
-   */
-  MONDAY = 1,
- 
-  /**
-   * Tuesday
-   *
-   * @generated from enum value: TUESDAY = 2;
-   */
-  TUESDAY = 2,
- 
-  /**
-   * Wednesday
-   *
-   * @generated from enum value: WEDNESDAY = 3;
-   */
-  WEDNESDAY = 3,
- 
-  /**
-   * Thursday
-   *
-   * @generated from enum value: THURSDAY = 4;
-   */
-  THURSDAY = 4,
- 
-  /**
-   * Friday
-   *
-   * @generated from enum value: FRIDAY = 5;
-   */
-  FRIDAY = 5,
- 
-  /**
-   * Saturday
-   *
-   * @generated from enum value: SATURDAY = 6;
-   */
-  SATURDAY = 6,
- 
-  /**
-   * Sunday
-   *
-   * @generated from enum value: SUNDAY = 7;
-   */
-  SUNDAY = 7,
-}
- 
-/**
- * Describes the enum google.type.DayOfWeek.
- */
-export const DayOfWeekSchema: GenEnum<DayOfWeek> = /*@__PURE__*/
-  enumDesc(file_google_type_dayofweek, 0);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/expr_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/expr_pb.ts.html deleted file mode 100644 index e149a430..00000000 --- a/coverage/lcov-report/schemaregistry/google/type/expr_pb.ts.html +++ /dev/null @@ -1,400 +0,0 @@ - - - - - - Code coverage report for schemaregistry/google/type/expr_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/google/type expr_pb.ts

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  - 
// Copyright 2021-2024 Buf Technologies, Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
- 
-// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file google/type/expr.proto (package google.type, syntax proto3)
-/* eslint-disable */
- 
-import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
-import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
-import type { Message } from "@bufbuild/protobuf";
- 
-/**
- * Describes the file google/type/expr.proto.
- */
-export const file_google_type_expr: GenFile = /*@__PURE__*/
-  fileDesc("ChZnb29nbGUvdHlwZS9leHByLnByb3RvEgtnb29nbGUudHlwZSJQCgRFeHByEhIKCmV4cHJlc3Npb24YASABKAkSDQoFdGl0bGUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSEAoIbG9jYXRpb24YBCABKAlCWgoPY29tLmdvb2dsZS50eXBlQglFeHByUHJvdG9QAVo0Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL2V4cHI7ZXhwcqICA0dUUGIGcHJvdG8z");
- 
-/**
- * Represents a textual expression in the Common Expression Language (CEL)
- * syntax. CEL is a C-like expression language. The syntax and semantics of CEL
- * are documented at https://github.com/google/cel-spec.
- *
- * Example (Comparison):
- *
- *     title: "Summary size limit"
- *     description: "Determines if a summary is less than 100 chars"
- *     expression: "document.summary.size() < 100"
- *
- * Example (Equality):
- *
- *     title: "Requestor is owner"
- *     description: "Determines if requestor is the document owner"
- *     expression: "document.owner == request.auth.claims.email"
- *
- * Example (Logic):
- *
- *     title: "Public documents"
- *     description: "Determine whether the document should be publicly visible"
- *     expression: "document.type != 'private' && document.type != 'internal'"
- *
- * Example (Data Manipulation):
- *
- *     title: "Notification string"
- *     description: "Create a notification string with a timestamp."
- *     expression: "'New message received at ' + string(document.create_time)"
- *
- * The exact variables and functions that may be referenced within an expression
- * are determined by the service that evaluates it. See the service
- * documentation for additional information.
- *
- * @generated from message google.type.Expr
- */
-export type Expr = Message<"google.type.Expr"> & {
-  /**
-   * Textual representation of an expression in Common Expression Language
-   * syntax.
-   *
-   * @generated from field: string expression = 1;
-   */
-  expression: string;
- 
-  /**
-   * Optional. Title for the expression, i.e. a short string describing
-   * its purpose. This can be used e.g. in UIs which allow to enter the
-   * expression.
-   *
-   * @generated from field: string title = 2;
-   */
-  title: string;
- 
-  /**
-   * Optional. Description of the expression. This is a longer text which
-   * describes the expression, e.g. when hovered over it in a UI.
-   *
-   * @generated from field: string description = 3;
-   */
-  description: string;
- 
-  /**
-   * Optional. String indicating the location of the expression for error
-   * reporting, e.g. a file name and a position in the file.
-   *
-   * @generated from field: string location = 4;
-   */
-  location: string;
-};
- 
-/**
- * Describes the message google.type.Expr.
- * Use `create(ExprSchema)` to create a new message.
- */
-export const ExprSchema: GenMessage<Expr> = /*@__PURE__*/
-  messageDesc(file_google_type_expr, 0);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/fraction_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/fraction_pb.ts.html deleted file mode 100644 index ca5bce75..00000000 --- a/coverage/lcov-report/schemaregistry/google/type/fraction_pb.ts.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - Code coverage report for schemaregistry/google/type/fraction_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/google/type fraction_pb.ts

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  - 
// Copyright 2021-2024 Buf Technologies, Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
- 
-// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file google/type/fraction.proto (package google.type, syntax proto3)
-/* eslint-disable */
- 
-import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
-import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
-import type { Message } from "@bufbuild/protobuf";
- 
-/**
- * Describes the file google/type/fraction.proto.
- */
-export const file_google_type_fraction: GenFile = /*@__PURE__*/
-  fileDesc("Chpnb29nbGUvdHlwZS9mcmFjdGlvbi5wcm90bxILZ29vZ2xlLnR5cGUiMgoIRnJhY3Rpb24SEQoJbnVtZXJhdG9yGAEgASgDEhMKC2Rlbm9taW5hdG9yGAIgASgDQmYKD2NvbS5nb29nbGUudHlwZUINRnJhY3Rpb25Qcm90b1ABWjxnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvZnJhY3Rpb247ZnJhY3Rpb26iAgNHVFBiBnByb3RvMw");
- 
-/**
- * Represents a fraction in terms of a numerator divided by a denominator.
- *
- * @generated from message google.type.Fraction
- */
-export type Fraction = Message<"google.type.Fraction"> & {
-  /**
-   * The numerator in the fraction, e.g. 2 in 2/3.
-   *
-   * @generated from field: int64 numerator = 1;
-   */
-  numerator: bigint;
- 
-  /**
-   * The value by which the numerator is divided, e.g. 3 in 2/3. Must be
-   * positive.
-   *
-   * @generated from field: int64 denominator = 2;
-   */
-  denominator: bigint;
-};
- 
-/**
- * Describes the message google.type.Fraction.
- * Use `create(FractionSchema)` to create a new message.
- */
-export const FractionSchema: GenMessage<Fraction> = /*@__PURE__*/
-  messageDesc(file_google_type_fraction, 0);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/index.html b/coverage/lcov-report/schemaregistry/google/type/index.html deleted file mode 100644 index bc65b926..00000000 --- a/coverage/lcov-report/schemaregistry/google/type/index.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - Code coverage report for schemaregistry/google/type - - - - - - - - - -
-
-

All files schemaregistry/google/type

-
- -
- 100% - Statements - 74/74 -
- - -
- 100% - Branches - 6/6 -
- - -
- 100% - Functions - 3/3 -
- - -
- 100% - Lines - 74/74 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
calendar_period_pb.ts -
-
100%12/12100%2/2100%1/1100%12/12
color_pb.ts -
-
100%4/4100%0/0100%0/0100%4/4
date_pb.ts -
-
100%3/3100%0/0100%0/0100%3/3
datetime_pb.ts -
-
100%5/5100%0/0100%0/0100%5/5
dayofweek_pb.ts -
-
100%12/12100%2/2100%1/1100%12/12
expr_pb.ts -
-
100%3/3100%0/0100%0/0100%3/3
fraction_pb.ts -
-
100%3/3100%0/0100%0/0100%3/3
latlng_pb.ts -
-
100%3/3100%0/0100%0/0100%3/3
money_pb.ts -
-
100%3/3100%0/0100%0/0100%3/3
month_pb.ts -
-
100%17/17100%2/2100%1/1100%17/17
postal_address_pb.ts -
-
100%3/3100%0/0100%0/0100%3/3
quaternion_pb.ts -
-
100%3/3100%0/0100%0/0100%3/3
timeofday_pb.ts -
-
100%3/3100%0/0100%0/0100%3/3
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/latlng_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/latlng_pb.ts.html deleted file mode 100644 index a8d23891..00000000 --- a/coverage/lcov-report/schemaregistry/google/type/latlng_pb.ts.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - Code coverage report for schemaregistry/google/type/latlng_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/google/type latlng_pb.ts

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  - 
// Copyright 2021-2024 Buf Technologies, Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
- 
-// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file google/type/latlng.proto (package google.type, syntax proto3)
-/* eslint-disable */
- 
-import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
-import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
-import type { Message } from "@bufbuild/protobuf";
- 
-/**
- * Describes the file google/type/latlng.proto.
- */
-export const file_google_type_latlng: GenFile = /*@__PURE__*/
-  fileDesc("Chhnb29nbGUvdHlwZS9sYXRsbmcucHJvdG8SC2dvb2dsZS50eXBlIi0KBkxhdExuZxIQCghsYXRpdHVkZRgBIAEoARIRCglsb25naXR1ZGUYAiABKAFCYwoPY29tLmdvb2dsZS50eXBlQgtMYXRMbmdQcm90b1ABWjhnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvbGF0bG5nO2xhdGxuZ/gBAaICA0dUUGIGcHJvdG8z");
- 
-/**
- * An object that represents a latitude/longitude pair. This is expressed as a
- * pair of doubles to represent degrees latitude and degrees longitude. Unless
- * specified otherwise, this must conform to the
- * <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
- * standard</a>. Values must be within normalized ranges.
- *
- * @generated from message google.type.LatLng
- */
-export type LatLng = Message<"google.type.LatLng"> & {
-  /**
-   * The latitude in degrees. It must be in the range [-90.0, +90.0].
-   *
-   * @generated from field: double latitude = 1;
-   */
-  latitude: number;
- 
-  /**
-   * The longitude in degrees. It must be in the range [-180.0, +180.0].
-   *
-   * @generated from field: double longitude = 2;
-   */
-  longitude: number;
-};
- 
-/**
- * Describes the message google.type.LatLng.
- * Use `create(LatLngSchema)` to create a new message.
- */
-export const LatLngSchema: GenMessage<LatLng> = /*@__PURE__*/
-  messageDesc(file_google_type_latlng, 0);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/money_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/money_pb.ts.html deleted file mode 100644 index a477d4b5..00000000 --- a/coverage/lcov-report/schemaregistry/google/type/money_pb.ts.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - Code coverage report for schemaregistry/google/type/money_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/google/type money_pb.ts

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  - 
// Copyright 2021-2024 Buf Technologies, Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
- 
-// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file google/type/money.proto (package google.type, syntax proto3)
-/* eslint-disable */
- 
-import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
-import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
-import type { Message } from "@bufbuild/protobuf";
- 
-/**
- * Describes the file google/type/money.proto.
- */
-export const file_google_type_money: GenFile = /*@__PURE__*/
-  fileDesc("Chdnb29nbGUvdHlwZS9tb25leS5wcm90bxILZ29vZ2xlLnR5cGUiPAoFTW9uZXkSFQoNY3VycmVuY3lfY29kZRgBIAEoCRINCgV1bml0cxgCIAEoAxINCgVuYW5vcxgDIAEoBUJgCg9jb20uZ29vZ2xlLnR5cGVCCk1vbmV5UHJvdG9QAVo2Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL21vbmV5O21vbmV5+AEBogIDR1RQYgZwcm90bzM");
- 
-/**
- * Represents an amount of money with its currency type.
- *
- * @generated from message google.type.Money
- */
-export type Money = Message<"google.type.Money"> & {
-  /**
-   * The three-letter currency code defined in ISO 4217.
-   *
-   * @generated from field: string currency_code = 1;
-   */
-  currencyCode: string;
- 
-  /**
-   * The whole units of the amount.
-   * For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
-   *
-   * @generated from field: int64 units = 2;
-   */
-  units: bigint;
- 
-  /**
-   * Number of nano (10^-9) units of the amount.
-   * The value must be between -999,999,999 and +999,999,999 inclusive.
-   * If `units` is positive, `nanos` must be positive or zero.
-   * If `units` is zero, `nanos` can be positive, zero, or negative.
-   * If `units` is negative, `nanos` must be negative or zero.
-   * For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
-   *
-   * @generated from field: int32 nanos = 3;
-   */
-  nanos: number;
-};
- 
-/**
- * Describes the message google.type.Money.
- * Use `create(MoneySchema)` to create a new message.
- */
-export const MoneySchema: GenMessage<Money> = /*@__PURE__*/
-  messageDesc(file_google_type_money, 0);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/month_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/month_pb.ts.html deleted file mode 100644 index d42e09e7..00000000 --- a/coverage/lcov-report/schemaregistry/google/type/month_pb.ts.html +++ /dev/null @@ -1,478 +0,0 @@ - - - - - - Code coverage report for schemaregistry/google/type/month_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/google/type month_pb.ts

-
- -
- 100% - Statements - 17/17 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 17/17 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -1x -  -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  - 
// Copyright 2021-2024 Buf Technologies, Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
- 
-// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file google/type/month.proto (package google.type, syntax proto3)
-/* eslint-disable */
- 
-import type { GenEnum, GenFile } from "@bufbuild/protobuf/codegenv1";
-import { enumDesc, fileDesc } from "@bufbuild/protobuf/codegenv1";
- 
-/**
- * Describes the file google/type/month.proto.
- */
-export const file_google_type_month: GenFile = /*@__PURE__*/
-  fileDesc("Chdnb29nbGUvdHlwZS9tb250aC5wcm90bxILZ29vZ2xlLnR5cGUqsAEKBU1vbnRoEhUKEU1PTlRIX1VOU1BFQ0lGSUVEEAASCwoHSkFOVUFSWRABEgwKCEZFQlJVQVJZEAISCQoFTUFSQ0gQAxIJCgVBUFJJTBAEEgcKA01BWRAFEggKBEpVTkUQBhIICgRKVUxZEAcSCgoGQVVHVVNUEAgSDQoJU0VQVEVNQkVSEAkSCwoHT0NUT0JFUhAKEgwKCE5PVkVNQkVSEAsSDAoIREVDRU1CRVIQDEJdCg9jb20uZ29vZ2xlLnR5cGVCCk1vbnRoUHJvdG9QAVo2Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL21vbnRoO21vbnRoogIDR1RQYgZwcm90bzM");
- 
-/**
- * Represents a month in the Gregorian calendar.
- *
- * @generated from enum google.type.Month
- */
-export enum Month {
-  /**
-   * The unspecified month.
-   *
-   * @generated from enum value: MONTH_UNSPECIFIED = 0;
-   */
-  MONTH_UNSPECIFIED = 0,
- 
-  /**
-   * The month of January.
-   *
-   * @generated from enum value: JANUARY = 1;
-   */
-  JANUARY = 1,
- 
-  /**
-   * The month of February.
-   *
-   * @generated from enum value: FEBRUARY = 2;
-   */
-  FEBRUARY = 2,
- 
-  /**
-   * The month of March.
-   *
-   * @generated from enum value: MARCH = 3;
-   */
-  MARCH = 3,
- 
-  /**
-   * The month of April.
-   *
-   * @generated from enum value: APRIL = 4;
-   */
-  APRIL = 4,
- 
-  /**
-   * The month of May.
-   *
-   * @generated from enum value: MAY = 5;
-   */
-  MAY = 5,
- 
-  /**
-   * The month of June.
-   *
-   * @generated from enum value: JUNE = 6;
-   */
-  JUNE = 6,
- 
-  /**
-   * The month of July.
-   *
-   * @generated from enum value: JULY = 7;
-   */
-  JULY = 7,
- 
-  /**
-   * The month of August.
-   *
-   * @generated from enum value: AUGUST = 8;
-   */
-  AUGUST = 8,
- 
-  /**
-   * The month of September.
-   *
-   * @generated from enum value: SEPTEMBER = 9;
-   */
-  SEPTEMBER = 9,
- 
-  /**
-   * The month of October.
-   *
-   * @generated from enum value: OCTOBER = 10;
-   */
-  OCTOBER = 10,
- 
-  /**
-   * The month of November.
-   *
-   * @generated from enum value: NOVEMBER = 11;
-   */
-  NOVEMBER = 11,
- 
-  /**
-   * The month of December.
-   *
-   * @generated from enum value: DECEMBER = 12;
-   */
-  DECEMBER = 12,
-}
- 
-/**
- * Describes the enum google.type.Month.
- */
-export const MonthSchema: GenEnum<Month> = /*@__PURE__*/
-  enumDesc(file_google_type_month, 0);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/postal_address_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/postal_address_pb.ts.html deleted file mode 100644 index c4396c05..00000000 --- a/coverage/lcov-report/schemaregistry/google/type/postal_address_pb.ts.html +++ /dev/null @@ -1,664 +0,0 @@ - - - - - - Code coverage report for schemaregistry/google/type/postal_address_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/google/type postal_address_pb.ts

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  - 
// Copyright 2021-2024 Buf Technologies, Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
- 
-// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file google/type/postal_address.proto (package google.type, syntax proto3)
-/* eslint-disable */
- 
-import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
-import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
-import type { Message } from "@bufbuild/protobuf";
- 
-/**
- * Describes the file google/type/postal_address.proto.
- */
-export const file_google_type_postal_address: GenFile = /*@__PURE__*/
-  fileDesc("CiBnb29nbGUvdHlwZS9wb3N0YWxfYWRkcmVzcy5wcm90bxILZ29vZ2xlLnR5cGUi/QEKDVBvc3RhbEFkZHJlc3MSEAoIcmV2aXNpb24YASABKAUSEwoLcmVnaW9uX2NvZGUYAiABKAkSFQoNbGFuZ3VhZ2VfY29kZRgDIAEoCRITCgtwb3N0YWxfY29kZRgEIAEoCRIUCgxzb3J0aW5nX2NvZGUYBSABKAkSGwoTYWRtaW5pc3RyYXRpdmVfYXJlYRgGIAEoCRIQCghsb2NhbGl0eRgHIAEoCRITCgtzdWJsb2NhbGl0eRgIIAEoCRIVCg1hZGRyZXNzX2xpbmVzGAkgAygJEhIKCnJlY2lwaWVudHMYCiADKAkSFAoMb3JnYW5pemF0aW9uGAsgASgJQngKD2NvbS5nb29nbGUudHlwZUISUG9zdGFsQWRkcmVzc1Byb3RvUAFaRmdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvdHlwZS9wb3N0YWxhZGRyZXNzO3Bvc3RhbGFkZHJlc3P4AQGiAgNHVFBiBnByb3RvMw");
- 
-/**
- * Represents a postal address, e.g. for postal delivery or payments addresses.
- * Given a postal address, a postal service can deliver items to a premise, P.O.
- * Box or similar.
- * It is not intended to model geographical locations (roads, towns,
- * mountains).
- *
- * In typical usage an address would be created via user input or from importing
- * existing data, depending on the type of process.
- *
- * Advice on address input / editing:
- *  - Use an i18n-ready address widget such as
- *    https://github.com/google/libaddressinput)
- * - Users should not be presented with UI elements for input or editing of
- *   fields outside countries where that field is used.
- *
- * For more guidance on how to use this schema, please see:
- * https://support.google.com/business/answer/6397478
- *
- * @generated from message google.type.PostalAddress
- */
-export type PostalAddress = Message<"google.type.PostalAddress"> & {
-  /**
-   * The schema revision of the `PostalAddress`. This must be set to 0, which is
-   * the latest revision.
-   *
-   * All new revisions **must** be backward compatible with old revisions.
-   *
-   * @generated from field: int32 revision = 1;
-   */
-  revision: number;
- 
-  /**
-   * Required. CLDR region code of the country/region of the address. This
-   * is never inferred and it is up to the user to ensure the value is
-   * correct. See http://cldr.unicode.org/ and
-   * http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html
-   * for details. Example: "CH" for Switzerland.
-   *
-   * @generated from field: string region_code = 2;
-   */
-  regionCode: string;
- 
-  /**
-   * Optional. BCP-47 language code of the contents of this address (if
-   * known). This is often the UI language of the input form or is expected
-   * to match one of the languages used in the address' country/region, or their
-   * transliterated equivalents.
-   * This can affect formatting in certain countries, but is not critical
-   * to the correctness of the data and will never affect any validation or
-   * other non-formatting related operations.
-   *
-   * If this value is not known, it should be omitted (rather than specifying a
-   * possibly incorrect default).
-   *
-   * Examples: "zh-Hant", "ja", "ja-Latn", "en".
-   *
-   * @generated from field: string language_code = 3;
-   */
-  languageCode: string;
- 
-  /**
-   * Optional. Postal code of the address. Not all countries use or require
-   * postal codes to be present, but where they are used, they may trigger
-   * additional validation with other parts of the address (e.g. state/zip
-   * validation in the U.S.A.).
-   *
-   * @generated from field: string postal_code = 4;
-   */
-  postalCode: string;
- 
-  /**
-   * Optional. Additional, country-specific, sorting code. This is not used
-   * in most regions. Where it is used, the value is either a string like
-   * "CEDEX", optionally followed by a number (e.g. "CEDEX 7"), or just a number
-   * alone, representing the "sector code" (Jamaica), "delivery area indicator"
-   * (Malawi) or "post office indicator" (e.g. Côte d'Ivoire).
-   *
-   * @generated from field: string sorting_code = 5;
-   */
-  sortingCode: string;
- 
-  /**
-   * Optional. Highest administrative subdivision which is used for postal
-   * addresses of a country or region.
-   * For example, this can be a state, a province, an oblast, or a prefecture.
-   * Specifically, for Spain this is the province and not the autonomous
-   * community (e.g. "Barcelona" and not "Catalonia").
-   * Many countries don't use an administrative area in postal addresses. E.g.
-   * in Switzerland this should be left unpopulated.
-   *
-   * @generated from field: string administrative_area = 6;
-   */
-  administrativeArea: string;
- 
-  /**
-   * Optional. Generally refers to the city/town portion of the address.
-   * Examples: US city, IT comune, UK post town.
-   * In regions of the world where localities are not well defined or do not fit
-   * into this structure well, leave locality empty and use address_lines.
-   *
-   * @generated from field: string locality = 7;
-   */
-  locality: string;
- 
-  /**
-   * Optional. Sublocality of the address.
-   * For example, this can be neighborhoods, boroughs, districts.
-   *
-   * @generated from field: string sublocality = 8;
-   */
-  sublocality: string;
- 
-  /**
-   * Unstructured address lines describing the lower levels of an address.
-   *
-   * Because values in address_lines do not have type information and may
-   * sometimes contain multiple values in a single field (e.g.
-   * "Austin, TX"), it is important that the line order is clear. The order of
-   * address lines should be "envelope order" for the country/region of the
-   * address. In places where this can vary (e.g. Japan), address_language is
-   * used to make it explicit (e.g. "ja" for large-to-small ordering and
-   * "ja-Latn" or "en" for small-to-large). This way, the most specific line of
-   * an address can be selected based on the language.
-   *
-   * The minimum permitted structural representation of an address consists
-   * of a region_code with all remaining information placed in the
-   * address_lines. It would be possible to format such an address very
-   * approximately without geocoding, but no semantic reasoning could be
-   * made about any of the address components until it was at least
-   * partially resolved.
-   *
-   * Creating an address only containing a region_code and address_lines, and
-   * then geocoding is the recommended way to handle completely unstructured
-   * addresses (as opposed to guessing which parts of the address should be
-   * localities or administrative areas).
-   *
-   * @generated from field: repeated string address_lines = 9;
-   */
-  addressLines: string[];
- 
-  /**
-   * Optional. The recipient at the address.
-   * This field may, under certain circumstances, contain multiline information.
-   * For example, it might contain "care of" information.
-   *
-   * @generated from field: repeated string recipients = 10;
-   */
-  recipients: string[];
- 
-  /**
-   * Optional. The name of the organization at the address.
-   *
-   * @generated from field: string organization = 11;
-   */
-  organization: string;
-};
- 
-/**
- * Describes the message google.type.PostalAddress.
- * Use `create(PostalAddressSchema)` to create a new message.
- */
-export const PostalAddressSchema: GenMessage<PostalAddress> = /*@__PURE__*/
-  messageDesc(file_google_type_postal_address, 0);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/quaternion_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/quaternion_pb.ts.html deleted file mode 100644 index 1a8516a9..00000000 --- a/coverage/lcov-report/schemaregistry/google/type/quaternion_pb.ts.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - - - Code coverage report for schemaregistry/google/type/quaternion_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/google/type quaternion_pb.ts

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  - 
// Copyright 2021-2024 Buf Technologies, Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
- 
-// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file google/type/quaternion.proto (package google.type, syntax proto3)
-/* eslint-disable */
- 
-import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
-import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
-import type { Message } from "@bufbuild/protobuf";
- 
-/**
- * Describes the file google/type/quaternion.proto.
- */
-export const file_google_type_quaternion: GenFile = /*@__PURE__*/
-  fileDesc("Chxnb29nbGUvdHlwZS9xdWF0ZXJuaW9uLnByb3RvEgtnb29nbGUudHlwZSI4CgpRdWF0ZXJuaW9uEgkKAXgYASABKAESCQoBeRgCIAEoARIJCgF6GAMgASgBEgkKAXcYBCABKAFCbwoPY29tLmdvb2dsZS50eXBlQg9RdWF0ZXJuaW9uUHJvdG9QAVpAZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy90eXBlL3F1YXRlcm5pb247cXVhdGVybmlvbvgBAaICA0dUUGIGcHJvdG8z");
- 
-/**
- * A quaternion is defined as the quotient of two directed lines in a
- * three-dimensional space or equivalently as the quotient of two Euclidean
- * vectors (https://en.wikipedia.org/wiki/Quaternion).
- *
- * Quaternions are often used in calculations involving three-dimensional
- * rotations (https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation),
- * as they provide greater mathematical robustness by avoiding the gimbal lock
- * problems that can be encountered when using Euler angles
- * (https://en.wikipedia.org/wiki/Gimbal_lock).
- *
- * Quaternions are generally represented in this form:
- *
- *     w + xi + yj + zk
- *
- * where x, y, z, and w are real numbers, and i, j, and k are three imaginary
- * numbers.
- *
- * Our naming choice `(x, y, z, w)` comes from the desire to avoid confusion for
- * those interested in the geometric properties of the quaternion in the 3D
- * Cartesian space. Other texts often use alternative names or subscripts, such
- * as `(a, b, c, d)`, `(1, i, j, k)`, or `(0, 1, 2, 3)`, which are perhaps
- * better suited for mathematical interpretations.
- *
- * To avoid any confusion, as well as to maintain compatibility with a large
- * number of software libraries, the quaternions represented using the protocol
- * buffer below *must* follow the Hamilton convention, which defines `ij = k`
- * (i.e. a right-handed algebra), and therefore:
- *
- *     i^2 = j^2 = k^2 = ijk = −1
- *     ij = −ji = k
- *     jk = −kj = i
- *     ki = −ik = j
- *
- * Please DO NOT use this to represent quaternions that follow the JPL
- * convention, or any of the other quaternion flavors out there.
- *
- * Definitions:
- *
- *   - Quaternion norm (or magnitude): `sqrt(x^2 + y^2 + z^2 + w^2)`.
- *   - Unit (or normalized) quaternion: a quaternion whose norm is 1.
- *   - Pure quaternion: a quaternion whose scalar component (`w`) is 0.
- *   - Rotation quaternion: a unit quaternion used to represent rotation.
- *   - Orientation quaternion: a unit quaternion used to represent orientation.
- *
- * A quaternion can be normalized by dividing it by its norm. The resulting
- * quaternion maintains the same direction, but has a norm of 1, i.e. it moves
- * on the unit sphere. This is generally necessary for rotation and orientation
- * quaternions, to avoid rounding errors:
- * https://en.wikipedia.org/wiki/Rotation_formalisms_in_three_dimensions
- *
- * Note that `(x, y, z, w)` and `(-x, -y, -z, -w)` represent the same rotation,
- * but normalization would be even more useful, e.g. for comparison purposes, if
- * it would produce a unique representation. It is thus recommended that `w` be
- * kept positive, which can be achieved by changing all the signs when `w` is
- * negative.
- *
- *
- * @generated from message google.type.Quaternion
- */
-export type Quaternion = Message<"google.type.Quaternion"> & {
-  /**
-   * The x component.
-   *
-   * @generated from field: double x = 1;
-   */
-  x: number;
- 
-  /**
-   * The y component.
-   *
-   * @generated from field: double y = 2;
-   */
-  y: number;
- 
-  /**
-   * The z component.
-   *
-   * @generated from field: double z = 3;
-   */
-  z: number;
- 
-  /**
-   * The scalar component.
-   *
-   * @generated from field: double w = 4;
-   */
-  w: number;
-};
- 
-/**
- * Describes the message google.type.Quaternion.
- * Use `create(QuaternionSchema)` to create a new message.
- */
-export const QuaternionSchema: GenMessage<Quaternion> = /*@__PURE__*/
-  messageDesc(file_google_type_quaternion, 0);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/google/type/timeofday_pb.ts.html b/coverage/lcov-report/schemaregistry/google/type/timeofday_pb.ts.html deleted file mode 100644 index 26ac8ce3..00000000 --- a/coverage/lcov-report/schemaregistry/google/type/timeofday_pb.ts.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - Code coverage report for schemaregistry/google/type/timeofday_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/google/type timeofday_pb.ts

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  - 
// Copyright 2021-2024 Buf Technologies, Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
- 
-// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file google/type/timeofday.proto (package google.type, syntax proto3)
-/* eslint-disable */
- 
-import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
-import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
-import type { Message } from "@bufbuild/protobuf";
- 
-/**
- * Describes the file google/type/timeofday.proto.
- */
-export const file_google_type_timeofday: GenFile = /*@__PURE__*/
-  fileDesc("Chtnb29nbGUvdHlwZS90aW1lb2ZkYXkucHJvdG8SC2dvb2dsZS50eXBlIksKCVRpbWVPZkRheRINCgVob3VycxgBIAEoBRIPCgdtaW51dGVzGAIgASgFEg8KB3NlY29uZHMYAyABKAUSDQoFbmFub3MYBCABKAVCbAoPY29tLmdvb2dsZS50eXBlQg5UaW1lT2ZEYXlQcm90b1ABWj5nb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3R5cGUvdGltZW9mZGF5O3RpbWVvZmRhefgBAaICA0dUUGIGcHJvdG8z");
- 
-/**
- * Represents a time of day. The date and time zone are either not significant
- * or are specified elsewhere. An API may choose to allow leap seconds. Related
- * types are [google.type.Date][google.type.Date] and
- * `google.protobuf.Timestamp`.
- *
- * @generated from message google.type.TimeOfDay
- */
-export type TimeOfDay = Message<"google.type.TimeOfDay"> & {
-  /**
-   * Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
-   * to allow the value "24:00:00" for scenarios like business closing time.
-   *
-   * @generated from field: int32 hours = 1;
-   */
-  hours: number;
- 
-  /**
-   * Minutes of hour of day. Must be from 0 to 59.
-   *
-   * @generated from field: int32 minutes = 2;
-   */
-  minutes: number;
- 
-  /**
-   * Seconds of minutes of the time. Must normally be from 0 to 59. An API may
-   * allow the value 60 if it allows leap-seconds.
-   *
-   * @generated from field: int32 seconds = 3;
-   */
-  seconds: number;
- 
-  /**
-   * Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
-   *
-   * @generated from field: int32 nanos = 4;
-   */
-  nanos: number;
-};
- 
-/**
- * Describes the message google.type.TimeOfDay.
- * Use `create(TimeOfDaySchema)` to create a new message.
- */
-export const TimeOfDaySchema: GenMessage<TimeOfDay> = /*@__PURE__*/
-  messageDesc(file_google_type_timeofday, 0);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/index.html b/coverage/lcov-report/schemaregistry/index.html deleted file mode 100644 index c3dde510..00000000 --- a/coverage/lcov-report/schemaregistry/index.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - Code coverage report for schemaregistry - - - - - - - - - -
-
-

All files schemaregistry

-
- -
- 81.79% - Statements - 355/434 -
- - -
- 72.3% - Branches - 94/130 -
- - -
- 81.81% - Functions - 90/110 -
- - -
- 81.98% - Lines - 355/433 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
mock-schemaregistry-client.ts -
-
82.72%158/19177.64%66/8578.94%30/3882.72%158/191
rest-error.ts -
-
100%4/4100%0/0100%1/1100%4/4
rest-service.ts -
-
10.71%3/280%0/130%0/611.11%3/27
schemaregistry-client.ts -
-
90.04%190/21187.5%28/3290.76%59/6590.04%190/211
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/mock-schemaregistry-client.ts.html b/coverage/lcov-report/schemaregistry/mock-schemaregistry-client.ts.html deleted file mode 100644 index d39f2b76..00000000 --- a/coverage/lcov-report/schemaregistry/mock-schemaregistry-client.ts.html +++ /dev/null @@ -1,1381 +0,0 @@ - - - - - - Code coverage report for schemaregistry/mock-schemaregistry-client.ts - - - - - - - - - -
-
-

All files / schemaregistry mock-schemaregistry-client.ts

-
- -
- 82.72% - Statements - 158/191 -
- - -
- 77.64% - Branches - 66/85 -
- - -
- 78.94% - Functions - 30/38 -
- - -
- 82.72% - Lines - 158/191 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433  -5x -  -  -  -  -  -  -  -5x -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -31x -  -  -  -  -  -  -30x -30x -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -31x -31x -31x -31x -31x -31x -  -  -  -15x -  -  -  -29x -29x -  -  -29x -  -  -  -30x -  -30x -30x -  -  -  -30x -30x -  -  -  -30x -30x -  -30x -  -  -  -30x -  -30x -7x -7x -  -  -  -  -  -30x -30x -30x -30x -30x -  -  -30x -  -  -  -30x -  -  -30x -24x -  -6x -  -  -30x -30x -  -  -  -15x -15x -  -15x -2x -  -13x -  -  -  -8x -8x -8x -4x -  -4x -  -  -  -4x -4x -  -  -  -4x -  -  -  -  -6x -9x -9x -6x -  -  -  -6x -  -  -  -6x -6x -9x -9x -6x -  -  -6x -  -  -  -  -6x -  -  -  -  -  -  -  -  -2x -  -2x -4x -4x -4x -  -  -2x -  -2x -4x -4x -4x -2x -  -  -  -  -2x -  -  -  -2x -  -2x -2x -  -  -  -  -2x -  -  -  -4x -6x -2x -  -  -2x -  -  -  -1x -  -1x -  -  -1x -  -  -  -35x -  -35x -14x -14x -13x -  -  -35x -  -  -  -4x -4x -  -  -4x -  -  -  -3x -1x -  -2x -  -  -  -  -1x -1x -  -  -  -  -  -  -3x -1x -  -2x -  -  -  -  -5x -5x -  -5x -4x -  -  -1x -  -  -  -2x -2x -2x -2x -2x -  -  -2x -  -  -  -2x -2x -2x -2x -2x -  -  -  -2x -2x -2x -2x -2x -  -  -  -2x -  -2x -1x -1x -1x -1x -  -  -  -  -2x -  -  -  -1x -2x -2x -1x -  -1x -1x -1x -1x -  -  -1x -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -2x -2x -1x -  -1x -  -  -  -2x -2x -  -  -  -2x -2x -1x -  -1x -  -  -  -2x -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -5x - 
 
-import {
-  Client,
-  Compatibility,
-  minimize,
-  SchemaInfo,
-  SchemaMetadata,
-  ServerConfig
-} from './schemaregistry-client';
-import stringify from "json-stringify-deterministic";
-import {ClientConfig} from "./rest-service";
-import {RestError} from "./rest-error";
- 
-interface VersionCacheEntry {
-  version: number;
-  softDeleted: boolean;
-}
- 
-interface InfoCacheEntry {
-  info: SchemaInfo;
-  softDeleted: boolean;
-}
- 
-interface MetadataCacheEntry {
-  metadata: SchemaMetadata;
-  softDeleted: boolean;
-}
- 
-class Counter {
-  private count: number = 0;
- 
-  currentValue(): number {
-    return this.count;
-  }
- 
-  increment(): number {
-    this.count++;
-    return this.count;
-  }
-}
- 
-const noSubject = "";
- 
-class MockClient implements Client {
-  private clientConfig?: ClientConfig;
-  private infoToSchemaCache: Map<string, MetadataCacheEntry>;
-  private idToSchemaCache: Map<string, InfoCacheEntry>;
-  private schemaToVersionCache: Map<string, VersionCacheEntry>;
-  private configCache: Map<string, ServerConfig>;
-  private counter: Counter;
- 
-  constructor(config?: ClientConfig) {
-    this.clientConfig = config
-    this.infoToSchemaCache = new Map();
-    this.idToSchemaCache = new Map();
-    this.schemaToVersionCache = new Map();
-    this.configCache = new Map();
-    this.counter = new Counter();
-  }
- 
-  config(): ClientConfig {
-    return this.clientConfig!
-  }
- 
-  async register(subject: string, schema: SchemaInfo, normalize: boolean = false): Promise<number> {
-    const metadata = await this.registerFullResponse(subject, schema, normalize);
-    Iif (!metadata) {
-      throw new RestError("Failed to register schema", 422, 42200);
-    }
-    return metadata.id;
-  }
- 
-  async registerFullResponse(subject: string, schema: SchemaInfo, normalize: boolean = false): Promise<SchemaMetadata> {
-    const cacheKey = stringify({ subject, schema: minimize(schema) });
- 
-    const cacheEntry = this.infoToSchemaCache.get(cacheKey);
-    Iif (cacheEntry && !cacheEntry.softDeleted) {
-      return cacheEntry.metadata;
-    }
- 
-    const id = await this.getIDFromRegistry(subject, schema);
-    Iif (id === -1) {
-      throw new RestError("Failed to retrieve schema ID from registry", 422, 42200);
-    }
- 
-    const metadata: SchemaMetadata = { ...schema, id };
-    this.infoToSchemaCache.set(cacheKey, { metadata, softDeleted: false });
- 
-    return metadata;
-  }
- 
-  private async getIDFromRegistry(subject: string, schema: SchemaInfo): Promise<number> {
-    let id = -1;
- 
-    for (const [key, value] of this.idToSchemaCache.entries()) {
-      const parsedKey = JSON.parse(key);
-      Iif (parsedKey.subject === subject && this.schemasEqual(value.info, schema)) {
-        id = parsedKey.id;
-        break;
-      }
-    }
- 
-    await this.generateVersion(subject, schema);
-    if (id < 0) {
-      id = this.counter.increment();
-      const idCacheKey = stringify({ subject, id });
-      this.idToSchemaCache.set(idCacheKey, { info: schema, softDeleted: false });
-    }
- 
-    return id;
-  }
- 
-  private async generateVersion(subject: string, schema: SchemaInfo): Promise<void> {
-    const versions = await this.allVersions(subject);
-    let newVersion: number;
- 
-    if (versions.length === 0) {
-      newVersion = 1;
-    } else {
-      newVersion = versions[versions.length - 1] + 1;
-    }
- 
-    const cacheKey = stringify({ subject, schema: minimize(schema) });
-    this.schemaToVersionCache.set(cacheKey, { version: newVersion, softDeleted: false });
-  }
- 
-  async getBySubjectAndId(subject: string, id: number, format?: string): Promise<SchemaInfo> {
-    const cacheKey = stringify({ subject, id });
-    const cacheEntry = this.idToSchemaCache.get(cacheKey);
- 
-    if (!cacheEntry || cacheEntry.softDeleted) {
-      throw new RestError("Schema not found", 404, 40400);
-    }
-    return cacheEntry.info;
-  }
- 
-  async getId(subject: string, schema: SchemaInfo): Promise<number> {
-    const cacheKey = stringify({ subject, schema: minimize(schema) });
-    const cacheEntry = this.infoToSchemaCache.get(cacheKey);
-    if (!cacheEntry || cacheEntry.softDeleted) {
-      throw new RestError("Schema not found", 404, 40400);
-    }
-    return cacheEntry.metadata.id;
-  }
- 
-  async getLatestSchemaMetadata(subject: string): Promise<SchemaMetadata> {
-    const version = await this.latestVersion(subject);
-    Iif (version === -1) {
-      throw new RestError("No versions found for subject", 404, 40400);
-    }
- 
-    return this.getSchemaMetadata(subject, version);
-  }
- 
-  async getSchemaMetadata(subject: string, version: number, deleted: boolean = false): Promise<SchemaMetadata> {
-    let json;
-    for (const [key, value] of this.schemaToVersionCache.entries()) {
-      const parsedKey = JSON.parse(key);
-      if (parsedKey.subject === subject && value.version === version && value.softDeleted === deleted) {
-        json = parsedKey;
-      }
-    }
- 
-    Iif (!json) {
-      throw new RestError("Schema not found", 404, 40400);
-    }
- 
-    let id: number = -1;
-    for (const [key, value] of this.idToSchemaCache.entries()) {
-      const parsedKey = JSON.parse(key);
-      if (parsedKey.subject === subject && value.info.schema === json.schema.schema) {
-        id = parsedKey.id;
-      }
-    }
-    Iif (id === -1) {
-      throw new RestError("Schema not found", 404, 40400);
-    }
- 
- 
-    return {
-      id,
-      version,
-      subject,
-      ...json.schema,
-    };
-  }
- 
-  async getLatestWithMetadata(subject: string, metadata: { [key: string]: string }, deleted: boolean = false): Promise<SchemaMetadata> {
-    let metadataStr = '';
- 
-    for (const key in metadata) {
-      const encodedKey = encodeURIComponent(key);
-      const encodedValue = encodeURIComponent(metadata[key]);
-      metadataStr += `&key=${encodedKey}&value=${encodedValue}`;
-    }
- 
-    let results: SchemaMetadata[] = [];
- 
-    for (const [key, value] of this.schemaToVersionCache.entries()) {
-      const parsedKey = JSON.parse(key);
-      if (parsedKey.subject === subject && (!value.softDeleted || deleted)) {
-        if (parsedKey.schema.metadata && this.isSubset(metadata, parsedKey.schema.metadata.properties)) {
-          results.push({ id: parsedKey.schema.id, version: value.version, subject, schema: parsedKey.schema.schema });
-        }
-      }
-    }
- 
-    Iif (results.length === 0) {
-      throw new RestError("Schema not found", 404, 40400);
-    }
- 
-    let latest: SchemaMetadata = results[0];
- 
-    results.forEach((result) => {
-      Iif (result.version! > latest.version!) {
-        latest = result;
-      }
-    });
- 
-    return latest;
-  }
- 
-  private isSubset(containee: { [key: string]: string }, container: { [key: string]: string }){
-    for (const key in containee) {
-      if (containee[key] !== container[key]) {
-        return false;
-      }
-    }
-    return true;
-  }
- 
-  async getAllVersions(subject: string): Promise<number[]> {
-    const results = await this.allVersions(subject);
- 
-    Iif (results.length === 0) {
-      throw new RestError("No versions found for subject", 404, 40400);
-    }
-    return results;
-  }
- 
-  private async allVersions(subject: string): Promise<number[]> {
-    const versions: number[] = [];
- 
-    for (const [key, value] of this.schemaToVersionCache.entries()) {
-      const parsedKey = JSON.parse(key);
-      if (parsedKey.subject === subject && !value.softDeleted) {
-        versions.push(value.version);
-      }
-    }
-    return versions;
-  }
- 
-  private async latestVersion(subject: string): Promise<number> {
-    const versions = await this.allVersions(subject);
-    Iif (versions.length === 0) {
-      return -1;
-    }
-    return versions[versions.length - 1];
-  }
- 
-  private async deleteVersion(cacheKey: string, version: number, permanent: boolean): Promise<void> {
-    if (permanent) {
-      this.schemaToVersionCache.delete(cacheKey);
-    } else {
-      this.schemaToVersionCache.set(cacheKey, { version, softDeleted: true });
-    }
-  }
- 
-  private async deleteInfo(cacheKey: string, info: SchemaInfo, permanent: boolean): Promise<void> {
-    if (permanent) {
-      this.idToSchemaCache.delete(cacheKey);
-    } else E{
-      this.idToSchemaCache.set(cacheKey, { info, softDeleted: true });
-    }
-  }
- 
-  private async deleteMetadata(cacheKey: string, metadata: SchemaMetadata, permanent: boolean): Promise<void> {
-    if (permanent) {
-      this.infoToSchemaCache.delete(cacheKey);
-    } else {
-      this.infoToSchemaCache.set(cacheKey, { metadata, softDeleted: true });
-    }
-  }
- 
-  async getVersion(subject: string, schema: SchemaInfo, normalize: boolean = false): Promise<number> {
-    const cacheKey = stringify({ subject, schema: minimize(schema) });
-    const cacheEntry = this.schemaToVersionCache.get(cacheKey);
- 
-    if (!cacheEntry || cacheEntry.softDeleted) {
-      throw new RestError("Schema not found", 404, 40400);
-    }
- 
-    return cacheEntry.version;
-  }
- 
-  async getAllSubjects(): Promise<string[]> {
-    const subjects: string[] = [];
-    for (const [key, value] of this.schemaToVersionCache.entries()) {
-      const parsedKey = JSON.parse(key);
-      if (!value.softDeleted && !subjects.includes(parsedKey.subject)) {
-        subjects.push(parsedKey.subject);
-      }
-    }
-    return subjects.sort();
-  }
- 
-  async deleteSubject(subject: string, permanent: boolean = false): Promise<number[]> {
-    const deletedVersions: number[] = [];
-    for (const [key, value] of this.infoToSchemaCache.entries()) {
-      const parsedKey = JSON.parse(key);
-      if (parsedKey.subject === subject && (permanent || !value.softDeleted)) {
-        await this.deleteMetadata(key, value.metadata, permanent);
-      }
-    }
- 
-    for (const [key, value] of this.schemaToVersionCache.entries()) {
-      const parsedKey = JSON.parse(key);
-      if (parsedKey.subject === subject && (permanent || !value.softDeleted)) {
-        await this.deleteVersion(key, value.version, permanent);
-        deletedVersions.push(value.version);
-      }
-    }
- 
-    this.configCache.delete(subject);
- 
-    if (permanent) {
-      for (const [key, value] of this.idToSchemaCache.entries()) {
-        const parsedKey = JSON.parse(key);
-        if (parsedKey.subject === subject && (!value.softDeleted)) {
-          await this.deleteInfo(key, value.info, permanent);
-        }
-      }
-    }
- 
-    return deletedVersions;
-  }
- 
-  async deleteSubjectVersion(subject: string, version: number, permanent: boolean = false): Promise<number> {
-    for (const [key, value] of this.schemaToVersionCache.entries()) {
-      const parsedKey = JSON.parse(key);
-      if (parsedKey.subject === subject && value.version === version) {
-        await this.deleteVersion(key, version, permanent);
- 
-        const cacheKeySchema = stringify({ subject, schema: minimize(parsedKey.schema) });
-        const cacheEntry = this.infoToSchemaCache.get(cacheKeySchema);
-        if (cacheEntry) {
-          await this.deleteMetadata(cacheKeySchema, cacheEntry.metadata, permanent);
-        }
- 
-        Iif (permanent && cacheEntry) {
-          const cacheKeyInfo = stringify({ subject, id: cacheEntry.metadata.id });
-          const cacheSchemaEntry = this.idToSchemaCache.get(cacheKeyInfo);
-          Iif (cacheSchemaEntry) {
-            await this.deleteInfo(cacheKeyInfo, cacheSchemaEntry.info, permanent);
-          }
-        }
-      }
-    }
- 
-    return version;
-  }
- 
-  async testSubjectCompatibility(subject: string, schema: SchemaInfo): Promise<boolean> {
-    throw new Error("Unsupported operation");
-  }
- 
-  async testCompatibility(subject: string, version: number, schema: SchemaInfo): Promise<boolean> {
-    throw new Error("Unsupported operation");
-  }
- 
-  async getCompatibility(subject: string): Promise<Compatibility> {
-    const cacheEntry = this.configCache.get(subject);
-    if (!cacheEntry) {
-      throw new RestError("Subject not found", 404, 40400);
-    }
-    return cacheEntry.compatibilityLevel as Compatibility;
-  }
- 
-  async updateCompatibility(subject: string, compatibility: Compatibility): Promise<Compatibility> {
-    this.configCache.set(subject, { compatibilityLevel: compatibility });
-    return compatibility;
-  }
- 
-  async getDefaultCompatibility(): Promise<Compatibility> {
-    const cacheEntry = this.configCache.get(noSubject);
-    if (!cacheEntry) {
-      throw new RestError("Default compatibility not found", 404, 40400);
-    }
-    return cacheEntry.compatibilityLevel as Compatibility;
-  }
- 
-  async updateDefaultCompatibility(compatibility: Compatibility): Promise<Compatibility> {
-    this.configCache.set(noSubject, { compatibilityLevel: compatibility });
-    return compatibility;
-  }
- 
-  async getConfig(subject: string): Promise<ServerConfig> {
-    const cacheEntry = this.configCache.get(subject);
-    Iif (!cacheEntry) {
-      throw new RestError("Subject not found", 404, 40400);
-    }
-    return cacheEntry;
-  }
- 
-  async updateConfig(subject: string, config: ServerConfig): Promise<ServerConfig> {
-    this.configCache.set(subject, config);
-    return config;
-  }
- 
-  async getDefaultConfig(): Promise<ServerConfig> {
-    const cacheEntry = this.configCache.get(noSubject);
-    Iif (!cacheEntry) {
-      throw new RestError("Default config not found", 404, 40400);
-    }
-    return cacheEntry;
-  }
- 
-  async updateDefaultConfig(config: ServerConfig): Promise<ServerConfig> {
-    this.configCache.set(noSubject, config);
-    return config;
-  }
- 
-  async close(): Promise<void> {
-    return;
-  }
- 
-  private schemasEqual(schema1: SchemaInfo, schema2: SchemaInfo): boolean {
-    return stringify(schema1) === stringify(schema2);
-  }
-}
- 
-export { MockClient };
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rest-error.ts.html b/coverage/lcov-report/schemaregistry/rest-error.ts.html deleted file mode 100644 index 0f04554f..00000000 --- a/coverage/lcov-report/schemaregistry/rest-error.ts.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rest-error.ts - - - - - - - - - -
-
-

All files / schemaregistry rest-error.ts

-
- -
- 100% - Statements - 4/4 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 4/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -109x -  -  -  -  -16x -16x -16x -  - 
export class RestError extends Error {
-  status: number;
-  errorCode: number;
- 
-  constructor(message: string, status: number, errorCode: number) {
-    super(message + "; Error code: " + errorCode);
-    this.status = status;
-    this.errorCode = errorCode;
-  }
-}
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rest-service.ts.html b/coverage/lcov-report/schemaregistry/rest-service.ts.html deleted file mode 100644 index 7a2426b1..00000000 --- a/coverage/lcov-report/schemaregistry/rest-service.ts.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rest-service.ts - - - - - - - - - -
-
-

All files / schemaregistry rest-service.ts

-
- -
- 10.71% - Statements - 3/28 -
- - -
- 0% - Branches - 0/13 -
- - -
- 0% - Functions - 0/6 -
- - -
- 11.11% - Lines - 3/27 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -916x -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, CreateAxiosDefaults } from 'axios';
-import { RestError } from './rest-error';
- 
-/*
- * Confluent-Schema-Registry-TypeScript - Node.js wrapper for Confluent Schema Registry
- *
- * Copyright (c) 2024 Confluent, Inc.
- *
- * This software may be modified and distributed under the terms
- * of the MIT license.  See the LICENSE.txt file for details.
- */
- 
-export interface ClientConfig {
-  baseURLs: string[],
-  cacheCapacity: number,
-  cacheLatestTtlSecs?: number,
-  isForward?: boolean
-  createAxiosDefaults?: CreateAxiosDefaults,
-}
- 
-export class RestService {
-  private client: AxiosInstance;
-  private baseURLs: string[];
- 
-  constructor(baseURLs: string[], isForward?: boolean, axiosDefaults?: CreateAxiosDefaults) {
-    this.client = axios.create(axiosDefaults);
-    this.baseURLs = baseURLs;
- 
-    Iif (isForward) {
-      this.client.defaults.headers.common['X-Forward'] = 'true'
-    }
-  }
- 
-  async handleRequest<T>(
-    url: string,
-    method: 'GET' | 'POST' | 'PUT' | 'DELETE',
-    data?: any, // eslint-disable-line @typescript-eslint/no-explicit-any
-    config?: AxiosRequestConfig,
-  ): Promise<AxiosResponse<T>> {
- 
-    for (let i = 0; i < this.baseURLs.length; i++) {
-      try {
-        this.setBaseURL(this.baseURLs[i]);
-        const response = await this.client.request<T>({
-          url,
-          method,
-          data,
-          ...config,
-        })
-        return response;
-      } catch (error) {
-        Iif (axios.isAxiosError(error) && error.response && (error.response.status < 200 || error.response.status > 299)) {
-          const data = error.response.data;
-          if (data.error_code && data.message) {
-            error = new RestError(data.message, error.response.status, data.error_code);
-          } else {
-            error = new Error(`Unknown error: ${error.message}`)
-          }
-        }
-        Iif (i === this.baseURLs.length - 1) {
-          throw error;
-        }
-      }
-    }
- 
-    throw new Error('Internal HTTP retry error'); // Should never reach here
-  }
- 
-  setHeaders(headers: Record<string, string>): void {
-    this.client.defaults.headers.common = { ...this.client.defaults.headers.common, ...headers }
-  }
- 
-  setAuth(basicAuth?: string, bearerToken?: string): void {
-    Iif (basicAuth) {
-      this.client.defaults.headers.common['Authorization'] = `Basic ${basicAuth}`
-    }
- 
-    Iif (bearerToken) {
-      this.client.defaults.headers.common['Authorization'] = `Bearer ${bearerToken}`
-    }
-  }
- 
-  setTimeout(timeout: number): void {
-    this.client.defaults.timeout = timeout
-  }
- 
-  setBaseURL(baseUrl: string): void {
-    this.client.defaults.baseURL = baseUrl
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/encrypt-executor.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/encrypt-executor.ts.html deleted file mode 100644 index 4a9b1dab..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/encrypt-executor.ts.html +++ /dev/null @@ -1,1675 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/encrypt-executor.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption encrypt-executor.ts

-
- -
- 79.35% - Statements - 196/247 -
- - -
- 57% - Branches - 61/107 -
- - -
- 91.42% - Functions - 32/35 -
- - -
- 79.35% - Lines - 196/247 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -5313x -  -  -  -  -  -  -  -  -3x -3x -3x -  -3x -3x -3x -  -3x -3x -3x -3x -3x -  -  -3x -  -3x -  -3x -  -3x -  -3x -  -  -3x -  -3x -3x -3x -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -3x -  -  -3x -3x -3x -  -  -  -15x -15x -  -  -  -3x -  -  -  -9x -9x -9x -  -9x -9x -  -  -  -  -  -  -  -  -  -9x -9x -9x -1x -  -9x -9x -  -  -  -9x -9x -  -  -9x -  -  -9x -  -  -  -9x -9x -8x -  -1x -1x -  -  -1x -  -  -1x -  -  -  -3x -3x -  -  -  -  -  -11x -11x -  -  -  -2x -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -2x -2x -  -  -  -  -  -  -  -  -2x -  -  -  -2x -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -6x -6x -6x -  -  -  -  -  -  -  -12x -  -1x -1x -1x -  -  -11x -11x -11x -  -  -  -  -  -  -  -  -  -  -  -1x -1x -  -  -  -6x -6x -  -  -  -11x -11x -  -  -  -3x -  -  -  -9x -  -  -  -  -  -  -  -  -9x -9x -9x -9x -  -  -  -15x -  -  -  -11x -7x -  -11x -  -  -  -7x -7x -7x -7x -  -  -  -7x -7x -2x -  -  -2x -  -  -2x -  -  -2x -2x -  -  -  -2x -  -  -  -7x -  -  -  -  -7x -  -  -  -  -7x -  -  -  -7x -7x -  -2x -2x -  -  -  -  -  -  -2x -2x -  -  -  -  -  -  -  -  -  -11x -11x -11x -10x -  -11x -  -  -  -  -  -  -11x -11x -11x -11x -2x -  -  -2x -2x -2x -  -2x -2x -  -2x -2x -  -  -  -  -  -  -  -2x -2x -  -  -  -2x -  -  -  -  -11x -5x -3x -  -5x -5x -  -  -11x -  -  -  -11x -  -11x -11x -  -  -11x -9x -  -2x -2x -  -  -  -  -  -  -2x -  -2x -2x -2x -  -2x -2x -2x -  -2x -2x -  -  -  -  -  -  -  -  -  -11x -11x -  -  -  -  -  -  -11x -  -  -11x -  -4x -4x -  -  -4x -4x -  -  -4x -4x -4x -4x -  -  -4x -2x -  -2x -  -  -  -  -7x -5x -  -2x -  -7x -  -  -7x -7x -1x -1x -  -  -1x -  -7x -7x -7x -7x -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -  -  -  -  -  -  -1x -  -  -  -6x -  -4x -  -2x -  -  -  -  -  -  -9x -  -4x -  -5x -  -  -  -  -  -  -  -5x -5x -5x -2x -2x -2x -  -5x -  - 
import {
-  FieldContext,
-  FieldRuleExecutor,
-  FieldTransform,
-  FieldType,
-  MAGIC_BYTE,
-  RuleContext,
-  RuleError,
-} from "../../serde/serde";
-import {RuleMode,} from "../../schemaregistry-client";
-import {Client, Dek, DekRegistryClient, Kek} from "../../dekregistry/dekregistry-client";
-import {registerRuleExecutor} from "../../serde/rule-registry";
-import {ClientConfig} from "../../rest-service";
-import {RestError} from "../../rest-error";
-import * as Random from './tink/random';
-import * as Registry from './kms-registry'
-import {KmsClient} from "./kms-registry";
-import {AesGcmKey, AesGcmKeySchema} from "./tink/proto/aes_gcm_pb";
-import {AesSivKey, AesSivKeySchema} from "./tink/proto/aes_siv_pb";
-import {create, fromBinary, toBinary} from "@bufbuild/protobuf";
-import {fromRawKey as aesGcmFromRawKey} from "./tink/aes_gcm";
-import {fromRawKey as aesSivFromRawKey} from "./tink/aes_siv";
- 
-// EncryptKekName represents a kek name
-const ENCRYPT_KEK_NAME = 'encrypt.kek.name'
-// EncryptKmsKeyId represents a kms key ID
-const ENCRYPT_KMS_KEY_ID = 'encrypt.kms.key.id'
-// EncryptKmsType represents a kms type
-const ENCRYPT_KMS_TYPE = 'encrypt.kms.type'
-// EncryptDekAlgorithm represents a dek algorithm
-const ENCRYPT_DEK_ALGORITHM = 'encrypt.dek.algorithm'
-// EncryptDekExpiryDays represents dek expiry days
-const ENCRYPT_DEK_EXPIRY_DAYS = 'encrypt.dek.expiry.days'
- 
-// MillisInDay represents number of milliseconds in a day
-const MILLIS_IN_DAY = 24 * 60 * 60 * 1000
- 
-export enum DekFormat {
-  AES128_GCM = 'AES128_GCM',
-  AES256_GCM = 'AES256_GCM',
-  AES256_SIV = 'AES256_SIV',
-}
- 
-interface KekId {
-  name: string
-  deleted: boolean
-}
- 
-interface DekId {
-  kekName: string
-  subject: string
-  version: number | null
-  algorithm: string
-  deleted: boolean
-}
- 
-export class FieldEncryptionExecutor extends FieldRuleExecutor {
-  client: Client | null = null
- 
-  static register(): FieldEncryptionExecutor {
-    const executor = new FieldEncryptionExecutor()
-    registerRuleExecutor(executor)
-    return executor
-  }
- 
-  override configure(clientConfig: ClientConfig, config: Map<string, string>) {
-    this.client = DekRegistryClient.newClient(clientConfig)
-    this.config = config
-  }
- 
-  type(): string {
-    return 'ENCRYPT'
-  }
- 
-  newTransform(ctx: RuleContext): FieldTransform {
-    const cryptor = this.getCryptor(ctx)
-    const kekName = this.getKekName(ctx)
-    const dekExpiryDays = this.getDekExpiryDays(ctx)
-    const transform =
-      new FieldEncryptionExecutorTransform(this, cryptor, kekName, dekExpiryDays)
-    return transform
-  }
- 
-  async close() {
-    Iif (this.client != null) {
-      await this.client.close()
-    }
-  }
- 
-  private getCryptor(ctx: RuleContext): Cryptor {
-    let dekAlgorithm = DekFormat.AES256_GCM
-    const dekAlgorithmStr = ctx.getParameter(ENCRYPT_DEK_ALGORITHM)
-    if (dekAlgorithmStr != null) {
-      dekAlgorithm = DekFormat[dekAlgorithmStr as keyof typeof DekFormat]
-    }
-    const cryptor = new Cryptor(dekAlgorithm)
-    return cryptor
-  }
- 
-  private getKekName(ctx: RuleContext): string {
-    const kekName = ctx.getParameter(ENCRYPT_KEK_NAME)
-    Iif (kekName == null) {
-      throw new RuleError('no kek name found')
-    }
-    Iif (kekName === '') {
-      throw new RuleError('empty kek name')
-    }
-    return kekName
-  }
- 
-  private getDekExpiryDays(ctx: RuleContext): number {
-    const expiryDaysStr = ctx.getParameter(ENCRYPT_DEK_EXPIRY_DAYS)
-    if (expiryDaysStr == null) {
-      return 0
-    }
-    const expiryDays = Number(expiryDaysStr)
-    Iif (isNaN(expiryDays)) {
-      throw new RuleError('invalid expiry days')
-    }
-    Iif (expiryDays < 0) {
-      throw new RuleError('negative expiry days')
-    }
-    return expiryDays
-  }
-}
- 
-export class Cryptor {
-  static readonly EMPTY_AAD = Buffer.from([])
- 
-  dekFormat: DekFormat
-  isDeterministic: boolean
- 
-  constructor(dekFormat: DekFormat) {
-    this.dekFormat = dekFormat
-    this.isDeterministic = dekFormat === DekFormat.AES256_SIV
-  }
- 
-  private keySize(): number {
-    switch (this.dekFormat) {
-      case DekFormat.AES256_SIV:
-        // Generate 2 256-bit keys
-        return 64
-      case DekFormat.AES128_GCM:
-        // Generate 128-bit key
-        return 16
-      case DekFormat.AES256_GCM:
-        // Generate 256-bit key
-        return 32
-      default:
-        throw new RuleError('unsupported dek format')
-    }
-  }
- 
-  generateKey(): Buffer {
-    let rawKey = Random.randBytes(this.keySize())
-    switch (this.dekFormat) {
-      case DekFormat.AES256_SIV:
-        const aesSivKey: AesSivKey = create(AesSivKeySchema, {
-          version: 0,
-          keyValue: rawKey
-        });
-        return Buffer.from(toBinary(AesSivKeySchema, aesSivKey))
-      case DekFormat.AES128_GCM:
-      case DekFormat.AES256_GCM:
-        const aesGcmKey: AesGcmKey = create(AesGcmKeySchema, {
-          version: 0,
-          keyValue: rawKey
-        });
-        return Buffer.from(toBinary(AesGcmKeySchema, aesGcmKey))
-      default:
-        throw new RuleError('unsupported dek format')
-    }
-  }
- 
-  async encrypt(dek: Buffer, plaintext: Buffer): Promise<Buffer> {
-    let rawKey
-    switch (this.dekFormat) {
-      case DekFormat.AES256_SIV:
-        const aesSivKey = fromBinary(AesSivKeySchema, dek)
-        rawKey = aesSivKey.keyValue
-        return Buffer.from(await this.encryptWithAesSiv(rawKey, plaintext))
-      case DekFormat.AES128_GCM:
-      case DekFormat.AES256_GCM:
-        const aesGcmKey = fromBinary(AesGcmKeySchema, dek)
-        rawKey = aesGcmKey.keyValue
-        return Buffer.from(await this.encryptWithAesGcm(rawKey, plaintext))
-      default:
-        throw new RuleError('unsupported dek format')
-    }
-  }
- 
-  async decrypt(dek: Buffer, ciphertext: Buffer): Promise<Buffer> {
-    let rawKey
-    switch (this.dekFormat) {
-      case DekFormat.AES256_SIV:
-        const aesSivKey = fromBinary(AesSivKeySchema, dek)
-        rawKey = aesSivKey.keyValue
-        return Buffer.from(await this.decryptWithAesSiv(rawKey, ciphertext))
-      case DekFormat.AES128_GCM:
-      case DekFormat.AES256_GCM:
-        const aesGcmKey = fromBinary(AesGcmKeySchema, dek)
-        rawKey = aesGcmKey.keyValue
-        return Buffer.from(await this.decryptWithAesGcm(rawKey, ciphertext))
-      default:
-        throw new RuleError('unsupported dek format')
-    }
-  }
- 
-  async encryptWithAesSiv(key: Uint8Array, plaintext: Uint8Array): Promise<Uint8Array> {
-    const aead = await aesSivFromRawKey(key)
-    return aead.encrypt(plaintext, Cryptor.EMPTY_AAD)
-  }
- 
-  async decryptWithAesSiv(key: Uint8Array, ciphertext: Uint8Array): Promise<Uint8Array> {
-    const aead = await aesSivFromRawKey(key)
-    return aead.decrypt(ciphertext, Cryptor.EMPTY_AAD)
-  }
- 
-  async encryptWithAesGcm(key: Uint8Array, plaintext: Uint8Array): Promise<Uint8Array> {
-    const aead = await aesGcmFromRawKey(key)
-    return aead.encrypt(plaintext, Cryptor.EMPTY_AAD)
-  }
- 
-  async decryptWithAesGcm(key: Uint8Array, ciphertext: Uint8Array): Promise<Uint8Array> {
-    const aead = await aesGcmFromRawKey(key)
-    return aead.decrypt(ciphertext, Cryptor.EMPTY_AAD)
-  }
-}
- 
-export class FieldEncryptionExecutorTransform implements FieldTransform {
-  private executor: FieldEncryptionExecutor
-  private cryptor: Cryptor
-  private kekName: string
-  private kek: Kek | null = null
-  private dekExpiryDays: number
- 
-  constructor(
-    executor: FieldEncryptionExecutor,
-    cryptor: Cryptor,
-    kekName: string,
-    dekExpiryDays: number,
-  ) {
-    this.executor = executor
-    this.cryptor = cryptor
-    this.kekName = kekName
-    this.dekExpiryDays = dekExpiryDays
-  }
- 
-  isDekRotated() {
-    return this.dekExpiryDays > 0
-  }
- 
-  async getKek(ctx: RuleContext) {
-    if (this.kek == null) {
-      this.kek = await this.getOrCreateKek(ctx)
-    }
-    return this.kek
-  }
- 
-  async getOrCreateKek(ctx: RuleContext): Promise<Kek> {
-    const isRead = ctx.ruleMode === RuleMode.READ
-    const kmsType = ctx.getParameter(ENCRYPT_KMS_TYPE)
-    const kmsKeyId = ctx.getParameter(ENCRYPT_KMS_KEY_ID)
-    const kekId: KekId = {
-      name: this.kekName,
-      deleted: false,
-    }
-    let kek = await this.retrieveKekFromRegistry(kekId)
-    if (kek == null) {
-      Iif (isRead) {
-        throw new RuleError(`no kek found for ${this.kekName} during consume`)
-      }
-      Iif (kmsType == null || kmsType.length === 0) {
-        throw new RuleError(`no kms type found for ${this.kekName} during produce`)
-      }
-      Iif (kmsKeyId == null || kmsKeyId.length === 0) {
-        throw new RuleError(`no kms key id found for ${this.kekName} during produce`)
-      }
-      kek = await this.storeKekToRegistry(kekId, kmsType, kmsKeyId, false)
-      Iif (kek == null) {
-        // handle conflicts (409)
-        kek = await this.retrieveKekFromRegistry(kekId)
-      }
-      Iif (kek == null) {
-        throw new RuleError(`no kek found for ${this.kekName} during produce`)
-      }
-    }
-    Iif (kmsType != null && kmsType.length !== 0 && kmsType !== kek.kmsType) {
-      throw new RuleError(
-        `found ${this.kekName} with kms type ${kek.kmsType} which differs from rule kms type ${kmsType}`,
-      )
-    }
-    Iif (kmsKeyId != null && kmsKeyId.length !== 0 && kmsKeyId !== kek.kmsKeyId) {
-      throw new RuleError(
-        `found ${this.kekName} with kms key id ${kek.kmsKeyId} which differs from rule kms keyId ${kmsKeyId}`,
-      )
-    }
-    return kek
-  }
- 
-  async retrieveKekFromRegistry(key: KekId): Promise<Kek | null> {
-    try {
-      return await this.executor.client!.getKek(key.name, key.deleted)
-    } catch (err) {
-      if (err instanceof RestError && err.status === 404) {
-        return null
-      }
-      throw new RuleError(`could not get kek ${key.name}: ${err}`)
-    }
-  }
- 
-  async storeKekToRegistry(key: KekId, kmsType: string, kmsKeyId: string, shared: boolean): Promise<Kek | null> {
-    try {
-      return await this.executor.client!.registerKek(key.name, kmsType, kmsKeyId, shared)
-    } catch (err) {
-      Iif (err instanceof RestError && err.status === 409) {
-        return null
-      }
-      throw new RuleError(`could not register kek ${key.name}: ${err}`)
-    }
-  }
- 
-  async getOrCreateDek(ctx: RuleContext, version: number | null): Promise<Dek> {
-    const kek = await this.getKek(ctx)
-    const isRead = ctx.ruleMode === RuleMode.READ
-    if (version == null || version === 0) {
-      version = 1
-    }
-    const dekId: DekId = {
-      kekName: this.kekName,
-      subject: ctx.subject,
-      version,
-      algorithm: this.cryptor.dekFormat,
-      deleted: isRead
-    }
-    let dek = await this.retrieveDekFromRegistry(dekId)
-    const isExpired = this.isExpired(ctx, dek)
-    let kmsClient: KmsClient | null = null
-    if (dek == null || isExpired) {
-      Iif (isRead) {
-        throw new RuleError(`no dek found for ${this.kekName} during consume`)
-      }
-      let encryptedDek: Buffer | null = null
-      if (!kek.shared) {
-        kmsClient = getKmsClient(this.executor.config!, kek)
-        // Generate new dek
-        const rawDek = this.cryptor.generateKey()
-        encryptedDek = await kmsClient.encrypt(rawDek)
-      }
-      const newVersion = isExpired ? dek!.version! + 1 : null
-      const newDekId: DekId = {
-        kekName: this.kekName,
-        subject: ctx.subject,
-        version: newVersion,
-        algorithm: this.cryptor.dekFormat,
-        deleted: isRead,
-      }
-      // encryptedDek may be passed as null if kek is shared
-      dek = await this.storeDekToRegistry(newDekId, encryptedDek)
-      Iif (dek == null) {
-        // handle conflicts (409)
-        dek = await this.retrieveDekFromRegistry(dekId)
-      }
-      Iif (dek == null) {
-        throw new RuleError(`no dek found for ${this.kekName} during produce`)
-      }
-    }
- 
-    if (DekRegistryClient.getKeyMaterialBytes(dek) == null) {
-      if (kmsClient == null) {
-        kmsClient = getKmsClient(this.executor.config!, kek)
-      }
-      const rawDek = await kmsClient.decrypt(DekRegistryClient.getEncryptedKeyMaterialBytes(dek)!)
-      DekRegistryClient.setKeyMaterial(dek, rawDek)
-    }
- 
-    return dek
-  }
- 
-  async retrieveDekFromRegistry(key: DekId): Promise<Dek | null> {
-    try {
-        let dek: Dek
-        let version = key.version
-        Iif (version == null || version === 0) {
-          version = 1
-        }
-        dek = await this.executor.client!.getDek(key.kekName, key.subject, key.algorithm, version, key.deleted)
-        return dek != null && dek.encryptedKeyMaterial != null ? dek : null
-      } catch (err) {
-        if (err instanceof RestError && err.status === 404) {
-          return null
-        }
-        throw new RuleError(`could not get dek for kek ${key.kekName}, subject ${key.subject}: ${err}`)
-      }
-    }
- 
-    async storeDekToRegistry(key: DekId, encryptedDek: Buffer | null): Promise<Dek | null> {
-      try {
-        let dek: Dek
-        let encryptedDekStr: string | undefined = undefined
-        if (encryptedDek != null) {
-          encryptedDekStr = encryptedDek.toString('base64')
-        }
-        let version = key.version
-        if (version == null || version === 0) {
-          version = 1
-        }
-        dek = await this.executor.client!.registerDek(key.kekName, key.subject, key.algorithm, version, encryptedDekStr)
-        return dek
-      } catch (err) {
-        Iif (err instanceof RestError && err.status === 409) {
-          return null
-        }
-        throw new RuleError(`could not register dek for kek ${key.kekName}, subject ${key.subject}: ${err}`)
-      }
-  }
- 
-  isExpired(ctx: RuleContext, dek: Dek | null): boolean {
-    const now = Date.now()
-    return ctx.ruleMode !== RuleMode.READ &&
-      this.dekExpiryDays > 0 &&
-      dek != null &&
-      (now - dek.ts!) / MILLIS_IN_DAY >= this.dekExpiryDays
-  }
- 
-  async transform(ctx: RuleContext, fieldCtx: FieldContext, fieldValue: any): Promise<any> {
-    Iif (fieldValue == null) {
-      return null
-    }
-    switch (ctx.ruleMode) {
-      case RuleMode.WRITE: {
-        let plaintext = this.toBytes(fieldCtx.type, fieldValue)
-        Iif (plaintext == null) {
-          throw new RuleError(`type ${fieldCtx.type} not supported for encryption`)
-        }
-        let version: number | null = null
-        Iif (this.isDekRotated()) {
-          version = -1
-        }
-        let dek = await this.getOrCreateDek(ctx, version)
-        let keyMaterialBytes = DekRegistryClient.getKeyMaterialBytes(dek)!
-        let ciphertext = await this.cryptor.encrypt(keyMaterialBytes, plaintext)
-        Iif (this.isDekRotated()) {
-          ciphertext = this.prefixVersion(dek.version!, ciphertext)
-        }
-        if (fieldCtx.type === FieldType.STRING) {
-          return ciphertext.toString('base64')
-        } else {
-          return this.toObject(fieldCtx.type, ciphertext)
-        }
-      }
-      case RuleMode.READ: {
-        let ciphertext
-        if (fieldCtx.type === FieldType.STRING) {
-          ciphertext = Buffer.from(fieldValue, 'base64')
-        } else {
-          ciphertext = this.toBytes(fieldCtx.type, fieldValue)
-        }
-        Iif (ciphertext == null) {
-          return fieldValue
-        }
-        let version: number | null = null
-        if (this.isDekRotated()) {
-          version = this.extractVersion(ciphertext)
-          Iif (version == null) {
-            throw new RuleError('no version found in ciphertext')
-          }
-          ciphertext = ciphertext.subarray(5)
-        }
-        let dek = await this.getOrCreateDek(ctx, version)
-        let keyMaterialBytes = DekRegistryClient.getKeyMaterialBytes(dek)!
-        let plaintext = await this.cryptor.decrypt(keyMaterialBytes, ciphertext)
-        return this.toObject(fieldCtx.type, plaintext)
-      }
-      default:
-        throw new RuleError(`unsupported rule mode ${ctx.ruleMode}`)
-    }
-  }
- 
-  prefixVersion(version: number, ciphertext: Buffer): Buffer {
-    const versionBuf = Buffer.alloc(4)
-    versionBuf.writeInt32BE(version)
-    return Buffer.concat([MAGIC_BYTE, versionBuf, ciphertext])
-  }
- 
-  extractVersion(ciphertext: Buffer): number | null {
-    let magicByte = ciphertext.subarray(0, 1)
-    Iif (!magicByte.equals(MAGIC_BYTE)) {
-      throw new RuleError(
-        `Message encoded with magic byte ${JSON.stringify(magicByte)}, expected ${JSON.stringify(
-          MAGIC_BYTE,
-        )}`,
-      )
-    }
-    return ciphertext.subarray(1, 5).readInt32BE(0)
-  }
- 
-  toBytes(type: FieldType, value: any): Buffer | null {
-    switch (type) {
-      case FieldType.BYTES:
-        return value as Buffer
-      case FieldType.STRING:
-        return Buffer.from(value as string)
-      default:
-        return null
-    }
-  }
- 
-  toObject(type: FieldType, value: Buffer): any {
-    switch (type) {
-      case FieldType.BYTES:
-        return value
-      case FieldType.STRING:
-        return value.toString()
-      default:
-        return null
-    }
-  }
-}
- 
-function getKmsClient(config: Map<string, string>, kek: Kek): KmsClient {
-  let keyUrl = kek.kmsType + '://' + kek.kmsKeyId
-  let kmsClient = Registry.getKmsClient(keyUrl)
-  if (kmsClient == null) {
-    let kmsDriver = Registry.getKmsDriver(keyUrl)
-    kmsClient = kmsDriver.newKmsClient(config, keyUrl)
-    Registry.registerKmsClient(kmsClient)
-  }
-  return kmsClient
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/index.html b/coverage/lcov-report/schemaregistry/rules/encryption/index.html deleted file mode 100644 index 0f51bb3c..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption - - - - - - - - - -
-
-

All files schemaregistry/rules/encryption

-
- -
- 80.3% - Statements - 212/264 -
- - -
- 57.79% - Branches - 63/109 -
- - -
- 92.3% - Functions - 36/39 -
- - -
- 80.3% - Lines - 212/264 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
encrypt-executor.ts -
-
79.35%196/24757%61/10791.42%32/3579.35%196/247
kms-registry.ts -
-
94.11%16/17100%2/2100%4/494.11%16/17
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/kms-registry.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/kms-registry.ts.html deleted file mode 100644 index 60b001dd..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/kms-registry.ts.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/kms-registry.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption kms-registry.ts

-
- -
- 94.11% - Statements - 16/17 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 4/4 -
- - -
- 94.11% - Lines - 16/17 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -453x -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -3x -  -  -3x -3x -  -  -3x -2x -2x -2x -  -  -  -  -  -3x -2x -  -  -3x -5x -3x -3x -  -  -2x -  -  - 
import {SecurityException} from "./tink/exception/security_exception";
- 
-export interface KmsDriver {
-  getKeyUrlPrefix(): string
-  newKmsClient(config: Map<string, string>, keyUrl: string): KmsClient
-}
- 
-export interface KmsClient {
-  supported(keyUri: string): boolean
-  encrypt(plaintext: Buffer): Promise<Buffer>
-  decrypt(ciphertext: Buffer): Promise<Buffer>
-}
- 
-const kmsDrivers: KmsDriver[] = []
- 
-const kmsClients: KmsClient[] = []
- 
- 
-export function registerKmsDriver(kmsDriver: KmsDriver): void {
-  kmsDrivers.push(kmsDriver)
-}
- 
-export function getKmsDriver(keyUrl: string): KmsDriver {
-  for (let driver of kmsDrivers) {
-    if (keyUrl.startsWith(driver.getKeyUrlPrefix())) {
-      return driver
-    }
-  }
-  throw new SecurityException('no KMS driver found for key URL: ' + keyUrl)
-}
- 
-export function registerKmsClient(kmsClient: KmsClient): void {
-  kmsClients.push(kmsClient)
-}
- 
-export function getKmsClient(keyUrl: string): KmsClient | null {
-  for (let client of kmsClients) {
-    if (client.supported(keyUrl)) {
-      return client
-    }
-  }
-  return null
-}
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/localkms/index.html b/coverage/lcov-report/schemaregistry/rules/encryption/localkms/index.html deleted file mode 100644 index ce3e3273..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/localkms/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/localkms - - - - - - - - - -
-
-

All files schemaregistry/rules/encryption/localkms

-
- -
- 92.59% - Statements - 25/27 -
- - -
- 0% - Branches - 0/2 -
- - -
- 100% - Functions - 8/8 -
- - -
- 92.59% - Lines - 25/27 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
local-client.ts -
-
88.88%16/180%0/2100%5/588.88%16/18
local-driver.ts -
-
100%9/9100%0/0100%3/3100%9/9
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/localkms/local-client.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/localkms/local-client.ts.html deleted file mode 100644 index 1db261a9..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/localkms/local-client.ts.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/localkms/local-client.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption/localkms local-client.ts

-
- -
- 88.88% - Statements - 16/18 -
- - -
- 0% - Branches - 0/2 -
- - -
- 100% - Functions - 5/5 -
- - -
- 88.88% - Lines - 16/18 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45  -3x -3x -3x -3x -3x -  -3x -  -  -  -  -  -2x -  -  -2x -  -  -2x -2x -  -  -  -7x -7x -  -  -  -7x -  -  -  -3x -  -  -  -2x -  -  -  -5x -  -  - 
import {KmsClient} from "../kms-registry";
-import {Cryptor, DekFormat} from "../encrypt-executor";
-import * as Hkdf from '../tink/hkdf';
-import {LocalKmsDriver} from "./local-driver";
-import {AesGcmKey, AesGcmKeySchema} from "../tink/proto/aes_gcm_pb";
-import {create, toBinary} from "@bufbuild/protobuf";
- 
-export class LocalKmsClient implements KmsClient {
- 
-  private secret: string
-  private cryptor: Cryptor
- 
-  constructor(secret?: string) {
-    Iif (secret == null) {
-      secret = process.env['LOCAL_SECRET']
-    }
-    Iif (secret == null) {
-      throw new Error('cannot load secret')
-    }
-    this.secret = secret
-    this.cryptor = new Cryptor(DekFormat.AES128_GCM)
-  }
- 
-  async getKey(): Promise<Buffer> {
-    const rawKey = await Hkdf.compute(16, 'SHA-256', Buffer.from(this.secret, 'utf8'), new Uint8Array(0));
-    const aesGcmKey: AesGcmKey = create(AesGcmKeySchema, {
-      version: 0,
-      keyValue: rawKey
-    });
-    return Buffer.from(toBinary(AesGcmKeySchema, aesGcmKey))
-  }
- 
-  supported(keyUri: string): boolean {
-    return keyUri.startsWith(LocalKmsDriver.PREFIX)
-  }
- 
-  async encrypt(plaintext: Buffer): Promise<Buffer> {
-    return this.cryptor.encrypt(await this.getKey(), plaintext)
-  }
- 
-  async decrypt(ciphertext: Buffer): Promise<Buffer> {
-    return this.cryptor.decrypt(await this.getKey(), ciphertext)
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/localkms/local-driver.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/localkms/local-driver.ts.html deleted file mode 100644 index 10a043e8..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/localkms/local-driver.ts.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/localkms/local-driver.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption/localkms local-driver.ts

-
- -
- 100% - Statements - 9/9 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 3/3 -
- - -
- 100% - Lines - 9/9 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -223x -3x -  -3x -  -3x -3x -  -  -3x -  -  -  -2x -  -  -  -2x -2x -  -  - 
import {KmsClient, KmsDriver, registerKmsDriver} from "../kms-registry";
-import {LocalKmsClient} from "./local-client";
- 
-export class LocalKmsDriver implements KmsDriver {
- 
-  static PREFIX: string = 'local-kms://'
-  static SECRET: string = 'secret'
- 
-  static register(): void {
-    registerKmsDriver(new LocalKmsDriver())
-  }
- 
-  getKeyUrlPrefix(): string {
-    return LocalKmsDriver.PREFIX
-  }
- 
-  newKmsClient(config: Map<string, string>, keyUrl: string): KmsClient {
-    const secret = config.get(LocalKmsDriver.SECRET)
-    return new LocalKmsClient(secret)
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/aead.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/aead.ts.html deleted file mode 100644 index 0aa43b48..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/tink/aead.ts.html +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/tink/aead.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption/tink aead.ts

-
- -
- 100% - Statements - 1/1 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 1/1 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
/**
- * @license
- * Copyright 2020 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
- 
- 
-/**
- * Interface for Authenticated Encryption with Associated Data (AEAD).
- *
- * Security guarantees: Implementations of this interface are secure against
- * adaptive chosen ciphertext attacks. Encryption with associated data ensures
- * authenticity (who the sender is) and integrity (the data has not been
- * tampered with) of that data, but not its secrecy.
- *
- * @see https://tools.ietf.org/html/rfc5116
- */
-export abstract class Aead {
-  /**
-   * Encrypts `plaintext` with `opt_associatedData` as associated authenticated
-   * data. The resulting ciphertext allows for checking authenticity and
-   * integrity of associated data, but does not guarantee its secrecy.
-   *
-   * @param plaintext the plaintext to be encrypted. It must be
-   *     non-null, but can also be an empty (zero-length) byte array.
-   * @param opt_associatedData  optional associated data to be
-   *     authenticated, but not encrypted. A null value is equivalent to an
-   *     empty (zero-length) byte array. For successful decryption the same
-   *     associated data must be provided along with the ciphertext.
-   * @return resulting ciphertext
-   *
-   */
-  abstract encrypt(plaintext: Uint8Array, opt_associatedData?: Uint8Array|null):
-      Promise<Uint8Array>;
- 
-  /**
-   * Decrypts ciphertext with associated authenticated data.
-   * The decryption verifies the authenticity and integrity of the associated
-   * data, but there are no guarantees wrt. secrecy of that data.
-   *
-   * @param ciphertext the ciphertext to be decrypted, must be
-   *     non-null.
-   * @param opt_associatedData  optional associated data to be
-   *     authenticated. A null value is equivalent to an empty (zero-length)
-   *     byte array. For successful decryption the same associated data must be
-   *     provided along with the ciphertext.
-   * @return resulting plaintext
-   */
-  abstract decrypt(
-      ciphertext: Uint8Array,
-      opt_associatedData?: Uint8Array|null): Promise<Uint8Array>;
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/aes_gcm.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/aes_gcm.ts.html deleted file mode 100644 index 067dcf61..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/tink/aes_gcm.ts.html +++ /dev/null @@ -1,409 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/tink/aes_gcm.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption/tink aes_gcm.ts

-
- -
- 94.73% - Statements - 36/38 -
- - -
- 80% - Branches - 4/5 -
- - -
- 100% - Functions - 4/4 -
- - -
- 94.73% - Lines - 36/38 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109  -  -  -  -  -  -3x -3x -  -3x -3x -3x -3x -  -  -  -  -  -3x -  -  -  -  -  -3x -  -  -  -  -  -  -3x -17x -17x -  -  -  -  -  -  -6x -6x -6x -  -6x -6x -  -  -  -  -6x -6x -  -  -6x -6x -  -  -  -  -  -  -11x -11x -  -  -11x -11x -  -11x -11x -11x -  -  -  -  -11x -11x -  -11x -11x -  -  -  -  -  -  -  -  -  -  -  -3x -17x -17x -17x -  -  -  -  -  -  -  -  -  -  -17x -  - 
/**
- * @license
- * Copyright 2020 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
- 
-import {Aead} from './aead';
-import {SecurityException} from './exception/security_exception';
- 
-import * as Bytes from './bytes';
-import * as Random from './random';
-import * as Validators from './validators';
-import * as crypto from 'crypto';
- 
-/**
- * The only supported IV size.
- *
- */
-const IV_SIZE_IN_BYTES: number = 12;
- 
-/**
- * The only supported tag size.
- *
- */
-const TAG_SIZE_IN_BITS: number = 128;
- 
-/**
- * Implementation of AES-GCM.
- *
- * @final
- */
-export class AesGcm extends Aead {
-  constructor(private readonly key: CryptoKey) {
-    super();
-  }
- 
-  /**
-   */
-  async encrypt(plaintext: Uint8Array, associatedData?: Uint8Array):
-      Promise<Uint8Array> {
-    Validators.requireUint8Array(plaintext);
-    if (associatedData != null) {
-      Validators.requireUint8Array(associatedData);
-    }
-    const iv = Random.randBytes(IV_SIZE_IN_BYTES);
-    const alg: AesGcmParams = {
-      'name': 'AES-GCM',
-      'iv': iv,
-      'tagLength': TAG_SIZE_IN_BITS
-    };
-    if (associatedData) {
-      alg['additionalData'] = associatedData;
-    }
-    const ciphertext =
-        await crypto.subtle.encrypt(alg, this.key, plaintext);
-    return Bytes.concat(iv, new Uint8Array(ciphertext));
-  }
- 
-  /**
-   */
-  async decrypt(ciphertext: Uint8Array, associatedData?: Uint8Array):
-      Promise<Uint8Array> {
-    Validators.requireUint8Array(ciphertext);
-    Iif (ciphertext.length < IV_SIZE_IN_BYTES + TAG_SIZE_IN_BITS / 8) {
-      throw new SecurityException('ciphertext too short');
-    }
-    if (associatedData != null) {
-      Validators.requireUint8Array(associatedData);
-    }
-    const iv = new Uint8Array(IV_SIZE_IN_BYTES);
-    iv.set(ciphertext.subarray(0, IV_SIZE_IN_BYTES));
-    const alg: AesGcmParams = {
-      'name': 'AES-GCM',
-      'iv': iv,
-      'tagLength': TAG_SIZE_IN_BITS
-    };
-    if (associatedData) {
-      alg['additionalData'] = associatedData;
-    }
-    try {
-      return new Uint8Array(await crypto.subtle.decrypt(
-          alg, this.key,
-          new Uint8Array(ciphertext.subarray(IV_SIZE_IN_BYTES))));
-      // Preserving old behavior when moving to
-      // https://www.typescriptlang.org/tsconfig#useUnknownInCatchVariables
-      // tslint:disable-next-line:no-any
-    } catch (e: any) {
-      throw new SecurityException(e.toString());
-    }
-  }
-}
- 
-export async function fromRawKey(key: Uint8Array): Promise<Aead> {
-  Validators.requireUint8Array(key);
-  Validators.validateAesKeySize(key.length);
-  const webCryptoKey = await crypto.subtle.importKey(
-      /* format */
-      'raw', key,
-      /* keyData */
-      {'name': 'AES-GCM', 'length': key.length},
-      /* algo */
-      false,
-      /* extractable*/
-      ['encrypt', 'decrypt']);
- 
-  /* usage */
-  return new AesGcm(webCryptoKey);
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/aes_siv.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/aes_siv.ts.html deleted file mode 100644 index 703c915d..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/tink/aes_siv.ts.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/tink/aes_siv.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption/tink aes_siv.ts

-
- -
- 83.33% - Statements - 10/12 -
- - -
- 100% - Branches - 0/0 -
- - -
- 75% - Functions - 3/4 -
- - -
- 83.33% - Lines - 10/12 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43  -  -  -  -  -  -3x -  -  -3x -3x -  -  -  -  -  -  -3x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -  -  -  -3x -1x -  - 
/**
- * @license
- * Copyright 2020 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
- 
-import {Aead} from './aead';
- 
-// @ts-expect-error miscreant does not have types
-import {SIV, WebCryptoProvider} from "@hackbg/miscreant-esm";
-import * as crypto from 'crypto';
- 
-/**
- * Implementation of AES-SIV.
- *
- * @final
- */
-export class AesSiv extends Aead {
-  constructor(private readonly key: Uint8Array) {
-    super();
-  }
- 
-  /**
-   */
-  async encrypt(plaintext: Uint8Array, associatedData?: Uint8Array):
-      Promise<Uint8Array> {
-    let key = await SIV.importKey(this.key, "AES-CMAC-SIV", new WebCryptoProvider(crypto));
-    return key.seal(plaintext, [associatedData]);
-  }
- 
-  /**
-   */
-  async decrypt(ciphertext: Uint8Array, associatedData?: Uint8Array):
-      Promise<Uint8Array> {
-    let key = await SIV.importKey(this.key, "AES-CMAC-SIV", new WebCryptoProvider(crypto));
-    return key.open(ciphertext, [associatedData]);
-  }
-}
- 
-export async function fromRawKey(key: Uint8Array): Promise<Aead> {
-  return new AesSiv(key);
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/bytes.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/bytes.ts.html deleted file mode 100644 index 56a77769..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/tink/bytes.ts.html +++ /dev/null @@ -1,643 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/tink/bytes.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption/tink bytes.ts

-
- -
- 26.25% - Statements - 21/80 -
- - -
- 0% - Branches - 0/11 -
- - -
- 11.11% - Functions - 1/9 -
- - -
- 26.76% - Lines - 19/71 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187  -  -  -  -  -  -3x -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -6x -6x -  -12x -  -6x -6x -6x -  -12x -  -12x -  -6x -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  - 
/**
- * @license
- * Copyright 2020 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
- 
-import {InvalidArgumentsException} from './exception/invalid_arguments_exception';
- 
-/**
- * Does near constant time byte array comparison.
- * @param ba1 The first bytearray to check.
- * @param ba2 The second bytearray to check.
- * @return If the array are equal.
- */
-export function isEqual(ba1: Uint8Array, ba2: Uint8Array): boolean {
-  Iif (ba1.length !== ba2.length) {
-    return false;
-  }
-  let result = 0;
-  for (let i = 0; i < ba1.length; i++) {
-    result |= ba1[i] ^ ba2[i];
-  }
-  return result == 0;
-}
- 
-/**
- * Returns a new array that is the result of joining the arguments.
- */
-export function concat(...var_args: Uint8Array[]): Uint8Array {
-  let length = 0;
-  for (let i = 0; i < arguments.length; i++) {
-    // eslint-disable-next-line prefer-rest-params
-    length += arguments[i].length;
-  }
-  const result = new Uint8Array(length);
-  let curOffset = 0;
-  for (let i = 0; i < arguments.length; i++) {
-    // eslint-disable-next-line prefer-rest-params
-    result.set(arguments[i], curOffset);
-    // eslint-disable-next-line prefer-rest-params
-    curOffset += arguments[i].length;
-  }
-  return result;
-}
- 
-/**
- * Converts a non-negative integer number to a 64-bit big-endian byte array.
- * @param value The number to convert.
- * @return The number as a big-endian byte array.
- * @throws {InvalidArgumentsException}
- * @static
- */
-export function fromNumber(value: number): Uint8Array {
-  Iif (Number.isNaN(value) || value % 1 !== 0) {
-    throw new InvalidArgumentsException('cannot convert non-integer value');
-  }
-  Iif (value < 0) {
-    throw new InvalidArgumentsException('cannot convert negative number');
-  }
-  Iif (value > Number.MAX_SAFE_INTEGER) {
-    throw new InvalidArgumentsException(
-        'cannot convert number larger than ' + Number.MAX_SAFE_INTEGER);
-  }
-  const twoPower32 = 2 ** 32;
-  let low = value % twoPower32;
-  let high = value / twoPower32;
-  const result = new Uint8Array(8);
-  for (let i = 7; i >= 4; i--) {
-    result[i] = low & 255;
-    low >>>= 8;
-  }
-  for (let i = 3; i >= 0; i--) {
-    result[i] = high & 255;
-    high >>>= 8;
-  }
-  return result;
-}
- 
-/**
- * Converts the hex string to a byte array.
- *
- * @param hex the input
- * @return the byte array output
- * @throws {!InvalidArgumentsException}
- * @static
- */
-export function fromHex(hex: string): Uint8Array {
-  Iif (hex.length % 2 != 0) {
-    throw new InvalidArgumentsException(
-        'Hex string length must be multiple of 2');
-  }
-  const arr = new Uint8Array(hex.length / 2);
-  for (let i = 0; i < hex.length; i += 2) {
-    arr[i / 2] = parseInt(hex.substring(i, i + 2), 16);
-  }
-  return arr;
-}
- 
-/**
- * Converts a byte array to hex.
- *
- * @param bytes the byte array input
- * @return hex the output
- * @static
- */
-export function toHex(bytes: Uint8Array): string {
-  let result = '';
-  for (let i = 0; i < bytes.length; i++) {
-    const hexByte = bytes[i].toString(16);
-    result += hexByte.length > 1 ? hexByte : '0' + hexByte;
-  }
-  return result;
-}
- 
-/**
- * Converts the Base64 string to a byte array.
- *
- * @param encoded the base64 string
- * @param opt_webSafe True indicates we should use the alternative
- *     alphabet, which does not require escaping for use in URLs.
- * @return the byte array output
- * @static
- */
-export function fromBase64(encoded: string, opt_webSafe?: boolean): Uint8Array {
-  Iif (opt_webSafe) {
-    const normalBase64 = encoded.replace(/-/g, '+').replace(/_/g, '/');
-    return fromByteString(window.atob(normalBase64));
-  }
-  return fromByteString(window.atob(encoded));
-}
- 
-/**
- * Base64 encode a byte array.
- *
- * @param bytes the byte array input
- * @param opt_webSafe True indicates we should use the alternative
- *     alphabet, which does not require escaping for use in URLs.
- * @return base64 output
- * @static
- */
-export function toBase64(bytes: Uint8Array, opt_webSafe?: boolean): string {
-  const encoded = window
-                      .btoa(
-                          /* padding */
-                          toByteString(bytes))
-                      .replace(/=/g, '');
-  Iif (opt_webSafe) {
-    return encoded.replace(/\+/g, '-').replace(/\//g, '_');
-  }
-  return encoded;
-}
- 
-/**
- * Converts a byte string to a byte array. Only support ASCII and Latin-1
- * strings, does not support multi-byte characters.
- *
- * @param str the input
- * @return the byte array output
- * @static
- */
-export function fromByteString(str: string): Uint8Array {
-  const output = [];
-  let p = 0;
-  for (let i = 0; i < str.length; i++) {
-    const c = str.charCodeAt(i);
-    output[p++] = c;
-  }
-  return new Uint8Array(output);
-}
- 
-/**
- * Turns a byte array into the string given by the concatenation of the
- * characters to which the numbers correspond. Each byte is corresponding to a
- * character. Does not support multi-byte characters.
- *
- * @param bytes Array of numbers representing
- *     characters.
- * @return Stringification of the array.
- */
-export function toByteString(bytes: Uint8Array): string {
-  let str = '';
-  for (let i = 0; i < bytes.length; i += 1) {
-    str += String.fromCharCode(bytes[i]);
-  }
-  return str;
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/index.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/index.html deleted file mode 100644 index 8e0db9b2..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/tink/exception - - - - - - - - - -
-
-

All files schemaregistry/rules/encryption/tink/exception

-
- -
- 50% - Statements - 4/8 -
- - -
- 100% - Branches - 0/0 -
- - -
- 0% - Functions - 0/2 -
- - -
- 50% - Lines - 4/8 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
invalid_arguments_exception.ts -
-
50%2/4100%0/00%0/150%2/4
security_exception.ts -
-
50%2/4100%0/00%0/150%2/4
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/invalid_arguments_exception.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/invalid_arguments_exception.ts.html deleted file mode 100644 index d0002f84..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/invalid_arguments_exception.ts.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/tink/exception/invalid_arguments_exception.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption/tink/exception invalid_arguments_exception.ts

-
- -
- 50% - Statements - 2/4 -
- - -
- 100% - Branches - 0/0 -
- - -
- 0% - Functions - 0/1 -
- - -
- 50% - Lines - 2/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -3x - 
/**
- * @license
- * Copyright 2020 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
- 
- 
-/**
- * Exception used when a function receives an invalid argument.
- */
-export class InvalidArgumentsException extends Error {
-  constructor(message?: string) {
-    super(message);
-    Object.setPrototypeOf(this, InvalidArgumentsException.prototype);
-  }
-}
-InvalidArgumentsException.prototype.name = 'InvalidArgumentsException';
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/security_exception.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/security_exception.ts.html deleted file mode 100644 index 7c7b6f00..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/tink/exception/security_exception.ts.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/tink/exception/security_exception.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption/tink/exception security_exception.ts

-
- -
- 50% - Statements - 2/4 -
- - -
- 100% - Branches - 0/0 -
- - -
- 0% - Functions - 0/1 -
- - -
- 50% - Lines - 2/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -3x - 
/**
- * @license
- * Copyright 2020 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
- 
- 
-/**
- * The base class for all security exceptions.
- */
-export class SecurityException extends Error {
-  constructor(message?: string) {
-    super(message);
-    Object.setPrototypeOf(this, SecurityException.prototype);
-  }
-}
-SecurityException.prototype.name = 'SecurityException';
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/hkdf.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/hkdf.ts.html deleted file mode 100644 index 845ea50d..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/tink/hkdf.ts.html +++ /dev/null @@ -1,382 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/tink/hkdf.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption/tink hkdf.ts

-
- -
- 68.75% - Statements - 33/48 -
- - -
- 26.66% - Branches - 4/15 -
- - -
- 100% - Functions - 1/1 -
- - -
- 68.75% - Lines - 33/48 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100  -  -  -  -  -  -  -  -  -  -3x -  -3x -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -7x -  -  -7x -  -  -7x -  -  -  -  -  -  -  -7x -7x -  -  -7x -  -  -  -  -  -  -  -  -  -7x -7x -7x -7x -7x -  -7x -  -  -7x -7x -  -  -  -  -7x -7x -7x -7x -7x -7x -7x -7x -7x -7x -7x -7x -  -  -  -  -7x -7x -  -  -7x -  - 
/**
- * @license
- * Copyright 2020 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
- 
- 
-/**
- * @fileoverview An implementation of HKDF, RFC 5869.
- */
-import {InvalidArgumentsException} from './exception/invalid_arguments_exception';
- 
-import {fromRawKey as hmacFromRawKey} from './hmac';
-import * as Validators from './validators';
- 
-/**
- * Computes an HKDF.
- *
- * @param size The length of the generated pseudorandom string in
- *     bytes. The maximal size is 255 * DigestSize, where DigestSize is the size
- *     of the underlying HMAC.
- * @param hash the name of the hash function. Accepted names are SHA-1,
- *     SHA-256 and SHA-512
- * @param ikm Input keying material.
- * @param info Context and application specific
- *     information (can be a zero-length array).
- * @param opt_salt Salt value (a non-secret random
- *     value). If not provided, it is set to a string of hash length zeros.
- * @return Output keying material (okm).
- */
-export async function compute(
-    size: number, hash: string, ikm: Uint8Array, info: Uint8Array,
-    opt_salt?: Uint8Array): Promise<Uint8Array> {
-  let digestSize;
-  Iif (!Number.isInteger(size)) {
-    throw new InvalidArgumentsException('size must be an integer');
-  }
-  Iif (size <= 0) {
-    throw new InvalidArgumentsException('size must be positive');
-  }
-  switch (hash) {
-    case 'SHA-1':
-      digestSize = 20;
-      Iif (size > 255 * 20) {
-        throw new InvalidArgumentsException('size too large');
-      }
-      break;
-    case 'SHA-256':
-      digestSize = 32;
-      Iif (size > 255 * 32) {
-        throw new InvalidArgumentsException('size too large');
-      }
-      break;
-    case 'SHA-512':
-      digestSize = 64;
-      Iif (size > 255 * 64) {
-        throw new InvalidArgumentsException('size too large');
-      }
-      break;
-    default:
-      throw new InvalidArgumentsException(hash + ' is not supported');
-  }
-  Validators.requireUint8Array(ikm);
-  Validators.requireUint8Array(info);
-  let salt = opt_salt;
-  if (opt_salt == null || salt === undefined || salt.length == 0) {
-    salt = new Uint8Array(digestSize);
-  }
-  Validators.requireUint8Array(salt);
- 
-  // Extract.
-  let hmac = await hmacFromRawKey(hash, salt, digestSize);
-  const prk = await hmac.computeMac(
-      // Pseudorandom Key
-      ikm);
- 
-  // Expand
-  hmac = await hmacFromRawKey(hash, prk, digestSize);
-  let ctr = 1;
-  let pos = 0;
-  let digest = new Uint8Array(0);
-  const result = new Uint8Array(size);
-  while (true) {
-    const input = new Uint8Array(digest.length + info.length + 1);
-    input.set(digest, 0);
-    input.set(info, digest.length);
-    input[input.length - 1] = ctr;
-    digest = await hmac.computeMac(input);
-    Iif (pos + digest.length < size) {
-      result.set(digest, pos);
-      pos += digest.length;
-      ctr++;
-    } else {
-      result.set(digest.subarray(0, size - pos), pos);
-      break;
-    }
-  }
-  return result;
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/hmac.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/hmac.ts.html deleted file mode 100644 index 5cc6de34..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/tink/hmac.ts.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/tink/hmac.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption/tink hmac.ts

-
- -
- 62.16% - Statements - 23/37 -
- - -
- 11.11% - Branches - 1/9 -
- - -
- 75% - Functions - 3/4 -
- - -
- 61.11% - Lines - 22/36 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99  -  -  -  -  -  -3x -3x -  -3x -3x -3x -  -  -  -  -  -3x -  -  -  -  -  -  -3x -  -  -  -  -  -14x -14x -14x -  -  -  -  -  -14x -14x -  -14x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -14x -14x -  -  -14x -  -  -  -14x -  -  -  -  -  -  -  -14x -  -  -  -14x -  -  -  -  -  -  -  -  -  -  -  -14x -  -  -  -14x -  - 
/**
- * @license
- * Copyright 2020 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
- 
-import {InvalidArgumentsException} from './exception/invalid_arguments_exception';
-import {Mac} from './mac';
- 
-import * as Bytes from './bytes';
-import * as Validators from './validators';
-import * as crypto from 'crypto';
- 
-/**
- * The minimum tag size.
- *
- */
-const MIN_TAG_SIZE_IN_BYTES: number = 10;
- 
-/**
- * Implementation of HMAC.
- *
- * @final
- */
-export class Hmac extends Mac {
-  /**
-   * @param hash accepted names are SHA-1, SHA-256 and SHA-512
-   * @param tagSize the size of the tag
-   */
-  constructor(
-      private readonly hash: string, private readonly key: CryptoKey,
-      private readonly tagSize: number) {
-    super();
-  }
- 
-  /**
-   */
-  async computeMac(data: Uint8Array): Promise<Uint8Array> {
-    Validators.requireUint8Array(data);
-    const tag = await crypto.subtle.sign(
-        {'name': 'HMAC', 'hash': {'name': this.hash}}, this.key, data);
-    return new Uint8Array(tag.slice(0, this.tagSize));
-  }
- 
-  /**
-   */
-  async verifyMac(tag: Uint8Array, data: Uint8Array): Promise<boolean> {
-    Validators.requireUint8Array(tag);
-    Validators.requireUint8Array(data);
-    const computedTag = await this.computeMac(data);
-    return Bytes.isEqual(tag, computedTag);
-  }
-}
- 
-/**
- * @param hash accepted names are SHA-1, SHA-256 and SHA-512
- * @param tagSize the size of the tag
- */
-export async function fromRawKey(
-    hash: string, key: Uint8Array, tagSize: number): Promise<Mac> {
-  Validators.requireUint8Array(key);
-  Iif (!Number.isInteger(tagSize)) {
-    throw new InvalidArgumentsException('invalid tag size, must be an integer');
-  }
-  Iif (tagSize < MIN_TAG_SIZE_IN_BYTES) {
-    throw new InvalidArgumentsException(
-        'tag too short, must be at least ' + MIN_TAG_SIZE_IN_BYTES + ' bytes');
-  }
-  switch (hash) {
-    case 'SHA-1':
-      Iif (tagSize > 20) {
-        throw new InvalidArgumentsException(
-            'tag too long, must not be larger than 20 bytes');
-      }
-      break;
-    case 'SHA-256':
-      Iif (tagSize > 32) {
-        throw new InvalidArgumentsException(
-            'tag too long, must not be larger than 32 bytes');
-      }
-      break;
-    case 'SHA-512':
-      Iif (tagSize > 64) {
-        throw new InvalidArgumentsException(
-            'tag too long, must not be larger than 64 bytes');
-      }
-      break;
-    default:
-      throw new InvalidArgumentsException(hash + ' is not supported');
-  }
- 
-  // TODO(b/115974209): Add check that key.length > 16.
-  const cryptoKey = await crypto.subtle.importKey(
-      'raw', key,
-      {'name': 'HMAC', 'hash': {'name': hash}, 'length': key.length * 8}, false,
-      ['sign', 'verify']);
-  return new Hmac(hash, cryptoKey, tagSize);
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/index.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/index.html deleted file mode 100644 index 262a9df3..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/tink/index.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/tink - - - - - - - - - -
-
-

All files schemaregistry/rules/encryption/tink

-
- -
- 56.62% - Statements - 141/249 -
- - -
- 22.03% - Branches - 13/59 -
- - -
- 55.55% - Functions - 15/27 -
- - -
- 57.74% - Lines - 138/239 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
aead.ts -
-
100%1/1100%0/0100%0/0100%1/1
aes_gcm.ts -
-
94.73%36/3880%4/5100%4/494.73%36/38
aes_siv.ts -
-
83.33%10/12100%0/075%3/483.33%10/12
bytes.ts -
-
26.25%21/800%0/1111.11%1/926.76%19/71
hkdf.ts -
-
68.75%33/4826.66%4/15100%1/168.75%33/48
hmac.ts -
-
62.16%23/3711.11%1/975%3/461.11%22/36
mac.ts -
-
100%1/1100%0/0100%0/0100%1/1
random.ts -
-
87.5%7/866.66%2/3100%1/187.5%7/8
validators.ts -
-
37.5%9/2412.5%2/1650%2/437.5%9/24
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/mac.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/mac.ts.html deleted file mode 100644 index bacef9af..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/tink/mac.ts.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/tink/mac.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption/tink mac.ts

-
- -
- 100% - Statements - 1/1 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 1/1 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
/**
- * @license
- * Copyright 2020 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
- 
- 
-/**
- * Interface for Message Authentication Codes (MAC).
- *
- * Security guarantees: Message Authentication Codes provide symmetric message
- * authentication. Instances implementing this interface are secure against
- * existential forgery under chosen plaintext attack, and can be deterministic
- * or randomized. This interface should be used for authentication only, and not
- * for other purposes like generation of pseudorandom bytes.
- *
- */
-export abstract class Mac {
-  /**
-   * Computes message authentication code (MAC) for `data`.
-   *
-   * @param data the data to compute MAC
-   * @return the MAC tag
-   */
-  abstract computeMac(data: Uint8Array): Promise<Uint8Array>;
- 
-  /**
-   * Verifies whether `tag` is a correct authentication code for `data`.
-   *
-   * @param tag  the MAC tag
-   * @param data the data to compute MAC
-   */
-  abstract verifyMac(tag: Uint8Array, data: Uint8Array): Promise<boolean>;
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/aes_gcm_pb.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/aes_gcm_pb.ts.html deleted file mode 100644 index 6c256f6f..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/aes_gcm_pb.ts.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/tink/proto/aes_gcm_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption/tink/proto aes_gcm_pb.ts

-
- -
- 100% - Statements - 4/4 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 4/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  - 
// Copyright 2017 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
- 
-// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file rules/encryption/tink/proto/aes_gcm.proto (package google.crypto.tink, syntax proto3)
-/* eslint-disable */
- 
-import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
-import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
-import type { Message } from "@bufbuild/protobuf";
- 
-/**
- * Describes the file rules/encryption/tink/proto/aes_gcm.proto.
- */
-export const file_rules_encryption_tink_proto_aes_gcm: GenFile = /*@__PURE__*/
-  fileDesc("CilydWxlcy9lbmNyeXB0aW9uL3RpbmsvcHJvdG8vYWVzX2djbS5wcm90bxISZ29vZ2xlLmNyeXB0by50aW5rIjQKD0Flc0djbUtleUZvcm1hdBIQCghrZXlfc2l6ZRgCIAEoDRIPCgd2ZXJzaW9uGAMgASgNIi8KCUFlc0djbUtleRIPCgd2ZXJzaW9uGAEgASgNEhEKCWtleV92YWx1ZRgDIAEoDEJYChxjb20uZ29vZ2xlLmNyeXB0by50aW5rLnByb3RvUAFaLWdpdGh1Yi5jb20vZ29vZ2xlL3RpbmsvcHJvdG8vYWVzX2djbV9nb19wcm90b6ICBlRJTktQQmIGcHJvdG8z");
- 
-/**
- * @generated from message google.crypto.tink.AesGcmKeyFormat
- */
-export type AesGcmKeyFormat = Message<"google.crypto.tink.AesGcmKeyFormat"> & {
-  /**
-   * @generated from field: uint32 key_size = 2;
-   */
-  keySize: number;
- 
-  /**
-   * @generated from field: uint32 version = 3;
-   */
-  version: number;
-};
- 
-/**
- * Describes the message google.crypto.tink.AesGcmKeyFormat.
- * Use `create(AesGcmKeyFormatSchema)` to create a new message.
- */
-export const AesGcmKeyFormatSchema: GenMessage<AesGcmKeyFormat> = /*@__PURE__*/
-  messageDesc(file_rules_encryption_tink_proto_aes_gcm, 0);
- 
-/**
- * @generated from message google.crypto.tink.AesGcmKey
- */
-export type AesGcmKey = Message<"google.crypto.tink.AesGcmKey"> & {
-  /**
-   * @generated from field: uint32 version = 1;
-   */
-  version: number;
- 
-  /**
-   * @generated from field: bytes key_value = 3;
-   */
-  keyValue: Uint8Array;
-};
- 
-/**
- * Describes the message google.crypto.tink.AesGcmKey.
- * Use `create(AesGcmKeySchema)` to create a new message.
- */
-export const AesGcmKeySchema: GenMessage<AesGcmKey> = /*@__PURE__*/
-  messageDesc(file_rules_encryption_tink_proto_aes_gcm, 1);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/aes_siv_pb.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/aes_siv_pb.ts.html deleted file mode 100644 index b71e95ce..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/aes_siv_pb.ts.html +++ /dev/null @@ -1,325 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/tink/proto/aes_siv_pb.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption/tink/proto aes_siv_pb.ts

-
- -
- 100% - Statements - 4/4 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 4/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  - 
// Copyright 2017 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
- 
-// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file rules/encryption/tink/proto/aes_siv.proto (package google.crypto.tink, syntax proto3)
-/* eslint-disable */
- 
-import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
-import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
-import type { Message } from "@bufbuild/protobuf";
- 
-/**
- * Describes the file rules/encryption/tink/proto/aes_siv.proto.
- */
-export const file_rules_encryption_tink_proto_aes_siv: GenFile = /*@__PURE__*/
-  fileDesc("CilydWxlcy9lbmNyeXB0aW9uL3RpbmsvcHJvdG8vYWVzX3Npdi5wcm90bxISZ29vZ2xlLmNyeXB0by50aW5rIjQKD0Flc1NpdktleUZvcm1hdBIQCghrZXlfc2l6ZRgBIAEoDRIPCgd2ZXJzaW9uGAIgASgNIi8KCUFlc1NpdktleRIPCgd2ZXJzaW9uGAEgASgNEhEKCWtleV92YWx1ZRgCIAEoDEJPChxjb20uZ29vZ2xlLmNyeXB0by50aW5rLnByb3RvUAFaLWdpdGh1Yi5jb20vZ29vZ2xlL3RpbmsvcHJvdG8vYWVzX3Npdl9nb19wcm90b2IGcHJvdG8z");
- 
-/**
- * @generated from message google.crypto.tink.AesSivKeyFormat
- */
-export type AesSivKeyFormat = Message<"google.crypto.tink.AesSivKeyFormat"> & {
-  /**
-   * Only valid value is: 64.
-   *
-   * @generated from field: uint32 key_size = 1;
-   */
-  keySize: number;
- 
-  /**
-   * @generated from field: uint32 version = 2;
-   */
-  version: number;
-};
- 
-/**
- * Describes the message google.crypto.tink.AesSivKeyFormat.
- * Use `create(AesSivKeyFormatSchema)` to create a new message.
- */
-export const AesSivKeyFormatSchema: GenMessage<AesSivKeyFormat> = /*@__PURE__*/
-  messageDesc(file_rules_encryption_tink_proto_aes_siv, 0);
- 
-/**
- * key_type: type.googleapis.com/google.crypto.tink.AesSivKey
- *
- * @generated from message google.crypto.tink.AesSivKey
- */
-export type AesSivKey = Message<"google.crypto.tink.AesSivKey"> & {
-  /**
-   * @generated from field: uint32 version = 1;
-   */
-  version: number;
- 
-  /**
-   * First half is AES-CTR key, second is AES-SIV.
-   *
-   * @generated from field: bytes key_value = 2;
-   */
-  keyValue: Uint8Array;
-};
- 
-/**
- * Describes the message google.crypto.tink.AesSivKey.
- * Use `create(AesSivKeySchema)` to create a new message.
- */
-export const AesSivKeySchema: GenMessage<AesSivKey> = /*@__PURE__*/
-  messageDesc(file_rules_encryption_tink_proto_aes_siv, 1);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/index.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/index.html deleted file mode 100644 index 607ca26b..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/tink/proto/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/tink/proto - - - - - - - - - -
-
-

All files schemaregistry/rules/encryption/tink/proto

-
- -
- 100% - Statements - 8/8 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 8/8 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
aes_gcm_pb.ts -
-
100%4/4100%0/0100%0/0100%4/4
aes_siv_pb.ts -
-
100%4/4100%0/0100%0/0100%4/4
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/random.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/random.ts.html deleted file mode 100644 index 6366501f..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/tink/random.ts.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/tink/random.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption/tink random.ts

-
- -
- 87.5% - Statements - 7/8 -
- - -
- 66.66% - Branches - 2/3 -
- - -
- 100% - Functions - 1/1 -
- - -
- 87.5% - Lines - 7/8 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29  -  -  -  -  -  -  -  -  -  -3x -3x -  -  -  -  -  -  -  -  -3x -8x -  -  -8x -8x -8x -  - 
/**
- * @license
- * Copyright 2020 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
- 
- 
-/**
- * @fileoverview Several simple wrappers of crypto.getRandomValues.
- */
-import {InvalidArgumentsException} from './exception/invalid_arguments_exception';
-import * as crypto from 'crypto';
- 
-/**
- * Randomly generates `n` bytes.
- *
- * @param n number of bytes to generate
- * @return the random bytes
- * @static
- */
-export function randBytes(n: number): Uint8Array {
-  Iif (!Number.isInteger(n) || n < 0) {
-    throw new InvalidArgumentsException('n must be a nonnegative integer');
-  }
-  const result = new Uint8Array(n);
-  crypto.getRandomValues(result);
-  return result;
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/rules/encryption/tink/validators.ts.html b/coverage/lcov-report/schemaregistry/rules/encryption/tink/validators.ts.html deleted file mode 100644 index 7aba0a4e..00000000 --- a/coverage/lcov-report/schemaregistry/rules/encryption/tink/validators.ts.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - Code coverage report for schemaregistry/rules/encryption/tink/validators.ts - - - - - - - - - -
-
-

All files / schemaregistry/rules/encryption/tink validators.ts

-
- -
- 37.5% - Statements - 9/24 -
- - -
- 12.5% - Branches - 2/16 -
- - -
- 50% - Functions - 2/4 -
- - -
- 37.5% - Lines - 9/24 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84  -  -  -  -  -  -3x -3x -3x -  -  -  -  -  -  -  -  -  -3x -17x -  -  -  -  -  -  -  -  -  -  -3x -100x -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
/**
- * @license
- * Copyright 2020 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
- 
-import {InvalidArgumentsException} from './exception/invalid_arguments_exception';
-import {SecurityException} from './exception/security_exception';
-const SUPPORTED_AES_KEY_SIZES: number[] = [16, 32];
- 
-/**
- * Validates AES key sizes, at the moment only 128-bit and 256-bit keys are
- * supported.
- *
- * @param n the key size in bytes
- * @throws {!InvalidArgumentsException}
- * @static
- */
-export function validateAesKeySize(n: number) {
-  Iif (!SUPPORTED_AES_KEY_SIZES.includes(n)) {
-    throw new InvalidArgumentsException('unsupported AES key size: ' + n);
-  }
-}
- 
-/**
- * Validates that the input is a non null Uint8Array.
- *
- * @throws {!InvalidArgumentsException}
- * @static
- */
-export function requireUint8Array(input: Uint8Array) {
-  Iif (input == null || !(input instanceof Uint8Array)) {
-    throw new InvalidArgumentsException('input must be a non null Uint8Array');
-  }
-}
- 
-/**
- * Validates version, throws exception if candidate version is negative or
- * bigger than expected.
- *
- * @param candidate - version to be validated
- * @param maxVersion - upper bound on version
- * @throws {!SecurityException}
- * @static
- */
-export function validateVersion(candidate: number, maxVersion: number) {
-  Iif (candidate < 0 || candidate > maxVersion) {
-    throw new SecurityException(
-        'Version is out of bound, must be ' +
-        'between 0 and ' + maxVersion + '.');
-  }
-}
- 
-/**
- * Validates ECDSA parameters.
- *
- * @throws {!SecurityException}
- */
-export function validateEcdsaParams(curve: string, hash: string) {
-  switch (curve) {
-    case 'P-256':
-      Iif (hash != 'SHA-256') {
-        throw new SecurityException(
-            'expected SHA-256 (because curve is P-256) but got ' + hash);
-      }
-      break;
-    case 'P-384':
-      Iif (hash != 'SHA-384' && hash != 'SHA-512') {
-        throw new SecurityException(
-            'expected SHA-384 or SHA-512 (because curve is P-384) but got ' +
-            hash);
-      }
-      break;
-    case 'P-521':
-      Iif (hash != 'SHA-512') {
-        throw new SecurityException(
-            'expected SHA-512 (because curve is P-521) but got ' + hash);
-      }
-      break;
-    default:
-      throw new SecurityException('unsupported curve: ' + curve);
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/schemaregistry-client.ts.html b/coverage/lcov-report/schemaregistry/schemaregistry-client.ts.html deleted file mode 100644 index 0272fe76..00000000 --- a/coverage/lcov-report/schemaregistry/schemaregistry-client.ts.html +++ /dev/null @@ -1,1921 +0,0 @@ - - - - - - Code coverage report for schemaregistry/schemaregistry-client.ts - - - - - - - - - -
-
-

All files / schemaregistry schemaregistry-client.ts

-
- -
- 90.04% - Statements - 190/211 -
- - -
- 87.5% - Branches - 28/32 -
- - -
- 90.76% - Functions - 59/65 -
- - -
- 90.04% - Lines - 190/211 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -6135x -  -5x -5x -5x -5x -  -  -  -  -  -  -  -  -  -  -5x -5x -5x -5x -5x -5x -5x -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -5x -5x -5x -5x -5x -5x -  -  -  -  -  -  -  -  -  -  -  -5x -99x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -26x -26x -  -  -  -  -26x -  -26x -26x -26x -26x -26x -26x -26x -26x -26x -26x -26x -26x -26x -26x -  -  -  -9x -9x -9x -  -  -  -  -  -  -  -  -  -5x -  -5x -  -  -  -10x -  -10x -10x -10x -4x -  -  -6x -  -6x -  -  -  -  -6x -6x -  -  -  -  -5x -5x -5x -5x -2x -  -  -3x -  -3x -  -3x -  -  -  -3x -3x -  -  -  -  -5x -  -5x -5x -5x -2x -  -  -3x -  -3x -  -  -  -  -3x -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -5x -5x -5x -2x -  -  -3x -  -3x -  -  -  -3x -3x -  -  -  -  -5x -  -5x -5x -5x -2x -  -  -3x -  -3x -  -3x -6x -6x -6x -  -  -3x -  -  -  -3x -3x -  -  -  -  -  -1x -  -  -  -1x -  -  -  -5x -  -5x -5x -5x -2x -  -  -3x -  -3x -  -  -  -  -3x -3x -  -  -  -  -1x -  -  -  -1x -  -  -  -1x -1x -1x -1x -1x -  -  -  -  -1x -1x -1x -1x -1x -  -  -  -  -1x -1x -1x -1x -1x -  -  -  -  -1x -1x -1x -1x -1x -  -  -  -  -1x -  -1x -  -  -  -1x -  -  -  -1x -  -  -1x -1x -1x -1x -1x -  -1x -1x -1x -1x -1x -  -1x -1x -  -  -  -  -  -  -1x -1x -1x -  -  -1x -  -1x -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -1x -  -  -  -1x -  -  -  -1x -  -1x -  -  -  -  -1x -  -  -  -1x -  -  -  -1x -  -  -  -1x -  -  -  -  -1x -  -  -  -1x -  -1x -  -  -  -1x -  -  -  -1x -  -  -  -  -1x -  -  -  -1x -  -  -  -1x -  -  -  -1x -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -2x -2x -  -  -  -  -2x -2x -2x -  -  -  -  -2x -2x -2x -  -  -  -  -2x -2x -2x -  -  -  -  -2x -2x -  -  -  -  -2x -2x -  -  -  -  -2x -2x -  -  -  -  -2x -2x -  -  -  - 
import { RestService, ClientConfig } from './rest-service';
-import { AxiosResponse } from 'axios';
-import stringify from "json-stringify-deterministic";
-import { LRUCache } from 'lru-cache';
-import { Mutex } from 'async-mutex';
-import {MockClient} from "./mock-schemaregistry-client";
- 
-/*
- * Confluent-Schema-Registry-TypeScript - Node.js wrapper for Confluent Schema Registry
- *
- * Copyright (c) 2024 Confluent, Inc.
- *
- * This software may be modified and distributed under the terms
- * of the MIT license.  See the LICENSE.txt file for details.
- */
- 
-export enum Compatibility {
-  NONE = "NONE",
-  BACKWARD = "BACKWARD",
-  FORWARD = "FORWARD",
-  FULL = "FULL",
-  BACKWARD_TRANSITIVE = "BACKWARD_TRANSITIVE",
-  FORWARD_TRANSITIVE = "FORWARD_TRANSITIVE",
-  FULL_TRANSITIVE = "FULL_TRANSITIVE"
-}
- 
-export interface CompatibilityLevel {
-  compatibility?: Compatibility;
-  compatibilityLevel?: Compatibility;
-}
- 
-export interface Rule {
-  name: string
-  doc?: string
-  kind?: string
-  mode?: RuleMode
-  type: string
-  tags?: string[]
-  params?: { [key: string]: string }
-  expr?: string
-  onSuccess?: string
-  onFailure?: string
-  disabled?: boolean
-}
- 
-export enum RuleMode {
-  UPGRADE = 'UPGRADE',
-  DOWNGRADE = 'DOWNGRADE',
-  UPDOWN = 'UPDOWN',
-  WRITE = 'WRITE',
-  READ = 'READ',
-  WRITEREAD = 'WRITEREAD',
-}
- 
-export interface SchemaInfo {
-  schema: string;
-  schemaType?: string;
-  references?: Reference[];
-  metadata?: Metadata;
-  ruleSet?: RuleSet;
-}
- 
-// Ensure that SchemaMetadata fields are removed
-export function minimize(info: SchemaInfo): SchemaInfo {
-  return {
-    schemaType: info.schemaType,
-    schema: info.schema,
-    references: info.references,
-    metadata: info.metadata,
-    ruleSet: info.ruleSet
-  }
-}
- 
-export interface SchemaMetadata extends SchemaInfo {
-  id: number;
-  subject?: string;
-  version?: number;
-}
- 
-export interface Reference {
-  name: string;
-  subject: string;
-  version: number;
-}
- 
-export interface Metadata {
-  tags?: { [key: string]: string[] };
-  properties?: { [key: string]: string };
-  sensitive?: string[];
-}
- 
-export interface RuleSet {
-  migrationRules?: Rule[];
-  domainRules?: Rule[];
-}
- 
-export interface ServerConfig {
-  alias?: string;
-  normalize?: boolean;
-  compatibility?: Compatibility;
-  compatibilityLevel?: Compatibility;
-  compatibilityGroup?: string;
-  defaultMetadata?: Metadata;
-  overrideMetadata?: Metadata;
-  defaultRuleSet?: RuleSet;
-  overrideRuleSet?: RuleSet;
-}
- 
-export interface isCompatibleResponse {
-  is_compatible: boolean;
-}
- 
-export interface Client {
-  config(): ClientConfig;
-  register(subject: string, schema: SchemaInfo, normalize: boolean): Promise<number>;
-  registerFullResponse(subject: string, schema: SchemaInfo, normalize: boolean): Promise<SchemaMetadata>;
-  getBySubjectAndId(subject: string, id: number, format?: string): Promise<SchemaInfo>;
-  getId(subject: string, schema: SchemaInfo, normalize: boolean): Promise<number>;
-  getLatestSchemaMetadata(subject: string): Promise<SchemaMetadata>;
-  getSchemaMetadata(subject: string, version: number, deleted: boolean): Promise<SchemaMetadata>;
-  getLatestWithMetadata(subject: string, metadata: { [key: string]: string }, deleted: boolean): Promise<SchemaMetadata>;
-  getAllVersions(subject: string): Promise<number[]>;
-  getVersion(subject: string, schema: SchemaInfo, normalize: boolean): Promise<number>;
-  getAllSubjects(): Promise<string[]>;
-  deleteSubject(subject: string, permanent: boolean): Promise<number[]>;
-  deleteSubjectVersion(subject: string, version: number, permanent: boolean): Promise<number>;
-  testSubjectCompatibility(subject: string, schema: SchemaInfo): Promise<boolean>;
-  testCompatibility(subject: string, version: number, schema: SchemaInfo): Promise<boolean>;
-  getCompatibility(subject: string): Promise<Compatibility>;
-  updateCompatibility(subject: string, update: Compatibility): Promise<Compatibility>;
-  getDefaultCompatibility(): Promise<Compatibility>;
-  updateDefaultCompatibility(update: Compatibility): Promise<Compatibility>;
-  getConfig(subject: string): Promise<ServerConfig>;
-  updateConfig(subject: string, update: ServerConfig): Promise<ServerConfig>;
-  getDefaultConfig(): Promise<ServerConfig>;
-  updateDefaultConfig(update: ServerConfig): Promise<ServerConfig>;
-  close(): void;
-}
- 
-export class SchemaRegistryClient implements Client {
-  private clientConfig: ClientConfig;
-  private restService: RestService;
- 
-  private schemaToIdCache: LRUCache<string, number>;
-  private idToSchemaInfoCache: LRUCache<string, SchemaInfo>;
-  private infoToSchemaCache: LRUCache<string, SchemaMetadata>;
-  private latestToSchemaCache: LRUCache<string, SchemaMetadata>;
-  private schemaToVersionCache: LRUCache<string, number>;
-  private versionToSchemaCache: LRUCache<string, SchemaMetadata>;
-  private metadataToSchemaCache: LRUCache<string, SchemaMetadata>;
- 
-  private schemaToIdMutex: Mutex;
-  private idToSchemaInfoMutex: Mutex;
-  private infoToSchemaMutex: Mutex;
-  private latestToSchemaMutex: Mutex;
-  private schemaToVersionMutex: Mutex;
-  private versionToSchemaMutex: Mutex;
-  private metadataToSchemaMutex: Mutex;
- 
-  constructor(config: ClientConfig) {
-    this.clientConfig = config
-    const cacheOptions = {
-      max: config.cacheCapacity,
-      ...(config.cacheLatestTtlSecs !== undefined && { maxAge: config.cacheLatestTtlSecs * 1000 })
-    };
- 
-    this.restService = new RestService(config.baseURLs, config.isForward, config.createAxiosDefaults);
- 
-    this.schemaToIdCache = new LRUCache(cacheOptions);
-    this.idToSchemaInfoCache = new LRUCache(cacheOptions);
-    this.infoToSchemaCache = new LRUCache(cacheOptions);
-    this.latestToSchemaCache = new LRUCache(cacheOptions);
-    this.schemaToVersionCache = new LRUCache(cacheOptions);
-    this.versionToSchemaCache = new LRUCache(cacheOptions);
-    this.metadataToSchemaCache = new LRUCache(cacheOptions);
-    this.schemaToIdMutex = new Mutex();
-    this.idToSchemaInfoMutex = new Mutex();
-    this.infoToSchemaMutex = new Mutex();
-    this.latestToSchemaMutex = new Mutex();
-    this.schemaToVersionMutex = new Mutex();
-    this.versionToSchemaMutex = new Mutex();
-    this.metadataToSchemaMutex = new Mutex();
-  }
- 
-  static newClient(config: ClientConfig): Client {
-    let url = config.baseURLs[0]
-    if (url.startsWith("mock://")) {
-      return new MockClient(config)
-    }
-    return new SchemaRegistryClient(config)
-  }
- 
-  config(): ClientConfig {
-    return this.clientConfig
-  }
- 
-  async register(subject: string, schema: SchemaInfo, normalize: boolean = false): Promise<number> {
-    const metadataResult = await this.registerFullResponse(subject, schema, normalize);
- 
-    return metadataResult.id;
-  }
- 
-  async registerFullResponse(subject: string, schema: SchemaInfo, normalize: boolean = false): Promise<SchemaMetadata> {
-    const cacheKey = stringify({ subject, schema: minimize(schema) });
- 
-    return await this.infoToSchemaMutex.runExclusive(async () => {
-      const cachedSchemaMetadata: SchemaMetadata | undefined = this.infoToSchemaCache.get(cacheKey);
-      if (cachedSchemaMetadata) {
-        return cachedSchemaMetadata;
-      }
- 
-      subject = encodeURIComponent(subject);
- 
-      const response: AxiosResponse<SchemaMetadata> = await this.restService.handleRequest(
-        `/subjects/${subject}/versions?normalize=${normalize}`,
-        'POST',
-        schema
-      );
-      this.infoToSchemaCache.set(cacheKey, response.data);
-      return response.data;
-    });
-  }
- 
-  async getBySubjectAndId(subject: string, id: number, format?: string): Promise<SchemaInfo> {
-    const cacheKey = stringify({ subject, id });
-    return await this.idToSchemaInfoMutex.runExclusive(async () => {
-      const cachedSchema: SchemaInfo | undefined = this.idToSchemaInfoCache.get(cacheKey);
-      if (cachedSchema) {
-        return cachedSchema;
-      }
- 
-      subject = encodeURIComponent(subject);
- 
-      let formatStr = format != null ? `&format=${format}` : '';
- 
-      const response: AxiosResponse<SchemaInfo> = await this.restService.handleRequest(
-        `/schemas/ids/${id}?subject=${subject}${formatStr}`,
-        'GET'
-      );
-      this.idToSchemaInfoCache.set(cacheKey, response.data);
-      return response.data;
-    });
-  }
- 
-  async getId(subject: string, schema: SchemaInfo, normalize: boolean = false): Promise<number> {
-    const cacheKey = stringify({ subject, schema: minimize(schema) });
- 
-    return await this.schemaToIdMutex.runExclusive(async () => {
-      const cachedId: number | undefined = this.schemaToIdCache.get(cacheKey);
-      if (cachedId) {
-        return cachedId;
-      }
- 
-      subject = encodeURIComponent(subject);
- 
-      const response: AxiosResponse<SchemaMetadata> = await this.restService.handleRequest(
-        `/subjects/${subject}?normalize=${normalize}`,
-        'POST',
-        schema
-      );
-      this.schemaToIdCache.set(cacheKey, response.data.id);
-      return response.data.id;
-    });
-  }
- 
-  async getLatestSchemaMetadata(subject: string): Promise<SchemaMetadata> {
-    return await this.latestToSchemaMutex.runExclusive(async () => {
-      const cachedSchema: SchemaMetadata | undefined = this.latestToSchemaCache.get(subject);
-      Iif (cachedSchema) {
-        return cachedSchema;
-      }
- 
-      subject = encodeURIComponent(subject);
- 
-      const response: AxiosResponse<SchemaMetadata> = await this.restService.handleRequest(
-        `/subjects/${subject}/versions/latest`,
-        'GET'
-      );
-      this.latestToSchemaCache.set(subject, response.data);
-      return response.data;
-    });
-  }
- 
-  async getSchemaMetadata(subject: string, version: number, deleted: boolean = false): Promise<SchemaMetadata> {
-    const cacheKey = stringify({ subject, version, deleted });
- 
-    return await this.versionToSchemaMutex.runExclusive(async () => {
-      const cachedSchemaMetadata: SchemaMetadata | undefined = this.versionToSchemaCache.get(cacheKey);
-      if (cachedSchemaMetadata) {
-        return cachedSchemaMetadata;
-      }
- 
-      subject = encodeURIComponent(subject);
- 
-      const response: AxiosResponse<SchemaMetadata> = await this.restService.handleRequest(
-        `/subjects/${subject}/versions/${version}?deleted=${deleted}`,
-        'GET'
-      );
-      this.versionToSchemaCache.set(cacheKey, response.data);
-      return response.data;
-    });
-  }
- 
-  async getLatestWithMetadata(subject: string, metadata: { [key: string]: string }, deleted: boolean = false): Promise<SchemaMetadata> {
-    const cacheKey = stringify({ subject, metadata, deleted });
- 
-    return await this.metadataToSchemaMutex.runExclusive(async () => {
-      const cachedSchemaMetadata: SchemaMetadata | undefined = this.metadataToSchemaCache.get(cacheKey);
-      if (cachedSchemaMetadata) {
-        return cachedSchemaMetadata;
-      }
- 
-      subject = encodeURIComponent(subject);
- 
-      let metadataStr = '';
- 
-      for (const key in metadata) {
-        const encodedKey = encodeURIComponent(key);
-        const encodedValue = encodeURIComponent(metadata[key]);
-        metadataStr += `&key=${encodedKey}&value=${encodedValue}`;
-      }
- 
-      const response: AxiosResponse<SchemaMetadata> = await this.restService.handleRequest(
-        `/subjects/${subject}/metadata?deleted=${deleted}&${metadataStr}`,
-        'GET'
-      );
-      this.metadataToSchemaCache.set(cacheKey, response.data);
-      return response.data;
-    });
-  }
- 
- 
-  async getAllVersions(subject: string): Promise<number[]> {
-    const response: AxiosResponse<number[]> = await this.restService.handleRequest(
-      `/subjects/${subject}/versions`,
-      'GET'
-    );
-    return response.data;
-  }
- 
-  async getVersion(subject: string, schema: SchemaInfo, normalize: boolean = false): Promise<number> {
-    const cacheKey = stringify({ subject, schema: minimize(schema) });
- 
-    return await this.schemaToVersionMutex.runExclusive(async () => {
-      const cachedVersion: number | undefined = this.schemaToVersionCache.get(cacheKey);
-      if (cachedVersion) {
-        return cachedVersion;
-      }
- 
-      subject = encodeURIComponent(subject);
- 
-      const response: AxiosResponse<SchemaMetadata> = await this.restService.handleRequest(
-        `/subjects/${subject}?normalize=${normalize}`,
-        'POST',
-        schema
-      );
-      this.schemaToVersionCache.set(cacheKey, response.data.version);
-      return response.data.version!;
-    });
-  }
- 
-  async getAllSubjects(): Promise<string[]> {
-    const response: AxiosResponse<string[]> = await this.restService.handleRequest(
-      `/subjects`,
-      'GET'
-    );
-    return response.data;
-  }
- 
-  async deleteSubject(subject: string, permanent: boolean = false): Promise<number[]> {
-    await this.infoToSchemaMutex.runExclusive(async () => {
-      this.infoToSchemaCache.forEach((_, key) => {
-        const parsedKey = JSON.parse(key);
-        if (parsedKey.subject === subject) {
-          this.infoToSchemaCache.delete(key);
-        }
-      });
-    });
- 
-    await this.schemaToVersionMutex.runExclusive(async () => {
-      this.schemaToVersionCache.forEach((_, key) => {
-        const parsedKey = JSON.parse(key);
-        if (parsedKey.subject === subject) {
-          this.schemaToVersionCache.delete(key);
-        }
-      });
-    });
- 
-    await this.versionToSchemaMutex.runExclusive(async () => {
-      this.versionToSchemaCache.forEach((_, key) => {
-        const parsedKey = JSON.parse(key);
-        if (parsedKey.subject === subject) {
-          this.versionToSchemaCache.delete(key);
-        }
-      });
-    });
- 
-    await this.idToSchemaInfoMutex.runExclusive(async () => {
-      this.idToSchemaInfoCache.forEach((_, key) => {
-        const parsedKey = JSON.parse(key);
-        if (parsedKey.subject === subject) {
-          this.idToSchemaInfoCache.delete(key);
-        }
-      });
-    });
- 
-    subject = encodeURIComponent(subject);
- 
-    const response: AxiosResponse<number[]> = await this.restService.handleRequest(
-      `/subjects/${subject}?permanent=${permanent}`,
-      'DELETE'
-    );
-    return response.data;
-  }
- 
-  async deleteSubjectVersion(subject: string, version: number, permanent: boolean = false): Promise<number> {
-    return await this.schemaToVersionMutex.runExclusive(async () => {
-      let metadataValue: SchemaMetadata | undefined;
- 
-      this.schemaToVersionCache.forEach((value, key) => {
-        const parsedKey = JSON.parse(key);
-        if (parsedKey.subject === subject && value === version) {
-          this.schemaToVersionCache.delete(key);
-          const infoToSchemaCacheKey = stringify({ subject: subject, schema: minimize(parsedKey.schema) });
- 
-          this.infoToSchemaMutex.runExclusive(async () => {
-            metadataValue = this.infoToSchemaCache.get(infoToSchemaCacheKey);
-            if (metadataValue) {
-              this.infoToSchemaCache.delete(infoToSchemaCacheKey);
-              const cacheKeyID = stringify({ subject: subject, id: metadataValue.id });
- 
-              this.idToSchemaInfoMutex.runExclusive(async () => {
-                this.idToSchemaInfoCache.delete(cacheKeyID);
-              });
-            }
-          });
-        }
-      });
- 
-      const cacheKey = stringify({ subject: subject, version: version });
-      this.versionToSchemaMutex.runExclusive(async () => {
-        this.versionToSchemaCache.delete(cacheKey);
-      });
- 
-      subject = encodeURIComponent(subject);
- 
-      const response: AxiosResponse<number> = await this.restService.handleRequest(
-        `/subjects/${subject}/versions/${version}?permanent=${permanent}`,
-        'DELETE'
-      );
-      return response.data;
-    });
-  }
- 
-  async testSubjectCompatibility(subject: string, schema: SchemaInfo): Promise<boolean> {
-    subject = encodeURIComponent(subject);
- 
-    const response: AxiosResponse<isCompatibleResponse> = await this.restService.handleRequest(
-      `/compatibility/subjects/${subject}/versions/latest`,
-      'POST',
-      schema
-    );
-    return response.data.is_compatible;
-  }
- 
-  async testCompatibility(subject: string, version: number, schema: SchemaInfo): Promise<boolean> {
-    subject = encodeURIComponent(subject);
- 
-    const response: AxiosResponse<isCompatibleResponse> = await this.restService.handleRequest(
-      `/compatibility/subjects/${subject}/versions/${version}`,
-      'POST',
-      schema
-    );
-    return response.data.is_compatible;
-  }
- 
-  async getCompatibility(subject: string): Promise<Compatibility> {
-    subject = encodeURIComponent(subject);
- 
-    const response: AxiosResponse<CompatibilityLevel> = await this.restService.handleRequest(
-      `/config/${subject}`,
-      'GET'
-    );
-    return response.data.compatibilityLevel!;
-  }
- 
-  async updateCompatibility(subject: string, update: Compatibility): Promise<Compatibility> {
-    subject = encodeURIComponent(subject);
- 
-    const response: AxiosResponse<CompatibilityLevel> = await this.restService.handleRequest(
-      `/config/${subject}`,
-      'PUT',
-      { compatibility: update }
-    );
-    return response.data.compatibility!;
-  }
- 
-  async getDefaultCompatibility(): Promise<Compatibility> {
-    const response: AxiosResponse<CompatibilityLevel> = await this.restService.handleRequest(
-      `/config`,
-      'GET'
-    );
-    return response.data.compatibilityLevel!;
-  }
- 
-  async updateDefaultCompatibility(update: Compatibility): Promise<Compatibility> {
-    const response: AxiosResponse<CompatibilityLevel> = await this.restService.handleRequest(
-      `/config`,
-      'PUT',
-      { compatibility: update }
-    );
-    return response.data.compatibility!;
-  }
- 
-  async getConfig(subject: string): Promise<ServerConfig> {
-    subject = encodeURIComponent(subject);
- 
-    const response: AxiosResponse<ServerConfig> = await this.restService.handleRequest(
-      `/config/${subject}`,
-      'GET'
-    );
-    return response.data;
-  }
- 
-  async updateConfig(subject: string, update: ServerConfig): Promise<ServerConfig> {
-    const response: AxiosResponse<ServerConfig> = await this.restService.handleRequest(
-      `/config/${subject}`,
-      'PUT',
-      update
-    );
-    return response.data;
-  }
- 
-  async getDefaultConfig(): Promise<ServerConfig> {
-    const response: AxiosResponse<ServerConfig> = await this.restService.handleRequest(
-      `/config`,
-      'GET'
-    );
-    return response.data;
-  }
- 
-  async updateDefaultConfig(update: ServerConfig): Promise<ServerConfig> {
-    const response: AxiosResponse<ServerConfig> = await this.restService.handleRequest(
-      `/config`,
-      'PUT',
-      update
-    );
-    return response.data;
-  }
- 
-  close(): void {
-    this.infoToSchemaCache.clear();
-    this.schemaToVersionCache.clear();
-    this.versionToSchemaCache.clear();
-    this.idToSchemaInfoCache.clear();
- 
-    return;
-  }
- 
-  // Cache methods for testing
-  async addToInfoToSchemaCache(subject: string, schema: SchemaInfo, metadata: SchemaMetadata): Promise<void> {
-    const cacheKey = stringify({ subject, schema: minimize(schema) });
-    await this.infoToSchemaMutex.runExclusive(async () => {
-      this.infoToSchemaCache.set(cacheKey, metadata);
-    });
-  }
- 
-  async addToSchemaToVersionCache(subject: string, schema: SchemaInfo, version: number): Promise<void> {
-    const cacheKey = stringify({ subject, schema: minimize(schema) });
-    await this.schemaToVersionMutex.runExclusive(async () => {
-      this.schemaToVersionCache.set(cacheKey, version);
-    });
-  }
- 
-  async addToVersionToSchemaCache(subject: string, version: number, metadata: SchemaMetadata): Promise<void> {
-    const cacheKey = stringify({ subject, version });
-    await this.versionToSchemaMutex.runExclusive(async () => {
-      this.versionToSchemaCache.set(cacheKey, metadata);
-    });
-  }
- 
-  async addToIdToSchemaInfoCache(subject: string, id: number, schema: SchemaInfo): Promise<void> {
-    const cacheKey = stringify({ subject, id });
-    await this.idToSchemaInfoMutex.runExclusive(async () => {
-      this.idToSchemaInfoCache.set(cacheKey, schema);
-    });
-  }
- 
-  async getInfoToSchemaCacheSize(): Promise<number> {
-    return await this.infoToSchemaMutex.runExclusive(async () => {
-      return this.infoToSchemaCache.size;
-    });
-  }
- 
-  async getSchemaToVersionCacheSize(): Promise<number> {
-    return await this.schemaToVersionMutex.runExclusive(async () => {
-      return this.schemaToVersionCache.size;
-    });
-  }
- 
-  async getVersionToSchemaCacheSize(): Promise<number> {
-    return await this.versionToSchemaMutex.runExclusive(async () => {
-      return this.versionToSchemaCache.size;
-    });
-  }
- 
-  async getIdToSchemaInfoCacheSize(): Promise<number> {
-    return await this.idToSchemaInfoMutex.runExclusive(async () => {
-      return this.idToSchemaInfoCache.size;
-    });
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/avro.ts.html b/coverage/lcov-report/schemaregistry/serde/avro.ts.html deleted file mode 100644 index 5043660e..00000000 --- a/coverage/lcov-report/schemaregistry/serde/avro.ts.html +++ /dev/null @@ -1,1243 +0,0 @@ - - - - - - Code coverage report for schemaregistry/serde/avro.ts - - - - - - - - - -
-
-

All files / schemaregistry/serde avro.ts

-
- -
- 69.31% - Statements - 131/189 -
- - -
- 52.32% - Branches - 45/86 -
- - -
- 88% - Functions - 22/25 -
- - -
- 70.27% - Lines - 130/185 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -3871x -  -  -  -  -  -  -  -1x -  -  -  -1x -  -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -2x -2x -2x -1x -  -2x -2x -  -  -  -  -2x -  -  -2x -  -  -  -2x -2x -  -  -  -2x -  -2x -2x -2x -  -2x -2x -  -  -  -1x -1x -  -  -  -3x -2x -2x -2x -  -  -  -  -  -  -1x -  -  -  -5x -5x -5x -4x -  -5x -5x -  -  -  -  -5x -  -  -5x -  -  -  -5x -5x -5x -5x -5x -  -  -5x -  -  -5x -5x -  -  -  -5x -  -  -  -  -  -  -  -5x -  -  -  -5x -  -  -5x -  -5x -  -5x -  -  -  -4x -4x -  -  -  -9x -5x -5x -5x -  -  -  -  -  -  -  -  -  -  -  -12x -12x -5x -  -  -7x -  -7x -  -  -  -53x -  -  -53x -  -  -53x -  -  -7x -7x -  -  -  -7x -7x -  -  -  -18x -  -  -18x -18x -13x -  -18x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -5x -5x -13x -  -5x -  -13x -13x -13x -7x -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -13x -13x -13x -  -  -  -  -  -  -13x -13x -  -  -  -  -13x -  -  -13x -  -  -  -  -26x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -10x -  -4x -  -4x -  -  -  -  -  -  -4x -  -4x -  -  -  -  -  -  -  -  -13x -13x -7x -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -7x -7x -7x -  -  -7x -  -  -  -  -30x -23x -7x -  -  -  -7x -7x -7x -7x -7x -7x -7x -  -7x -7x -  -7x -  -  -7x -7x -23x -23x -23x -7x -  -23x -23x -23x -  -  -  -  -  -  -  -7x -7x -  - 
import {
-  Deserializer, DeserializerConfig,
-  FieldTransform,
-  FieldType, Migration, RefResolver,
-  RuleConditionError,
-  RuleContext, SerdeType,
-  Serializer, SerializerConfig
-} from "./serde";
-import {
-  Client, RuleMode,
-  SchemaInfo
-} from "../schemaregistry-client";
-import avro, { ForSchemaOptions, Type, types } from "avsc";
-import UnwrappedUnionType = types.UnwrappedUnionType
-import WrappedUnionType = types.WrappedUnionType
-import ArrayType = types.ArrayType
-import MapType = types.MapType
-import RecordType = types.RecordType
-import Field = types.Field
-import { LRUCache } from 'lru-cache'
-import {getRuleExecutors} from "./rule-registry";
-import stringify from "json-stringify-deterministic";
- 
-type TypeHook = (schema: avro.Schema, opts: ForSchemaOptions) => Type | undefined
- 
-export type AvroSerdeConfig = Partial<ForSchemaOptions>
- 
-export interface AvroSerde {
-  schemaToTypeCache: LRUCache<string, [avro.Type, Map<string, string>]>
-}
- 
-export type AvroSerializerConfig = SerializerConfig & AvroSerdeConfig
- 
-export class AvroSerializer extends Serializer implements AvroSerde {
-  schemaToTypeCache: LRUCache<string, [avro.Type, Map<string, string>]>
- 
-  constructor(client: Client, serdeType: SerdeType, conf: AvroSerializerConfig) {
-    super(client, serdeType, conf)
-    this.schemaToTypeCache = new LRUCache<string, [Type, Map<string, string>]>({ max: this.conf.cacheCapacity ?? 1000 })
-    this.fieldTransformer = async (ctx: RuleContext, fieldTransform: FieldTransform, msg: any) => {
-      return await this.fieldTransform(ctx, fieldTransform, msg)
-    }
-    for (const rule of getRuleExecutors()) {
-      rule.configure(client.config(), new Map<string, string>(Object.entries(conf.ruleConfig ?? {})))
-    }
-  }
- 
-  async serialize(topic: string, msg: any): Promise<Buffer> {
-    Iif (this.client == null) {
-      throw new Error('client is not initialized')
-    }
-    Iif (msg == null) {
-      throw new Error('message is empty')
-    }
- 
-    let avroSchema = Type.forValue(msg)
-    const schema: SchemaInfo = {
-      schemaType: 'AVRO',
-      schema: JSON.stringify(avroSchema),
-    }
-    const [id, info] = await this.getId(topic, msg, schema)
-    let deps: Map<string, string>
-    [avroSchema, deps] = await this.toType(info)
-    const subject = this.subjectName(topic, info)
-    msg = await this.executeRules(
-      subject, topic, RuleMode.WRITE, null, info, msg, getInlineTags(info, deps))
-    const msgBytes = avroSchema.toBuffer(msg)
-    return this.writeBytes(id, msgBytes)
-  }
- 
-  async fieldTransform(ctx: RuleContext, fieldTransform: FieldTransform, msg: any): Promise<any> {
-    const [schema, ] = await this.toType(ctx.target)
-    return await transform(ctx, schema, msg, fieldTransform)
-  }
- 
-  async toType(info: SchemaInfo): Promise<[Type, Map<string, string>]> {
-    return toType(this.client, this.conf as AvroDeserializerConfig, this, info, async (client, info) => {
-      const deps = new Map<string, string>()
-      await this.resolveReferences(client, info, deps)
-      return deps
-    })
-  }
-}
- 
-export type AvroDeserializerConfig = DeserializerConfig & AvroSerdeConfig
- 
-export class AvroDeserializer extends Deserializer implements AvroSerde {
-  schemaToTypeCache: LRUCache<string, [avro.Type, Map<string, string>]>
- 
-  constructor(client: Client, serdeType: SerdeType, conf: AvroDeserializerConfig) {
-    super(client, serdeType, conf)
-    this.schemaToTypeCache = new LRUCache<string, [Type, Map<string, string>]>({ max: this.conf.cacheCapacity ?? 1000 })
-    this.fieldTransformer = async (ctx: RuleContext, fieldTransform: FieldTransform, msg: any) => {
-      return await this.fieldTransform(ctx, fieldTransform, msg)
-    }
-    for (const rule of getRuleExecutors()) {
-      rule.configure(client.config(), new Map<string, string>(Object.entries(conf.ruleConfig ?? {})))
-    }
-  }
- 
-  async deserialize(topic: string, payload: Buffer): Promise<any> {
-    Iif (!Buffer.isBuffer(payload)) {
-      throw new Error('Invalid buffer')
-    }
-    Iif (payload.length === 0) {
-      return null
-    }
- 
-    const info = await this.getSchema(topic, payload)
-    const subject = this.subjectName(topic, info)
-    const readerMeta = await this.getReaderSchema(subject)
-    let migrations: Migration[] = []
-    Iif (readerMeta != null) {
-      migrations = await this.getMigrations(subject, info, readerMeta)
-    }
-    const [writer, deps] = await this.toType(info)
- 
-    let msg: any
-    const msgBytes = payload.subarray(5)
-    Iif (migrations.length > 0) {
-      msg = writer.fromBuffer(msgBytes)
-      msg = await this.executeMigrations(migrations, subject, topic, msg)
-    } else {
-      Iif (readerMeta != null) {
-        const [reader, ] = await this.toType(readerMeta)
-        if (reader.equals(writer)) {
-          msg = reader.fromBuffer(msgBytes)
-        } else {
-          msg = reader.fromBuffer(msgBytes, reader.createResolver(writer))
-        }
-      } else {
-        msg = writer.fromBuffer(msgBytes)
-      }
-    }
-    let target: SchemaInfo
-    Iif (readerMeta != null) {
-      target = readerMeta
-    } else {
-      target = info
-    }
-    msg = await this.executeRules(
-      subject, topic, RuleMode.READ, null, target, msg, getInlineTags(info, deps))
-    return msg
-  }
- 
-  async fieldTransform(ctx: RuleContext, fieldTransform: FieldTransform, msg: any): Promise<any> {
-    const [schema, ] = await this.toType(ctx.target)
-    return await transform(ctx, schema, msg, fieldTransform)
-  }
- 
-  async toType(info: SchemaInfo): Promise<[Type, Map<string, string>]> {
-    return toType(this.client, this.conf as AvroDeserializerConfig, this, info, async (client, info) => {
-      const deps = new Map<string, string>()
-      await this.resolveReferences(client, info, deps)
-      return deps
-    })
-  }
-}
- 
-async function toType(
-  client: Client,
-  conf: AvroSerdeConfig,
-  serde: AvroSerde,
-  info: SchemaInfo,
-  refResolver: RefResolver,
-): Promise<[Type, Map<string, string>]> {
-  let tuple = serde.schemaToTypeCache.get(stringify(info.schema))
-  if (tuple != null) {
-    return tuple
-  }
- 
-  const deps = await refResolver(client, info)
- 
-  const addReferencedSchemas = (userHook?: TypeHook): TypeHook | undefined => (
-    schema: avro.Schema,
-    opts: ForSchemaOptions,
-  ) => {
-    deps.forEach((_name, schema) => {
-      avro.Type.forSchema(JSON.parse(schema), opts)
-    })
-    Iif (userHook) {
-      return userHook(schema, opts)
-    }
-    return
-  }
- 
-  const avroOpts = conf
-  let type = avro.Type.forSchema(JSON.parse(info.schema), {
-    ...avroOpts,
-    typeHook: addReferencedSchemas(avroOpts?.typeHook),
-  })
-  serde.schemaToTypeCache.set(stringify(info.schema), [type, deps])
-  return [type, deps]
-}
- 
-async function transform(ctx: RuleContext, schema: Type, msg: any, fieldTransform: FieldTransform): Promise<any> {
-  Iif (msg == null || schema == null) {
-    return msg
-  }
-  const fieldCtx = ctx.currentField()
-  if (fieldCtx != null) {
-    fieldCtx.type = getType(schema)
-  }
-  switch (schema.typeName) {
-    case 'union:unwrapped':
-    case 'union:wrapped':
-      const subschema = resolveUnion(schema, msg)
-      Iif (subschema == null) {
-        return null
-      }
-      return await transform(ctx, subschema, msg, fieldTransform)
-    case 'array':
-      const arraySchema = schema as ArrayType
-      const array = msg as any[]
-      return await Promise.all(array.map(item => transform(ctx, arraySchema.itemsType, item, fieldTransform)))
-    case 'map':
-      const mapSchema = schema as MapType
-      const map = msg as Map<string, any>
-      for (const key of Object.keys(map)) {
-        map.set(key, await transform(ctx, mapSchema.valuesType, map.get(key), fieldTransform))
-      }
-      return map
-    case 'record':
-      const recordSchema = schema as RecordType
-      const record = msg as Record<string, any>
-      for (const field of recordSchema.fields) {
-        await transformField(ctx, recordSchema, field, record, record[field.name], fieldTransform)
-      }
-      return record
-    default:
-      if (fieldCtx != null) {
-        const ruleTags = ctx.rule.tags ?? []
-        if (ruleTags == null || ruleTags.length === 0 || !disjoint(new Set<string>(ruleTags), fieldCtx.tags)) {
-          return await fieldTransform.transform(ctx, fieldCtx, msg)
-        }
-      }
-      return msg
-  }
-}
- 
-async function transformField(
-  ctx: RuleContext,
-  recordSchema: RecordType,
-  field: Field,
-  record: Record<string, any>,
-  val: any,
-  fieldTransform: FieldTransform,
-): Promise<void> {
-  const fullName = recordSchema.name + '.' + field.name
-  try {
-    ctx.enterField(
-      val,
-      fullName,
-      field.name,
-      getType(field.type),
-      ctx.getInlineTags(fullName),
-    )
-    const newVal = await transform(ctx, field.type, record[field.name], fieldTransform)
-    Iif (ctx.rule.kind === 'CONDITION') {
-      Iif (!newVal) {
-        throw new RuleConditionError(ctx.rule)
-      }
-    } else {
-      record[field.name] = newVal
-    }
-  } finally {
-    ctx.leaveField()
-  }
-}
- 
-function getType(schema: Type): FieldType {
-  switch (schema.typeName) {
-    case 'record':
-      return FieldType.RECORD
-    case 'enum':
-      return FieldType.ENUM
-    case 'array':
-      return FieldType.ARRAY
-    case 'map':
-      return FieldType.MAP
-    case 'union:unwrapped':
-    case 'union:wrapped':
-      return FieldType.COMBINED
-    case 'fixed':
-      return FieldType.FIXED
-    case 'string':
-      return FieldType.STRING
-    case 'bytes':
-      return FieldType.BYTES
-    case 'int':
-      return FieldType.INT
-    case 'abstract:long':
-    case 'long':
-      return FieldType.LONG
-    case 'float':
-      return FieldType.FLOAT
-    case 'double':
-      return FieldType.DOUBLE
-    case 'boolean':
-      return FieldType.BOOLEAN
-    case 'null':
-      return FieldType.NULL
-    default:
-      return FieldType.NULL
-  }
-}
- 
-function disjoint(slice1: Set<string>, map1: Set<string>): boolean {
-  for (const v of slice1) {
-    if (map1.has(v)) {
-      return false
-    }
-  }
-  return true
-}
- 
-function resolveUnion(schema: Type, msg: any): Type | null {
-  let unionTypes = null
-  if (schema.typeName === 'union:unwrapped') {
-    const union = schema as UnwrappedUnionType
-    unionTypes = union.types.slice()
-  } else Iif (schema.typeName === 'union:wrapped') {
-    const union = schema as WrappedUnionType
-    unionTypes = union.types.slice()
-  }
-  Iif (unionTypes != null) {
-    for (let i = 0; i < unionTypes.length; i++) {
-      Iif (unionTypes[i].isValid(msg)) {
-        return unionTypes[i]
-      }
-    }
-  }
-  return null
-}
- 
-function getInlineTags(info: SchemaInfo, deps: Map<string, string>): Map<string, Set<string>> {
-  const inlineTags = new Map<string, Set<string>>()
-  getInlineTagsRecursively('', '', JSON.parse(info.schema), inlineTags)
-  for (const depSchema of Object.values(deps)) {
-    getInlineTagsRecursively('', '', JSON.parse(depSchema), inlineTags)
-  }
-  return inlineTags
-}
- 
-// iterate over the object and get all properties named 'confluent:tags'
-function getInlineTagsRecursively(ns: string, name: string, schema: any, tags: Map<string, Set<string>>): void {
-  if (schema == null || typeof schema === 'string') {
-    return
-  } else Iif (Array.isArray(schema)) {
-    for (let i = 0; i < schema.length; i++) {
-      getInlineTagsRecursively(ns, name, schema[i], tags)
-    }
-  } else if (typeof schema === 'object') {
-    const type = schema['type']
-    if (type === 'record') {
-      let recordNs = schema['namespace']
-      let recordName = schema['name']
-      if (recordNs === undefined) {
-        recordNs = impliedNamespace(name)
-      }
-      if (recordNs == null) {
-        recordNs = ns
-      }
-      Iif (recordNs !== '' && !recordName.startsWith(recordNs)) {
-        recordName = recordNs + '.' + recordName
-      }
-      const fields = schema['fields']
-      for (const field of fields) {
-        const fieldTags = field['confluent:tags']
-        const fieldName = field['name']
-        if (fieldTags !== undefined && fieldName !== undefined) {
-          tags.set(recordName + '.' + fieldName, new Set(fieldTags))
-        }
-        const fieldType = field['type']
-        if (fieldType !== undefined) {
-          getInlineTagsRecursively(recordNs, recordName, fieldType, tags)
-        }
-      }
-    }
-  }
-}
- 
-function impliedNamespace(name: string): string | null {
-  const match = /^(.*)\.[^.]+$/.exec(name)
-  return match ? match[1] : null
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/buffer-wrapper.ts.html b/coverage/lcov-report/schemaregistry/serde/buffer-wrapper.ts.html deleted file mode 100644 index 32b00306..00000000 --- a/coverage/lcov-report/schemaregistry/serde/buffer-wrapper.ts.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - Code coverage report for schemaregistry/serde/buffer-wrapper.ts - - - - - - - - - -
-
-

All files / schemaregistry/serde buffer-wrapper.ts

-
- -
- 100% - Statements - 32/32 -
- - -
- 94.11% - Branches - 16/17 -
- - -
- 100% - Functions - 3/3 -
- - -
- 100% - Lines - 32/32 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -642x -2x -2x -  -2x -  -  -  -  -10x -10x -  -  -  -  -  -  -7x -  -5x -5x -6x -6x -  -  -  -2x -2x -10x -10x -  -  -7x -  -  -  -  -7x -7x -  -  -7x -14x -14x -14x -14x -  -  -7x -  -2x -2x -2x -2x -2x -2x -  -2x -  -  -5x -  -  - 
export const MAX_VARINT_LEN_16 = 3
-export const MAX_VARINT_LEN_32 = 5
-export const MAX_VARINT_LEN_64 = 10
- 
-export class BufferWrapper {
-  buf: Buffer
-  pos: number
- 
-  constructor(buf: Buffer) {
-    this.buf = buf
-    this.pos = 0
-  }
- 
-  // Adapted from avro-js
-  writeVarInt(n: number): void {
-    let f, m
- 
-    if (n >= -1073741824 && n < 1073741824) {
-      // Won't overflow, we can use integer arithmetic.
-      m = n >= 0 ? n << 1 : (~n << 1) | 1
-      do {
-        this.buf[this.pos] = m & 0x7f
-        m >>= 7
-      } while (m && (this.buf[this.pos++] |= 0x80))
-    } else {
-      // We have to use slower floating arithmetic.
-      f = n >= 0 ? n * 2 : -n * 2 - 1
-      do {
-        this.buf[this.pos] = f & 0x7f
-        f /= 128
-      } while (f >= 1 && (this.buf[this.pos++] |= 0x80))
-    }
-    this.pos++
-  }
- 
-  // Adapted from avro-js
-  readVarInt(): number {
-    let n = 0
-    let k = 0
-    let b, h, f, fk
- 
-    do {
-      b = this.buf[this.pos++]
-      h = b & 0x80
-      n |= (b & 0x7f) << k
-      k += 7
-    } while (h && k < 28)
- 
-    if (h) {
-      // Switch to float arithmetic, otherwise we might overflow.
-      f = n
-      fk = 268435456 // 2 ** 28.
-      do {
-        b = this.buf[this.pos++]
-        f += (b & 0x7f) * fk
-        fk *= 128
-      } while (b & 0x80)
-      return (f % 2 ? -(f + 1) : f) / 2
-    }
- 
-    return (n >> 1) ^ -(n & 1)
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/index.html b/coverage/lcov-report/schemaregistry/serde/index.html deleted file mode 100644 index 00615314..00000000 --- a/coverage/lcov-report/schemaregistry/serde/index.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - Code coverage report for schemaregistry/serde - - - - - - - - - -
-
-

All files schemaregistry/serde

-
- -
- 63.24% - Statements - 678/1072 -
- - -
- 41.53% - Branches - 189/455 -
- - -
- 69.12% - Functions - 103/149 -
- - -
- 63.4% - Lines - 667/1052 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
avro.ts -
-
69.31%131/18952.32%45/8688%22/2570.27%130/185
buffer-wrapper.ts -
-
100%32/3294.11%16/17100%3/3100%32/32
json-util.ts -
-
40.54%15/3726.08%6/2366.66%2/342.85%15/35
json.ts -
-
45.72%91/19923.59%21/8955.55%15/2745.95%91/198
protobuf.ts -
-
79.2%198/25049.43%44/8996.42%27/2879.01%192/243
rule-registry.ts -
-
70.58%12/17100%0/042.85%3/770.58%12/17
serde.ts -
-
55.27%173/31330%39/13054.71%29/5355.04%169/307
wildcard-matcher.ts -
-
74.28%26/3585.71%18/2166.66%2/374.28%26/35
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/json-util.ts.html b/coverage/lcov-report/schemaregistry/serde/json-util.ts.html deleted file mode 100644 index 16d1501f..00000000 --- a/coverage/lcov-report/schemaregistry/serde/json-util.ts.html +++ /dev/null @@ -1,451 +0,0 @@ - - - - - - Code coverage report for schemaregistry/serde/json-util.ts - - - - - - - - - -
-
-

All files / schemaregistry/serde json-util.ts

-
- -
- 40.54% - Statements - 15/37 -
- - -
- 26.08% - Branches - 6/23 -
- - -
- 66.66% - Functions - 2/3 -
- - -
- 42.85% - Lines - 15/35 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123  -  -  -  -  -  -  -1x -1x -  -  -  -  -  -  -  -1x -12x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -  -  -  -  -  -2x -  -  -  -  -  -4x -  -  -  -  -  -  -4x -  -  -  -4x -  -  -  -4x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -  -  -  -2x -  -  -  -10x -10x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  - 
/*
- * Copyright (c) 2023 Menglin "Mark" Xu <mark@remarkablemark.org>
- *           (c) 2024 Confluent, Inc.
- *
- * This software may be modified and distributed under the terms
- * of the MIT license.  See the LICENSE.txt file for details.
- */
-import validator from 'validator';
-import { deepStrictEqual } from 'assert';
- 
-/**
- * Generate JSON schema from value.
- *
- * @param value - Value.
- * @returns - JSON schema.
- */
-export function generateSchema(value: any): any {
-  switch (true) {
-    case value === undefined:
-    case typeof value === 'undefined':
-    case typeof value === 'function':
-    case typeof value === 'symbol':
-    case value instanceof Date:
-      throw new TypeError(`Invalid JSON value: ${String(value)}`);
- 
-    /**
-     * @see https://json-schema.org/understanding-json-schema/reference/null.html
-     */
-    case value === null:
-      return { type: 'null' };
- 
-    /**
-     * @see https://json-schema.org/understanding-json-schema/reference/numeric.html
-     */
-    case typeof value === 'number':
-      return { type: Number.isInteger(value) ? 'integer' : 'number' };
- 
-    /**
-     * @see https://json-schema.org/understanding-json-schema/reference/boolean.html
-     */
-    case typeof value === 'boolean':
-      return { type: 'boolean' };
- 
-    /**
-     * @see https://json-schema.org/understanding-json-schema/reference/string.html
-     */
-    case typeof value === 'string':
-      Iif (validator.isISO8601(value)) {
-        return {
-          type: 'string',
-          format: value.includes('T') ? 'date-time' : 'date',
-        };
-      }
- 
-      Iif (validator.isTime(value.split('+')[0], { mode: 'withSeconds' })) {
-        return { type: 'string', format: 'time' };
-      }
- 
-      Iif (validator.isEmail(value)) {
-        return { type: 'string', format: 'email' };
-      }
- 
-      return { type: 'string' };
- 
-    /**
-     * @see https://json-schema.org/understanding-json-schema/reference/array.html
-     */
-    case Array.isArray(value):
-      Iif (value.length === 1) {
-        return { type: 'array', items: generateSchema(value[0]) };
-      }
- 
-      Iif (value.length > 1) {
-        const items = value.map(generateSchema);
-        Iif (deepEqual(...items)) {
-          return { type: 'array', items: items[0] };
-        }
-      }
- 
-      return { type: 'array' };
- 
-    /**
-     * @see https://json-schema.org/understanding-json-schema/reference/object.html
-     */
-    case value instanceof Object:
-      Iif (!Object.keys(value).length) {
-        return { type: 'object' };
-      }
- 
-      return {
-        type: 'object',
-        properties: Object.entries(value).reduce(
-          (accumulator, [key, value]) => {
-            accumulator[key] = generateSchema(value);
-            return accumulator;
-          },
-          {} as Record<string, any>,
-        ),
-      };
- 
-    /* istanbul ignore next */
-    default:
-      throw new TypeError(`Invalid JSON value: ${value}`);
-  }
-}
- 
-/**
- * Tests for deep equality between the `actual` and `expected` parameters.
- */
-export function deepEqual(...args: unknown[]): boolean {
-  try {
-    for (let index = 0, count = args.length; index < count; index++) {
-      Iif (index + 1 === count) {
-        continue;
-      }
-      deepStrictEqual(args[index], args[index + 1]);
-    }
-    return true;
-  } catch (error) {
-    return false;
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/json.ts.html b/coverage/lcov-report/schemaregistry/serde/json.ts.html deleted file mode 100644 index 9f30dca9..00000000 --- a/coverage/lcov-report/schemaregistry/serde/json.ts.html +++ /dev/null @@ -1,1318 +0,0 @@ - - - - - - Code coverage report for schemaregistry/serde/json.ts - - - - - - - - - -
-
-

All files / schemaregistry/serde json.ts

-
- -
- 45.72% - Statements - 91/199 -
- - -
- 23.59% - Branches - 21/89 -
- - -
- 55.55% - Functions - 15/27 -
- - -
- 45.95% - Lines - 91/198 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -4121x -  -  -  -  -  -  -  -1x -  -  -  -  -1x -1x -1x -1x -  -  -  -  -1x -  -  -1x -  -  -1x -1x -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -2x -2x -2x -2x -1x -  -2x -2x -  -  -  -  -2x -  -  -2x -  -  -  -2x -2x -  -  -  -2x -2x -2x -2x -2x -  -  -  -  -  -2x -  -  -  -1x -1x -  -  -1x -  -  -  -1x -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -2x -2x -2x -2x -1x -  -2x -2x -  -  -  -  -2x -  -  -2x -  -  -  -2x -2x -  -  -  -  -  -  -2x -2x -2x -2x -  -  -2x -2x -2x -  -  -  -2x -  -  -2x -  -2x -2x -  -  -  -1x -1x -  -  -  -1x -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -2x -  -  -  -2x -  -2x -  -  -  -  -  -  -  -2x -2x -  -2x -  -  -2x -  -2x -2x -  -  -  -2x -  -  -2x -2x -  -  -2x -  -  -  -  -  -2x -  -  -  -  -  -2x -  -  -  -  -  -2x -  -  -  -  -  -  -2x -  -  -2x -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -  -  -2x -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import {
-  Deserializer, DeserializerConfig,
-  FieldTransform,
-  FieldType, Migration, RefResolver, RuleConditionError,
-  RuleContext,
-  SerdeType, SerializationError,
-  Serializer, SerializerConfig
-} from "./serde";
-import {
-  Client, RuleMode,
-  SchemaInfo
-} from "../schemaregistry-client";
-import Ajv, {ErrorObject} from "ajv";
-import Ajv2019 from "ajv/dist/2019";
-import Ajv2020 from "ajv/dist/2020";
-import * as draft6MetaSchema from 'ajv/dist/refs/json-schema-draft-06.json'
-import * as draft7MetaSchema from 'ajv/dist/refs/json-schema-draft-07.json'
-import {
-  DereferencedJSONSchemaDraft07,
-  DereferencedJSONSchemaDraft2020_12,
-} from '@criteria/json-schema'
-import {
-  dereferenceJSONSchema as dereferenceJSONSchemaDraft2020_12,
-} from '@criteria/json-schema/draft-2020-12'
-import {
-  dereferenceJSONSchema as dereferenceJSONSchemaDraft07,
-} from '@criteria/json-schema/draft-07'
-import { validateJSON } from '@criteria/json-schema-validation'
-import { LRUCache } from "lru-cache";
-import { generateSchema } from "./json-util";
-import {getRuleExecutors} from "./rule-registry";
-import stringify from "json-stringify-deterministic";
- 
-export interface ValidateFunction {
-  (this: any, data: any): boolean
-  errors?: null | ErrorObject[]
-}
- 
-export type DereferencedJSONSchema = DereferencedJSONSchemaDraft07 | DereferencedJSONSchemaDraft2020_12
- 
-export type JsonSerdeConfig = ConstructorParameters<typeof Ajv>[0] & {
-  validate?: boolean
-}
- 
-export interface JsonSerde {
-  schemaToTypeCache: LRUCache<string, DereferencedJSONSchema>
-  schemaToValidateCache: LRUCache<string, ValidateFunction>
-}
- 
-export type JsonSerializerConfig = SerializerConfig & JsonSerdeConfig
- 
-export class JsonSerializer extends Serializer implements JsonSerde {
-  schemaToTypeCache: LRUCache<string, DereferencedJSONSchema>
-  schemaToValidateCache: LRUCache<string, ValidateFunction>
- 
-  constructor(client: Client, serdeType: SerdeType, conf: JsonSerializerConfig) {
-    super(client, serdeType, conf)
-    this.schemaToTypeCache = new LRUCache<string, DereferencedJSONSchema>({ max: this.config().cacheCapacity ?? 1000 })
-    this.schemaToValidateCache = new LRUCache<string, ValidateFunction>({ max: this.config().cacheCapacity ?? 1000 })
-    this.fieldTransformer = async (ctx: RuleContext, fieldTransform: FieldTransform, msg: any) => {
-      return await this.fieldTransform(ctx, fieldTransform, msg)
-    }
-    for (const rule of getRuleExecutors()) {
-      rule.configure(client.config(), new Map<string, string>(Object.entries(conf.ruleConfig ?? {})))
-    }
-  }
- 
-  async serialize(topic: string, msg: any): Promise<Buffer> {
-    Iif (this.client == null) {
-      throw new Error('client is not initialized')
-    }
-    Iif (msg == null) {
-      throw new Error('message is empty')
-    }
- 
-    const jsonSchema = generateSchema(msg)
-    const schema: SchemaInfo = {
-      schemaType: 'JSON',
-      schema: JSON.stringify(jsonSchema),
-    }
-    const [id, info] = await this.getId(topic, msg, schema)
-    const subject = this.subjectName(topic, info)
-    msg = await this.executeRules(subject, topic, RuleMode.WRITE, null, info, msg, null)
-    const msgBytes = Buffer.from(JSON.stringify(msg))
-    Iif ((this.conf as JsonSerdeConfig).validate) {
-      const validate = await this.toValidateFunction(info)
-      Iif (validate != null && !validate(msg)) {
-        throw new SerializationError('Invalid message')
-      }
-    }
-    return this.writeBytes(id, msgBytes)
-  }
- 
-  async fieldTransform(ctx: RuleContext, fieldTransform: FieldTransform, msg: any): Promise<any> {
-    const schema = this.toType(ctx.target)
-    Iif (typeof schema === 'boolean') {
-      return msg
-    }
-    return await transform(ctx, schema, '$', msg, fieldTransform)
-  }
- 
-  toType(info: SchemaInfo): DereferencedJSONSchema {
-    return toType(this.client, this.conf as JsonDeserializerConfig, this, info, async (client, info) => {
-      const deps = new Map<string, string>()
-      await this.resolveReferences(client, info, deps)
-      return deps
-    })
-  }
- 
-  async toValidateFunction(info: SchemaInfo): Promise<ValidateFunction | undefined> {
-    return await toValidateFunction(this.client, this.conf as JsonDeserializerConfig, this, info, async (client, info) => {
-        const deps = new Map<string, string>()
-        await this.resolveReferences(client, info, deps)
-        return deps
-      },
-    )
-  }
-}
- 
-export type JsonDeserializerConfig = DeserializerConfig & JsonSerdeConfig
- 
-export class JsonDeserializer extends Deserializer implements JsonSerde {
-  schemaToTypeCache: LRUCache<string, DereferencedJSONSchema>
-  schemaToValidateCache: LRUCache<string, ValidateFunction>
- 
-  constructor(client: Client, serdeType: SerdeType, conf: JsonDeserializerConfig) {
-    super(client, serdeType, conf)
-    this.schemaToTypeCache = new LRUCache<string, DereferencedJSONSchema>({ max: this.config().cacheCapacity ?? 1000 })
-    this.schemaToValidateCache = new LRUCache<string, ValidateFunction>({ max: this.config().cacheCapacity ?? 1000 })
-    this.fieldTransformer = async (ctx: RuleContext, fieldTransform: FieldTransform, msg: any) => {
-      return await this.fieldTransform(ctx, fieldTransform, msg)
-    }
-    for (const rule of getRuleExecutors()) {
-      rule.configure(client.config(), new Map<string, string>(Object.entries(conf.ruleConfig ?? {})))
-    }
-  }
- 
-  async deserialize(topic: string, payload: Buffer): Promise<any> {
-    Iif (!Buffer.isBuffer(payload)) {
-      throw new Error('Invalid buffer')
-    }
-    Iif (payload.length === 0) {
-      return null
-    }
- 
-    const info = await this.getSchema(topic, payload)
-    Iif ((this.conf as JsonSerdeConfig).validate) {
-      const validate = await this.toValidateFunction(info)
-      Iif (validate != null && !validate(JSON.parse(payload.subarray(5).toString()))) {
-        throw new SerializationError('Invalid message')
-      }
- 
-    }
-    const subject = this.subjectName(topic, info)
-    const readerMeta = await this.getReaderSchema(subject)
-    let migrations: Migration[] = []
-    Iif (readerMeta != null) {
-      migrations = await this.getMigrations(subject, info, readerMeta)
-    }
-    const msgBytes = payload.subarray(5)
-    let msg = JSON.parse(msgBytes.toString())
-    Iif (migrations.length > 0) {
-      msg = await this.executeMigrations(migrations, subject, topic, msg)
-    }
-    let target: SchemaInfo
-    Iif (readerMeta != null) {
-      target = readerMeta
-    } else {
-      target = info
-    }
-    msg = this.executeRules(subject, topic, RuleMode.READ, null, target, msg, null)
-    return msg
-  }
- 
-  async fieldTransform(ctx: RuleContext, fieldTransform: FieldTransform, msg: any): Promise<any> {
-    const schema = this.toType(ctx.target)
-    return await transform(ctx, schema, '$', msg, fieldTransform)
-  }
- 
-  toType(info: SchemaInfo): DereferencedJSONSchema {
-    return toType(this.client, this.conf as JsonDeserializerConfig, this, info, async (client, info) => {
-      const deps = new Map<string, string>()
-      await this.resolveReferences(client, info, deps)
-      return deps
-    })
-  }
- 
-  async toValidateFunction(info: SchemaInfo): Promise<ValidateFunction | undefined> {
-    return await toValidateFunction(this.client, this.conf as JsonDeserializerConfig, this, info, async (client, info) => {
-        const deps = new Map<string, string>()
-        await this.resolveReferences(client, info, deps)
-        return deps
-      },
-    )
-  }
-}
- 
-async function toValidateFunction(
-  client: Client,
-    conf: JsonSerdeConfig,
-    serde: JsonSerde,
-    info: SchemaInfo,
-    refResolver: RefResolver,
-): Promise<ValidateFunction | undefined> {
-  let fn = serde.schemaToValidateCache.get(stringify(info.schema))
-  Iif (fn != null) {
-    return fn
-  }
- 
-  const deps = await refResolver(client, info)
- 
-  const json = JSON.parse(info.schema)
-  const spec = json.$schema
-  if (spec === 'http://json-schema.org/draft/2020-12/schema') {
-    const ajv2020 = new Ajv2020(conf as JsonSerdeConfig)
-    deps.forEach((name, schema) => {
-      ajv2020.addSchema(JSON.parse(schema), name)
-    })
-    fn = ajv2020.compile(json)
-  } else {
-    const ajv = new Ajv2019(conf as JsonSerdeConfig)
-    ajv.addMetaSchema(draft6MetaSchema)
-    ajv.addMetaSchema(draft7MetaSchema)
-    deps.forEach((name, schema) => {
-      ajv.addSchema(JSON.parse(schema), name)
-    })
-    fn = ajv.compile(json)
-  }
-  serde.schemaToValidateCache.set(stringify(info.schema), fn)
-  return fn
-}
- 
-async function toType(
-  client: Client,
-  conf: JsonSerdeConfig,
-  serde: JsonSerde,
-  info: SchemaInfo,
-  refResolver: RefResolver,
-): Promise<DereferencedJSONSchema> {
-  let type = serde.schemaToTypeCache.get(stringify(info.schema))
-  Iif (type != null) {
-    return type
-  }
- 
-  const deps = await refResolver(client, info)
- 
-  const retrieve = (uri: string) => {
-    const data = deps.get(uri)
-    Iif (data == null) {
-      throw new SerializationError(`Schema not found: ${uri}`)
-    }
-    return JSON.parse(data)
-  }
- 
-  const json = JSON.parse(info.schema)
-  const spec = json.$schema
-  let schema
-  Iif (spec === 'http://json-schema.org/draft/2020-12/schema') {
-    schema = await dereferenceJSONSchemaDraft2020_12(json, { retrieve })
-  } else {
-    schema = await dereferenceJSONSchemaDraft07(json, { retrieve })
-  }
-  serde.schemaToTypeCache.set(stringify(info.schema), schema)
-  return schema
-}
- 
-async function transform(ctx: RuleContext, schema: DereferencedJSONSchema, path:string, msg: any, fieldTransform: FieldTransform): Promise<any> {
-  Iif (msg == null || schema == null || typeof schema === 'boolean') {
-    return msg
-  }
-  let fieldCtx = ctx.currentField()
-  Iif (fieldCtx != null) {
-    fieldCtx.type = getType(schema)
-  }
-  Iif (schema.allOf != null && schema.allOf.length > 0) {
-    let subschema = validateSubschemas(schema.allOf, msg)
-    Iif (subschema != null) {
-      return await transform(ctx, subschema, path, msg, fieldTransform)
-    }
-  }
-  Iif (schema.anyOf != null && schema.anyOf.length > 0) {
-    let subschema = validateSubschemas(schema.anyOf, msg)
-    Iif (subschema != null) {
-      return await transform(ctx, subschema, path, msg, fieldTransform)
-    }
-  }
-  Iif (schema.oneOf != null && schema.oneOf.length > 0) {
-    let subschema = validateSubschemas(schema.oneOf, msg)
-    Iif (subschema != null) {
-      return await transform(ctx, subschema, path, msg, fieldTransform)
-    }
-  }
-  Iif (schema.items != null) {
-    Iif (Array.isArray(msg)) {
-      for (let i = 0; i < msg.length; i++) {
-        msg[i] = await transform(ctx, schema.items, path, msg[i], fieldTransform)
-      }
-    }
-  }
-  Iif (schema.$ref != null) {
-    return await transform(ctx, schema.$ref, path, msg, fieldTransform)
-  }
-  let type = getType(schema)
-  switch (type) {
-    case FieldType.RECORD:
-      Iif (schema.properties != null) {
-        for (let [propName, propSchema] of Object.entries(schema.properties)) {
-          let value = msg[propName]
-          await transformField(ctx, path, propName, msg, value, propSchema, fieldTransform)
-        }
-      }
-      return msg
-    case FieldType.ENUM:
-    case FieldType.STRING:
-    case FieldType.INT:
-    case FieldType.DOUBLE:
-    case FieldType.BOOLEAN:
-      Iif (fieldCtx != null) {
-        const ruleTags = ctx.rule.tags
-        Iif (ruleTags == null || ruleTags.length === 0 || !disjoint(new Set<string>(ruleTags), fieldCtx.tags)) {
-          return await fieldTransform.transform(ctx, fieldCtx, msg)
-        }
-      }
-  }
- 
-  return msg
-}
- 
-async function transformField(ctx: RuleContext, path: string, propName: string, msg: any, value: any,
-                        propSchema: DereferencedJSONSchema,
-                        fieldTransform: FieldTransform): Promise<void> {
-  const fullName = path + '.' + propName
-  try {
-    ctx.enterField(msg, fullName, propName, getType(propSchema), getInlineTags(propSchema))
-    const newVal = await transform(ctx, propSchema, fullName, value, fieldTransform)
-    if (ctx.rule.kind === 'CONDITION') {
-      Iif (newVal === false) {
-        throw new RuleConditionError(ctx.rule)
-      }
-    } else {
-      msg[propName] = newVal
-    }
-  } finally {
-    ctx.leaveField()
-  }
-}
- 
-function validateSubschemas(subschemas: DereferencedJSONSchema[], msg: any): DereferencedJSONSchema | null {
-  for (let subschema of subschemas) {
-    try {
-      validateJSON(subschema, msg)
-      return subschema
-    } catch (error) {
-      // ignore
-    }
-  }
-  return null
-}
- 
-function getType(schema: DereferencedJSONSchema): FieldType {
-  Iif (typeof schema === 'boolean') {
-    return FieldType.NULL
-  }
-  if (schema.type == null) {
-    return FieldType.NULL
-  }
-  Iif (Array.isArray(schema.type)) {
-    return FieldType.COMBINED
-  }
-  Iif (schema.const != null || schema.enum != null) {
-    return FieldType.ENUM
-  }
-  switch (schema.type) {
-    case 'object':
-      Iif (schema.properties == null || Object.keys(schema.properties).length === 0) {
-        return FieldType.MAP
-      }
-      return FieldType.RECORD
-    case 'array':
-      return FieldType.ARRAY
-    case 'string':
-      return FieldType.STRING
-    case 'integer':
-      return FieldType.INT
-    case 'number':
-      return FieldType.DOUBLE
-    case 'boolean':
-      return FieldType.BOOLEAN
-    case 'null':
-      return FieldType.NULL
-    default:
-      return FieldType.NULL
-  }
-}
- 
-function getInlineTags(schema: DereferencedJSONSchema): Set<string> {
-  let tagsKey = 'confluent:tags' as keyof DereferencedJSONSchema
-  return new Set<string>(schema[tagsKey])
-}
- 
-function disjoint(tags1: Set<string>, tags2: Set<string>): boolean {
-  for (let tag of tags1) {
-    Iif (tags2.has(tag)) {
-      return false
-    }
-  }
-  return true
-}
- 
- 
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/protobuf.ts.html b/coverage/lcov-report/schemaregistry/serde/protobuf.ts.html deleted file mode 100644 index 0d93d06f..00000000 --- a/coverage/lcov-report/schemaregistry/serde/protobuf.ts.html +++ /dev/null @@ -1,1648 +0,0 @@ - - - - - - Code coverage report for schemaregistry/serde/protobuf.ts - - - - - - - - - -
-
-

All files / schemaregistry/serde protobuf.ts

-
- -
- 79.2% - Statements - 198/250 -
- - -
- 49.43% - Branches - 44/89 -
- - -
- 96.42% - Functions - 27/28 -
- - -
- 79.01% - Lines - 192/243 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -5221x -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -2x -2x -2x -2x -2x -1x -  -2x -2x -  -  -  -  -2x -  -  -2x -  -  -  -2x -2x -  -  -2x -2x -  -  -2x -2x -2x -2x -2x -2x -2x -2x -  -  -  -2x -2x -  -  -2x -2x -2x -2x -  -2x -  -  -  -  -  -  -2x -2x -  -  -  -2x -2x -2x -  -  -  -2x -2x -2x -  -  -  -  -  -  -  -2x -2x -2x -2x -2x -  -  -  -  -  -  -  -2x -  -  -  -  -2x -2x -2x -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -2x -2x -2x -2x -2x -2x -  -2x -  -  -  -2x -2x -2x -  -  -  -2x -2x -2x -2x -  -  -  -  -  -  -  -  -2x -2x -2x -2x -2x -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -  -  -1x -1x -  -  -1x -  -  -  -  -  -1x -  -  -  -  -2x -2x -2x -2x -1x -  -2x -2x -  -  -  -  -2x -  -  -2x -  -  -  -2x -2x -2x -2x -  -2x -2x -  -2x -2x -  -  -  -  -2x -  -  -2x -  -2x -2x -  -  -  -1x -1x -  -  -1x -1x -  -  -1x -  -  -  -2x -2x -  -  -2x -2x -  -  -2x -2x -  -  -  -2x -2x -2x -2x -2x -2x -2x -  -  -2x -  -  -  -  -  -  -  -  -  -2x -2x -2x -  -  -  -2x -2x -2x -2x -2x -2x -  -2x -  -  -  -2x -2x -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -14x -  -  -14x -2x -4x -  -  -14x -  -  -14x -14x -2x -2x -8x -8x -  -2x -  -12x -12x -12x -12x -4x -  -  -8x -  -  -  -  -8x -8x -  -  -  -  -  -  -8x -8x -8x -  -  -  -  -8x -  -  -8x -  -  -  -  -8x -  -  -  -2x -  -  -  -  -  -6x -  -2x -  -2x -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -8x -8x -4x -4x -  -4x -  -  -  -12x -12x -4x -  -  -8x -  -  -  -6x -  -  -  - 
import {
-  Deserializer,
-  DeserializerConfig,
-  FieldTransform,
-  FieldType, RuleConditionError,
-  RuleContext,
-  SerdeType, SerializationError,
-  Serializer,
-  SerializerConfig
-} from "./serde";
-import {
-  Client, Reference, RuleMode,
-  SchemaInfo,
-  SchemaMetadata
-} from "../schemaregistry-client";
-import {
-  createFileRegistry, createMutableRegistry,
-  DescField,
-  DescFile,
-  DescMessage,
-  FileRegistry,
-  fromBinary, getExtension, hasExtension, MutableRegistry,
-  ScalarType,
-  toBinary
-} from "@bufbuild/protobuf";
-import {
-  file_google_protobuf_any,
-  file_google_protobuf_api,
-  file_google_protobuf_descriptor,
-  file_google_protobuf_duration,
-  file_google_protobuf_empty,
-  file_google_protobuf_field_mask,
-  file_google_protobuf_source_context,
-  file_google_protobuf_struct,
-  file_google_protobuf_timestamp, file_google_protobuf_type, file_google_protobuf_wrappers,
-  FileDescriptorProtoSchema
-} from "@bufbuild/protobuf/wkt";
-import { BufferWrapper, MAX_VARINT_LEN_64 } from "./buffer-wrapper";
-import { LRUCache } from "lru-cache";
-import {field_meta, file_confluent_meta, Meta} from "../confluent/meta_pb";
-import {getRuleExecutors} from "./rule-registry";
-import stringify from "json-stringify-deterministic";
-import {file_confluent_types_decimal} from "../confluent/types/decimal_pb";
-import {file_google_type_calendar_period} from "../google/type/calendar_period_pb";
-import {file_google_type_color} from "../google/type/color_pb";
-import {file_google_type_date} from "../google/type/date_pb";
-import {file_google_type_datetime} from "../google/type/datetime_pb";
-import {file_google_type_dayofweek} from "../google/type/dayofweek_pb";
-import {file_google_type_fraction} from "../google/type/fraction_pb";
-import {file_google_type_expr} from "../google/type/expr_pb";
-import {file_google_type_latlng} from "../google/type/latlng_pb";
-import {file_google_type_money} from "../google/type/money_pb";
-import {file_google_type_postal_address} from "../google/type/postal_address_pb";
-import {file_google_type_quaternion} from "../google/type/quaternion_pb";
-import {file_google_type_timeofday} from "../google/type/timeofday_pb";
-import {file_google_type_month} from "../google/type/month_pb";
- 
-const builtinDeps = new Map<string, DescFile>([
-  ['confluent/meta.proto',                 file_confluent_meta],
-  ['confluent/type/decimal.proto',         file_confluent_types_decimal],
-  ['google/type/calendar_period.proto',    file_google_type_calendar_period],
-  ['google/type/color.proto',              file_google_type_color],
-  ['google/type/date.proto',               file_google_type_date],
-  ['google/type/datetime.proto',           file_google_type_datetime],
-  ['google/type/dayofweek.proto',          file_google_type_dayofweek],
-  ['google/type/expr.proto',               file_google_type_expr],
-  ['google/type/fraction.proto',           file_google_type_fraction],
-  ['google/type/latlng.proto',             file_google_type_latlng],
-  ['google/type/money.proto',              file_google_type_money],
-  ['google/type/month.proto',              file_google_type_month],
-  ['google/type/postal_address.proto',     file_google_type_postal_address],
-  ['google/type/quaternion.proto',         file_google_type_quaternion],
-  ['google/type/timeofday.proto',          file_google_type_timeofday],
-  ['google/protobuf/any.proto',            file_google_protobuf_any],
-  ['google/protobuf/api.proto',            file_google_protobuf_api],
-  ['google/protobuf/descriptor.proto',     file_google_protobuf_descriptor],
-  ['google/protobuf/duration.proto',       file_google_protobuf_duration],
-  ['google/protobuf/empty.proto',          file_google_protobuf_empty],
-  ['google/protobuf/field_mask.proto',     file_google_protobuf_field_mask],
-  ['google/protobuf/source_context.proto', file_google_protobuf_source_context],
-  ['google/protobuf/struct.proto',         file_google_protobuf_struct],
-  ['google/protobuf/timestamp.proto',      file_google_protobuf_timestamp],
-  ['google/protobuf/type.proto',           file_google_protobuf_type],
-  ['google/protobuf/wrappers.proto',       file_google_protobuf_wrappers],
-])
- 
-export interface ProtobufSerde {
-  schemaToDescCache: LRUCache<string, DescFile>
-}
- 
-export type ProtobufSerializerConfig = SerializerConfig & {
-  registry?: MutableRegistry
-}
- 
-export class ProtobufSerializer extends Serializer implements ProtobufSerde {
-  registry: MutableRegistry
-  schemaToDescCache: LRUCache<string, DescFile>
-  descToSchemaCache: LRUCache<string, SchemaInfo>
- 
-  constructor(client: Client, serdeType: SerdeType, conf: ProtobufSerializerConfig) {
-    super(client, serdeType, conf)
-    this.registry = conf.registry ?? createMutableRegistry()
-    this.schemaToDescCache = new LRUCache<string, DescFile>({ max: this.config().cacheCapacity ?? 1000 } )
-    this.descToSchemaCache = new LRUCache<string, SchemaInfo>({ max: this.config().cacheCapacity ?? 1000 } )
-    this.fieldTransformer = async (ctx: RuleContext, fieldTransform: FieldTransform, msg: any) => {
-      return await this.fieldTransform(ctx, fieldTransform, msg)
-    }
-    for (const rule of getRuleExecutors()) {
-      rule.configure(client.config(), new Map<string, string>(Object.entries(conf.ruleConfig ?? {})))
-    }
-  }
- 
-  async serialize(topic: string, msg: any): Promise<Buffer> {
-    Iif (this.client == null) {
-      throw new Error('client is not initialized')
-    }
-    Iif (msg == null) {
-      throw new Error('message is empty')
-    }
- 
-    const typeName = msg.$typeName
-    Iif (typeName == null) {
-      throw new SerializationError('message type name is empty')
-    }
-    const messageDesc = this.registry.getMessage(typeName)
-    Iif (messageDesc == null) {
-      throw new SerializationError('message descriptor not in registry')
-    }
-    const fileDesc = messageDesc.file
-    const schema = await this.getSchemaInfo(fileDesc)
-    const [id, info] = await this.getId(topic, msg, schema, 'serialized')
-    const subject = this.subjectName(topic, info)
-    msg = await this.executeRules(subject, topic, RuleMode.WRITE, null, info, msg, null)
-    const msgIndexBytes = this.toMessageIndexBytes(messageDesc)
-    const msgBytes = Buffer.from(toBinary(messageDesc, msg))
-    return this.writeBytes(id, Buffer.concat([msgIndexBytes, msgBytes]))
-  }
- 
-  async getSchemaInfo(fileDesc: DescFile): Promise<SchemaInfo> {
-    const value = this.descToSchemaCache.get(fileDesc.name)
-    Iif (value != null) {
-      return value
-    }
-    const deps = this.toProtobufSchema(fileDesc)
-    const autoRegister = this.config().autoRegisterSchemas
-    const normalize = this.config().normalizeSchemas
-    const metadata = await this.resolveDependencies(
-      fileDesc, deps, "", Boolean(autoRegister), Boolean(normalize))
-    const info = {
-      schema: metadata.schema,
-      schemaType: metadata.schemaType,
-      references: metadata.references,
-      metadata: metadata.metadata,
-      ruleSet: metadata.ruleSet,
-    }
-    this.descToSchemaCache.set(fileDesc.name, info)
-    return info
-  }
- 
-  toProtobufSchema(fileDesc: DescFile): Map<string, string> {
-    const deps = new Map<string, string>()
-    this.toDependencies(fileDesc, deps)
-    return deps
-  }
- 
-  toDependencies(fileDesc: DescFile, deps: Map<string, string>) {
-    deps.set(fileDesc.name, Buffer.from(toBinary(FileDescriptorProtoSchema, fileDesc.proto)).toString('base64'))
-    fileDesc.dependencies.forEach((dep) => {
-      Iif (!isBuiltin(dep.name)) {
-        this.toDependencies(dep, deps)
-      }
-    })
-  }
- 
-  async resolveDependencies(fileDesc: DescFile, deps: Map<string, string>, subject: string,
-                            autoRegister: boolean, normalize: boolean): Promise<SchemaMetadata> {
-    const refs: Reference[] = []
-    for (let i = 0; i < fileDesc.dependencies.length; i++) {
-      const dep = fileDesc.dependencies[i]
-      if (isBuiltin(dep.name)) {
-        continue
-      }
-      const ref = await this.resolveDependencies(dep, deps, dep.name, autoRegister, normalize)
-      Iif (ref == null) {
-        throw new SerializationError('dependency not found')
-      }
-      refs.push({name: dep.name, subject: ref.subject!, version: ref.version!})
-    }
-    const info: SchemaInfo = {
-      schema: deps.get(fileDesc.name)!,
-      schemaType: 'PROTOBUF',
-      references: refs
-    }
-    let id = -1
-    let version = 0
-    Iif (subject !== '') {
-      if (autoRegister) {
-        id = await this.client.register(subject, info, normalize)
-      } else {
-        id = await this.client.getId(subject, info, normalize)
- 
-      }
-      version = await this.client.getVersion(subject, info, normalize)
-    }
-    return {
-      id: id,
-      subject: subject,
-      version: version,
-      schema: info.schema,
-      schemaType: info.schemaType,
-      references: info.references,
-      metadata: info.metadata,
-      ruleSet: info.ruleSet,
-    }
-  }
- 
-  toMessageIndexBytes(messageDesc: DescMessage): Buffer {
-    const msgIndexes: number[] = this.toMessageIndexes(messageDesc, 0)
-    const buffer = Buffer.alloc((1 + msgIndexes.length) * MAX_VARINT_LEN_64)
-    const bw = new BufferWrapper(buffer)
-    bw.writeVarInt(msgIndexes.length)
-    for (let i = 0; i < msgIndexes.length; i++) {
-      bw.writeVarInt(msgIndexes[i])
-    }
-    return buffer.subarray(0, bw.pos)
-  }
- 
-  toMessageIndexes(messageDesc: DescMessage, count: number): number[] {
-    const index = this.toIndex(messageDesc)
-    const parent = messageDesc.parent
-    if (parent == null) {
-      // parent is FileDescriptor, we reached the top of the stack, so we are
-      // done. Allocate an array large enough to hold count+1 entries and
-      // populate first value with index
-      const msgIndexes: number[] = []
-      msgIndexes.length = count + 1
-      msgIndexes[0] = index
-      return msgIndexes
-    } else E{
-      const msgIndexes = this.toMessageIndexes(parent, count + 1)
-      msgIndexes.push(index)
-      return msgIndexes
-    }
-  }
- 
-  toIndex(messageDesc: DescMessage) {
-    const parent = messageDesc.parent
-    if (parent == null) {
-      const fileDesc = messageDesc.file
-      for (let i = 0; i < fileDesc.messages.length; i++) {
-        if (fileDesc.messages[i] === messageDesc) {
-          return i
-        }
-      }
-    } else E{
-      for (let i = 0; i < parent.nestedMessages.length; i++) {
-        Iif (parent.nestedMessages[i] === messageDesc) {
-          return i
-        }
-      }
-    }
-    throw new SerializationError('message descriptor not found in file descriptor');
-  }
- 
-  async fieldTransform(ctx: RuleContext, fieldTransform: FieldTransform, msg: any): Promise<any> {
-    const typeName = msg.$typeName
-    Iif (typeName == null) {
-      throw new SerializationError('message type name is empty')
-    }
-    const messageDesc = this.registry.getMessage(typeName)
-    Iif (messageDesc == null) {
-      throw new SerializationError('message descriptor not in registry')
-    }
-    return await transform(ctx, messageDesc, msg, fieldTransform)
-  }
-}
- 
-export type ProtobufDeserializerConfig = DeserializerConfig
- 
-export class ProtobufDeserializer extends Deserializer implements ProtobufSerde {
-  registry: FileRegistry
-  schemaToDescCache: LRUCache<string, DescFile>
- 
-  constructor(client: Client, serdeType: SerdeType, conf: ProtobufDeserializerConfig) {
-    super(client, serdeType, conf)
-    this.registry = createFileRegistry()
-    this.schemaToDescCache = new LRUCache<string, DescFile>({ max: this.config().cacheCapacity ?? 1000 } )
-    this.fieldTransformer = async (ctx: RuleContext, fieldTransform: FieldTransform, msg: any) => {
-      return await this.fieldTransform(ctx, fieldTransform, msg)
-    }
-    for (const rule of getRuleExecutors()) {
-      rule.configure(client.config(), new Map<string, string>(Object.entries(conf.ruleConfig ?? {})))
-    }
-  }
- 
-  async deserialize(topic: string, payload: Buffer): Promise<any> {
-    Iif (!Buffer.isBuffer(payload)) {
-      throw new Error('Invalid buffer')
-    }
-    Iif (payload.length === 0) {
-      return null
-    }
- 
-    const info = await this.getSchema(topic, payload, 'serialized')
-    const fd = await this.toFileDesc(this.client, info)
-    const [bytesRead, msgIndexes] = this.readMessageIndexes(payload.subarray(5))
-    const messageDesc = this.toMessageDesc(fd, msgIndexes)
- 
-    const subject = this.subjectName(topic, info)
-    const readerMeta = await this.getReaderSchema(subject)
- 
-    const msgBytes = payload.subarray(5 + bytesRead)
-    let msg = fromBinary(messageDesc, msgBytes)
- 
-    // Currently JavaScript does not support migration rules
-    // because of lack of support for DynamicMessage
-    let target: SchemaInfo
-    Iif (readerMeta != null) {
-      target = readerMeta
-    } else {
-      target = info
-    }
-    msg = await this.executeRules(subject, topic, RuleMode.READ, null, target, msg, null)
-    return msg
-  }
- 
-  async fieldTransform(ctx: RuleContext, fieldTransform: FieldTransform, msg: any): Promise<any> {
-    const typeName = msg.$typeName
-    Iif (typeName == null) {
-      throw new SerializationError('message type name is empty')
-    }
-    const messageDesc = this.registry.getMessage(typeName)
-    Iif (messageDesc == null) {
-      throw new SerializationError('message descriptor not in registry')
-    }
-    return await transform(ctx, messageDesc, msg, fieldTransform)
-  }
- 
-  async toFileDesc(client: Client, info: SchemaInfo): Promise<DescFile> {
-    const value = this.schemaToDescCache.get(stringify(info.schema))
-    Iif (value != null) {
-      return value
-    }
-    const fileDesc = await this.parseFileDesc(client, info)
-    Iif (fileDesc == null) {
-      throw new SerializationError('file descriptor not found')
-    }
-    this.schemaToDescCache.set(stringify(info.schema), fileDesc)
-    return fileDesc
-  }
- 
-  async parseFileDesc(client: Client, info: SchemaInfo): Promise<DescFile | undefined> {
-    const deps = new Map<string, string>()
-    await this.resolveReferences(client, info, deps)
-    const fileDesc = fromBinary(FileDescriptorProtoSchema, Buffer.from(info.schema, 'base64'))
-    const resolve = (depName: string) => {
-      if (isBuiltin(depName)) {
-        const dep = builtinDeps.get(depName)
-        Iif (dep == null) {
-          throw new SerializationError(`dependency ${depName} not found`)
-        }
-        return dep
-      } else E{
-        const dep = deps.get(depName)
-        Iif (dep == null) {
-          throw new SerializationError(`dependency ${depName} not found`)
-        }
-        return fromBinary(FileDescriptorProtoSchema, Buffer.from(dep, 'base64'))
-      }
-    }
-    // TODO check google protos already in registry
-    const fileRegistry = createFileRegistry(fileDesc, resolve)
-    this.registry = createFileRegistry(this.registry, fileRegistry)
-    return this.registry.getFile(fileDesc.name)
-  }
- 
-  readMessageIndexes(payload: Buffer): [number, number[]] {
-    const bw = new BufferWrapper(payload)
-    const count = bw.readVarInt()
-    const msgIndexes = []
-    msgIndexes.length = count
-    for (let i = 0; i < count; i++) {
-      msgIndexes[i] = bw.readVarInt()
-    }
-    return [bw.pos, msgIndexes]
-  }
- 
-  toMessageDesc(fd: DescFile, msgIndexes: number[]): DescMessage {
-    let index = msgIndexes[0]
-    if (msgIndexes.length === 1) {
-      return fd.messages[index]
-    }
-    return this.toNestedMessageDesc(fd.messages[index], msgIndexes.slice(1))
-  }
- 
-  toNestedMessageDesc(parent: DescMessage, msgIndexes: number[]): DescMessage {
-    let index = msgIndexes[0]
-    Iif (msgIndexes.length === 1) {
-      return parent.nestedMessages[index]
-    }
-    return this.toNestedMessageDesc(parent.nestedMessages[index], msgIndexes.slice(1))
-  }
-}
- 
-async function transform(ctx: RuleContext, descriptor: DescMessage, msg: any, fieldTransform: FieldTransform): Promise<any> {
-  Iif (msg == null || descriptor == null) {
-    return msg
-  }
-  if (Array.isArray(msg)) {
-    for (let i = 0; i < msg.length; i++) {
-      msg[i] = await transform(ctx, descriptor, msg[i], fieldTransform)
-    }
-  }
-  Iif (msg instanceof Map) {
-    return msg
-  }
-  const typeName = msg.$typeName
-  if (typeName != null) {
-    const fields = descriptor.fields
-    for (let i = 0; i < fields.length; i++) {
-      const fd = fields[i]
-      await transformField(ctx, fd, descriptor, msg, fieldTransform)
-    }
-    return msg
-  }
-  const fieldCtx = ctx.currentField()
-  if (fieldCtx != null) {
-    const ruleTags = ctx.rule.tags ?? []
-    if (ruleTags == null || ruleTags.length === 0 || !disjoint(new Set<string>(ruleTags), fieldCtx.tags)) {
-      return await fieldTransform.transform(ctx, fieldCtx, msg)
-    }
-  }
-  return msg
-}
- 
-async function transformField(ctx: RuleContext, fd: DescField, desc: DescMessage,
-                        msg: any, fieldTransform: FieldTransform) {
-  try {
-    ctx.enterField(
-      msg,
-      desc.name + '.' + fd.name,
-      fd.name,
-      getType(fd),
-      getInlineTags(fd)
-    )
-    const value = msg[fd.name]
-    const newValue = await transform(ctx, desc, value, fieldTransform)
-    Iif (ctx.rule.kind === 'CONDITION') {
-      Iif (newValue === false) {
-        throw new RuleConditionError(ctx.rule)
-      }
-    } else {
-      msg[fd.name] = newValue
-    }
-  } finally {
-    ctx.leaveField()
-  }
-}
- 
-function getType(fd: DescField): FieldType {
-  switch (fd.fieldKind) {
-    case 'map':
-      return FieldType.MAP
-    case 'list':
-      return FieldType.ARRAY
-    case 'message':
-      return FieldType.RECORD
-    case 'enum':
-      return FieldType.ENUM
-    case 'scalar':
-      switch (fd.scalar) {
-        case ScalarType.STRING:
-          return FieldType.STRING
-        case ScalarType.BYTES:
-          return FieldType.BYTES
-        case ScalarType.INT32:
-        case ScalarType.SINT32:
-        case ScalarType.UINT32:
-        case ScalarType.FIXED32:
-        case ScalarType.SFIXED32:
-          return FieldType.INT
-        case ScalarType.INT64:
-        case ScalarType.SINT64:
-        case ScalarType.UINT64:
-        case ScalarType.FIXED64:
-        case ScalarType.SFIXED64:
-          return FieldType.LONG
-        case ScalarType.FLOAT:
-        case ScalarType.DOUBLE:
-          return FieldType.DOUBLE
-        case ScalarType.BOOL:
-          return FieldType.BOOLEAN
-      }
-    default:
-      return FieldType.NULL
-  }
-}
- 
-function getInlineTags(fd: DescField): Set<string> {
-  const options = fd.proto.options
-  if (options != null && hasExtension(options, field_meta)) {
-    const option: Meta = getExtension(options, field_meta)
-    return new Set<string>(option.tags)
-  }
-  return new Set<string>()
-}
- 
-function disjoint(tags1: Set<string>, tags2: Set<string>): boolean {
-  for (let tag of tags1) {
-    if (tags2.has(tag)) {
-      return false
-    }
-  }
-  return true
-}
- 
-function isBuiltin(name: string): boolean {
-  return name.startsWith('confluent/') ||
-    name.startsWith('google/protobuf/') ||
-    name.startsWith('google/type/')
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/rule-registry.ts.html b/coverage/lcov-report/schemaregistry/serde/rule-registry.ts.html deleted file mode 100644 index 57743e6e..00000000 --- a/coverage/lcov-report/schemaregistry/serde/rule-registry.ts.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - Code coverage report for schemaregistry/serde/rule-registry.ts - - - - - - - - - -
-
-

All files / schemaregistry/serde rule-registry.ts

-
- -
- 70.58% - Statements - 12/17 -
- - -
- 100% - Branches - 0/0 -
- - -
- 42.85% - Functions - 3/7 -
- - -
- 70.58% - Lines - 12/17 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43  -  -3x -  -3x -  -  -  -3x -3x -  -  -  -3x -9x -  -  -  -3x -15x -  -  -  -3x -  -  -  -  -3x -  -  -  -  -3x -  -  -  -  -3x -  -  -  - 
import {RuleAction, RuleExecutor} from "./serde";
- 
-const ruleExecutors = new Map<string, RuleExecutor>
- 
-const ruleActions = new Map<string, RuleAction>
- 
- 
-// registerRuleExecutor is used to register a new rule executor.
-export function registerRuleExecutor(ruleExecutor: RuleExecutor): void {
-  ruleExecutors.set(ruleExecutor.type(), ruleExecutor)
-}
- 
-// getRuleExecutor fetches a rule executor by a given name.
-export function getRuleExecutor(name: string): RuleExecutor | undefined {
-  return ruleExecutors.get(name)
-}
- 
-// getRuleExecutors fetches all rule executors
-export function getRuleExecutors(): RuleExecutor[] {
-  return Array.from(ruleExecutors.values())
-}
- 
-// registerRuleAction is used to register a new rule action.
-export function registerRuleAction(ruleAction: RuleAction): void {
-  ruleActions.set(ruleAction.type(), ruleAction)
-}
- 
-// getRuleAction fetches a rule action by a given name.
-export function getRuleAction(name: string): RuleAction | undefined {
-  return ruleActions.get(name)
-}
- 
-// getRuleActions fetches all rule actions
-export function getRuleActions(): RuleAction[] {
-  return Array.from(ruleActions.values())
-}
- 
-// clearRules clears all registered rules
-export function clearRules(): void {
-  ruleExecutors.clear()
-  ruleActions.clear()
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/serde.ts.html b/coverage/lcov-report/schemaregistry/serde/serde.ts.html deleted file mode 100644 index 545bd990..00000000 --- a/coverage/lcov-report/schemaregistry/serde/serde.ts.html +++ /dev/null @@ -1,2290 +0,0 @@ - - - - - - Code coverage report for schemaregistry/serde/serde.ts - - - - - - - - - -
-
-

All files / schemaregistry/serde serde.ts

-
- -
- 55.27% - Statements - 173/313 -
- - -
- 30% - Branches - 39/130 -
- - -
- 54.71% - Functions - 29/53 -
- - -
- 55.04% - Lines - 169/307 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635 -636 -637 -638 -639 -640 -641 -642 -643 -644 -645 -646 -647 -648 -649 -650 -651 -652 -653 -654 -655 -656 -657 -658 -659 -660 -661 -662 -663 -664 -665 -666 -667 -668 -669 -670 -671 -672 -673 -674 -675 -676 -677 -678 -679 -680 -681 -682 -683 -684 -685 -686 -687 -688 -689 -690 -691 -692 -693 -694 -695 -696 -697 -698 -699 -700 -701 -702 -703 -704 -705 -706 -707 -708 -709 -710 -711 -712 -713 -714 -715 -716 -717 -718 -719 -720 -721 -722 -723 -724 -725 -726 -727 -728 -729 -730 -731 -732 -733 -734 -735 -7363x -3x -  -  -  -  -  -  -  -3x -  -  -3x -3x -3x -  -  -3x -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -15x -  -  -15x -15x -15x -  -  -  -  -  -  -  -  -  -30x -30x -  -  -  -11x -11x -10x -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -15x -  -  -  -15x -  -  -  -  -  -  -  -15x -15x -  -9x -  -15x -  -15x -6x -  -9x -9x -9x -  -  -9x -9x -  -9x -  -  -9x -  -  -  -  -  -  -  -  -  -  -  -9x -  -9x -9x -  -  -  -  -9x -9x -9x -  -  -  -  -  -  -9x -9x -  -9x -  -  -  -  -  -  -  -  -9x -  -  -  -  -9x -9x -9x -  -9x -9x -  -  -9x -9x -  -  -  -  -  -  -  -  -  -9x -9x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -9x -  -9x -9x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -6x -  -  -  -36x -  -  -  -  -  -  -  -6x -6x -6x -6x -6x -  -6x -6x -6x -3x -3x -  -  -  -  -  -3x -  -  -3x -3x -3x -  -  -  -6x -  -  -  -6x -6x -6x -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -9x -  -  -  -24x -  -  -  -9x -9x -  -  -  -  -  -  -9x -9x -9x -  -  -  -9x -9x -9x -  -  -9x -  -  -9x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -30x -30x -  -  -30x -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -9x -9x -9x -9x -9x -9x -9x -9x -9x -9x -9x -9x -  -  -  -41x -41x -  -  -41x -41x -25x -  -16x -16x -  -  -  -  -  -16x -  -  -  -13x -13x -7x -  -6x -  -  -  -32x -32x -7x -  -25x -  -  -  -21x -21x -  -  -21x -  -  -  -  -  -  -21x -21x -  -  -  -21x -21x -21x -  -  -  -  -  -  -  -  -21x -  -  -  -21x -21x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -3x -  -  -  -  -  -  -  -  -  -9x -  -  -3x -  -  -  -  -  -  -3x -  -  -6x -  -  -  -  -  -  -6x -  -9x -9x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -21x -21x -21x -21x -21x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -3x -3x -3x -3x -3x -3x -3x -3x -3x -3x -3x -3x -3x -3x -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -9x -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import {match} from './wildcard-matcher';
-import {
-  Client,
-  Rule,
-  RuleMode,
-  RuleSet,
-  SchemaInfo,
-  SchemaMetadata
-} from "../schemaregistry-client";
-import {getRuleAction, getRuleExecutor} from "./rule-registry";
-import {ClientConfig} from "../rest-service";
- 
-export enum SerdeType {
-  KEY = 'KEY',
-  VALUE = 'VALUE'
-}
- 
-export const MAGIC_BYTE = Buffer.alloc(1)
- 
-export class SerializationError extends Error {
- 
-  constructor(message?: string) {
-    super(message)
-  }
-}
- 
-export interface SerdeConfig {
-  // useLatestVersion specifies whether to use the latest schema version
-  useLatestVersion?: boolean
-  // useLatestWithMetadata specifies whether to use the latest schema with metadata
-  useLatestWithMetadata?: { [key: string]: string };
-  // cacheCapacity specifies the cache capacity
-  cacheCapacity?: number,
-  // cacheLatestTtlSecs specifies the cache latest TTL in seconds
-  cacheLatestTtlSecs?: number
-  // ruleConfig specifies configuration options to the rules
-  ruleConfig?: { [key: string]: string };
-  // subjectNameStrategy specifies a function to generate a subject name
-  subjectNameStrategy?: SubjectNameStrategyFunc
-}
- 
-export type RefResolver = (client: Client, info: SchemaInfo) => Promise<Map<string, string>>
- 
-export abstract class Serde {
-  client: Client
-  serdeType: SerdeType
-  conf: SerdeConfig
-  fieldTransformer: FieldTransformer | null = null
- 
-  protected constructor(client: Client, serdeType: SerdeType, conf: SerdeConfig) {
-    this.client = client
-    this.serdeType = serdeType
-    this.conf = conf
-  }
- 
-  abstract config(): SerdeConfig
- 
-  close(): void {
-    return
-  }
- 
-  subjectName(topic: string, info?: SchemaInfo): string {
-    const strategy = this.conf.subjectNameStrategy ?? TopicNameStrategy
-    return strategy(topic, this.serdeType, info)
-  }
- 
-  async resolveReferences(client: Client, schema: SchemaInfo, deps: Map<string, string>): Promise<void> {
-    let references = schema.references
-    if (references == null) {
-      return
-    }
-    for (let ref of references) {
-      let metadata = await client.getSchemaMetadata(ref.subject, ref.version, true)
-      let info = {
-        schema: schema.schema,
-        schemaType: schema.schemaType,
-        references: schema.references,
-        metadata: schema.metadata,
-        ruleSet: schema.ruleSet,
-      }
-      deps.set(ref.name, metadata.schema)
-      await this.resolveReferences(client, info, deps)
-    }
-  }
- 
-  async executeRules(subject: string, topic: string, ruleMode: RuleMode,
-               source: SchemaInfo | null, target: SchemaInfo | null, msg: any,
-               inlineTags: Map<string, Set<string>> | null): Promise<any> {
-    Iif (msg == null || target == null) {
-      return msg
-    }
-    let rules: Rule[] | undefined
-    switch (ruleMode) {
-      case RuleMode.UPGRADE:
-        rules = target.ruleSet?.migrationRules
-        break
-      case RuleMode.DOWNGRADE:
-        rules = source?.ruleSet?.migrationRules?.reverse()
-        break
-      default:
-        rules = target.ruleSet?.domainRules
-        if (ruleMode === RuleMode.READ) {
-          // Execute read rules in reverse order for symmetry
-          rules = rules?.reverse()
-        }
-        break
-    }
-    if (rules == null) {
-      return msg
-    }
-    for (let i = 0; i < rules.length; i++ ) {
-      let rule = rules[i]
-      Iif (rule.disabled) {
-        continue
-      }
-      let mode = rule.mode
-      switch (mode) {
-        case RuleMode.WRITEREAD:
-          Iif (ruleMode !== RuleMode.WRITE && ruleMode !== RuleMode.READ) {
-            continue
-          }
-          break
-        case RuleMode.UPDOWN:
-          Iif (ruleMode !== RuleMode.UPGRADE && ruleMode !== RuleMode.DOWNGRADE) {
-            continue
-          }
-          break
-        default:
-          Iif (mode !== ruleMode) {
-            continue
-          }
-          break
-      }
-      let ctx = new RuleContext(source, target, subject, topic,
-        this.serdeType === SerdeType.KEY, ruleMode, rule, i, rules, inlineTags, this.fieldTransformer!)
-      let ruleExecutor = getRuleExecutor(rule.type)
-      Iif (ruleExecutor == null) {
-        await this.runAction(ctx, ruleMode, rule, rule.onFailure, msg,
-          new Error(`could not find rule executor of type ${rule.type}`), 'ERROR')
-        return msg
-      }
-      try {
-        let result = await ruleExecutor.transform(ctx, msg)
-        switch (rule.kind) {
-          case 'CONDITION':
-            Iif (result === false) {
-              throw new RuleConditionError(rule)
-            }
-            break
-          case 'TRANSFORM':
-            msg = result
-            break
-        }
-        await this.runAction(ctx, ruleMode, rule, msg != null ? rule.onSuccess : rule.onFailure,
-          msg, null, msg != null ? 'NONE' : 'ERROR')
-      } catch (error) {
-        Iif (error instanceof SerializationError) {
-          throw error
-        }
-        await this.runAction(ctx, ruleMode, rule, rule.onFailure, msg, error as Error, 'ERROR')
-      }
-    }
-    return msg
-  }
- 
-  async runAction(ctx: RuleContext, ruleMode: RuleMode, rule: Rule, action: string | undefined,
-            msg: any, err: Error | null, defaultAction: string): Promise<void> {
-    let actionName = this.getRuleActionName(rule, ruleMode, action)
-    if (actionName == null) {
-      actionName = defaultAction
-    }
-    let ruleAction = this.getRuleAction(ctx, actionName)
-    Iif (ruleAction == null) {
-      throw new RuleError(`Could not find rule action of type ${actionName}`)
-    }
-    try {
-      await ruleAction.run(ctx, msg, err)
-    } catch (error) {
-      Iif (error instanceof SerializationError) {
-        throw error
-      }
-      console.warn("could not run post-rule action %s: %s", actionName, error)
-    }
-  }
- 
-  getRuleActionName(rule: Rule, ruleMode: RuleMode, actionName: string | undefined): string | null {
-    if (actionName == null || actionName === '') {
-      return null
-    }
-    Iif ((rule.mode === RuleMode.WRITEREAD || rule.mode === RuleMode.UPDOWN) && actionName.includes(',')) {
-      let parts = actionName.split(',')
-      switch (ruleMode) {
-        case RuleMode.WRITE:
-        case RuleMode.UPGRADE:
-          return parts[0]
-        case RuleMode.READ:
-        case RuleMode.DOWNGRADE:
-          return parts[1]
-      }
-    }
-    return actionName
-  }
- 
-  getRuleAction(ctx: RuleContext, actionName: string): RuleAction | undefined {
-    Iif (actionName === 'ERROR') {
-      return new ErrorAction();
-    } else if (actionName === 'NONE') {
-      return new NoneAction()
-    }
-    return getRuleAction(actionName)
-  }
-}
- 
-export interface SerializerConfig extends SerdeConfig {
-  // autoRegisterSchemas determines whether to automatically register schemas
-  autoRegisterSchemas?: boolean
-  // useSchemaID specifies a schema ID to use
-  useSchemaId?: number
-  // normalizeSchemas determines whether to normalize schemas
-  normalizeSchemas?: boolean
-}
- 
-export abstract class Serializer extends Serde {
-  protected constructor(client: Client, serdeType: SerdeType, conf: SerializerConfig) {
-    super(client, serdeType, conf)
-  }
- 
-  override config(): SerializerConfig {
-    return this.conf as SerializerConfig
-  }
- 
-  // serialize will serialize the given message
-  abstract serialize(topic: string, msg: any): Promise<Buffer>
- 
-  // GetID returns a schema ID for the given schema
-  async getId(topic: string, msg: any, info: SchemaInfo, format?: string): Promise<[number, SchemaInfo]> {
-    let autoRegister = this.config().autoRegisterSchemas
-    let useSchemaId = this.config().useSchemaId
-    let useLatestWithMetadata = this.conf.useLatestWithMetadata
-    let useLatest = this.config().useLatestVersion
-    let normalizeSchema = this.config().normalizeSchemas
- 
-    let id = -1
-    let subject = this.subjectName(topic, info)
-    if (autoRegister) {
-      id = await this.client.register(subject, info, Boolean(normalizeSchema))
-    } else Iif (useSchemaId != null && useSchemaId >= 0) {
-      info = await this.client.getBySubjectAndId(subject, useSchemaId, format)
-      id = await this.client.getId(subject, info, false)
-      Iif (id !== useSchemaId) {
-        throw new SerializationError(`failed to match schema ID (${id} != ${useSchemaId})`)
-      }
-    } else Iif (useLatestWithMetadata != null && Object.keys(useLatestWithMetadata).length !== 0) {
-      info = await this.client.getLatestWithMetadata(subject, useLatestWithMetadata, true)
-      id = await this.client.getId(subject, info, false)
-    } else if (useLatest) {
-      info = await this.client.getLatestSchemaMetadata(subject)
-      id = await this.client.getId(subject, info, false)
-    } else E{
-      id = await this.client.getId(subject, info, Boolean(normalizeSchema))
-    }
-    return [id, info]
-  }
- 
-  writeBytes(id: number, msgBytes: Buffer): Buffer {
-    const idBuffer = Buffer.alloc(4)
-    idBuffer.writeInt32BE(id, 0)
-    return Buffer.concat([MAGIC_BYTE, idBuffer, msgBytes])
-  }
-}
- 
-export type DeserializerConfig = SerdeConfig
- 
-// Migration represents a migration
-export interface Migration {
-  ruleMode: RuleMode
-  source: SchemaMetadata | null
-  target: SchemaMetadata | null
-}
- 
-export abstract class Deserializer extends Serde {
-  protected constructor(client: Client, serdeType: SerdeType, conf: DeserializerConfig) {
-    super(client, serdeType, conf)
-  }
- 
-  override config(): DeserializerConfig {
-    return this.conf as DeserializerConfig
-  }
- 
-  async getSchema(topic: string, payload: Buffer, format?: string): Promise<SchemaInfo> {
-    const magicByte = payload.subarray(0, 1)
-    Iif (!magicByte.equals(MAGIC_BYTE)) {
-      throw new SerializationError(
-        `Message encoded with magic byte ${JSON.stringify(magicByte)}, expected ${JSON.stringify(
-          MAGIC_BYTE,
-        )}`,
-      )
-    }
-    const id = payload.subarray(1, 5).readInt32BE(0)
-    let subject = this.subjectName(topic)
-    return await this.client.getBySubjectAndId(subject, id, format)
-  }
- 
-  async getReaderSchema(subject: string): Promise<SchemaMetadata | null> {
-    let useLatestWithMetadata = this.config().useLatestWithMetadata
-    let useLatest = this.config().useLatestVersion
-    Iif (useLatestWithMetadata != null && Object.keys(useLatestWithMetadata).length !== 0) {
-      return await this.client.getLatestWithMetadata(subject, useLatestWithMetadata, true)
-    }
-    Iif (useLatest) {
-      return await this.client.getLatestSchemaMetadata(subject)
-    }
-    return null
-  }
- 
-  hasRules(ruleSet: RuleSet, mode: RuleMode): boolean {
-    switch (mode) {
-      case RuleMode.UPGRADE:
-      case RuleMode.DOWNGRADE:
-        return this.checkRules(ruleSet?.migrationRules, (ruleMode: RuleMode): boolean =>
-          ruleMode === mode || ruleMode === RuleMode.UPDOWN)
-      case RuleMode.UPDOWN:
-        return this.checkRules(ruleSet?.migrationRules, (ruleMode: RuleMode): boolean =>
-          ruleMode === mode)
-      case RuleMode.WRITE:
-      case RuleMode.READ:
-        return this.checkRules(ruleSet?.domainRules, (ruleMode: RuleMode): boolean =>
-          ruleMode === mode || ruleMode === RuleMode.WRITEREAD)
-      case RuleMode.WRITEREAD:
-        return this.checkRules(ruleSet?.domainRules, (ruleMode: RuleMode): boolean =>
-          ruleMode === mode)
-    }
-  }
- 
-  checkRules(rules: Rule[] | undefined, filter: (ruleMode: RuleMode) => boolean): boolean {
-    Iif (rules == null) {
-      return false
-    }
-    for (let rule of rules) {
-      let ruleMode = rule.mode
-      Iif (ruleMode && filter(ruleMode)) {
-        return true
-      }
-    }
-    return false
-  }
- 
-  async getMigrations(subject: string, sourceInfo: SchemaInfo,
-                target: SchemaMetadata): Promise<Migration[]> {
-    let version = await this.client.getVersion(subject, sourceInfo, false)
-    let source: SchemaMetadata = {
-      id: 0,
-      version:    version,
-      schema: sourceInfo.schema,
-      references: sourceInfo.references,
-      metadata: sourceInfo.metadata,
-      ruleSet: sourceInfo.ruleSet,
-    }
-    let migrationMode: RuleMode
-    let migrations: Migration[] = []
-    let first: SchemaMetadata
-    let last: SchemaMetadata
-    if (source.version! < target.version!) {
-      migrationMode = RuleMode.UPGRADE
-      first = source
-      last = target
-    } else if (source.version! > target.version!) {
-      migrationMode = RuleMode.DOWNGRADE
-      first = target
-      last = source
-    } else {
-      return migrations
-    }
-    let previous: SchemaMetadata | null = null
-    let versions = await this.getSchemasBetween(subject, first, last)
-    for (let i = 0; i < versions.length; i++) {
-      let version = versions[i]
-      Iif (i === 0) {
-        previous = version
-        continue
-      }
-      Iif (version.ruleSet != null && this.hasRules(version.ruleSet, migrationMode)) {
-        let m: Migration
-        if (migrationMode === RuleMode.UPGRADE) {
-          m = {
-            ruleMode: migrationMode,
-            source: previous,
-            target: version,
-          }
-        } else {
-          m = {
-            ruleMode: migrationMode,
-            source: version,
-            target: previous,
-          }
-        }
-        migrations.push(m)
-      }
-      previous = version
-    }
-    Iif (migrationMode === RuleMode.DOWNGRADE) {
-      migrations = migrations.reverse()
-    }
-    return migrations
-  }
- 
-  async getSchemasBetween(subject: string, first: SchemaMetadata,
-                    last: SchemaMetadata): Promise<SchemaMetadata[]> {
-    Iif (last.version!-first.version! <= 1) {
-      return [first, last]
-    }
-    let version1 = first.version!
-    let version2 = last.version!
-    let result = [first]
-    for (let i = version1 + 1; i < version2; i++) {
-      let meta = await this.client.getSchemaMetadata(subject, i, true)
-      result.push(meta)
-    }
-    result.push(last)
-    return result
-  }
- 
-  async executeMigrations(migrations: Migration[], subject: string, topic: string, msg: any): Promise<any> {
-    for (let migration of migrations) {
-      // TODO fix source, target?
-      msg = await this.executeRules(subject, topic, migration.ruleMode, migration.source, migration.target, msg, null)
-    }
-    return msg
-  }
-}
- 
-export type SubjectNameStrategyFunc = (
-  topic: string,
-  serdeType: SerdeType,
-  schema?: SchemaInfo,
-) => string
- 
-// TopicNameStrategy creates a subject name by appending -[key|value] to the topic name.
-export const TopicNameStrategy: SubjectNameStrategyFunc = (topic: string, serdeType: SerdeType) => {
-  let suffix = '-value'
-  Iif (serdeType === SerdeType.KEY) {
-    suffix = '-key'
-  }
-  return topic + suffix
-}
- 
-// RuleContext represents a rule context
-export class RuleContext {
-  source: SchemaInfo | null
-  target: SchemaInfo
-  subject: string
-  topic: string
-  isKey: boolean
-  ruleMode: RuleMode
-  rule: Rule
-  index: number
-  rules: Rule[]
-  inlineTags: Map<string, Set<string>> | null
-  fieldTransformer: FieldTransformer
-  private fieldContexts: FieldContext[]
- 
-  constructor(source: SchemaInfo | null, target: SchemaInfo, subject: string, topic: string,
-              isKey: boolean, ruleMode: RuleMode, rule: Rule, index: number, rules: Rule[],
-              inlineTags: Map<string, Set<string>> | null, fieldTransformer: FieldTransformer) {
-    this.source = source
-    this.target = target
-    this.subject = subject
-    this.topic = topic
-    this.isKey = isKey
-    this.ruleMode = ruleMode
-    this.rule = rule
-    this.index = index
-    this.rules = rules
-    this.inlineTags = inlineTags
-    this.fieldTransformer = fieldTransformer
-    this.fieldContexts = []
-  }
- 
-  getParameter(name: string): string | null {
-    const params = this.rule.params
-    Iif (params == null) {
-      return null
-    }
-    let value = params[name]
-    if (value != null) {
-      return value
-    }
-    let metadata = this.target.metadata
-    Iif (metadata != null && metadata.properties != null) {
-      value = metadata.properties[name]
-      Iif (value != null) {
-        return value
-      }
-    }
-    return null
-  }
- 
-  getInlineTags(name: string): Set<string> {
-    let tags = this.inlineTags?.get(name)
-    if (tags != null) {
-      return tags
-    }
-    return new Set<string>()
-  }
- 
-  currentField(): FieldContext | null {
-    let size = this.fieldContexts.length
-    if (size === 0) {
-      return null
-    }
-    return this.fieldContexts[size - 1]
-  }
- 
-  enterField(containingMessage: any, fullName: string, name: string, fieldType: FieldType, tags: Set<string>): FieldContext {
-    let allTags = new Set<string>(tags)
-    for (let v of this.getTags(fullName)) {
-      allTags.add(v)
-    }
-    let fieldContext = new FieldContext(
-      containingMessage,
-      fullName,
-      name,
-      fieldType,
-      allTags
-    )
-    this.fieldContexts.push(fieldContext)
-    return fieldContext
-  }
- 
-  getTags(fullName: string): Set<string> {
-    let tags = new Set<string>()
-    let metadata = this.target.metadata
-    Iif (metadata?.tags != null) {
-      for (let [k, v] of Object.entries(metadata.tags)) {
-        Iif (match(fullName, k)) {
-          for (let tag of v) {
-            tags.add(tag)
-          }
-        }
-      }
-    }
-    return tags
-  }
- 
-  leaveField(): void {
-    let size = this.fieldContexts.length - 1
-    this.fieldContexts = this.fieldContexts.slice(0, size)
-  }
-}
- 
-// RuleBase represents a rule base
-export interface RuleBase {
-  configure(clientConfig: ClientConfig, config: Map<string, string>): void
- 
-  type(): string;
- 
-  close(): void
-}
- 
-// RuleExecutor represents a rule executor
-export interface RuleExecutor extends RuleBase {
-  transform(ctx: RuleContext, msg: any): Promise<any>
-}
- 
-// FieldTransformer represents a field transformer
-export type FieldTransformer = (ctx: RuleContext, fieldTransform: FieldTransform, msg: any) => any;
- 
-// FieldTransform represents a field transform
-export interface FieldTransform {
-  transform(ctx: RuleContext, fieldCtx: FieldContext, fieldValue: any): Promise<any>;
-}
- 
-// FieldRuleExecutor represents a field rule executor
-export abstract class FieldRuleExecutor implements RuleExecutor {
-  config: Map<string, string> | null = null
- 
-  abstract configure(clientConfig: ClientConfig, config: Map<string, string>): void
- 
-  abstract type(): string;
- 
-  abstract newTransform(ctx: RuleContext): FieldTransform;
- 
-  async transform(ctx: RuleContext, msg: any): Promise<any> {
-    // TODO preserve source
-    switch (ctx.ruleMode) {
-      case RuleMode.WRITE:
-      case RuleMode.UPGRADE:
-        for (let i = 0; i < ctx.index; i++) {
-          let otherRule = ctx.rules[i]
-          Iif (areTransformsWithSameTag(ctx.rule, otherRule)) {
-            // ignore this transform if an earlier one has the same tag
-            return msg
-          }
-        }
-        break
-      case RuleMode.READ:
-      case RuleMode.DOWNGRADE:
-        for (let i = ctx.index + 1; i < ctx.rules.length; i++) {
-          let otherRule = ctx.rules[i]
-          Iif (areTransformsWithSameTag(ctx.rule, otherRule)) {
-            // ignore this transform if a later one has the same tag
-            return msg
-          }
-        }
-        break
-    }
-    let fieldTransform = this.newTransform(ctx)
-    return ctx.fieldTransformer(ctx, fieldTransform, msg)
-  }
- 
-  abstract close(): void
-}
- 
-function areTransformsWithSameTag(rule1: Rule, rule2: Rule): boolean {
-  return rule1.tags != null && rule1.tags.length > 0
-    && rule1.kind === 'TRANSFORM'
-    && rule1.kind === rule2.kind
-    && rule1.mode === rule2.mode
-    && rule1.type === rule2.type
-    && rule1.tags === rule2.tags
-}
- 
-// FieldContext represents a field context
-export class FieldContext {
-  containingMessage: any
-  fullName: string
-  name: string
-  type: FieldType
-  tags: Set<string>
- 
-  constructor(containingMessage: any, fullName: string, name: string, fieldType: FieldType, tags: Set<string>) {
-    this.containingMessage = containingMessage
-    this.fullName = fullName
-    this.name = name
-    this.type = fieldType
-    this.tags = new Set<string>(tags)
-  }
- 
-  isPrimitive(): boolean {
-    let t = this.type
-    return t === FieldType.STRING || t === FieldType.BYTES || t === FieldType.INT
-      || t === FieldType.LONG || t === FieldType.FLOAT || t === FieldType.DOUBLE
-      || t === FieldType.BOOLEAN || t === FieldType.NULL
-  }
- 
-  typeName(): string {
-    return this.type.toString()
-  }
-}
- 
-// FieldType represents the field type
-export enum FieldType {
-  RECORD = 'RECORD',
-  ENUM = 'ENUM',
-  ARRAY = 'ARRAY',
-  MAP = 'MAP',
-  COMBINED = 'COMBINED',
-  FIXED = 'FIXED',
-  STRING = 'STRING',
-  BYTES = 'BYTES',
-  INT = 'INT',
-  LONG = 'LONG',
-  FLOAT = 'FLOAT',
-  DOUBLE = 'DOUBLE',
-  BOOLEAN = 'BOOLEAN',
-  NULL = 'NULL',
-}
- 
-// RuleAction represents a rule action
-export interface RuleAction extends RuleBase {
-  run(ctx: RuleContext, msg: any, err: Error | null): Promise<void>
-}
- 
-// ErrorAction represents an error action
-export class ErrorAction implements RuleAction {
-  configure(clientConfig: ClientConfig, config: Map<string, string>): void {
-  }
- 
-  type(): string {
-    return 'ERROR'
-  }
- 
-  async run(ctx: RuleContext, msg: any, err: Error): Promise<void> {
-    throw new SerializationError(err.message)
-  }
- 
-  close(): void {
-  }
-}
- 
-// NoneAction represents a no-op action
-export class NoneAction implements RuleAction {
-  configure(clientConfig: ClientConfig, config: Map<string, string>): void {
-  }
- 
-  type(): string {
-    return 'NONE'
-  }
- 
-  async run(ctx: RuleContext, msg: any, err: Error): Promise<void> {
-    return
-  }
- 
-  close(): void {
-  }
-}
- 
-// RuleError represents a rule condition error
-export class RuleError extends Error {
- 
-  constructor(message?: string) {
-    super(message)
-  }
-}
- 
-// RuleConditionError represents a rule condition error
-export class RuleConditionError extends RuleError {
-  rule: Rule
- 
-  constructor(rule: Rule) {
-    super(RuleConditionError.error(rule))
-    this.rule = rule
-  }
- 
-  static error(rule: Rule): string {
-    let errMsg = rule.doc
-    Iif (!errMsg) {
-      Iif (rule.expr !== '') {
-        return `Expr failed: '${rule.expr}'`
-      }
-      return `Condition failed: '${rule.name}'`
-    }
-    return errMsg
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/schemaregistry/serde/wildcard-matcher.ts.html b/coverage/lcov-report/schemaregistry/serde/wildcard-matcher.ts.html deleted file mode 100644 index 40dcc45a..00000000 --- a/coverage/lcov-report/schemaregistry/serde/wildcard-matcher.ts.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - Code coverage report for schemaregistry/serde/wildcard-matcher.ts - - - - - - - - - -
-
-

All files / schemaregistry/serde wildcard-matcher.ts

-
- -
- 74.28% - Statements - 26/35 -
- - -
- 85.71% - Branches - 18/21 -
- - -
- 66.66% - Functions - 2/3 -
- - -
- 74.28% - Lines - 26/35 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -27x -  -27x -27x -  -  -  -27x -27x -  -  -  -27x -27x -27x -27x -27x -121x -121x -121x -  -  -21x -2x -2x -  -19x -  -21x -  -8x -8x -  -  -  -  -  -  -  -  -  -  -6x -6x -  -  -  -  -86x -86x -  -  -27x -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
/**
- * Matches fully-qualified names that use dot (.) as the name boundary.
- *
- * <p>A '?' matches a single character.
- * A '*' matches one or more characters within a name boundary.
- * A '**' matches one or more characters across name boundaries.
- *
- * <p>Examples:
- * <pre>
- * wildcardMatch("eve", "eve*")                  --&gt; true
- * wildcardMatch("alice.bob.eve", "a*.bob.eve")  --&gt; true
- * wildcardMatch("alice.bob.eve", "a*.bob.e*")   --&gt; true
- * wildcardMatch("alice.bob.eve", "a*")          --&gt; false
- * wildcardMatch("alice.bob.eve", "a**")         --&gt; true
- * wildcardMatch("alice.bob.eve", "alice.bob*")  --&gt; false
- * wildcardMatch("alice.bob.eve", "alice.bob**") --&gt; true
- * </pre>
- *
- * @param str             the string to match on
- * @param wildcardMatcher the wildcard string to match against
- * @return true if the string matches the wildcard string
- */
-export function match(str: string, wildcardMatcher: string): boolean {
-  let re = wildcardToRegexp(wildcardMatcher, '.')
-  let pattern: RegExp
-  try {
-    pattern = new RegExp(re)
-  } catch (error) {
-    return false
-  }
-  let match = str.match(pattern)
-  return match != null && match[0] === str
-}
- 
-function wildcardToRegexp(globExp: string, separator: string): string {
-  let dst = ''
-  let src = globExp.replaceAll('**'+separator+'*', '**')
-  let i = 0;
-  let size = src.length;
-  while (i < size) {
-    let c = src[i]
-    i++
-    switch (c) {
-    case '*':
-      // One char lookahead for **
-      if (i < src.length && src[i] == '*') {
-        dst += '.*'
-        i++
-      } else {
-        dst += '[^' + separator + ']*'
-      }
-      break
-    case '?':
-      dst += '[^' + separator + ']'
-      break
-    case '.':
-    case '+':
-    case '{':
-    case '}':
-    case '(':
-    case ')':
-    case '|':
-    case '^':
-    case '$':
-      // These need to be escaped in regular expressions
-      dst += '\\' + c
-      break
-    case '\\':
-      [dst, i] = doubleSlashes(dst, src, i)
-      break
-    default:
-      dst += c
-      break
-    }
-  }
-  return dst
-}
- 
-function doubleSlashes(dst: string, src: string, i: number): [string, number] {
-  // Emit the next character without special interpretation
-  dst += '\\'
-  if (i+1 < src.length) {
-    dst += '\\' + src[i]
-    i++
-  } else {
-    // A backslash at the very end is treated like an escaped backslash
-    dst += '\\'
-  }
-  return [dst, i]
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png deleted file mode 100644 index 6ed68316eb3f65dec9063332d2f69bf3093bbfab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc diff --git a/coverage/lcov-report/sorter.js b/coverage/lcov-report/sorter.js deleted file mode 100644 index 2bb296a8..00000000 --- a/coverage/lcov-report/sorter.js +++ /dev/null @@ -1,196 +0,0 @@ -/* eslint-disable */ -var addSorting = (function() { - 'use strict'; - var cols, - currentSort = { - index: 0, - desc: false - }; - - // returns the summary table element - function getTable() { - return document.querySelector('.coverage-summary'); - } - // returns the thead element of the summary table - function getTableHeader() { - return getTable().querySelector('thead tr'); - } - // returns the tbody element of the summary table - function getTableBody() { - return getTable().querySelector('tbody'); - } - // returns the th element for nth column - function getNthColumn(n) { - return getTableHeader().querySelectorAll('th')[n]; - } - - function onFilterInput() { - const searchValue = document.getElementById('fileSearch').value; - const rows = document.getElementsByTagName('tbody')[0].children; - for (let i = 0; i < rows.length; i++) { - const row = rows[i]; - if ( - row.textContent - .toLowerCase() - .includes(searchValue.toLowerCase()) - ) { - row.style.display = ''; - } else { - row.style.display = 'none'; - } - } - } - - // loads the search box - function addSearchBox() { - var template = document.getElementById('filterTemplate'); - var templateClone = template.content.cloneNode(true); - templateClone.getElementById('fileSearch').oninput = onFilterInput; - template.parentElement.appendChild(templateClone); - } - - // loads all columns - function loadColumns() { - var colNodes = getTableHeader().querySelectorAll('th'), - colNode, - cols = [], - col, - i; - - for (i = 0; i < colNodes.length; i += 1) { - colNode = colNodes[i]; - col = { - key: colNode.getAttribute('data-col'), - sortable: !colNode.getAttribute('data-nosort'), - type: colNode.getAttribute('data-type') || 'string' - }; - cols.push(col); - if (col.sortable) { - col.defaultDescSort = col.type === 'number'; - colNode.innerHTML = - colNode.innerHTML + ''; - } - } - return cols; - } - // attaches a data attribute to every tr element with an object - // of data values keyed by column name - function loadRowData(tableRow) { - var tableCols = tableRow.querySelectorAll('td'), - colNode, - col, - data = {}, - i, - val; - for (i = 0; i < tableCols.length; i += 1) { - colNode = tableCols[i]; - col = cols[i]; - val = colNode.getAttribute('data-value'); - if (col.type === 'number') { - val = Number(val); - } - data[col.key] = val; - } - return data; - } - // loads all row data - function loadData() { - var rows = getTableBody().querySelectorAll('tr'), - i; - - for (i = 0; i < rows.length; i += 1) { - rows[i].data = loadRowData(rows[i]); - } - } - // sorts the table using the data for the ith column - function sortByIndex(index, desc) { - var key = cols[index].key, - sorter = function(a, b) { - a = a.data[key]; - b = b.data[key]; - return a < b ? -1 : a > b ? 1 : 0; - }, - finalSorter = sorter, - tableBody = document.querySelector('.coverage-summary tbody'), - rowNodes = tableBody.querySelectorAll('tr'), - rows = [], - i; - - if (desc) { - finalSorter = function(a, b) { - return -1 * sorter(a, b); - }; - } - - for (i = 0; i < rowNodes.length; i += 1) { - rows.push(rowNodes[i]); - tableBody.removeChild(rowNodes[i]); - } - - rows.sort(finalSorter); - - for (i = 0; i < rows.length; i += 1) { - tableBody.appendChild(rows[i]); - } - } - // removes sort indicators for current column being sorted - function removeSortIndicators() { - var col = getNthColumn(currentSort.index), - cls = col.className; - - cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); - col.className = cls; - } - // adds sort indicators for current column being sorted - function addSortIndicators() { - getNthColumn(currentSort.index).className += currentSort.desc - ? ' sorted-desc' - : ' sorted'; - } - // adds event listeners for all sorter widgets - function enableUI() { - var i, - el, - ithSorter = function ithSorter(i) { - var col = cols[i]; - - return function() { - var desc = col.defaultDescSort; - - if (currentSort.index === i) { - desc = !currentSort.desc; - } - sortByIndex(i, desc); - removeSortIndicators(); - currentSort.index = i; - currentSort.desc = desc; - addSortIndicators(); - }; - }; - for (i = 0; i < cols.length; i += 1) { - if (cols[i].sortable) { - // add the click event handler on the th so users - // dont have to click on those tiny arrows - el = getNthColumn(i).querySelector('.sorter').parentElement; - if (el.addEventListener) { - el.addEventListener('click', ithSorter(i)); - } else { - el.attachEvent('onclick', ithSorter(i)); - } - } - } - } - // adds sorting functionality to the UI - return function() { - if (!getTable()) { - return; - } - cols = loadColumns(); - loadData(); - addSearchBox(); - addSortIndicators(); - enableUI(); - }; -})(); - -window.addEventListener('load', addSorting); diff --git a/coverage/lcov-report/test/schemaregistry/dekregistry/index.html b/coverage/lcov-report/test/schemaregistry/dekregistry/index.html deleted file mode 100644 index 5d8fcc53..00000000 --- a/coverage/lcov-report/test/schemaregistry/dekregistry/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Code coverage report for test/schemaregistry/dekregistry - - - - - - - - - -
-
-

All files test/schemaregistry/dekregistry

-
- -
- 100% - Statements - 33/33 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 20/20 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
test-constants.ts -
-
100%33/33100%0/0100%0/0100%20/20
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/test/schemaregistry/dekregistry/test-constants.ts.html b/coverage/lcov-report/test/schemaregistry/dekregistry/test-constants.ts.html deleted file mode 100644 index a25fadd5..00000000 --- a/coverage/lcov-report/test/schemaregistry/dekregistry/test-constants.ts.html +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - Code coverage report for test/schemaregistry/dekregistry/test-constants.ts - - - - - - - - - -
-
-

All files / test/schemaregistry/dekregistry test-constants.ts

-
- -
- 100% - Statements - 33/33 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 20/20 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -742x -  -  -2x -2x -2x -2x -2x -2x -  -2x -2x -2x -2x -  -2x -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -2x -2x -2x - 
import { MOCK_TS } from "../../../schemaregistry/dekregistry/constants";
-import { Kek, Dek } from "../../../schemaregistry/dekregistry/dekregistry-client";
- 
-const TEST_KEK_NAME: string = 'test-kek-name';
-const TEST_KEK_NAME_2: string = 'test-kek-name2';
-const TEST_KMS_TYPE: string = 'test-kms-type';
-const TEST_KMS_KEY_ID: string = 'test-kms-key-id';
-const TEST_KMS_PROPS = { testKey: 'testValue' };
-const TEST_DOC: string = 'test-doc';
- 
-const TEST_SUBJECT: string = 'test-subject';
-const TEST_ALGORITHM: string = 'test-algorithm';
-const TEST_ENCRYPTED_KEY_MATERIAL: string = 'test-encrypted-key-material';
-const TEST_VERSION: number = 1;
- 
-const TEST_KEK: Kek = {
-  name: TEST_KEK_NAME,
-  kmsType: TEST_KMS_TYPE,
-  kmsKeyId: TEST_KMS_KEY_ID,
-  kmsProps: TEST_KMS_PROPS,
-  doc: TEST_DOC,
-  shared: true
-};
- 
-const TEST_KEK_2: Kek = {
-  name: TEST_KEK_NAME_2,
-  kmsType: TEST_KMS_TYPE,
-  kmsKeyId: TEST_KMS_KEY_ID,
-  kmsProps: TEST_KMS_PROPS,
-  doc: TEST_DOC,
-  shared: true
-};
- 
-const TEST_DEK: Dek = {
-  kekName: TEST_KEK_NAME,
-  subject: TEST_SUBJECT,
-  algorithm: TEST_ALGORITHM,
-  encryptedKeyMaterial: TEST_ENCRYPTED_KEY_MATERIAL,
-  version: TEST_VERSION,
-  ts: MOCK_TS
-};
- 
-const TEST_DEK_V2: Dek = {
-  kekName: TEST_KEK_NAME,
-  subject: TEST_SUBJECT,
-  algorithm: TEST_ALGORITHM,
-  encryptedKeyMaterial: TEST_ENCRYPTED_KEY_MATERIAL,
-  version: 2,
-  ts: MOCK_TS
-};
- 
-const TEST_DEK_2: Dek = {
-  kekName: TEST_KEK_NAME_2,
-  subject: TEST_SUBJECT,
-  algorithm: TEST_ALGORITHM,
-  encryptedKeyMaterial: TEST_ENCRYPTED_KEY_MATERIAL,
-  version: TEST_VERSION,
-  ts: MOCK_TS
-};
- 
-const TEST_DEK_LATEST: Dek = {
-  kekName: TEST_KEK_NAME,
-  subject: TEST_SUBJECT,
-  algorithm: TEST_ALGORITHM,
-  encryptedKeyMaterial: TEST_ENCRYPTED_KEY_MATERIAL,
-  version: -1,
-  ts: MOCK_TS
-};
- 
-export {
-  TEST_KEK_NAME, TEST_KEK_NAME_2, TEST_KMS_TYPE, TEST_KMS_KEY_ID, TEST_KMS_PROPS, TEST_DOC,
-  TEST_SUBJECT, TEST_ALGORITHM, TEST_ENCRYPTED_KEY_MATERIAL, TEST_VERSION,
-  TEST_KEK, TEST_KEK_2, TEST_DEK, TEST_DEK_V2, TEST_DEK_2, TEST_DEK_LATEST
-};
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/test/schemaregistry/index.html b/coverage/lcov-report/test/schemaregistry/index.html deleted file mode 100644 index 5897a3ba..00000000 --- a/coverage/lcov-report/test/schemaregistry/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Code coverage report for test/schemaregistry - - - - - - - - - -
-
-

All files test/schemaregistry

-
- -
- 100% - Statements - 7/7 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 6/6 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
test-constants.ts -
-
100%7/7100%0/0100%0/0100%6/6
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/test/schemaregistry/serde/author_pb.ts.html b/coverage/lcov-report/test/schemaregistry/serde/author_pb.ts.html deleted file mode 100644 index 962ac05b..00000000 --- a/coverage/lcov-report/test/schemaregistry/serde/author_pb.ts.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - Code coverage report for test/schemaregistry/serde/author_pb.ts - - - - - - - - - -
-
-

All files / test/schemaregistry/serde author_pb.ts

-
- -
- 100% - Statements - 5/5 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 5/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70  -  -  -  -  -1x -1x -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  - 
// @generated by protoc-gen-es v2.0.0 with parameter "target=ts"
-// @generated from file test/schemaregistry/serde/author.proto (package test, syntax proto3)
-/* eslint-disable */
- 
-import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
-import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
-import { file_confluent_meta } from "../../../schemaregistry/confluent/meta_pb";
-import type { Message } from "@bufbuild/protobuf";
- 
-/**
- * Describes the file test/schemaregistry/serde/author.proto.
- */
-export const file_test_schemaregistry_serde_author: GenFile = /*@__PURE__*/
-  fileDesc("CiZ0ZXN0L3NjaGVtYXJlZ2lzdHJ5L3NlcmRlL2F1dGhvci5wcm90bxIEdGVzdCJWCgZBdXRob3ISFgoEbmFtZRgBIAEoCUIIgkQFGgNQSUkSCgoCaWQYAiABKAUSGQoHcGljdHVyZRgDIAEoDEIIgkQFGgNQSUkSDQoFd29ya3MYBCADKAkiJwoFUGl6emESDAoEc2l6ZRgBIAEoCRIQCgh0b3BwaW5ncxgCIAMoCUIJWgcuLi90ZXN0YgZwcm90bzM", [file_confluent_meta]);
- 
-/**
- * @generated from message test.Author
- */
-export type Author = Message<"test.Author"> & {
-  /**
-   * @generated from field: string name = 1;
-   */
-  name: string;
- 
-  /**
-   * @generated from field: int32 id = 2;
-   */
-  id: number;
- 
-  /**
-   * @generated from field: bytes picture = 3;
-   */
-  picture: Uint8Array;
- 
-  /**
-   * @generated from field: repeated string works = 4;
-   */
-  works: string[];
-};
- 
-/**
- * Describes the message test.Author.
- * Use `create(AuthorSchema)` to create a new message.
- */
-export const AuthorSchema: GenMessage<Author> = /*@__PURE__*/
-  messageDesc(file_test_schemaregistry_serde_author, 0);
- 
-/**
- * @generated from message test.Pizza
- */
-export type Pizza = Message<"test.Pizza"> & {
-  /**
-   * @generated from field: string size = 1;
-   */
-  size: string;
- 
-  /**
-   * @generated from field: repeated string toppings = 2;
-   */
-  toppings: string[];
-};
- 
-/**
- * Describes the message test.Pizza.
- * Use `create(PizzaSchema)` to create a new message.
- */
-export const PizzaSchema: GenMessage<Pizza> = /*@__PURE__*/
-  messageDesc(file_test_schemaregistry_serde_author, 1);
- 
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/test/schemaregistry/serde/index.html b/coverage/lcov-report/test/schemaregistry/serde/index.html deleted file mode 100644 index 616ab1bf..00000000 --- a/coverage/lcov-report/test/schemaregistry/serde/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Code coverage report for test/schemaregistry/serde - - - - - - - - - -
-
-

All files test/schemaregistry/serde

-
- -
- 100% - Statements - 5/5 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 5/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
author_pb.ts -
-
100%5/5100%0/0100%0/0100%5/5
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/test/schemaregistry/test-constants.ts.html b/coverage/lcov-report/test/schemaregistry/test-constants.ts.html deleted file mode 100644 index 56ada433..00000000 --- a/coverage/lcov-report/test/schemaregistry/test-constants.ts.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - Code coverage report for test/schemaregistry/test-constants.ts - - - - - - - - - -
-
-

All files / test/schemaregistry test-constants.ts

-
- -
- 100% - Statements - 7/7 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 6/6 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36  -  -  -2x -  -2x -  -2x -  -  -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -2x - 
import { CreateAxiosDefaults } from 'axios';
-import { ClientConfig } from '../../schemaregistry/rest-service';
- 
-const baseUrls = ['http://localhost:8081'];
- 
-const mockBaseUrls = ['http://mocked-url'];
- 
-const createAxiosDefaults: CreateAxiosDefaults = {
-  headers: {
-    'Content-Type': 'application/vnd.schemaregistry.v1+json',
-  },
-  auth: {
-    username: 'RBACAllowedUser-lsrc1',
-    password: 'nohash',
-  },
-  timeout: 10000
-};
- 
-const clientConfig: ClientConfig = {
-  baseURLs: baseUrls,
-  createAxiosDefaults: createAxiosDefaults,
-  isForward: false,
-  cacheCapacity: 512,
-  cacheLatestTtlSecs: 60,
-};
- 
-const mockClientConfig: ClientConfig = {
-  baseURLs: mockBaseUrls,
-  createAxiosDefaults: createAxiosDefaults,
-  isForward: false,
-  cacheCapacity: 512,
-  cacheLatestTtlSecs: 60,
-};
- 
-export { clientConfig, mockClientConfig };
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov.info b/coverage/lcov.info deleted file mode 100644 index a5bb4cb4..00000000 --- a/coverage/lcov.info +++ /dev/null @@ -1,4250 +0,0 @@ -TN: -SF:schemaregistry/mock-schemaregistry-client.ts -FN:29,(anonymous_1) -FN:32,(anonymous_2) -FN:36,(anonymous_3) -FN:52,(anonymous_4) -FN:61,(anonymous_5) -FN:65,(anonymous_6) -FN:73,(anonymous_7) -FN:92,(anonymous_8) -FN:113,(anonymous_9) -FN:127,(anonymous_10) -FN:137,(anonymous_11) -FN:146,(anonymous_12) -FN:155,(anonymous_13) -FN:188,(anonymous_14) -FN:214,(anonymous_15) -FN:223,(anonymous_16) -FN:232,(anonymous_17) -FN:241,(anonymous_18) -FN:253,(anonymous_19) -FN:261,(anonymous_20) -FN:269,(anonymous_21) -FN:277,(anonymous_22) -FN:285,(anonymous_23) -FN:296,(anonymous_24) -FN:307,(anonymous_25) -FN:338,(anonymous_26) -FN:363,(anonymous_27) -FN:367,(anonymous_28) -FN:371,(anonymous_29) -FN:379,(anonymous_30) -FN:384,(anonymous_31) -FN:392,(anonymous_32) -FN:397,(anonymous_33) -FN:405,(anonymous_34) -FN:410,(anonymous_35) -FN:418,(anonymous_36) -FN:423,(anonymous_37) -FN:427,(anonymous_38) -FNF:38 -FNH:30 -FNDA:31,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:30,(anonymous_3) -FNDA:31,(anonymous_4) -FNDA:15,(anonymous_5) -FNDA:29,(anonymous_6) -FNDA:30,(anonymous_7) -FNDA:30,(anonymous_8) -FNDA:30,(anonymous_9) -FNDA:15,(anonymous_10) -FNDA:8,(anonymous_11) -FNDA:4,(anonymous_12) -FNDA:6,(anonymous_13) -FNDA:2,(anonymous_14) -FNDA:2,(anonymous_15) -FNDA:4,(anonymous_16) -FNDA:1,(anonymous_17) -FNDA:35,(anonymous_18) -FNDA:4,(anonymous_19) -FNDA:3,(anonymous_20) -FNDA:1,(anonymous_21) -FNDA:3,(anonymous_22) -FNDA:5,(anonymous_23) -FNDA:2,(anonymous_24) -FNDA:2,(anonymous_25) -FNDA:1,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:2,(anonymous_29) -FNDA:2,(anonymous_30) -FNDA:2,(anonymous_31) -FNDA:2,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:6,(anonymous_38) -DA:2,5 -DA:10,5 -DA:12,5 -DA:30,31 -DA:33,0 -DA:37,30 -DA:38,30 -DA:42,5 -DA:53,31 -DA:54,31 -DA:55,31 -DA:56,31 -DA:57,31 -DA:58,31 -DA:62,15 -DA:66,29 -DA:67,29 -DA:68,0 -DA:70,29 -DA:74,30 -DA:76,30 -DA:77,30 -DA:78,0 -DA:81,30 -DA:82,30 -DA:83,0 -DA:86,30 -DA:87,30 -DA:89,30 -DA:93,30 -DA:95,30 -DA:96,7 -DA:97,7 -DA:98,0 -DA:99,0 -DA:103,30 -DA:104,30 -DA:105,30 -DA:106,30 -DA:107,30 -DA:110,30 -DA:114,30 -DA:117,30 -DA:118,24 -DA:120,6 -DA:123,30 -DA:124,30 -DA:128,15 -DA:129,15 -DA:131,15 -DA:132,2 -DA:134,13 -DA:138,8 -DA:139,8 -DA:140,8 -DA:141,4 -DA:143,4 -DA:147,4 -DA:148,4 -DA:149,0 -DA:152,4 -DA:157,6 -DA:158,9 -DA:159,9 -DA:160,6 -DA:164,6 -DA:165,0 -DA:168,6 -DA:169,6 -DA:170,9 -DA:171,9 -DA:172,6 -DA:175,6 -DA:176,0 -DA:180,6 -DA:189,2 -DA:191,2 -DA:192,4 -DA:193,4 -DA:194,4 -DA:197,2 -DA:199,2 -DA:200,4 -DA:201,4 -DA:202,4 -DA:203,2 -DA:208,2 -DA:209,0 -DA:212,2 -DA:214,2 -DA:215,2 -DA:216,0 -DA:220,2 -DA:224,4 -DA:225,6 -DA:226,2 -DA:229,2 -DA:233,1 -DA:235,1 -DA:236,0 -DA:238,1 -DA:242,35 -DA:244,35 -DA:245,14 -DA:246,14 -DA:247,13 -DA:250,35 -DA:254,4 -DA:255,4 -DA:256,0 -DA:258,4 -DA:262,3 -DA:263,1 -DA:265,2 -DA:270,1 -DA:271,1 -DA:273,0 -DA:278,3 -DA:279,1 -DA:281,2 -DA:286,5 -DA:287,5 -DA:289,5 -DA:290,4 -DA:293,1 -DA:297,2 -DA:298,2 -DA:299,2 -DA:300,2 -DA:301,2 -DA:304,2 -DA:308,2 -DA:309,2 -DA:310,2 -DA:311,2 -DA:312,2 -DA:316,2 -DA:317,2 -DA:318,2 -DA:319,2 -DA:320,2 -DA:324,2 -DA:326,2 -DA:327,1 -DA:328,1 -DA:329,1 -DA:330,1 -DA:335,2 -DA:339,1 -DA:340,2 -DA:341,2 -DA:342,1 -DA:344,1 -DA:345,1 -DA:346,1 -DA:347,1 -DA:350,1 -DA:351,0 -DA:352,0 -DA:353,0 -DA:354,0 -DA:360,1 -DA:364,0 -DA:368,0 -DA:372,2 -DA:373,2 -DA:374,1 -DA:376,1 -DA:380,2 -DA:381,2 -DA:385,2 -DA:386,2 -DA:387,1 -DA:389,1 -DA:393,2 -DA:394,2 -DA:398,0 -DA:399,0 -DA:400,0 -DA:402,0 -DA:406,0 -DA:407,0 -DA:411,0 -DA:412,0 -DA:413,0 -DA:415,0 -DA:419,0 -DA:420,0 -DA:424,0 -DA:428,6 -DA:432,5 -LF:191 -LH:158 -BRDA:65,0,0,20 -BRDA:67,1,0,0 -BRDA:73,2,0,1 -BRDA:77,3,0,0 -BRDA:77,4,0,30 -BRDA:77,4,1,0 -BRDA:82,5,0,0 -BRDA:97,6,0,0 -BRDA:97,7,0,7 -BRDA:97,7,1,6 -BRDA:104,8,0,30 -BRDA:117,9,0,24 -BRDA:117,9,1,6 -BRDA:131,10,0,2 -BRDA:131,11,0,15 -BRDA:131,11,1,13 -BRDA:140,12,0,4 -BRDA:140,13,0,8 -BRDA:140,13,1,6 -BRDA:148,14,0,0 -BRDA:155,15,0,6 -BRDA:159,16,0,6 -BRDA:159,17,0,9 -BRDA:159,17,1,9 -BRDA:159,17,2,6 -BRDA:164,18,0,0 -BRDA:171,19,0,6 -BRDA:171,20,0,9 -BRDA:171,20,1,9 -BRDA:175,21,0,0 -BRDA:188,22,0,2 -BRDA:201,23,0,4 -BRDA:201,24,0,4 -BRDA:201,24,1,4 -BRDA:201,24,2,0 -BRDA:202,25,0,2 -BRDA:202,26,0,4 -BRDA:202,26,1,4 -BRDA:208,27,0,0 -BRDA:215,28,0,0 -BRDA:225,29,0,2 -BRDA:235,30,0,0 -BRDA:246,31,0,13 -BRDA:246,32,0,14 -BRDA:246,32,1,13 -BRDA:255,33,0,0 -BRDA:262,34,0,1 -BRDA:262,34,1,2 -BRDA:270,35,0,1 -BRDA:270,35,1,0 -BRDA:278,36,0,1 -BRDA:278,36,1,2 -BRDA:285,37,0,5 -BRDA:289,38,0,4 -BRDA:289,39,0,5 -BRDA:289,39,1,3 -BRDA:300,40,0,2 -BRDA:300,41,0,2 -BRDA:300,41,1,2 -BRDA:307,42,0,1 -BRDA:311,43,0,2 -BRDA:311,44,0,2 -BRDA:311,44,1,2 -BRDA:311,44,2,1 -BRDA:318,45,0,2 -BRDA:318,46,0,2 -BRDA:318,46,1,2 -BRDA:318,46,2,1 -BRDA:326,47,0,1 -BRDA:329,48,0,1 -BRDA:329,49,0,1 -BRDA:329,49,1,1 -BRDA:338,50,0,1 -BRDA:341,51,0,1 -BRDA:341,52,0,2 -BRDA:341,52,1,2 -BRDA:346,53,0,1 -BRDA:350,54,0,0 -BRDA:350,55,0,1 -BRDA:350,55,1,0 -BRDA:353,56,0,0 -BRDA:373,57,0,1 -BRDA:386,58,0,1 -BRDA:399,59,0,0 -BRDA:412,60,0,0 -BRF:85 -BRH:66 -end_of_record -TN: -SF:schemaregistry/rest-error.ts -FN:5,(anonymous_0) -FNF:1 -FNH:1 -FNDA:16,(anonymous_0) -DA:1,9 -DA:6,16 -DA:7,16 -DA:8,16 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/rest-service.ts -FN:25,(anonymous_1) -FN:34,(anonymous_2) -FN:69,(anonymous_3) -FN:73,(anonymous_4) -FN:83,(anonymous_5) -FN:87,(anonymous_6) -FNF:6 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,6 -DA:2,6 -DA:21,6 -DA:26,0 -DA:27,0 -DA:29,0 -DA:30,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:50,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:57,0 -DA:60,0 -DA:61,0 -DA:66,0 -DA:70,0 -DA:74,0 -DA:75,0 -DA:78,0 -DA:79,0 -DA:84,0 -DA:88,0 -LF:27 -LH:3 -BRDA:29,0,0,0 -BRDA:52,1,0,0 -BRDA:52,2,0,0 -BRDA:52,2,1,0 -BRDA:52,2,2,0 -BRDA:52,2,3,0 -BRDA:54,3,0,0 -BRDA:54,3,1,0 -BRDA:54,4,0,0 -BRDA:54,4,1,0 -BRDA:60,5,0,0 -BRDA:74,6,0,0 -BRDA:78,7,0,0 -BRF:13 -BRH:0 -end_of_record -TN: -SF:schemaregistry/schemaregistry-client.ts -FN:17,(anonymous_1) -FN:46,(anonymous_2) -FN:64,minimize -FN:160,(anonymous_4) -FN:185,(anonymous_5) -FN:193,(anonymous_6) -FN:197,(anonymous_7) -FN:203,(anonymous_8) -FN:206,(anonymous_9) -FN:224,(anonymous_10) -FN:226,(anonymous_11) -FN:245,(anonymous_12) -FN:248,(anonymous_13) -FN:266,(anonymous_14) -FN:267,(anonymous_15) -FN:284,(anonymous_16) -FN:287,(anonymous_17) -FN:304,(anonymous_18) -FN:307,(anonymous_19) -FN:333,(anonymous_20) -FN:341,(anonymous_21) -FN:344,(anonymous_22) -FN:362,(anonymous_23) -FN:370,(anonymous_24) -FN:371,(anonymous_25) -FN:372,(anonymous_26) -FN:380,(anonymous_27) -FN:381,(anonymous_28) -FN:389,(anonymous_29) -FN:390,(anonymous_30) -FN:398,(anonymous_31) -FN:399,(anonymous_32) -FN:416,(anonymous_33) -FN:417,(anonymous_34) -FN:420,(anonymous_35) -FN:426,(anonymous_36) -FN:432,(anonymous_37) -FN:441,(anonymous_38) -FN:455,(anonymous_39) -FN:466,(anonymous_40) -FN:477,(anonymous_41) -FN:487,(anonymous_42) -FN:498,(anonymous_43) -FN:506,(anonymous_44) -FN:515,(anonymous_45) -FN:525,(anonymous_46) -FN:534,(anonymous_47) -FN:542,(anonymous_48) -FN:551,(anonymous_49) -FN:561,(anonymous_50) -FN:563,(anonymous_51) -FN:568,(anonymous_52) -FN:570,(anonymous_53) -FN:575,(anonymous_54) -FN:577,(anonymous_55) -FN:582,(anonymous_56) -FN:584,(anonymous_57) -FN:589,(anonymous_58) -FN:590,(anonymous_59) -FN:595,(anonymous_60) -FN:596,(anonymous_61) -FN:601,(anonymous_62) -FN:602,(anonymous_63) -FN:607,(anonymous_64) -FN:608,(anonymous_65) -FNF:65 -FNH:59 -FNDA:5,(anonymous_1) -FNDA:5,(anonymous_2) -FNDA:99,minimize -FNDA:26,(anonymous_4) -FNDA:9,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:5,(anonymous_7) -FNDA:10,(anonymous_8) -FNDA:10,(anonymous_9) -FNDA:5,(anonymous_10) -FNDA:5,(anonymous_11) -FNDA:5,(anonymous_12) -FNDA:5,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:5,(anonymous_16) -FNDA:5,(anonymous_17) -FNDA:5,(anonymous_18) -FNDA:5,(anonymous_19) -FNDA:1,(anonymous_20) -FNDA:5,(anonymous_21) -FNDA:5,(anonymous_22) -FNDA:1,(anonymous_23) -FNDA:1,(anonymous_24) -FNDA:1,(anonymous_25) -FNDA:1,(anonymous_26) -FNDA:1,(anonymous_27) -FNDA:1,(anonymous_28) -FNDA:1,(anonymous_29) -FNDA:1,(anonymous_30) -FNDA:1,(anonymous_31) -FNDA:1,(anonymous_32) -FNDA:1,(anonymous_33) -FNDA:1,(anonymous_34) -FNDA:1,(anonymous_35) -FNDA:1,(anonymous_36) -FNDA:1,(anonymous_37) -FNDA:1,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:1,(anonymous_41) -FNDA:1,(anonymous_42) -FNDA:1,(anonymous_43) -FNDA:1,(anonymous_44) -FNDA:1,(anonymous_45) -FNDA:1,(anonymous_46) -FNDA:1,(anonymous_47) -FNDA:1,(anonymous_48) -FNDA:0,(anonymous_49) -FNDA:2,(anonymous_50) -FNDA:2,(anonymous_51) -FNDA:2,(anonymous_52) -FNDA:2,(anonymous_53) -FNDA:2,(anonymous_54) -FNDA:2,(anonymous_55) -FNDA:2,(anonymous_56) -FNDA:2,(anonymous_57) -FNDA:2,(anonymous_58) -FNDA:2,(anonymous_59) -FNDA:2,(anonymous_60) -FNDA:2,(anonymous_61) -FNDA:2,(anonymous_62) -FNDA:2,(anonymous_63) -FNDA:2,(anonymous_64) -FNDA:2,(anonymous_65) -DA:1,5 -DA:3,5 -DA:4,5 -DA:5,5 -DA:6,5 -DA:17,5 -DA:18,5 -DA:19,5 -DA:20,5 -DA:21,5 -DA:22,5 -DA:23,5 -DA:24,5 -DA:46,5 -DA:47,5 -DA:48,5 -DA:49,5 -DA:50,5 -DA:51,5 -DA:52,5 -DA:64,5 -DA:65,99 -DA:140,5 -DA:161,26 -DA:162,26 -DA:167,26 -DA:169,26 -DA:170,26 -DA:171,26 -DA:172,26 -DA:173,26 -DA:174,26 -DA:175,26 -DA:176,26 -DA:177,26 -DA:178,26 -DA:179,26 -DA:180,26 -DA:181,26 -DA:182,26 -DA:186,9 -DA:187,9 -DA:188,9 -DA:190,0 -DA:194,0 -DA:198,5 -DA:200,5 -DA:204,10 -DA:206,10 -DA:207,10 -DA:208,10 -DA:209,4 -DA:212,6 -DA:214,6 -DA:219,6 -DA:220,6 -DA:225,5 -DA:226,5 -DA:227,5 -DA:228,5 -DA:229,2 -DA:232,3 -DA:234,3 -DA:236,3 -DA:240,3 -DA:241,3 -DA:246,5 -DA:248,5 -DA:249,5 -DA:250,5 -DA:251,2 -DA:254,3 -DA:256,3 -DA:261,3 -DA:262,3 -DA:267,0 -DA:268,0 -DA:269,0 -DA:270,0 -DA:273,0 -DA:275,0 -DA:279,0 -DA:280,0 -DA:285,5 -DA:287,5 -DA:288,5 -DA:289,5 -DA:290,2 -DA:293,3 -DA:295,3 -DA:299,3 -DA:300,3 -DA:305,5 -DA:307,5 -DA:308,5 -DA:309,5 -DA:310,2 -DA:313,3 -DA:315,3 -DA:317,3 -DA:318,6 -DA:319,6 -DA:320,6 -DA:323,3 -DA:327,3 -DA:328,3 -DA:334,1 -DA:338,1 -DA:342,5 -DA:344,5 -DA:345,5 -DA:346,5 -DA:347,2 -DA:350,3 -DA:352,3 -DA:357,3 -DA:358,3 -DA:363,1 -DA:367,1 -DA:371,1 -DA:372,1 -DA:373,1 -DA:374,1 -DA:375,1 -DA:380,1 -DA:381,1 -DA:382,1 -DA:383,1 -DA:384,1 -DA:389,1 -DA:390,1 -DA:391,1 -DA:392,1 -DA:393,1 -DA:398,1 -DA:399,1 -DA:400,1 -DA:401,1 -DA:402,1 -DA:407,1 -DA:409,1 -DA:413,1 -DA:417,1 -DA:420,1 -DA:421,1 -DA:422,1 -DA:423,1 -DA:424,1 -DA:426,1 -DA:427,1 -DA:428,1 -DA:429,1 -DA:430,1 -DA:432,1 -DA:433,1 -DA:440,1 -DA:441,1 -DA:442,1 -DA:445,1 -DA:447,1 -DA:451,1 -DA:456,0 -DA:458,0 -DA:463,0 -DA:467,0 -DA:469,0 -DA:474,0 -DA:478,1 -DA:480,1 -DA:484,1 -DA:488,1 -DA:490,1 -DA:495,1 -DA:499,1 -DA:503,1 -DA:507,1 -DA:512,1 -DA:516,1 -DA:518,1 -DA:522,1 -DA:526,1 -DA:531,1 -DA:535,1 -DA:539,1 -DA:543,1 -DA:548,1 -DA:552,0 -DA:553,0 -DA:554,0 -DA:555,0 -DA:557,0 -DA:562,2 -DA:563,2 -DA:564,2 -DA:569,2 -DA:570,2 -DA:571,2 -DA:576,2 -DA:577,2 -DA:578,2 -DA:583,2 -DA:584,2 -DA:585,2 -DA:590,2 -DA:591,2 -DA:596,2 -DA:597,2 -DA:602,2 -DA:603,2 -DA:608,2 -DA:609,2 -LF:211 -LH:190 -BRDA:17,0,0,5 -BRDA:17,0,1,5 -BRDA:46,1,0,5 -BRDA:46,1,1,5 -BRDA:164,2,0,26 -BRDA:164,2,1,26 -BRDA:187,3,0,9 -BRDA:197,4,0,5 -BRDA:203,5,0,5 -BRDA:208,6,0,4 -BRDA:228,7,0,2 -BRDA:234,8,0,0 -BRDA:234,8,1,3 -BRDA:245,9,0,5 -BRDA:250,10,0,2 -BRDA:269,11,0,0 -BRDA:284,12,0,0 -BRDA:289,13,0,2 -BRDA:304,14,0,5 -BRDA:309,15,0,2 -BRDA:341,16,0,0 -BRDA:346,17,0,2 -BRDA:370,18,0,1 -BRDA:374,19,0,1 -BRDA:383,20,0,1 -BRDA:392,21,0,1 -BRDA:401,22,0,1 -BRDA:416,23,0,1 -BRDA:422,24,0,1 -BRDA:422,25,0,1 -BRDA:422,25,1,1 -BRDA:428,26,0,1 -BRF:32 -BRH:28 -end_of_record -TN: -SF:schemaregistry/confluent/meta_pb.ts -FNF:0 -FNH:0 -DA:6,1 -DA:8,1 -DA:14,1 -DA:41,1 -DA:47,1 -DA:53,1 -DA:59,1 -DA:65,1 -DA:71,1 -LF:9 -LH:9 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/confluent/types/decimal_pb.ts -FNF:0 -FNH:0 -DA:6,1 -DA:12,1 -DA:45,1 -LF:3 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/dekregistry/constants.ts -FNF:0 -FNH:0 -DA:1,5 -DA:4,5 -LF:2 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/dekregistry/dekregistry-client.ts -FN:66,(anonymous_1) -FN:80,(anonymous_2) -FN:88,(anonymous_3) -FN:108,(anonymous_4) -FN:128,(anonymous_5) -FN:135,(anonymous_6) -FN:139,(anonymous_7) -FN:163,(anonymous_8) -FN:166,(anonymous_9) -FN:181,(anonymous_10) -FN:185,(anonymous_11) -FN:212,(anonymous_12) -FN:216,(anonymous_13) -FN:232,(anonymous_14) -FN:237,(anonymous_15) -FNF:15 -FNH:14 -FNDA:7,(anonymous_1) -FNDA:15,(anonymous_2) -FNDA:5,(anonymous_3) -FNDA:22,(anonymous_4) -FNDA:5,(anonymous_5) -FNDA:6,(anonymous_6) -FNDA:6,(anonymous_7) -FNDA:1,(anonymous_8) -FNDA:1,(anonymous_9) -FNDA:7,(anonymous_10) -FNDA:7,(anonymous_11) -FNDA:3,(anonymous_12) -FNDA:3,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:2,(anonymous_15) -DA:1,4 -DA:2,4 -DA:3,4 -DA:4,4 -DA:5,4 -DA:67,7 -DA:73,7 -DA:74,7 -DA:75,7 -DA:76,7 -DA:77,7 -DA:81,15 -DA:82,15 -DA:83,15 -DA:85,0 -DA:89,5 -DA:90,0 -DA:93,5 -DA:94,5 -DA:95,5 -DA:96,5 -DA:98,0 -DA:99,0 -DA:101,0 -DA:105,5 -DA:109,22 -DA:110,5 -DA:113,17 -DA:114,5 -DA:115,5 -DA:116,5 -DA:118,0 -DA:119,0 -DA:121,0 -DA:125,17 -DA:129,5 -DA:130,5 -DA:131,5 -DA:137,6 -DA:139,6 -DA:140,6 -DA:141,6 -DA:142,2 -DA:145,4 -DA:154,4 -DA:158,4 -DA:159,4 -DA:164,1 -DA:166,1 -DA:167,1 -DA:168,1 -DA:169,1 -DA:171,0 -DA:173,0 -DA:176,0 -DA:177,0 -DA:183,7 -DA:185,7 -DA:186,7 -DA:187,7 -DA:188,2 -DA:191,5 -DA:197,5 -DA:199,5 -DA:203,5 -DA:205,5 -DA:206,5 -DA:208,5 -DA:214,3 -DA:216,3 -DA:217,3 -DA:218,3 -DA:219,2 -DA:221,1 -DA:222,1 -DA:224,1 -DA:227,1 -DA:228,1 -DA:233,0 -DA:238,2 -DA:239,2 -DA:240,2 -DA:244,4 -LF:83 -LH:70 -BRDA:69,0,0,7 -BRDA:69,0,1,7 -BRDA:82,1,0,15 -BRDA:89,2,0,0 -BRDA:93,3,0,5 -BRDA:98,4,0,0 -BRDA:109,5,0,5 -BRDA:113,6,0,5 -BRDA:118,7,0,0 -BRDA:129,8,0,5 -BRDA:141,9,0,2 -BRDA:149,10,0,4 -BRDA:149,10,1,4 -BRDA:150,11,0,4 -BRDA:150,11,1,4 -BRDA:163,12,0,1 -BRDA:168,13,0,1 -BRDA:182,14,0,0 -BRDA:187,15,0,2 -BRDA:195,16,0,5 -BRDA:195,16,1,5 -BRDA:213,17,0,1 -BRDA:213,18,0,3 -BRDA:218,19,0,2 -BRF:24 -BRH:20 -end_of_record -TN: -SF:schemaregistry/dekregistry/mock-dekregistry-client.ts -FN:10,(anonymous_1) -FN:15,(anonymous_2) -FN:36,(anonymous_3) -FN:46,(anonymous_4) -FN:67,(anonymous_5) -FN:93,(anonymous_6) -FNF:6 -FNH:5 -FNDA:20,(anonymous_1) -FNDA:7,(anonymous_2) -FNDA:8,(anonymous_3) -FNDA:9,(anonymous_4) -FNDA:13,(anonymous_5) -FNDA:0,(anonymous_6) -DA:2,5 -DA:3,5 -DA:4,5 -DA:11,20 -DA:12,20 -DA:17,7 -DA:18,7 -DA:19,7 -DA:20,0 -DA:23,7 -DA:32,7 -DA:33,7 -DA:37,8 -DA:38,8 -DA:39,8 -DA:40,6 -DA:43,2 -DA:48,9 -DA:49,9 -DA:50,9 -DA:51,0 -DA:54,9 -DA:63,9 -DA:64,9 -DA:69,13 -DA:70,1 -DA:71,1 -DA:72,2 -DA:73,2 -DA:75,2 -DA:78,1 -DA:79,0 -DA:81,1 -DA:84,13 -DA:85,13 -DA:86,13 -DA:87,11 -DA:90,2 -DA:94,0 -DA:98,5 -LF:40 -LH:36 -BRDA:19,0,0,0 -BRDA:27,1,0,7 -BRDA:27,1,1,2 -BRDA:28,2,0,7 -BRDA:28,2,1,2 -BRDA:36,3,0,1 -BRDA:39,4,0,6 -BRDA:39,5,0,8 -BRDA:39,5,1,6 -BRDA:39,5,2,0 -BRDA:47,6,0,0 -BRDA:50,7,0,0 -BRDA:58,8,0,9 -BRDA:58,8,1,9 -BRDA:68,9,0,0 -BRDA:68,10,0,2 -BRDA:69,11,0,1 -BRDA:73,12,0,2 -BRDA:73,13,0,2 -BRDA:73,13,1,2 -BRDA:73,13,2,2 -BRDA:73,13,3,2 -BRDA:78,14,0,0 -BRDA:86,15,0,11 -BRF:24 -BRH:18 -end_of_record -TN: -SF:schemaregistry/google/type/calendar_period_pb.ts -FN:35,(anonymous_0) -FNF:1 -FNH:1 -FNDA:1,(anonymous_0) -DA:20,1 -DA:25,1 -DA:35,1 -DA:41,1 -DA:48,1 -DA:56,1 -DA:65,1 -DA:72,1 -DA:80,1 -DA:87,1 -DA:94,1 -DA:100,1 -LF:12 -LH:12 -BRDA:35,0,0,1 -BRDA:35,0,1,1 -BRF:2 -BRH:2 -end_of_record -TN: -SF:schemaregistry/google/type/color_pb.ts -FNF:0 -FNH:0 -DA:20,1 -DA:21,1 -DA:27,1 -DA:202,1 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/google/type/date_pb.ts -FNF:0 -FNH:0 -DA:20,1 -DA:26,1 -DA:77,1 -LF:3 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/google/type/datetime_pb.ts -FNF:0 -FNH:0 -DA:20,1 -DA:22,1 -DA:28,1 -DA:149,1 -DA:178,1 -LF:5 -LH:5 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/google/type/dayofweek_pb.ts -FN:33,(anonymous_0) -FNF:1 -FNH:1 -FNDA:1,(anonymous_0) -DA:20,1 -DA:25,1 -DA:33,1 -DA:39,1 -DA:46,1 -DA:53,1 -DA:60,1 -DA:67,1 -DA:74,1 -DA:81,1 -DA:88,1 -DA:94,1 -LF:12 -LH:12 -BRDA:33,0,0,1 -BRDA:33,0,1,1 -BRF:2 -BRH:2 -end_of_record -TN: -SF:schemaregistry/google/type/expr_pb.ts -FNF:0 -FNH:0 -DA:20,1 -DA:26,1 -DA:103,1 -LF:3 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/google/type/fraction_pb.ts -FNF:0 -FNH:0 -DA:20,1 -DA:26,1 -DA:55,1 -LF:3 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/google/type/latlng_pb.ts -FNF:0 -FNH:0 -DA:20,1 -DA:26,1 -DA:58,1 -LF:3 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/google/type/money_pb.ts -FNF:0 -FNH:0 -DA:20,1 -DA:26,1 -DA:67,1 -LF:3 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/google/type/month_pb.ts -FN:33,(anonymous_0) -FNF:1 -FNH:1 -FNDA:1,(anonymous_0) -DA:20,1 -DA:25,1 -DA:33,1 -DA:39,1 -DA:46,1 -DA:53,1 -DA:60,1 -DA:67,1 -DA:74,1 -DA:81,1 -DA:88,1 -DA:95,1 -DA:102,1 -DA:109,1 -DA:116,1 -DA:123,1 -DA:129,1 -LF:17 -LH:17 -BRDA:33,0,0,1 -BRDA:33,0,1,1 -BRF:2 -BRH:2 -end_of_record -TN: -SF:schemaregistry/google/type/postal_address_pb.ts -FNF:0 -FNH:0 -DA:20,1 -DA:26,1 -DA:191,1 -LF:3 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/google/type/quaternion_pb.ts -FNF:0 -FNH:0 -DA:20,1 -DA:26,1 -DA:123,1 -LF:3 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/google/type/timeofday_pb.ts -FNF:0 -FNH:0 -DA:20,1 -DA:26,1 -DA:73,1 -LF:3 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/rules/encryption/encrypt-executor.ts -FN:38,(anonymous_6) -FN:57,(anonymous_7) -FN:60,(anonymous_8) -FN:66,(anonymous_9) -FN:71,(anonymous_10) -FN:75,(anonymous_11) -FN:84,(anonymous_12) -FN:90,(anonymous_13) -FN:100,(anonymous_14) -FN:111,(anonymous_15) -FN:133,(anonymous_16) -FN:138,(anonymous_17) -FN:154,(anonymous_18) -FN:175,(anonymous_19) -FN:192,(anonymous_20) -FN:209,(anonymous_21) -FN:214,(anonymous_22) -FN:219,(anonymous_23) -FN:224,(anonymous_24) -FN:237,(anonymous_25) -FN:249,(anonymous_26) -FN:253,(anonymous_27) -FN:260,(anonymous_28) -FN:301,(anonymous_29) -FN:312,(anonymous_30) -FN:323,(anonymous_31) -FN:380,(anonymous_32) -FN:397,(anonymous_33) -FN:418,(anonymous_34) -FN:426,(anonymous_35) -FN:480,(anonymous_36) -FN:486,(anonymous_37) -FN:498,(anonymous_38) -FN:509,(anonymous_39) -FN:521,getKmsClient -FNF:35 -FNH:32 -FNDA:3,(anonymous_6) -FNDA:3,(anonymous_7) -FNDA:3,(anonymous_8) -FNDA:15,(anonymous_9) -FNDA:3,(anonymous_10) -FNDA:9,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:9,(anonymous_13) -FNDA:9,(anonymous_14) -FNDA:9,(anonymous_15) -FNDA:11,(anonymous_16) -FNDA:2,(anonymous_17) -FNDA:2,(anonymous_18) -FNDA:6,(anonymous_19) -FNDA:12,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:1,(anonymous_22) -FNDA:6,(anonymous_23) -FNDA:11,(anonymous_24) -FNDA:9,(anonymous_25) -FNDA:15,(anonymous_26) -FNDA:11,(anonymous_27) -FNDA:7,(anonymous_28) -FNDA:7,(anonymous_29) -FNDA:2,(anonymous_30) -FNDA:11,(anonymous_31) -FNDA:11,(anonymous_32) -FNDA:2,(anonymous_33) -FNDA:11,(anonymous_34) -FNDA:11,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:1,(anonymous_37) -FNDA:6,(anonymous_38) -FNDA:9,(anonymous_39) -FNDA:5,getKmsClient -DA:1,3 -DA:10,3 -DA:11,3 -DA:12,3 -DA:14,3 -DA:15,3 -DA:16,3 -DA:18,3 -DA:19,3 -DA:20,3 -DA:21,3 -DA:22,3 -DA:25,3 -DA:27,3 -DA:29,3 -DA:31,3 -DA:33,3 -DA:36,3 -DA:38,3 -DA:39,3 -DA:40,3 -DA:41,3 -DA:57,3 -DA:58,3 -DA:61,3 -DA:62,3 -DA:63,3 -DA:67,15 -DA:68,15 -DA:72,3 -DA:76,9 -DA:77,9 -DA:78,9 -DA:80,9 -DA:81,9 -DA:85,0 -DA:86,0 -DA:91,9 -DA:92,9 -DA:93,9 -DA:94,1 -DA:96,9 -DA:97,9 -DA:101,9 -DA:102,9 -DA:103,0 -DA:105,9 -DA:106,0 -DA:108,9 -DA:112,9 -DA:113,9 -DA:114,8 -DA:116,1 -DA:117,1 -DA:118,0 -DA:120,1 -DA:121,0 -DA:123,1 -DA:127,3 -DA:128,3 -DA:134,11 -DA:135,11 -DA:139,2 -DA:142,0 -DA:145,0 -DA:148,2 -DA:150,0 -DA:155,2 -DA:156,2 -DA:158,0 -DA:162,0 -DA:165,2 -DA:169,2 -DA:171,0 -DA:177,6 -DA:179,0 -DA:180,0 -DA:181,0 -DA:184,6 -DA:185,6 -DA:186,6 -DA:188,0 -DA:194,12 -DA:196,1 -DA:197,1 -DA:198,1 -DA:201,11 -DA:202,11 -DA:203,11 -DA:205,0 -DA:210,0 -DA:211,0 -DA:215,1 -DA:216,1 -DA:220,6 -DA:221,6 -DA:225,11 -DA:226,11 -DA:230,3 -DA:234,9 -DA:243,9 -DA:244,9 -DA:245,9 -DA:246,9 -DA:250,15 -DA:254,11 -DA:255,7 -DA:257,11 -DA:261,7 -DA:262,7 -DA:263,7 -DA:264,7 -DA:268,7 -DA:269,7 -DA:270,2 -DA:271,0 -DA:273,2 -DA:274,0 -DA:276,2 -DA:277,0 -DA:279,2 -DA:280,2 -DA:282,0 -DA:284,2 -DA:285,0 -DA:288,7 -DA:289,0 -DA:293,7 -DA:294,0 -DA:298,7 -DA:302,7 -DA:303,7 -DA:305,2 -DA:306,2 -DA:308,0 -DA:313,2 -DA:314,2 -DA:316,0 -DA:317,0 -DA:319,0 -DA:324,11 -DA:325,11 -DA:326,11 -DA:327,10 -DA:329,11 -DA:336,11 -DA:337,11 -DA:338,11 -DA:339,11 -DA:340,2 -DA:341,0 -DA:343,2 -DA:344,2 -DA:345,2 -DA:347,2 -DA:348,2 -DA:350,2 -DA:351,2 -DA:359,2 -DA:360,2 -DA:362,0 -DA:364,2 -DA:365,0 -DA:369,11 -DA:370,5 -DA:371,3 -DA:373,5 -DA:374,5 -DA:377,11 -DA:381,11 -DA:383,11 -DA:384,11 -DA:385,0 -DA:387,11 -DA:388,9 -DA:390,2 -DA:391,2 -DA:393,0 -DA:398,2 -DA:400,2 -DA:401,2 -DA:402,2 -DA:404,2 -DA:405,2 -DA:406,2 -DA:408,2 -DA:409,2 -DA:411,0 -DA:412,0 -DA:414,0 -DA:419,11 -DA:420,11 -DA:427,11 -DA:428,0 -DA:430,11 -DA:432,4 -DA:433,4 -DA:434,0 -DA:436,4 -DA:437,4 -DA:438,0 -DA:440,4 -DA:441,4 -DA:442,4 -DA:443,4 -DA:444,0 -DA:446,4 -DA:447,2 -DA:449,2 -DA:454,7 -DA:455,5 -DA:457,2 -DA:459,7 -DA:460,0 -DA:462,7 -DA:463,7 -DA:464,1 -DA:465,1 -DA:466,0 -DA:468,1 -DA:470,7 -DA:471,7 -DA:472,7 -DA:473,7 -DA:476,0 -DA:481,0 -DA:482,0 -DA:483,0 -DA:487,1 -DA:488,1 -DA:489,0 -DA:495,1 -DA:499,6 -DA:501,4 -DA:503,2 -DA:505,0 -DA:510,9 -DA:512,4 -DA:514,5 -DA:516,0 -DA:522,5 -DA:523,5 -DA:524,5 -DA:525,2 -DA:526,2 -DA:527,2 -DA:529,5 -LF:247 -LH:196 -BRDA:38,0,0,3 -BRDA:38,0,1,3 -BRDA:85,1,0,0 -BRDA:93,2,0,1 -BRDA:102,3,0,0 -BRDA:105,4,0,0 -BRDA:113,5,0,8 -BRDA:117,6,0,0 -BRDA:120,7,0,0 -BRDA:139,8,0,0 -BRDA:139,8,1,0 -BRDA:139,8,2,2 -BRDA:139,8,3,0 -BRDA:156,9,0,0 -BRDA:156,9,1,0 -BRDA:156,9,2,2 -BRDA:156,9,3,0 -BRDA:177,10,0,0 -BRDA:177,10,1,2 -BRDA:177,10,2,6 -BRDA:177,10,3,0 -BRDA:194,11,0,1 -BRDA:194,11,1,5 -BRDA:194,11,2,11 -BRDA:194,11,3,0 -BRDA:254,12,0,7 -BRDA:269,13,0,2 -BRDA:270,14,0,0 -BRDA:273,15,0,0 -BRDA:273,16,0,2 -BRDA:273,16,1,2 -BRDA:276,17,0,0 -BRDA:276,18,0,2 -BRDA:276,18,1,2 -BRDA:280,19,0,0 -BRDA:284,20,0,0 -BRDA:288,21,0,0 -BRDA:288,22,0,7 -BRDA:288,22,1,7 -BRDA:288,22,2,7 -BRDA:293,23,0,0 -BRDA:293,24,0,7 -BRDA:293,24,1,7 -BRDA:293,24,2,7 -BRDA:305,25,0,2 -BRDA:305,26,0,2 -BRDA:305,26,1,2 -BRDA:316,27,0,0 -BRDA:316,28,0,0 -BRDA:316,28,1,0 -BRDA:326,29,0,10 -BRDA:326,30,0,11 -BRDA:326,30,1,1 -BRDA:339,31,0,2 -BRDA:339,32,0,11 -BRDA:339,32,1,9 -BRDA:340,33,0,0 -BRDA:344,34,0,2 -BRDA:350,35,0,0 -BRDA:350,35,1,2 -BRDA:360,36,0,0 -BRDA:364,37,0,0 -BRDA:369,38,0,5 -BRDA:370,39,0,3 -BRDA:384,40,0,0 -BRDA:384,41,0,11 -BRDA:384,41,1,11 -BRDA:388,42,0,9 -BRDA:388,42,1,0 -BRDA:388,43,0,9 -BRDA:388,43,1,9 -BRDA:390,44,0,2 -BRDA:390,45,0,2 -BRDA:390,45,1,2 -BRDA:401,46,0,2 -BRDA:405,47,0,2 -BRDA:405,48,0,2 -BRDA:405,48,1,0 -BRDA:411,49,0,0 -BRDA:411,50,0,0 -BRDA:411,50,1,0 -BRDA:420,51,0,11 -BRDA:420,51,1,4 -BRDA:420,51,2,0 -BRDA:420,51,3,0 -BRDA:427,52,0,0 -BRDA:430,53,0,4 -BRDA:430,53,1,7 -BRDA:430,53,2,0 -BRDA:433,54,0,0 -BRDA:437,55,0,0 -BRDA:443,56,0,0 -BRDA:446,57,0,2 -BRDA:446,57,1,2 -BRDA:454,58,0,5 -BRDA:454,58,1,2 -BRDA:459,59,0,0 -BRDA:463,60,0,1 -BRDA:465,61,0,0 -BRDA:488,62,0,0 -BRDA:499,63,0,4 -BRDA:499,63,1,2 -BRDA:499,63,2,0 -BRDA:510,64,0,4 -BRDA:510,64,1,5 -BRDA:510,64,2,0 -BRDA:524,65,0,2 -BRF:107 -BRH:61 -end_of_record -TN: -SF:schemaregistry/rules/encryption/kms-registry.ts -FN:19,registerKmsDriver -FN:23,getKmsDriver -FN:32,registerKmsClient -FN:36,getKmsClient -FNF:4 -FNH:4 -FNDA:3,registerKmsDriver -FNDA:2,getKmsDriver -FNDA:2,registerKmsClient -FNDA:5,getKmsClient -DA:1,3 -DA:14,3 -DA:16,3 -DA:19,3 -DA:20,3 -DA:23,3 -DA:24,2 -DA:25,2 -DA:26,2 -DA:29,0 -DA:32,3 -DA:33,2 -DA:36,3 -DA:37,5 -DA:38,3 -DA:39,3 -DA:42,2 -LF:17 -LH:16 -BRDA:25,0,0,2 -BRDA:38,1,0,3 -BRF:2 -BRH:2 -end_of_record -TN: -SF:schemaregistry/rules/encryption/localkms/local-client.ts -FN:13,(anonymous_6) -FN:24,(anonymous_7) -FN:33,(anonymous_8) -FN:37,(anonymous_9) -FN:41,(anonymous_10) -FNF:5 -FNH:5 -FNDA:2,(anonymous_6) -FNDA:7,(anonymous_7) -FNDA:3,(anonymous_8) -FNDA:2,(anonymous_9) -FNDA:5,(anonymous_10) -DA:2,3 -DA:3,3 -DA:4,3 -DA:5,3 -DA:6,3 -DA:8,3 -DA:14,2 -DA:15,0 -DA:17,2 -DA:18,0 -DA:20,2 -DA:21,2 -DA:25,7 -DA:26,7 -DA:30,7 -DA:34,3 -DA:38,2 -DA:42,5 -LF:18 -LH:16 -BRDA:14,0,0,0 -BRDA:17,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:schemaregistry/rules/encryption/localkms/local-driver.ts -FN:9,(anonymous_0) -FN:13,(anonymous_1) -FN:17,(anonymous_2) -FNF:3 -FNH:3 -FNDA:3,(anonymous_0) -FNDA:2,(anonymous_1) -FNDA:2,(anonymous_2) -DA:1,3 -DA:2,3 -DA:4,3 -DA:6,3 -DA:7,3 -DA:10,3 -DA:14,2 -DA:18,2 -DA:19,2 -LF:9 -LH:9 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/rules/encryption/tink/aead.ts -FNF:0 -FNH:0 -DA:18,3 -LF:1 -LH:1 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/rules/encryption/tink/aes_gcm.ts -FN:33,(anonymous_6) -FN:39,(anonymous_7) -FN:61,(anonymous_8) -FN:93,fromRawKey -FNF:4 -FNH:4 -FNDA:17,(anonymous_6) -FNDA:6,(anonymous_7) -FNDA:11,(anonymous_8) -FNDA:17,fromRawKey -DA:7,3 -DA:8,3 -DA:10,3 -DA:11,3 -DA:12,3 -DA:13,3 -DA:19,3 -DA:25,3 -DA:32,3 -DA:33,17 -DA:34,17 -DA:41,6 -DA:42,6 -DA:43,6 -DA:45,6 -DA:46,6 -DA:51,6 -DA:52,6 -DA:55,6 -DA:56,6 -DA:63,11 -DA:64,11 -DA:65,0 -DA:67,11 -DA:68,11 -DA:70,11 -DA:71,11 -DA:72,11 -DA:77,11 -DA:78,11 -DA:80,11 -DA:81,11 -DA:88,0 -DA:93,3 -DA:94,17 -DA:95,17 -DA:96,17 -DA:107,17 -LF:38 -LH:36 -BRDA:42,0,0,6 -BRDA:51,1,0,6 -BRDA:64,2,0,0 -BRDA:67,3,0,11 -BRDA:77,4,0,11 -BRF:5 -BRH:4 -end_of_record -TN: -SF:schemaregistry/rules/encryption/tink/aes_siv.ts -FN:19,(anonymous_6) -FN:25,(anonymous_7) -FN:33,(anonymous_8) -FN:40,fromRawKey -FNF:4 -FNH:3 -FNDA:1,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:1,(anonymous_8) -FNDA:1,fromRawKey -DA:7,3 -DA:10,3 -DA:11,3 -DA:18,3 -DA:19,1 -DA:20,1 -DA:27,0 -DA:28,0 -DA:35,1 -DA:36,1 -DA:40,3 -DA:41,1 -LF:12 -LH:10 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/rules/encryption/tink/bytes.ts -FN:15,isEqual -FN:29,concat -FN:53,fromNumber -FN:87,fromHex -FN:106,toHex -FN:124,fromBase64 -FN:141,toBase64 -FN:161,fromByteString -FN:180,toByteString -FNF:9 -FNH:1 -FNDA:0,isEqual -FNDA:6,concat -FNDA:0,fromNumber -FNDA:0,fromHex -FNDA:0,toHex -FNDA:0,fromBase64 -FNDA:0,toBase64 -FNDA:0,fromByteString -FNDA:0,toByteString -DA:7,3 -DA:15,3 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:29,3 -DA:30,6 -DA:31,6 -DA:33,12 -DA:35,6 -DA:36,6 -DA:37,6 -DA:39,12 -DA:41,12 -DA:43,6 -DA:53,3 -DA:54,0 -DA:55,0 -DA:57,0 -DA:58,0 -DA:60,0 -DA:61,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:68,0 -DA:69,0 -DA:70,0 -DA:72,0 -DA:73,0 -DA:74,0 -DA:76,0 -DA:87,3 -DA:88,0 -DA:89,0 -DA:92,0 -DA:93,0 -DA:94,0 -DA:96,0 -DA:106,3 -DA:107,0 -DA:108,0 -DA:109,0 -DA:110,0 -DA:112,0 -DA:124,3 -DA:125,0 -DA:126,0 -DA:127,0 -DA:129,0 -DA:141,3 -DA:142,0 -DA:147,0 -DA:148,0 -DA:150,0 -DA:161,3 -DA:162,0 -DA:163,0 -DA:164,0 -DA:165,0 -DA:166,0 -DA:168,0 -DA:180,3 -DA:181,0 -DA:182,0 -DA:183,0 -DA:185,0 -LF:71 -LH:19 -BRDA:16,0,0,0 -BRDA:54,1,0,0 -BRDA:54,2,0,0 -BRDA:54,2,1,0 -BRDA:57,3,0,0 -BRDA:60,4,0,0 -BRDA:88,5,0,0 -BRDA:110,6,0,0 -BRDA:110,6,1,0 -BRDA:125,7,0,0 -BRDA:147,8,0,0 -BRF:11 -BRH:0 -end_of_record -TN: -SF:schemaregistry/rules/encryption/tink/hkdf.ts -FN:31,compute -FNF:1 -FNH:1 -FNDA:7,compute -DA:11,3 -DA:13,3 -DA:14,3 -DA:31,3 -DA:35,7 -DA:36,0 -DA:38,7 -DA:39,0 -DA:41,7 -DA:43,0 -DA:44,0 -DA:45,0 -DA:47,0 -DA:49,7 -DA:50,7 -DA:51,0 -DA:53,7 -DA:55,0 -DA:56,0 -DA:57,0 -DA:59,0 -DA:61,0 -DA:63,7 -DA:64,7 -DA:65,7 -DA:66,7 -DA:67,7 -DA:69,7 -DA:72,7 -DA:73,7 -DA:78,7 -DA:79,7 -DA:80,7 -DA:81,7 -DA:82,7 -DA:83,7 -DA:84,7 -DA:85,7 -DA:86,7 -DA:87,7 -DA:88,7 -DA:89,7 -DA:90,0 -DA:91,0 -DA:92,0 -DA:94,7 -DA:95,7 -DA:98,7 -LF:48 -LH:33 -BRDA:35,0,0,0 -BRDA:38,1,0,0 -BRDA:41,2,0,0 -BRDA:41,2,1,7 -BRDA:41,2,2,0 -BRDA:41,2,3,0 -BRDA:44,3,0,0 -BRDA:50,4,0,0 -BRDA:56,5,0,0 -BRDA:66,6,0,7 -BRDA:66,7,0,7 -BRDA:66,7,1,0 -BRDA:66,7,2,0 -BRDA:89,8,0,0 -BRDA:89,8,1,7 -BRF:15 -BRH:4 -end_of_record -TN: -SF:schemaregistry/rules/encryption/tink/hmac.ts -FN:30,(anonymous_6) -FN:38,(anonymous_7) -FN:47,(anonymous_8) -FN:59,fromRawKey -FNF:4 -FNH:3 -FNDA:14,(anonymous_6) -FNDA:14,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:14,fromRawKey -DA:7,3 -DA:8,3 -DA:10,3 -DA:11,3 -DA:12,3 -DA:18,3 -DA:25,3 -DA:31,14 -DA:32,14 -DA:33,14 -DA:39,14 -DA:40,14 -DA:42,14 -DA:48,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:59,3 -DA:61,14 -DA:62,14 -DA:63,0 -DA:65,14 -DA:66,0 -DA:69,14 -DA:71,0 -DA:72,0 -DA:75,0 -DA:77,14 -DA:78,0 -DA:81,14 -DA:83,0 -DA:84,0 -DA:87,0 -DA:89,0 -DA:93,14 -DA:97,14 -LF:36 -LH:22 -BRDA:62,0,0,0 -BRDA:65,1,0,0 -BRDA:69,2,0,0 -BRDA:69,2,1,14 -BRDA:69,2,2,0 -BRDA:69,2,3,0 -BRDA:71,3,0,0 -BRDA:77,4,0,0 -BRDA:83,5,0,0 -BRF:9 -BRH:1 -end_of_record -TN: -SF:schemaregistry/rules/encryption/tink/mac.ts -FNF:0 -FNH:0 -DA:18,3 -LF:1 -LH:1 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/rules/encryption/tink/random.ts -FN:21,randBytes -FNF:1 -FNH:1 -FNDA:8,randBytes -DA:11,3 -DA:12,3 -DA:21,3 -DA:22,8 -DA:23,0 -DA:25,8 -DA:26,8 -DA:27,8 -LF:8 -LH:7 -BRDA:22,0,0,0 -BRDA:22,1,0,8 -BRDA:22,1,1,8 -BRF:3 -BRH:2 -end_of_record -TN: -SF:schemaregistry/rules/encryption/tink/validators.ts -FN:19,validateAesKeySize -FN:31,requireUint8Array -FN:46,validateVersion -FN:59,validateEcdsaParams -FNF:4 -FNH:2 -FNDA:17,validateAesKeySize -FNDA:100,requireUint8Array -FNDA:0,validateVersion -FNDA:0,validateEcdsaParams -DA:7,3 -DA:8,3 -DA:9,3 -DA:19,3 -DA:20,17 -DA:21,0 -DA:31,3 -DA:32,100 -DA:33,0 -DA:46,3 -DA:47,0 -DA:48,0 -DA:59,3 -DA:60,0 -DA:62,0 -DA:63,0 -DA:66,0 -DA:68,0 -DA:69,0 -DA:73,0 -DA:75,0 -DA:76,0 -DA:79,0 -DA:81,0 -LF:24 -LH:9 -BRDA:20,0,0,0 -BRDA:32,1,0,0 -BRDA:32,2,0,100 -BRDA:32,2,1,100 -BRDA:47,3,0,0 -BRDA:47,4,0,0 -BRDA:47,4,1,0 -BRDA:60,5,0,0 -BRDA:60,5,1,0 -BRDA:60,5,2,0 -BRDA:60,5,3,0 -BRDA:62,6,0,0 -BRDA:68,7,0,0 -BRDA:68,8,0,0 -BRDA:68,8,1,0 -BRDA:75,9,0,0 -BRF:16 -BRH:2 -end_of_record -TN: -SF:schemaregistry/rules/encryption/tink/exception/invalid_arguments_exception.ts -FN:12,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:11,3 -DA:13,0 -DA:14,0 -DA:17,3 -LF:4 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/rules/encryption/tink/exception/security_exception.ts -FN:12,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:11,3 -DA:13,0 -DA:14,0 -DA:17,3 -LF:4 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/rules/encryption/tink/proto/aes_gcm_pb.ts -FNF:0 -FNH:0 -DA:22,3 -DA:28,3 -DA:50,3 -DA:72,3 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/rules/encryption/tink/proto/aes_siv_pb.ts -FNF:0 -FNH:0 -DA:22,3 -DA:28,3 -DA:52,3 -DA:78,3 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/serde/avro.ts -FN:37,(anonymous_7) -FN:40,(anonymous_8) -FN:48,(anonymous_9) -FN:71,(anonymous_10) -FN:76,(anonymous_11) -FN:77,(anonymous_12) -FN:90,(anonymous_13) -FN:93,(anonymous_14) -FN:101,(anonymous_15) -FN:146,(anonymous_16) -FN:151,(anonymous_17) -FN:152,(anonymous_18) -FN:160,toType -FN:174,(anonymous_20) -FN:174,(anonymous_21) -FN:178,(anonymous_22) -FN:196,transform -FN:215,(anonymous_24) -FN:241,transformField -FN:271,getType -FN:308,disjoint -FN:317,resolveUnion -FN:336,getInlineTags -FN:346,getInlineTagsRecursively -FN:383,impliedNamespace -FNF:25 -FNH:22 -FNDA:2,(anonymous_7) -FNDA:1,(anonymous_8) -FNDA:2,(anonymous_9) -FNDA:1,(anonymous_10) -FNDA:3,(anonymous_11) -FNDA:2,(anonymous_12) -FNDA:5,(anonymous_13) -FNDA:4,(anonymous_14) -FNDA:5,(anonymous_15) -FNDA:4,(anonymous_16) -FNDA:9,(anonymous_17) -FNDA:5,(anonymous_18) -FNDA:12,toType -FNDA:7,(anonymous_20) -FNDA:53,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:18,transform -FNDA:0,(anonymous_24) -FNDA:13,transformField -FNDA:26,getType -FNDA:13,disjoint -FNDA:0,resolveUnion -FNDA:7,getInlineTags -FNDA:30,getInlineTagsRecursively -FNDA:7,impliedNamespace -DA:1,1 -DA:9,1 -DA:13,1 -DA:20,1 -DA:21,1 -DA:22,1 -DA:34,1 -DA:38,2 -DA:39,2 -DA:40,2 -DA:41,1 -DA:43,2 -DA:44,2 -DA:49,2 -DA:50,0 -DA:52,2 -DA:53,0 -DA:56,2 -DA:57,2 -DA:61,2 -DA:63,2 -DA:64,2 -DA:65,2 -DA:67,2 -DA:68,2 -DA:72,1 -DA:73,1 -DA:77,3 -DA:78,2 -DA:79,2 -DA:80,2 -DA:87,1 -DA:91,5 -DA:92,5 -DA:93,5 -DA:94,4 -DA:96,5 -DA:97,5 -DA:102,5 -DA:103,0 -DA:105,5 -DA:106,0 -DA:109,5 -DA:110,5 -DA:111,5 -DA:112,5 -DA:113,5 -DA:114,0 -DA:116,5 -DA:119,5 -DA:120,5 -DA:121,0 -DA:122,0 -DA:124,5 -DA:125,0 -DA:126,0 -DA:127,0 -DA:129,0 -DA:132,5 -DA:136,5 -DA:137,0 -DA:139,5 -DA:141,5 -DA:143,5 -DA:147,4 -DA:148,4 -DA:152,9 -DA:153,5 -DA:154,5 -DA:155,5 -DA:167,12 -DA:168,12 -DA:169,5 -DA:172,7 -DA:174,7 -DA:178,53 -DA:179,0 -DA:181,53 -DA:182,0 -DA:184,53 -DA:187,7 -DA:188,7 -DA:192,7 -DA:193,7 -DA:197,18 -DA:198,0 -DA:200,18 -DA:201,18 -DA:202,13 -DA:204,18 -DA:207,0 -DA:208,0 -DA:209,0 -DA:211,0 -DA:213,0 -DA:214,0 -DA:215,0 -DA:217,0 -DA:218,0 -DA:219,0 -DA:220,0 -DA:222,0 -DA:224,5 -DA:225,5 -DA:226,5 -DA:227,13 -DA:229,5 -DA:231,13 -DA:232,13 -DA:233,13 -DA:234,7 -DA:237,6 -DA:249,13 -DA:250,13 -DA:251,13 -DA:258,13 -DA:259,13 -DA:260,0 -DA:261,0 -DA:264,13 -DA:267,13 -DA:272,26 -DA:274,0 -DA:276,0 -DA:278,0 -DA:280,0 -DA:283,0 -DA:285,0 -DA:287,10 -DA:289,4 -DA:291,4 -DA:294,0 -DA:296,0 -DA:298,4 -DA:300,4 -DA:302,0 -DA:304,0 -DA:309,13 -DA:310,13 -DA:311,7 -DA:314,6 -DA:318,0 -DA:319,0 -DA:320,0 -DA:321,0 -DA:322,0 -DA:323,0 -DA:324,0 -DA:326,0 -DA:327,0 -DA:328,0 -DA:329,0 -DA:333,0 -DA:337,7 -DA:338,7 -DA:339,7 -DA:340,0 -DA:342,7 -DA:347,30 -DA:348,23 -DA:349,7 -DA:350,0 -DA:351,0 -DA:353,7 -DA:354,7 -DA:355,7 -DA:356,7 -DA:357,7 -DA:358,7 -DA:359,7 -DA:361,7 -DA:362,7 -DA:364,7 -DA:365,0 -DA:367,7 -DA:368,7 -DA:369,23 -DA:370,23 -DA:371,23 -DA:372,7 -DA:374,23 -DA:375,23 -DA:376,23 -DA:384,7 -DA:385,7 -LF:185 -LH:130 -BRDA:39,0,0,2 -BRDA:39,0,1,2 -BRDA:44,1,0,2 -BRDA:44,1,1,1 -BRDA:49,2,0,0 -BRDA:52,3,0,0 -BRDA:92,4,0,5 -BRDA:92,4,1,5 -BRDA:97,5,0,5 -BRDA:97,5,1,1 -BRDA:102,6,0,0 -BRDA:105,7,0,0 -BRDA:113,8,0,0 -BRDA:120,9,0,0 -BRDA:120,9,1,5 -BRDA:124,10,0,0 -BRDA:124,10,1,5 -BRDA:126,11,0,0 -BRDA:126,11,1,0 -BRDA:136,12,0,0 -BRDA:136,12,1,5 -BRDA:168,13,0,5 -BRDA:181,14,0,0 -BRDA:197,15,0,0 -BRDA:197,16,0,18 -BRDA:197,16,1,18 -BRDA:201,17,0,13 -BRDA:204,18,0,0 -BRDA:204,18,1,0 -BRDA:204,18,2,0 -BRDA:204,18,3,0 -BRDA:204,18,4,5 -BRDA:204,18,5,13 -BRDA:208,19,0,0 -BRDA:231,20,0,13 -BRDA:232,21,0,13 -BRDA:232,21,1,0 -BRDA:233,22,0,7 -BRDA:233,23,0,13 -BRDA:233,23,1,13 -BRDA:233,23,2,13 -BRDA:259,24,0,0 -BRDA:259,24,1,13 -BRDA:260,25,0,0 -BRDA:272,26,0,0 -BRDA:272,26,1,0 -BRDA:272,26,2,0 -BRDA:272,26,3,0 -BRDA:272,26,4,0 -BRDA:272,26,5,0 -BRDA:272,26,6,0 -BRDA:272,26,7,10 -BRDA:272,26,8,4 -BRDA:272,26,9,4 -BRDA:272,26,10,0 -BRDA:272,26,11,0 -BRDA:272,26,12,0 -BRDA:272,26,13,4 -BRDA:272,26,14,4 -BRDA:272,26,15,0 -BRDA:272,26,16,0 -BRDA:310,27,0,7 -BRDA:319,28,0,0 -BRDA:319,28,1,0 -BRDA:322,29,0,0 -BRDA:326,30,0,0 -BRDA:328,31,0,0 -BRDA:347,32,0,23 -BRDA:347,32,1,7 -BRDA:347,33,0,30 -BRDA:347,33,1,30 -BRDA:349,34,0,0 -BRDA:349,34,1,7 -BRDA:353,35,0,7 -BRDA:355,36,0,7 -BRDA:358,37,0,7 -BRDA:361,38,0,7 -BRDA:364,39,0,0 -BRDA:364,40,0,7 -BRDA:364,40,1,0 -BRDA:371,41,0,7 -BRDA:371,42,0,23 -BRDA:371,42,1,7 -BRDA:375,43,0,23 -BRDA:385,44,0,0 -BRDA:385,44,1,7 -BRF:86 -BRH:45 -end_of_record -TN: -SF:schemaregistry/serde/buffer-wrapper.ts -FN:9,(anonymous_0) -FN:15,(anonymous_1) -FN:37,(anonymous_2) -FNF:3 -FNH:3 -FNDA:10,(anonymous_0) -FNDA:7,(anonymous_1) -FNDA:7,(anonymous_2) -DA:1,2 -DA:2,2 -DA:3,2 -DA:5,2 -DA:10,10 -DA:11,10 -DA:18,7 -DA:20,5 -DA:21,5 -DA:22,6 -DA:23,6 -DA:27,2 -DA:28,2 -DA:29,10 -DA:30,10 -DA:33,7 -DA:38,7 -DA:39,7 -DA:42,7 -DA:43,14 -DA:44,14 -DA:45,14 -DA:46,14 -DA:49,7 -DA:51,2 -DA:52,2 -DA:53,2 -DA:54,2 -DA:55,2 -DA:56,2 -DA:58,2 -DA:61,5 -LF:32 -LH:32 -BRDA:18,0,0,5 -BRDA:18,0,1,2 -BRDA:18,1,0,7 -BRDA:18,1,1,6 -BRDA:20,2,0,5 -BRDA:20,2,1,0 -BRDA:24,3,0,6 -BRDA:24,3,1,1 -BRDA:27,4,0,1 -BRDA:27,4,1,1 -BRDA:31,5,0,10 -BRDA:31,5,1,8 -BRDA:47,6,0,14 -BRDA:47,6,1,9 -BRDA:49,7,0,2 -BRDA:58,8,0,1 -BRDA:58,8,1,1 -BRF:17 -BRH:16 -end_of_record -TN: -SF:schemaregistry/serde/json-util.ts -FN:17,generateSchema -FN:93,(anonymous_2) -FN:110,deepEqual -FNF:3 -FNH:2 -FNDA:12,generateSchema -FNDA:10,(anonymous_2) -FNDA:0,deepEqual -DA:8,1 -DA:9,1 -DA:17,1 -DA:18,12 -DA:24,0 -DA:30,0 -DA:36,4 -DA:42,2 -DA:48,4 -DA:49,0 -DA:55,4 -DA:56,0 -DA:59,4 -DA:60,0 -DA:63,4 -DA:69,0 -DA:70,0 -DA:73,0 -DA:74,0 -DA:75,0 -DA:76,0 -DA:80,0 -DA:86,2 -DA:87,0 -DA:90,2 -DA:94,10 -DA:95,10 -DA:110,1 -DA:111,0 -DA:112,0 -DA:113,0 -DA:114,0 -DA:116,0 -DA:118,0 -DA:120,0 -LF:35 -LH:15 -BRDA:18,0,0,0 -BRDA:18,0,1,0 -BRDA:18,0,2,0 -BRDA:18,0,3,0 -BRDA:18,0,4,0 -BRDA:18,0,5,0 -BRDA:18,0,6,4 -BRDA:18,0,7,2 -BRDA:18,0,8,4 -BRDA:18,0,9,0 -BRDA:18,0,10,2 -BRDA:36,1,0,2 -BRDA:36,1,1,2 -BRDA:48,2,0,0 -BRDA:51,3,0,0 -BRDA:51,3,1,0 -BRDA:55,4,0,0 -BRDA:59,5,0,0 -BRDA:69,6,0,0 -BRDA:73,7,0,0 -BRDA:75,8,0,0 -BRDA:86,9,0,0 -BRDA:113,10,0,0 -BRF:23 -BRH:6 -end_of_record -TN: -SF:schemaregistry/serde/json.ts -FN:56,(anonymous_7) -FN:60,(anonymous_8) -FN:68,(anonymous_9) -FN:94,(anonymous_10) -FN:102,(anonymous_11) -FN:103,(anonymous_12) -FN:110,(anonymous_13) -FN:111,(anonymous_14) -FN:126,(anonymous_15) -FN:130,(anonymous_16) -FN:138,(anonymous_17) -FN:175,(anonymous_18) -FN:180,(anonymous_19) -FN:181,(anonymous_20) -FN:188,(anonymous_21) -FN:189,(anonymous_22) -FN:198,toValidateFunction -FN:216,(anonymous_24) -FN:224,(anonymous_25) -FN:233,toType -FN:247,(anonymous_27) -FN:267,transform -FN:329,transformField -FN:348,validateSubschemas -FN:360,getType -FN:396,getInlineTags -FN:401,disjoint -FNF:27 -FNH:15 -FNDA:2,(anonymous_7) -FNDA:1,(anonymous_8) -FNDA:2,(anonymous_9) -FNDA:1,(anonymous_10) -FNDA:1,(anonymous_11) -FNDA:1,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:2,(anonymous_15) -FNDA:1,(anonymous_16) -FNDA:2,(anonymous_17) -FNDA:1,(anonymous_18) -FNDA:1,(anonymous_19) -FNDA:1,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,toValidateFunction -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:2,toType -FNDA:0,(anonymous_27) -FNDA:2,transform -FNDA:0,transformField -FNDA:0,validateSubschemas -FNDA:2,getType -FNDA:0,getInlineTags -FNDA:0,disjoint -DA:1,1 -DA:9,1 -DA:14,1 -DA:15,1 -DA:16,1 -DA:17,1 -DA:22,1 -DA:25,1 -DA:28,1 -DA:29,1 -DA:30,1 -DA:31,1 -DA:32,1 -DA:52,1 -DA:57,2 -DA:58,2 -DA:59,2 -DA:60,2 -DA:61,1 -DA:63,2 -DA:64,2 -DA:69,2 -DA:70,0 -DA:72,2 -DA:73,0 -DA:76,2 -DA:77,2 -DA:81,2 -DA:82,2 -DA:83,2 -DA:84,2 -DA:85,2 -DA:86,0 -DA:87,0 -DA:88,0 -DA:91,2 -DA:95,1 -DA:96,1 -DA:97,0 -DA:99,1 -DA:103,1 -DA:104,1 -DA:105,1 -DA:106,1 -DA:111,0 -DA:112,0 -DA:113,0 -DA:114,0 -DA:122,1 -DA:127,2 -DA:128,2 -DA:129,2 -DA:130,2 -DA:131,1 -DA:133,2 -DA:134,2 -DA:139,2 -DA:140,0 -DA:142,2 -DA:143,0 -DA:146,2 -DA:147,2 -DA:148,0 -DA:149,0 -DA:150,0 -DA:154,2 -DA:155,2 -DA:156,2 -DA:157,2 -DA:158,0 -DA:160,2 -DA:161,2 -DA:162,2 -DA:163,0 -DA:166,2 -DA:167,0 -DA:169,2 -DA:171,2 -DA:172,2 -DA:176,1 -DA:177,1 -DA:181,1 -DA:182,1 -DA:183,1 -DA:184,1 -DA:189,0 -DA:190,0 -DA:191,0 -DA:192,0 -DA:205,0 -DA:206,0 -DA:207,0 -DA:210,0 -DA:212,0 -DA:213,0 -DA:214,0 -DA:215,0 -DA:216,0 -DA:217,0 -DA:219,0 -DA:221,0 -DA:222,0 -DA:223,0 -DA:224,0 -DA:225,0 -DA:227,0 -DA:229,0 -DA:230,0 -DA:240,2 -DA:241,2 -DA:242,0 -DA:245,2 -DA:247,2 -DA:248,0 -DA:249,0 -DA:250,0 -DA:252,0 -DA:255,2 -DA:256,2 -DA:258,2 -DA:259,0 -DA:261,2 -DA:263,2 -DA:264,2 -DA:268,2 -DA:269,0 -DA:271,2 -DA:272,2 -DA:273,0 -DA:275,2 -DA:276,0 -DA:277,0 -DA:278,0 -DA:281,2 -DA:282,0 -DA:283,0 -DA:284,0 -DA:287,2 -DA:288,0 -DA:289,0 -DA:290,0 -DA:293,2 -DA:294,0 -DA:295,0 -DA:296,0 -DA:300,2 -DA:301,0 -DA:303,2 -DA:304,2 -DA:306,0 -DA:307,0 -DA:308,0 -DA:309,0 -DA:312,0 -DA:318,0 -DA:319,0 -DA:320,0 -DA:321,0 -DA:326,2 -DA:332,0 -DA:333,0 -DA:334,0 -DA:335,0 -DA:336,0 -DA:337,0 -DA:338,0 -DA:341,0 -DA:344,0 -DA:349,0 -DA:350,0 -DA:351,0 -DA:352,0 -DA:357,0 -DA:361,2 -DA:362,0 -DA:364,2 -DA:365,2 -DA:367,0 -DA:368,0 -DA:370,0 -DA:371,0 -DA:373,0 -DA:375,0 -DA:376,0 -DA:378,0 -DA:380,0 -DA:382,0 -DA:384,0 -DA:386,0 -DA:388,0 -DA:390,0 -DA:392,0 -DA:397,0 -DA:398,0 -DA:402,0 -DA:403,0 -DA:404,0 -DA:407,0 -LF:198 -LH:91 -BRDA:58,0,0,2 -BRDA:58,0,1,2 -BRDA:59,1,0,2 -BRDA:59,1,1,2 -BRDA:64,2,0,2 -BRDA:64,2,1,1 -BRDA:69,3,0,0 -BRDA:72,4,0,0 -BRDA:85,5,0,0 -BRDA:87,6,0,0 -BRDA:87,7,0,0 -BRDA:87,7,1,0 -BRDA:96,8,0,0 -BRDA:128,9,0,2 -BRDA:128,9,1,2 -BRDA:129,10,0,2 -BRDA:129,10,1,2 -BRDA:134,11,0,2 -BRDA:134,11,1,1 -BRDA:139,12,0,0 -BRDA:142,13,0,0 -BRDA:147,14,0,0 -BRDA:149,15,0,0 -BRDA:149,16,0,0 -BRDA:149,16,1,0 -BRDA:157,17,0,0 -BRDA:162,18,0,0 -BRDA:166,19,0,0 -BRDA:166,19,1,2 -BRDA:206,20,0,0 -BRDA:214,21,0,0 -BRDA:214,21,1,0 -BRDA:241,22,0,0 -BRDA:249,23,0,0 -BRDA:258,24,0,0 -BRDA:258,24,1,2 -BRDA:268,25,0,0 -BRDA:268,26,0,2 -BRDA:268,26,1,2 -BRDA:268,26,2,2 -BRDA:272,27,0,0 -BRDA:275,28,0,0 -BRDA:275,29,0,2 -BRDA:275,29,1,0 -BRDA:277,30,0,0 -BRDA:281,31,0,0 -BRDA:281,32,0,2 -BRDA:281,32,1,0 -BRDA:283,33,0,0 -BRDA:287,34,0,0 -BRDA:287,35,0,2 -BRDA:287,35,1,0 -BRDA:289,36,0,0 -BRDA:293,37,0,0 -BRDA:294,38,0,0 -BRDA:300,39,0,0 -BRDA:304,40,0,0 -BRDA:304,40,1,0 -BRDA:304,40,2,0 -BRDA:304,40,3,0 -BRDA:304,40,4,0 -BRDA:304,40,5,0 -BRDA:306,41,0,0 -BRDA:318,42,0,0 -BRDA:320,43,0,0 -BRDA:320,44,0,0 -BRDA:320,44,1,0 -BRDA:320,44,2,0 -BRDA:336,45,0,0 -BRDA:336,45,1,0 -BRDA:337,46,0,0 -BRDA:361,47,0,0 -BRDA:364,48,0,2 -BRDA:367,49,0,0 -BRDA:370,50,0,0 -BRDA:370,51,0,0 -BRDA:370,51,1,0 -BRDA:373,52,0,0 -BRDA:373,52,1,0 -BRDA:373,52,2,0 -BRDA:373,52,3,0 -BRDA:373,52,4,0 -BRDA:373,52,5,0 -BRDA:373,52,6,0 -BRDA:373,52,7,0 -BRDA:375,53,0,0 -BRDA:375,54,0,0 -BRDA:375,54,1,0 -BRDA:403,55,0,0 -BRF:89 -BRH:21 -end_of_record -TN: -SF:schemaregistry/serde/protobuf.ts -FN:100,(anonymous_1) -FN:105,(anonymous_2) -FN:113,(anonymous_3) -FN:139,(anonymous_4) -FN:160,(anonymous_5) -FN:166,(anonymous_6) -FN:168,(anonymous_7) -FN:175,(anonymous_8) -FN:217,(anonymous_9) -FN:228,(anonymous_10) -FN:246,(anonymous_11) -FN:265,(anonymous_12) -FN:284,(anonymous_13) -FN:288,(anonymous_14) -FN:296,(anonymous_15) -FN:327,(anonymous_16) -FN:339,(anonymous_17) -FN:352,(anonymous_18) -FN:356,(anonymous_19) -FN:377,(anonymous_20) -FN:388,(anonymous_21) -FN:396,(anonymous_22) -FN:405,transform -FN:436,transformField -FN:460,getType -FN:499,getInlineTags -FN:508,disjoint -FN:517,isBuiltin -FNF:28 -FNH:27 -FNDA:2,(anonymous_1) -FNDA:1,(anonymous_2) -FNDA:2,(anonymous_3) -FNDA:2,(anonymous_4) -FNDA:2,(anonymous_5) -FNDA:2,(anonymous_6) -FNDA:2,(anonymous_7) -FNDA:2,(anonymous_8) -FNDA:2,(anonymous_9) -FNDA:2,(anonymous_10) -FNDA:2,(anonymous_11) -FNDA:1,(anonymous_12) -FNDA:2,(anonymous_13) -FNDA:1,(anonymous_14) -FNDA:2,(anonymous_15) -FNDA:1,(anonymous_16) -FNDA:2,(anonymous_17) -FNDA:2,(anonymous_18) -FNDA:2,(anonymous_19) -FNDA:2,(anonymous_20) -FNDA:2,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:14,transform -FNDA:8,transformField -FNDA:8,getType -FNDA:8,getInlineTags -FNDA:12,disjoint -FNDA:6,isBuiltin -DA:1,1 -DA:11,1 -DA:16,1 -DA:26,1 -DA:38,1 -DA:39,1 -DA:40,1 -DA:41,1 -DA:42,1 -DA:43,1 -DA:44,1 -DA:45,1 -DA:46,1 -DA:47,1 -DA:48,1 -DA:49,1 -DA:50,1 -DA:51,1 -DA:52,1 -DA:53,1 -DA:54,1 -DA:55,1 -DA:56,1 -DA:58,1 -DA:95,1 -DA:101,2 -DA:102,2 -DA:103,2 -DA:104,2 -DA:105,2 -DA:106,1 -DA:108,2 -DA:109,2 -DA:114,2 -DA:115,0 -DA:117,2 -DA:118,0 -DA:121,2 -DA:122,2 -DA:123,0 -DA:125,2 -DA:126,2 -DA:127,0 -DA:129,2 -DA:130,2 -DA:131,2 -DA:132,2 -DA:133,2 -DA:134,2 -DA:135,2 -DA:136,2 -DA:140,2 -DA:141,2 -DA:142,0 -DA:144,2 -DA:145,2 -DA:146,2 -DA:147,2 -DA:149,2 -DA:156,2 -DA:157,2 -DA:161,2 -DA:162,2 -DA:163,2 -DA:167,2 -DA:168,2 -DA:169,2 -DA:170,0 -DA:177,2 -DA:178,2 -DA:179,2 -DA:180,2 -DA:181,2 -DA:183,0 -DA:184,0 -DA:185,0 -DA:187,0 -DA:189,2 -DA:194,2 -DA:195,2 -DA:196,2 -DA:197,0 -DA:198,0 -DA:200,0 -DA:203,0 -DA:205,2 -DA:218,2 -DA:219,2 -DA:220,2 -DA:221,2 -DA:222,2 -DA:223,2 -DA:225,2 -DA:229,2 -DA:230,2 -DA:231,2 -DA:235,2 -DA:236,2 -DA:237,2 -DA:238,2 -DA:240,0 -DA:241,0 -DA:242,0 -DA:247,2 -DA:248,2 -DA:249,2 -DA:250,2 -DA:251,2 -DA:252,2 -DA:256,0 -DA:257,0 -DA:258,0 -DA:262,0 -DA:266,1 -DA:267,1 -DA:268,0 -DA:270,1 -DA:271,1 -DA:272,0 -DA:274,1 -DA:280,1 -DA:285,2 -DA:286,2 -DA:287,2 -DA:288,2 -DA:289,1 -DA:291,2 -DA:292,2 -DA:297,2 -DA:298,0 -DA:300,2 -DA:301,0 -DA:304,2 -DA:305,2 -DA:306,2 -DA:307,2 -DA:309,2 -DA:310,2 -DA:312,2 -DA:313,2 -DA:318,2 -DA:319,0 -DA:321,2 -DA:323,2 -DA:324,2 -DA:328,1 -DA:329,1 -DA:330,0 -DA:332,1 -DA:333,1 -DA:334,0 -DA:336,1 -DA:340,2 -DA:341,2 -DA:342,0 -DA:344,2 -DA:345,2 -DA:346,0 -DA:348,2 -DA:349,2 -DA:353,2 -DA:354,2 -DA:355,2 -DA:356,2 -DA:357,2 -DA:358,2 -DA:359,2 -DA:360,0 -DA:362,2 -DA:364,0 -DA:365,0 -DA:366,0 -DA:368,0 -DA:372,2 -DA:373,2 -DA:374,2 -DA:378,2 -DA:379,2 -DA:380,2 -DA:381,2 -DA:382,2 -DA:383,2 -DA:385,2 -DA:389,2 -DA:390,2 -DA:391,2 -DA:393,0 -DA:397,0 -DA:398,0 -DA:399,0 -DA:401,0 -DA:406,14 -DA:407,0 -DA:409,14 -DA:410,2 -DA:411,4 -DA:414,14 -DA:415,0 -DA:417,14 -DA:418,14 -DA:419,2 -DA:420,2 -DA:421,8 -DA:422,8 -DA:424,2 -DA:426,12 -DA:427,12 -DA:428,12 -DA:429,12 -DA:430,4 -DA:433,8 -DA:438,8 -DA:439,8 -DA:446,8 -DA:447,8 -DA:448,8 -DA:449,0 -DA:450,0 -DA:453,8 -DA:456,8 -DA:461,8 -DA:463,0 -DA:465,2 -DA:467,0 -DA:469,0 -DA:471,6 -DA:473,2 -DA:475,2 -DA:481,2 -DA:487,0 -DA:490,0 -DA:492,0 -DA:495,0 -DA:500,8 -DA:501,8 -DA:502,4 -DA:503,4 -DA:505,4 -DA:509,12 -DA:510,12 -DA:511,4 -DA:514,8 -DA:518,6 -LF:243 -LH:192 -BRDA:102,0,0,2 -BRDA:102,0,1,2 -BRDA:103,1,0,2 -BRDA:103,1,1,2 -BRDA:104,2,0,2 -BRDA:104,2,1,2 -BRDA:109,3,0,2 -BRDA:109,3,1,1 -BRDA:114,4,0,0 -BRDA:117,5,0,0 -BRDA:122,6,0,0 -BRDA:126,7,0,0 -BRDA:141,8,0,0 -BRDA:169,9,0,0 -BRDA:180,10,0,2 -BRDA:184,11,0,0 -BRDA:196,12,0,0 -BRDA:197,13,0,0 -BRDA:197,13,1,0 -BRDA:231,14,0,2 -BRDA:231,14,1,0 -BRDA:248,15,0,2 -BRDA:248,15,1,0 -BRDA:251,16,0,2 -BRDA:257,17,0,0 -BRDA:267,18,0,0 -BRDA:271,19,0,0 -BRDA:287,20,0,2 -BRDA:287,20,1,2 -BRDA:292,21,0,2 -BRDA:292,21,1,1 -BRDA:297,22,0,0 -BRDA:300,23,0,0 -BRDA:318,24,0,0 -BRDA:318,24,1,2 -BRDA:329,25,0,0 -BRDA:333,26,0,0 -BRDA:341,27,0,0 -BRDA:345,28,0,0 -BRDA:357,29,0,2 -BRDA:357,29,1,0 -BRDA:359,30,0,0 -BRDA:365,31,0,0 -BRDA:390,32,0,2 -BRDA:398,33,0,0 -BRDA:406,34,0,0 -BRDA:406,35,0,14 -BRDA:406,35,1,14 -BRDA:409,36,0,2 -BRDA:414,37,0,0 -BRDA:418,38,0,2 -BRDA:427,39,0,12 -BRDA:428,40,0,12 -BRDA:428,40,1,0 -BRDA:429,41,0,4 -BRDA:429,42,0,12 -BRDA:429,42,1,12 -BRDA:429,42,2,12 -BRDA:448,43,0,0 -BRDA:448,43,1,8 -BRDA:449,44,0,0 -BRDA:461,45,0,0 -BRDA:461,45,1,2 -BRDA:461,45,2,0 -BRDA:461,45,3,0 -BRDA:461,45,4,6 -BRDA:461,45,5,0 -BRDA:471,46,0,2 -BRDA:471,46,1,2 -BRDA:471,46,2,2 -BRDA:471,46,3,2 -BRDA:471,46,4,2 -BRDA:471,46,5,2 -BRDA:471,46,6,2 -BRDA:471,46,7,0 -BRDA:471,46,8,0 -BRDA:471,46,9,0 -BRDA:471,46,10,0 -BRDA:471,46,11,0 -BRDA:471,46,12,0 -BRDA:471,46,13,0 -BRDA:471,46,14,0 -BRDA:501,47,0,4 -BRDA:501,48,0,8 -BRDA:501,48,1,4 -BRDA:510,49,0,4 -BRDA:518,50,0,6 -BRDA:518,50,1,0 -BRDA:518,50,2,0 -BRF:89 -BRH:44 -end_of_record -TN: -SF:schemaregistry/serde/rule-registry.ts -FN:9,registerRuleExecutor -FN:14,getRuleExecutor -FN:19,getRuleExecutors -FN:24,registerRuleAction -FN:29,getRuleAction -FN:34,getRuleActions -FN:39,clearRules -FNF:7 -FNH:3 -FNDA:3,registerRuleExecutor -FNDA:9,getRuleExecutor -FNDA:15,getRuleExecutors -FNDA:0,registerRuleAction -FNDA:0,getRuleAction -FNDA:0,getRuleActions -FNDA:0,clearRules -DA:3,3 -DA:5,3 -DA:9,3 -DA:10,3 -DA:14,3 -DA:15,9 -DA:19,3 -DA:20,15 -DA:24,3 -DA:25,0 -DA:29,3 -DA:30,0 -DA:34,3 -DA:35,0 -DA:39,3 -DA:40,0 -DA:41,0 -LF:17 -LH:12 -BRF:0 -BRH:0 -end_of_record -TN: -SF:schemaregistry/serde/serde.ts -FN:13,(anonymous_0) -FN:22,(anonymous_1) -FN:50,(anonymous_2) -FN:58,(anonymous_3) -FN:62,(anonymous_4) -FN:67,(anonymous_5) -FN:86,(anonymous_6) -FN:166,(anonymous_7) -FN:186,(anonymous_8) -FN:204,(anonymous_9) -FN:224,(anonymous_10) -FN:228,(anonymous_11) -FN:236,(anonymous_12) -FN:265,(anonymous_13) -FN:282,(anonymous_14) -FN:286,(anonymous_15) -FN:290,(anonymous_16) -FN:304,(anonymous_17) -FN:316,(anonymous_18) -FN:320,(anonymous_19) -FN:323,(anonymous_20) -FN:327,(anonymous_21) -FN:330,(anonymous_22) -FN:335,(anonymous_23) -FN:348,(anonymous_24) -FN:407,(anonymous_25) -FN:423,(anonymous_26) -FN:439,(anonymous_27) -FN:462,(anonymous_28) -FN:479,(anonymous_29) -FN:498,(anonymous_30) -FN:506,(anonymous_31) -FN:514,(anonymous_32) -FN:530,(anonymous_33) -FN:545,(anonymous_34) -FN:574,(anonymous_35) -FN:583,(anonymous_36) -FN:614,areTransformsWithSameTag -FN:631,(anonymous_38) -FN:639,(anonymous_39) -FN:646,(anonymous_40) -FN:652,(anonymous_41) -FN:676,(anonymous_42) -FN:679,(anonymous_43) -FN:683,(anonymous_44) -FN:687,(anonymous_45) -FN:693,(anonymous_46) -FN:696,(anonymous_47) -FN:700,(anonymous_48) -FN:704,(anonymous_49) -FN:711,(anonymous_50) -FN:720,(anonymous_51) -FN:725,(anonymous_52) -FNF:53 -FNH:29 -FNDA:3,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:15,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:30,(anonymous_4) -FNDA:11,(anonymous_5) -FNDA:15,(anonymous_6) -FNDA:9,(anonymous_7) -FNDA:9,(anonymous_8) -FNDA:9,(anonymous_9) -FNDA:6,(anonymous_10) -FNDA:36,(anonymous_11) -FNDA:6,(anonymous_12) -FNDA:6,(anonymous_13) -FNDA:9,(anonymous_14) -FNDA:24,(anonymous_15) -FNDA:9,(anonymous_16) -FNDA:9,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:30,(anonymous_27) -FNDA:9,(anonymous_28) -FNDA:41,(anonymous_29) -FNDA:13,(anonymous_30) -FNDA:32,(anonymous_31) -FNDA:21,(anonymous_32) -FNDA:21,(anonymous_33) -FNDA:21,(anonymous_34) -FNDA:3,(anonymous_35) -FNDA:9,(anonymous_36) -FNDA:0,areTransformsWithSameTag -FNDA:21,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:3,(anonymous_41) -FNDA:0,(anonymous_42) -FNDA:0,(anonymous_43) -FNDA:0,(anonymous_44) -FNDA:0,(anonymous_45) -FNDA:0,(anonymous_46) -FNDA:0,(anonymous_47) -FNDA:9,(anonymous_48) -FNDA:0,(anonymous_49) -FNDA:0,(anonymous_50) -FNDA:0,(anonymous_51) -FNDA:0,(anonymous_52) -DA:1,3 -DA:2,3 -DA:10,3 -DA:13,3 -DA:14,3 -DA:15,3 -DA:18,3 -DA:20,3 -DA:23,0 -DA:44,3 -DA:48,15 -DA:51,15 -DA:52,15 -DA:53,15 -DA:59,0 -DA:63,30 -DA:64,30 -DA:68,11 -DA:69,11 -DA:70,10 -DA:72,1 -DA:73,0 -DA:74,0 -DA:81,0 -DA:82,0 -DA:89,15 -DA:90,0 -DA:93,15 -DA:95,0 -DA:96,0 -DA:98,0 -DA:99,0 -DA:101,15 -DA:102,15 -DA:104,9 -DA:106,15 -DA:108,15 -DA:109,6 -DA:111,9 -DA:112,9 -DA:113,9 -DA:114,0 -DA:116,9 -DA:117,9 -DA:119,9 -DA:120,0 -DA:122,9 -DA:124,0 -DA:125,0 -DA:127,0 -DA:129,0 -DA:130,0 -DA:132,0 -DA:134,9 -DA:136,9 -DA:137,9 -DA:138,0 -DA:140,0 -DA:142,9 -DA:143,9 -DA:144,9 -DA:146,0 -DA:147,0 -DA:149,0 -DA:151,9 -DA:152,9 -DA:154,9 -DA:157,0 -DA:158,0 -DA:160,0 -DA:163,9 -DA:168,9 -DA:169,9 -DA:170,9 -DA:172,9 -DA:173,9 -DA:174,0 -DA:176,9 -DA:177,9 -DA:179,0 -DA:180,0 -DA:182,0 -DA:187,9 -DA:188,9 -DA:190,0 -DA:191,0 -DA:192,0 -DA:195,0 -DA:198,0 -DA:201,0 -DA:205,9 -DA:206,0 -DA:207,9 -DA:208,9 -DA:210,0 -DA:223,3 -DA:225,6 -DA:229,36 -DA:237,6 -DA:238,6 -DA:239,6 -DA:240,6 -DA:241,6 -DA:243,6 -DA:244,6 -DA:245,6 -DA:246,3 -DA:247,3 -DA:248,0 -DA:249,0 -DA:250,0 -DA:251,0 -DA:253,3 -DA:254,0 -DA:255,0 -DA:256,3 -DA:257,3 -DA:258,3 -DA:260,0 -DA:262,6 -DA:266,6 -DA:267,6 -DA:268,6 -DA:281,3 -DA:283,9 -DA:287,24 -DA:291,9 -DA:292,9 -DA:293,0 -DA:299,9 -DA:300,9 -DA:301,9 -DA:305,9 -DA:306,9 -DA:307,9 -DA:308,0 -DA:310,9 -DA:311,0 -DA:313,9 -DA:317,0 -DA:320,0 -DA:321,0 -DA:323,0 -DA:324,0 -DA:327,0 -DA:328,0 -DA:330,0 -DA:331,0 -DA:336,0 -DA:337,0 -DA:339,0 -DA:340,0 -DA:341,0 -DA:342,0 -DA:345,0 -DA:350,0 -DA:351,0 -DA:360,0 -DA:363,0 -DA:364,0 -DA:365,0 -DA:366,0 -DA:367,0 -DA:368,0 -DA:369,0 -DA:370,0 -DA:372,0 -DA:374,0 -DA:375,0 -DA:376,0 -DA:377,0 -DA:378,0 -DA:379,0 -DA:380,0 -DA:382,0 -DA:384,0 -DA:385,0 -DA:391,0 -DA:397,0 -DA:399,0 -DA:401,0 -DA:402,0 -DA:404,0 -DA:409,0 -DA:410,0 -DA:412,0 -DA:413,0 -DA:414,0 -DA:415,0 -DA:416,0 -DA:417,0 -DA:419,0 -DA:420,0 -DA:424,0 -DA:426,0 -DA:428,0 -DA:439,3 -DA:440,30 -DA:441,30 -DA:442,0 -DA:444,30 -DA:448,3 -DA:465,9 -DA:466,9 -DA:467,9 -DA:468,9 -DA:469,9 -DA:470,9 -DA:471,9 -DA:472,9 -DA:473,9 -DA:474,9 -DA:475,9 -DA:476,9 -DA:480,41 -DA:481,41 -DA:482,0 -DA:484,41 -DA:485,41 -DA:486,25 -DA:488,16 -DA:489,16 -DA:490,0 -DA:491,0 -DA:492,0 -DA:495,16 -DA:499,13 -DA:500,13 -DA:501,7 -DA:503,6 -DA:507,32 -DA:508,32 -DA:509,7 -DA:511,25 -DA:515,21 -DA:516,21 -DA:517,0 -DA:519,21 -DA:526,21 -DA:527,21 -DA:531,21 -DA:532,21 -DA:533,21 -DA:534,0 -DA:535,0 -DA:536,0 -DA:537,0 -DA:542,21 -DA:546,21 -DA:547,21 -DA:574,3 -DA:575,3 -DA:585,9 -DA:588,3 -DA:589,0 -DA:590,0 -DA:592,0 -DA:595,3 -DA:598,6 -DA:599,0 -DA:600,0 -DA:602,0 -DA:605,6 -DA:607,9 -DA:608,9 -DA:615,0 -DA:624,3 -DA:632,21 -DA:633,21 -DA:634,21 -DA:635,21 -DA:636,21 -DA:640,0 -DA:641,0 -DA:647,0 -DA:652,3 -DA:653,3 -DA:654,3 -DA:655,3 -DA:656,3 -DA:657,3 -DA:658,3 -DA:659,3 -DA:660,3 -DA:661,3 -DA:662,3 -DA:663,3 -DA:664,3 -DA:665,3 -DA:666,3 -DA:675,3 -DA:680,0 -DA:684,0 -DA:692,3 -DA:697,0 -DA:701,9 -DA:709,3 -DA:712,0 -DA:717,3 -DA:721,0 -DA:722,0 -DA:726,0 -DA:727,0 -DA:728,0 -DA:729,0 -DA:731,0 -DA:733,0 -LF:307 -LH:169 -BRDA:13,0,0,3 -BRDA:13,0,1,3 -BRDA:63,1,0,30 -BRDA:63,1,1,30 -BRDA:69,2,0,10 -BRDA:89,3,0,0 -BRDA:89,4,0,15 -BRDA:89,4,1,15 -BRDA:93,5,0,0 -BRDA:93,5,1,0 -BRDA:93,5,2,15 -BRDA:102,6,0,9 -BRDA:108,7,0,6 -BRDA:113,8,0,0 -BRDA:117,9,0,9 -BRDA:117,9,1,0 -BRDA:117,9,2,0 -BRDA:119,10,0,0 -BRDA:119,11,0,9 -BRDA:119,11,1,6 -BRDA:124,12,0,0 -BRDA:124,13,0,0 -BRDA:124,13,1,0 -BRDA:129,14,0,0 -BRDA:137,15,0,0 -BRDA:144,16,0,0 -BRDA:144,16,1,9 -BRDA:146,17,0,0 -BRDA:154,18,0,9 -BRDA:154,18,1,0 -BRDA:155,19,0,9 -BRDA:155,19,1,0 -BRDA:157,20,0,0 -BRDA:169,21,0,9 -BRDA:173,22,0,0 -BRDA:179,23,0,0 -BRDA:187,24,0,9 -BRDA:187,25,0,9 -BRDA:187,25,1,0 -BRDA:190,26,0,0 -BRDA:190,27,0,0 -BRDA:190,27,1,0 -BRDA:190,27,2,0 -BRDA:192,28,0,0 -BRDA:192,28,1,0 -BRDA:192,28,2,0 -BRDA:192,28,3,0 -BRDA:205,29,0,0 -BRDA:205,29,1,9 -BRDA:207,30,0,9 -BRDA:245,31,0,3 -BRDA:245,31,1,3 -BRDA:247,32,0,0 -BRDA:247,32,1,3 -BRDA:247,33,0,3 -BRDA:247,33,1,0 -BRDA:250,34,0,0 -BRDA:253,35,0,0 -BRDA:253,35,1,3 -BRDA:253,36,0,3 -BRDA:253,36,1,0 -BRDA:256,37,0,3 -BRDA:256,37,1,0 -BRDA:292,38,0,0 -BRDA:307,39,0,0 -BRDA:307,40,0,9 -BRDA:307,40,1,0 -BRDA:310,41,0,0 -BRDA:317,42,0,0 -BRDA:317,42,1,0 -BRDA:317,42,2,0 -BRDA:317,42,3,0 -BRDA:317,42,4,0 -BRDA:317,42,5,0 -BRDA:321,43,0,0 -BRDA:321,43,1,0 -BRDA:328,44,0,0 -BRDA:328,44,1,0 -BRDA:336,45,0,0 -BRDA:341,46,0,0 -BRDA:341,47,0,0 -BRDA:341,47,1,0 -BRDA:363,48,0,0 -BRDA:363,48,1,0 -BRDA:367,49,0,0 -BRDA:367,49,1,0 -BRDA:378,50,0,0 -BRDA:382,51,0,0 -BRDA:382,52,0,0 -BRDA:382,52,1,0 -BRDA:384,53,0,0 -BRDA:384,53,1,0 -BRDA:401,54,0,0 -BRDA:409,55,0,0 -BRDA:441,56,0,0 -BRDA:481,57,0,0 -BRDA:485,58,0,25 -BRDA:489,59,0,0 -BRDA:489,60,0,16 -BRDA:489,60,1,0 -BRDA:491,61,0,0 -BRDA:500,62,0,7 -BRDA:508,63,0,7 -BRDA:533,64,0,0 -BRDA:535,65,0,0 -BRDA:585,66,0,3 -BRDA:585,66,1,3 -BRDA:585,66,2,6 -BRDA:585,66,3,6 -BRDA:590,67,0,0 -BRDA:600,68,0,0 -BRDA:615,69,0,0 -BRDA:615,69,1,0 -BRDA:615,69,2,0 -BRDA:615,69,3,0 -BRDA:615,69,4,0 -BRDA:615,69,5,0 -BRDA:615,69,6,0 -BRDA:641,70,0,0 -BRDA:641,70,1,0 -BRDA:641,70,2,0 -BRDA:641,70,3,0 -BRDA:641,70,4,0 -BRDA:641,70,5,0 -BRDA:641,70,6,0 -BRDA:641,70,7,0 -BRDA:652,71,0,3 -BRDA:652,71,1,3 -BRDA:727,72,0,0 -BRDA:728,73,0,0 -BRF:130 -BRH:39 -end_of_record -TN: -SF:schemaregistry/serde/wildcard-matcher.ts -FN:23,match -FN:35,wildcardToRegexp -FN:79,doubleSlashes -FNF:3 -FNH:2 -FNDA:27,match -FNDA:27,wildcardToRegexp -FNDA:0,doubleSlashes -DA:23,4 -DA:24,27 -DA:26,27 -DA:27,27 -DA:29,0 -DA:31,27 -DA:32,27 -DA:36,27 -DA:37,27 -DA:38,27 -DA:39,27 -DA:40,27 -DA:41,121 -DA:42,121 -DA:43,121 -DA:46,21 -DA:47,2 -DA:48,2 -DA:50,19 -DA:52,21 -DA:54,8 -DA:55,8 -DA:66,6 -DA:67,6 -DA:69,0 -DA:70,0 -DA:72,86 -DA:73,86 -DA:76,27 -DA:81,0 -DA:82,0 -DA:83,0 -DA:84,0 -DA:87,0 -DA:89,0 -LF:35 -LH:26 -BRDA:32,0,0,27 -BRDA:32,0,1,20 -BRDA:43,1,0,21 -BRDA:43,1,1,8 -BRDA:43,1,2,6 -BRDA:43,1,3,6 -BRDA:43,1,4,6 -BRDA:43,1,5,6 -BRDA:43,1,6,6 -BRDA:43,1,7,6 -BRDA:43,1,8,6 -BRDA:43,1,9,6 -BRDA:43,1,10,6 -BRDA:43,1,11,0 -BRDA:43,1,12,86 -BRDA:46,2,0,2 -BRDA:46,2,1,19 -BRDA:46,3,0,21 -BRDA:46,3,1,10 -BRDA:82,4,0,0 -BRDA:82,4,1,0 -BRF:21 -BRH:18 -end_of_record -TN: -SF:test/schemaregistry/test-constants.ts -FNF:0 -FNH:0 -DA:4,2 -DA:6,2 -DA:8,2 -DA:19,2 -DA:27,2 -DA:35,2 -LF:6 -LH:6 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/schemaregistry/dekregistry/test-constants.ts -FNF:0 -FNH:0 -DA:1,2 -DA:4,2 -DA:5,2 -DA:6,2 -DA:7,2 -DA:8,2 -DA:9,2 -DA:11,2 -DA:12,2 -DA:13,2 -DA:14,2 -DA:16,2 -DA:25,2 -DA:34,2 -DA:43,2 -DA:52,2 -DA:61,2 -DA:71,2 -DA:72,2 -DA:73,2 -LF:20 -LH:20 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/schemaregistry/serde/author_pb.ts -FNF:0 -FNH:0 -DA:6,1 -DA:7,1 -DA:13,1 -DA:45,1 -DA:67,1 -LF:5 -LH:5 -BRF:0 -BRH:0 -end_of_record From af6779eb1d92a71d53903a346b1ff904620994eb Mon Sep 17 00:00:00 2001 From: Robert Yokota Date: Wed, 28 Aug 2024 19:40:45 -0700 Subject: [PATCH 08/12] Minor fix --- schemaregistry/serde/protobuf.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/schemaregistry/serde/protobuf.ts b/schemaregistry/serde/protobuf.ts index 513aa139..754e0625 100644 --- a/schemaregistry/serde/protobuf.ts +++ b/schemaregistry/serde/protobuf.ts @@ -21,7 +21,7 @@ import { FileRegistry, fromBinary, getExtension, hasExtension, MutableRegistry, ScalarType, - toBinary + toBinary, } from "@bufbuild/protobuf"; import { file_google_protobuf_any, @@ -365,7 +365,9 @@ export class ProtobufDeserializer extends Deserializer implements ProtobufSerde if (dep == null) { throw new SerializationError(`dependency ${depName} not found`) } - return fromBinary(FileDescriptorProtoSchema, Buffer.from(dep, 'base64')) + const fileDesc = fromBinary(FileDescriptorProtoSchema, Buffer.from(dep, 'base64')) + fileDesc.name = depName + return fileDesc } } const fileRegistry = createFileRegistry(fileDesc, resolve) From 35ef36c5c18c5a1cab9447ee9679a1208f682979 Mon Sep 17 00:00:00 2001 From: Robert Yokota Date: Wed, 28 Aug 2024 19:59:16 -0700 Subject: [PATCH 09/12] Minor fix --- schemaregistry/mock-schemaregistry-client.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schemaregistry/mock-schemaregistry-client.ts b/schemaregistry/mock-schemaregistry-client.ts index ee463d4e..c2d754f5 100644 --- a/schemaregistry/mock-schemaregistry-client.ts +++ b/schemaregistry/mock-schemaregistry-client.ts @@ -124,7 +124,7 @@ class MockClient implements Client { this.schemaToVersionCache.set(cacheKey, { version: newVersion, softDeleted: false }); } - async getBySubjectAndId(subject: string, id: number, format: string): Promise { + async getBySubjectAndId(subject: string, id: number, format?: string): Promise { const cacheKey = stringify({ subject, id }); const cacheEntry = this.idToSchemaCache.get(cacheKey); From 555235e9d6c0193a7b7d7c5b7d6ac007236765ca Mon Sep 17 00:00:00 2001 From: Robert Yokota Date: Thu, 29 Aug 2024 14:59:49 -0700 Subject: [PATCH 10/12] Avro ref test --- schemaregistry/serde/avro.ts | 6 ++- schemaregistry/serde/json.ts | 4 +- test/schemaregistry/serde/avro.spec.ts | 57 ++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 4 deletions(-) diff --git a/schemaregistry/serde/avro.ts b/schemaregistry/serde/avro.ts index 13a6c503..7249add2 100644 --- a/schemaregistry/serde/avro.ts +++ b/schemaregistry/serde/avro.ts @@ -199,8 +199,10 @@ async function toType( schema: avro.Schema, opts: ForSchemaOptions, ) => { - deps.forEach((_name, schema) => { - avro.Type.forSchema(JSON.parse(schema), opts) + const avroOpts = opts as AvroSerdeConfig + deps.forEach((schema, _name) => { + avroOpts.typeHook = userHook + avro.Type.forSchema(JSON.parse(schema), avroOpts) }) if (userHook) { return userHook(schema, opts) diff --git a/schemaregistry/serde/json.ts b/schemaregistry/serde/json.ts index b2dc4015..a0d98054 100644 --- a/schemaregistry/serde/json.ts +++ b/schemaregistry/serde/json.ts @@ -213,7 +213,7 @@ async function toValidateFunction( const spec = json.$schema if (spec === 'http://json-schema.org/draft/2020-12/schema') { const ajv2020 = new Ajv2020(conf as JsonSerdeConfig) - deps.forEach((name, schema) => { + deps.forEach((schema, name) => { ajv2020.addSchema(JSON.parse(schema), name) }) fn = ajv2020.compile(json) @@ -221,7 +221,7 @@ async function toValidateFunction( const ajv = new Ajv2019(conf as JsonSerdeConfig) ajv.addMetaSchema(draft6MetaSchema) ajv.addMetaSchema(draft7MetaSchema) - deps.forEach((name, schema) => { + deps.forEach((schema, name) => { ajv.addSchema(JSON.parse(schema), name) }) fn = ajv.compile(json) diff --git a/test/schemaregistry/serde/avro.spec.ts b/test/schemaregistry/serde/avro.spec.ts index 6d73c5dc..94cdfce7 100644 --- a/test/schemaregistry/serde/avro.spec.ts +++ b/test/schemaregistry/serde/avro.spec.ts @@ -46,6 +46,18 @@ const demoSchema = ` ] } ` +const rootPointerSchema = ` +{ + "name": "NestedTestPointerRecord", + "type": "record", + "fields": [ + { + "name": "otherField", + "type": ["null", "DemoSchema"] + } +] +} +` const f1Schema = ` { "name": "F1Schema", @@ -103,6 +115,51 @@ describe('AvroSerializer', () => { expect(obj2.boolField).toEqual(obj.boolField); expect(obj2.bytesField).toEqual(obj.bytesField); }) + it('serialize reference', async () => { + let conf: ClientConfig = { + baseURLs: [baseURL], + cacheCapacity: 1000 + } + let client = SchemaRegistryClient.newClient(conf) + let ser = new AvroSerializer(client, SerdeType.VALUE, {useLatestVersion: true}) + + let info: SchemaInfo = { + schemaType: 'AVRO', + schema: demoSchema, + } + await client.register('demo-value', info , false) + + info = { + schemaType: 'AVRO', + schema: rootPointerSchema, + references: [{ + name: 'DemoSchema', + subject: 'demo-value', + version: 1 + }] + } + await client.register(subject, info , false) + + let nested = { + intField: 123, + doubleField: 45.67, + stringField: 'hi', + boolField: true, + bytesField: Buffer.from([1, 2]), + } + let obj = { + otherField: nested + } + let bytes = await ser.serialize(topic, obj) + + let deser = new AvroDeserializer(client, SerdeType.VALUE, {}) + let obj2 = await deser.deserialize(topic, bytes) + expect(obj2.otherField.intField).toEqual(nested.intField); + expect(obj2.otherField.doubleField).toBeCloseTo(nested.doubleField, 0.001); + expect(obj2.otherField.stringField).toEqual(nested.stringField); + expect(obj2.otherField.boolField).toEqual(nested.boolField); + expect(obj2.otherField.bytesField).toEqual(nested.bytesField); + }) it('basic encryption', async () => { let conf: ClientConfig = { baseURLs: [baseURL], From 9da5972d01acea9feba2ce7d69c93f89dd487f16 Mon Sep 17 00:00:00 2001 From: Robert Yokota Date: Thu, 29 Aug 2024 15:28:26 -0700 Subject: [PATCH 11/12] Add json ref test --- test/schemaregistry/serde/json.spec.ts | 47 ++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/test/schemaregistry/serde/json.spec.ts b/test/schemaregistry/serde/json.spec.ts index c3ffc21d..da99cd13 100644 --- a/test/schemaregistry/serde/json.spec.ts +++ b/test/schemaregistry/serde/json.spec.ts @@ -25,6 +25,15 @@ const baseURL = 'mock://' const topic = 'topic1' const subject = topic + '-value' +const rootSchema = ` +{ + "type": "object", + "properties": { + "otherField": { "$ref": "DemoSchema" } + } +} +` + const demoSchema = ` { "type": "object", @@ -75,6 +84,44 @@ describe('JsonSerializer', () => { let obj2 = await deser.deserialize(topic, bytes) expect(obj2).toEqual(obj) }) + it('serialize reference', async () => { + let conf: ClientConfig = { + baseURLs: [baseURL], + cacheCapacity: 1000 + } + let client = SchemaRegistryClient.newClient(conf) + let ser = new JsonSerializer(client, SerdeType.VALUE, {useLatestVersion: true}) + + let info: SchemaInfo = { + schemaType: 'JSON', + schema: demoSchema + } + await client.register('demo-value', info, false) + + info = { + schemaType: 'JSON', + schema: rootSchema, + references: [{ + name: 'DemoSchema', + subject: 'demo-value', + version: 1 + }] + } + await client.register(subject, info, false) + + let obj = { + intField: 123, + doubleField: 45.67, + stringField: 'hi', + boolField: true, + bytesField: Buffer.from([0, 0, 0, 1]).toString('base64') + } + let bytes = await ser.serialize(topic, obj) + + let deser = new JsonDeserializer(client, SerdeType.VALUE, {}) + let obj2 = await deser.deserialize(topic, bytes) + expect(obj2).toEqual(obj) + }) it('basic encryption', async () => { let conf: ClientConfig = { baseURLs: [baseURL], From a2e783ccf09ac547ca2c6a30a97e674100d43387 Mon Sep 17 00:00:00 2001 From: Robert Yokota Date: Thu, 29 Aug 2024 16:45:23 -0700 Subject: [PATCH 12/12] Add nested tests --- test/schemaregistry/serde/avro.spec.ts | 28 ++++++++++++++++++++++++++ test/schemaregistry/serde/json.spec.ts | 21 +++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/test/schemaregistry/serde/avro.spec.ts b/test/schemaregistry/serde/avro.spec.ts index 94cdfce7..a2e42475 100644 --- a/test/schemaregistry/serde/avro.spec.ts +++ b/test/schemaregistry/serde/avro.spec.ts @@ -115,6 +115,34 @@ describe('AvroSerializer', () => { expect(obj2.boolField).toEqual(obj.boolField); expect(obj2.bytesField).toEqual(obj.bytesField); }) + it('serialize nested', async () => { + let conf: ClientConfig = { + baseURLs: [baseURL], + cacheCapacity: 1000 + } + let client = SchemaRegistryClient.newClient(conf) + let ser = new AvroSerializer(client, SerdeType.VALUE, {autoRegisterSchemas: true}) + + let nested = { + intField: 123, + doubleField: 45.67, + stringField: 'hi', + boolField: true, + bytesField: Buffer.from([1, 2]), + } + let obj = { + otherField: nested + } + let bytes = await ser.serialize(topic, obj) + + let deser = new AvroDeserializer(client, SerdeType.VALUE, {}) + let obj2 = await deser.deserialize(topic, bytes) + expect(obj2.otherField.intField).toEqual(nested.intField); + expect(obj2.otherField.doubleField).toBeCloseTo(nested.doubleField, 0.001); + expect(obj2.otherField.stringField).toEqual(nested.stringField); + expect(obj2.otherField.boolField).toEqual(nested.boolField); + expect(obj2.otherField.bytesField).toEqual(nested.bytesField); + }) it('serialize reference', async () => { let conf: ClientConfig = { baseURLs: [baseURL], diff --git a/test/schemaregistry/serde/json.spec.ts b/test/schemaregistry/serde/json.spec.ts index da99cd13..c28f6f9d 100644 --- a/test/schemaregistry/serde/json.spec.ts +++ b/test/schemaregistry/serde/json.spec.ts @@ -84,6 +84,27 @@ describe('JsonSerializer', () => { let obj2 = await deser.deserialize(topic, bytes) expect(obj2).toEqual(obj) }) + it('serialize nested', async () => { + let conf: ClientConfig = { + baseURLs: [baseURL], + cacheCapacity: 1000 + } + let client = SchemaRegistryClient.newClient(conf) + let ser = new JsonSerializer(client, SerdeType.VALUE, {autoRegisterSchemas: true}) + + let obj = { + intField: 123, + doubleField: 45.67, + stringField: 'hi', + boolField: true, + bytesField: Buffer.from([0, 0, 0, 1]).toString('base64') + } + let bytes = await ser.serialize(topic, obj) + + let deser = new JsonDeserializer(client, SerdeType.VALUE, {}) + let obj2 = await deser.deserialize(topic, bytes) + expect(obj2).toEqual(obj) + }) it('serialize reference', async () => { let conf: ClientConfig = { baseURLs: [baseURL],