@inploi/plugin-job-search 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,7 +9,7 @@ declare const JobSearchResponseSchema: import("valibot").SchemaWithTransform<imp
9
9
  company_logo: import("valibot").OptionalSchema<import("valibot").StringSchema<string>, undefined, string | undefined>;
10
10
  employment_type: import("valibot").StringSchema<string>;
11
11
  location_type: import("valibot").UnionSchema<[import("valibot").LiteralSchema<"LOCATION", "LOCATION">, import("valibot").LiteralSchema<"REMOTE", "REMOTE">, import("valibot").LiteralSchema<"HYBRID", "HYBRID">], "LOCATION" | "REMOTE" | "HYBRID">;
12
- pay_type: import("valibot").UnionSchema<[import("valibot").LiteralSchema<"ANNUALLY", "ANNUALLY">, import("valibot").LiteralSchema<"HOURLY", "HOURLY">, import("valibot").LiteralSchema<"MONTHLY", "MONTHLY">, import("valibot").LiteralSchema<"WEEKLY", "WEEKLY">, import("valibot").LiteralSchema<"DAILY", "DAILY">], "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY">;
12
+ pay_type: import("valibot").NullableSchema<import("valibot").UnionSchema<[import("valibot").LiteralSchema<"ANNUALLY", "ANNUALLY">, import("valibot").LiteralSchema<"HOURLY", "HOURLY">, import("valibot").LiteralSchema<"MONTHLY", "MONTHLY">, import("valibot").LiteralSchema<"WEEKLY", "WEEKLY">, import("valibot").LiteralSchema<"DAILY", "DAILY">], "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY">, undefined, "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY" | null>;
13
13
  pay_currency: import("valibot").StringSchema<string>;
14
14
  pay_mask: import("valibot").BooleanSchema<boolean>;
15
15
  pay_display: import("valibot").BooleanSchema<boolean>;
@@ -37,7 +37,7 @@ declare const JobSearchResponseSchema: import("valibot").SchemaWithTransform<imp
37
37
  company_name: string;
38
38
  employment_type: string;
39
39
  location_type: "LOCATION" | "REMOTE" | "HYBRID";
40
- pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY";
40
+ pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY" | null;
41
41
  pay_currency: string;
42
42
  pay_mask: boolean;
43
43
  pay_display: boolean;
@@ -65,7 +65,7 @@ declare const JobSearchResponseSchema: import("valibot").SchemaWithTransform<imp
65
65
  company_name: string;
66
66
  employment_type: string;
67
67
  location_type: "LOCATION" | "REMOTE" | "HYBRID";
68
- pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY";
68
+ pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY" | null;
69
69
  pay_currency: string;
70
70
  pay_mask: boolean;
71
71
  pay_display: boolean;
@@ -111,7 +111,7 @@ declare const JobSearchResponseSchema: import("valibot").SchemaWithTransform<imp
111
111
  company_name: string;
112
112
  employment_type: string;
113
113
  location_type: "LOCATION" | "REMOTE" | "HYBRID";
114
- pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY";
114
+ pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY" | null;
115
115
  pay_currency: string;
116
116
  pay_mask: boolean;
117
117
  pay_display: boolean;
@@ -170,7 +170,7 @@ declare const JobSearchResponseSchema: import("valibot").SchemaWithTransform<imp
170
170
  company_name: string;
171
171
  employment_type: string;
172
172
  location_type: "LOCATION" | "REMOTE" | "HYBRID";
173
- pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY";
173
+ pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY" | null;
174
174
  pay_currency: string;
175
175
  pay_mask: boolean;
176
176
  pay_display: boolean;
@@ -230,7 +230,7 @@ declare const JobSearchResponseSchema: import("valibot").SchemaWithTransform<imp
230
230
  company_name: string;
231
231
  employment_type: string;
232
232
  location_type: "LOCATION" | "REMOTE" | "HYBRID";
233
- pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY";
233
+ pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY" | null;
234
234
  pay_currency: string;
235
235
  pay_mask: boolean;
236
236
  pay_display: boolean;
@@ -304,7 +304,7 @@ export declare const getJobSearchResults: ({ apiClient, logger, signal, filters,
304
304
  company_name: string;
305
305
  employment_type: string;
306
306
  location_type: "LOCATION" | "REMOTE" | "HYBRID";
307
- pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY";
307
+ pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY" | null;
308
308
  pay_currency: string;
309
309
  pay_mask: boolean;
310
310
  pay_display: boolean;
@@ -120,7 +120,7 @@ export declare const jobSearchPlugin: () => ({ apiClient, logger, analytics }: {
120
120
  company_name: string;
121
121
  employment_type: string;
122
122
  location_type: "LOCATION" | "REMOTE" | "HYBRID";
123
- pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY";
123
+ pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY" | null;
124
124
  pay_currency: string;
125
125
  pay_mask: boolean;
126
126
  pay_display: boolean;
@@ -144,11 +144,10 @@ export declare const jobSearchPlugin: () => ({ apiClient, logger, analytics }: {
144
144
  country?: string | undefined;
145
145
  };
146
146
  id: number;
147
- isNew: boolean;
147
+ isNew: boolean; /** Whether users can select one or multiple values.
148
+ * @default `'one'`
149
+ */
148
150
  company: {
149
- /** Whether users can select one or multiple values.
150
- * @default `'one'`
151
- */
152
151
  name: string;
153
152
  logo: string | undefined;
154
153
  };
@@ -34,7 +34,7 @@ export declare const JobPayloadSchema: import("valibot").ObjectSchema<{
34
34
  company_logo: import("valibot").OptionalSchema<import("valibot").StringSchema<string>, undefined, string | undefined>;
35
35
  employment_type: import("valibot").StringSchema<string>;
36
36
  location_type: import("valibot").UnionSchema<[import("valibot").LiteralSchema<"LOCATION", "LOCATION">, import("valibot").LiteralSchema<"REMOTE", "REMOTE">, import("valibot").LiteralSchema<"HYBRID", "HYBRID">], "LOCATION" | "REMOTE" | "HYBRID">;
37
- pay_type: import("valibot").UnionSchema<[import("valibot").LiteralSchema<"ANNUALLY", "ANNUALLY">, import("valibot").LiteralSchema<"HOURLY", "HOURLY">, import("valibot").LiteralSchema<"MONTHLY", "MONTHLY">, import("valibot").LiteralSchema<"WEEKLY", "WEEKLY">, import("valibot").LiteralSchema<"DAILY", "DAILY">], "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY">;
37
+ pay_type: import("valibot").NullableSchema<import("valibot").UnionSchema<[import("valibot").LiteralSchema<"ANNUALLY", "ANNUALLY">, import("valibot").LiteralSchema<"HOURLY", "HOURLY">, import("valibot").LiteralSchema<"MONTHLY", "MONTHLY">, import("valibot").LiteralSchema<"WEEKLY", "WEEKLY">, import("valibot").LiteralSchema<"DAILY", "DAILY">], "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY">, undefined, "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY" | null>;
38
38
  pay_currency: import("valibot").StringSchema<string>;
39
39
  pay_mask: import("valibot").BooleanSchema<boolean>;
40
40
  pay_display: import("valibot").BooleanSchema<boolean>;
@@ -62,7 +62,7 @@ export declare const JobPayloadSchema: import("valibot").ObjectSchema<{
62
62
  company_name: string;
63
63
  employment_type: string;
64
64
  location_type: "LOCATION" | "REMOTE" | "HYBRID";
65
- pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY";
65
+ pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY" | null;
66
66
  pay_currency: string;
67
67
  pay_mask: boolean;
68
68
  pay_display: boolean;
@@ -92,7 +92,7 @@ export declare const JobSchema: import("valibot").SchemaWithTransform<import("va
92
92
  company_logo: import("valibot").OptionalSchema<import("valibot").StringSchema<string>, undefined, string | undefined>;
93
93
  employment_type: import("valibot").StringSchema<string>;
94
94
  location_type: import("valibot").UnionSchema<[import("valibot").LiteralSchema<"LOCATION", "LOCATION">, import("valibot").LiteralSchema<"REMOTE", "REMOTE">, import("valibot").LiteralSchema<"HYBRID", "HYBRID">], "LOCATION" | "REMOTE" | "HYBRID">;
95
- pay_type: import("valibot").UnionSchema<[import("valibot").LiteralSchema<"ANNUALLY", "ANNUALLY">, import("valibot").LiteralSchema<"HOURLY", "HOURLY">, import("valibot").LiteralSchema<"MONTHLY", "MONTHLY">, import("valibot").LiteralSchema<"WEEKLY", "WEEKLY">, import("valibot").LiteralSchema<"DAILY", "DAILY">], "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY">;
95
+ pay_type: import("valibot").NullableSchema<import("valibot").UnionSchema<[import("valibot").LiteralSchema<"ANNUALLY", "ANNUALLY">, import("valibot").LiteralSchema<"HOURLY", "HOURLY">, import("valibot").LiteralSchema<"MONTHLY", "MONTHLY">, import("valibot").LiteralSchema<"WEEKLY", "WEEKLY">, import("valibot").LiteralSchema<"DAILY", "DAILY">], "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY">, undefined, "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY" | null>;
96
96
  pay_currency: import("valibot").StringSchema<string>;
97
97
  pay_mask: import("valibot").BooleanSchema<boolean>;
98
98
  pay_display: import("valibot").BooleanSchema<boolean>;
@@ -120,7 +120,7 @@ export declare const JobSchema: import("valibot").SchemaWithTransform<import("va
120
120
  company_name: string;
121
121
  employment_type: string;
122
122
  location_type: "LOCATION" | "REMOTE" | "HYBRID";
123
- pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY";
123
+ pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY" | null;
124
124
  pay_currency: string;
125
125
  pay_mask: boolean;
126
126
  pay_display: boolean;
@@ -148,7 +148,7 @@ export declare const JobSchema: import("valibot").SchemaWithTransform<import("va
148
148
  company_name: string;
149
149
  employment_type: string;
150
150
  location_type: "LOCATION" | "REMOTE" | "HYBRID";
151
- pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY";
151
+ pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY" | null;
152
152
  pay_currency: string;
153
153
  pay_mask: boolean;
154
154
  pay_display: boolean;
@@ -1077,14 +1077,15 @@ const getSalaryAsText = (params) => {
1077
1077
  return "Invalid salary";
1078
1078
  if (salary.pay && isNaN(+salary.pay))
1079
1079
  return "Invalid salary";
1080
+ const period = salary.pay_type && salary.pay_type in payPeriods ? payPeriods[salary.pay_type] : void 0;
1080
1081
  if (salary.pay)
1081
- return [numberFormatter.format(+salary.pay), payPeriods[salary.pay_type]].join(" ");
1082
+ return [numberFormatter.format(+salary.pay), period].filter(Boolean).join(" ");
1082
1083
  if (salary.pay_max && salary.pay_min)
1083
- return [numberFormatter.formatRange(+salary.pay_min, +salary.pay_max), payPeriods[salary.pay_type]].join(" ");
1084
+ return [numberFormatter.formatRange(+salary.pay_min, +salary.pay_max), period].filter(Boolean).join(" ");
1084
1085
  if (salary.pay_max)
1085
- return "Up to " + [numberFormatter.format(+salary.pay_max), payPeriods[salary.pay_type]].join(" ");
1086
+ return "Up to " + [numberFormatter.format(+salary.pay_max), period].filter(Boolean).join(" ");
1086
1087
  if (salary.pay_min)
1087
- return "From " + [numberFormatter.format(+salary.pay_min), payPeriods[salary.pay_type]].join(" ");
1088
+ return "From " + [numberFormatter.format(+salary.pay_min), period].filter(Boolean).join(" ");
1088
1089
  return "Invalid salary";
1089
1090
  };
1090
1091
  const DEFAULT_FORMATTER = new Intl.RelativeTimeFormat("en", {
@@ -1127,7 +1128,7 @@ const JobPayloadSchema = object({
1127
1128
  company_logo: optional(string()),
1128
1129
  employment_type: string(),
1129
1130
  location_type: union([literal("LOCATION"), literal("REMOTE"), literal("HYBRID")]),
1130
- pay_type: union([literal("ANNUALLY"), literal("HOURLY"), literal("MONTHLY"), literal("WEEKLY"), literal("DAILY")]),
1131
+ pay_type: nullable(union([literal("ANNUALLY"), literal("HOURLY"), literal("MONTHLY"), literal("WEEKLY"), literal("DAILY")])),
1131
1132
  pay_currency: string(),
1132
1133
  // Whether to mask the pay and show as "competitive"
1133
1134
  pay_mask: boolean(),
@@ -4170,7 +4171,7 @@ const ResultsSection = ({
4170
4171
  return u$1(g$3, {
4171
4172
  children: Array.from({
4172
4173
  length: page
4173
- }).map((a2, index) => {
4174
+ }).map((_2, index) => {
4174
4175
  const isLast = index === page - 1;
4175
4176
  return u$1(ErrorBoundary, {
4176
4177
  Fallback: ErrorView,
@@ -4332,7 +4333,10 @@ const JobSearch = ({
4332
4333
  params
4333
4334
  }) => {
4334
4335
  const appRef = _(null);
4335
- const [appliedFilters, setAppliedFilters] = h(() => getFilterDefaults(properties));
4336
+ const [appliedFilters, setAppliedFilters] = h(() => ({
4337
+ default: true,
4338
+ filters: getFilterDefaults(properties)
4339
+ }));
4336
4340
  return u$1("div", {
4337
4341
  ref: appRef,
4338
4342
  class: className,
@@ -4344,16 +4348,19 @@ const JobSearch = ({
4344
4348
  children: u$1("div", {
4345
4349
  class: "flex flex-col gap-2",
4346
4350
  children: [u$1(FilterSection, {
4347
- appliedFilters,
4351
+ appliedFilters: appliedFilters.filters,
4348
4352
  onFilterValueChange: (key, value) => {
4349
4353
  setAppliedFilters((prev) => {
4350
4354
  onFilterChange == null ? void 0 : onFilterChange({
4351
- ...prev,
4355
+ ...prev.filters,
4352
4356
  [key]: value
4353
4357
  });
4354
4358
  return {
4355
- ...prev,
4356
- [key]: value
4359
+ default: false,
4360
+ filters: {
4361
+ ...prev.filters,
4362
+ [key]: value
4363
+ }
4357
4364
  };
4358
4365
  });
4359
4366
  },
@@ -4364,7 +4371,7 @@ const JobSearch = ({
4364
4371
  }), params.enableJobAlerts && u$1("div", {
4365
4372
  class: "flex justify-center px-4 md:px-0",
4366
4373
  children: u$1(AlertsButton, {
4367
- appliedFilters,
4374
+ appliedFilters: appliedFilters.filters,
4368
4375
  analytics,
4369
4376
  apiClient,
4370
4377
  logger,
@@ -4379,13 +4386,13 @@ const JobSearch = ({
4379
4386
  children: u$1(ErrorBoundary, {
4380
4387
  Fallback: ErrorView,
4381
4388
  children: u$1(ResultsSection, {
4382
- appliedFilters,
4389
+ appliedFilters: appliedFilters.filters,
4383
4390
  logger,
4384
4391
  apiClient,
4385
4392
  jobCardConfig: params.jobCard,
4386
- initialData: initialData == null ? void 0 : initialData.jobs
4393
+ initialData: appliedFilters.default ? initialData == null ? void 0 : initialData.jobs : void 0
4387
4394
  }, cacheKey({
4388
- filter: appliedFilters,
4395
+ filter: appliedFilters.filters,
4389
4396
  baseKey: "resultsSection"
4390
4397
  }))
4391
4398
  })
@@ -1075,14 +1075,15 @@ const getSalaryAsText = (params) => {
1075
1075
  return "Invalid salary";
1076
1076
  if (salary.pay && isNaN(+salary.pay))
1077
1077
  return "Invalid salary";
1078
+ const period = salary.pay_type && salary.pay_type in payPeriods ? payPeriods[salary.pay_type] : void 0;
1078
1079
  if (salary.pay)
1079
- return [numberFormatter.format(+salary.pay), payPeriods[salary.pay_type]].join(" ");
1080
+ return [numberFormatter.format(+salary.pay), period].filter(Boolean).join(" ");
1080
1081
  if (salary.pay_max && salary.pay_min)
1081
- return [numberFormatter.formatRange(+salary.pay_min, +salary.pay_max), payPeriods[salary.pay_type]].join(" ");
1082
+ return [numberFormatter.formatRange(+salary.pay_min, +salary.pay_max), period].filter(Boolean).join(" ");
1082
1083
  if (salary.pay_max)
1083
- return "Up to " + [numberFormatter.format(+salary.pay_max), payPeriods[salary.pay_type]].join(" ");
1084
+ return "Up to " + [numberFormatter.format(+salary.pay_max), period].filter(Boolean).join(" ");
1084
1085
  if (salary.pay_min)
1085
- return "From " + [numberFormatter.format(+salary.pay_min), payPeriods[salary.pay_type]].join(" ");
1086
+ return "From " + [numberFormatter.format(+salary.pay_min), period].filter(Boolean).join(" ");
1086
1087
  return "Invalid salary";
1087
1088
  };
1088
1089
  const DEFAULT_FORMATTER = new Intl.RelativeTimeFormat("en", {
@@ -1125,7 +1126,7 @@ const JobPayloadSchema = object({
1125
1126
  company_logo: optional(string()),
1126
1127
  employment_type: string(),
1127
1128
  location_type: union([literal("LOCATION"), literal("REMOTE"), literal("HYBRID")]),
1128
- pay_type: union([literal("ANNUALLY"), literal("HOURLY"), literal("MONTHLY"), literal("WEEKLY"), literal("DAILY")]),
1129
+ pay_type: nullable(union([literal("ANNUALLY"), literal("HOURLY"), literal("MONTHLY"), literal("WEEKLY"), literal("DAILY")])),
1129
1130
  pay_currency: string(),
1130
1131
  // Whether to mask the pay and show as "competitive"
1131
1132
  pay_mask: boolean(),
@@ -4168,7 +4169,7 @@ const ResultsSection = ({
4168
4169
  return u$1(g$3, {
4169
4170
  children: Array.from({
4170
4171
  length: page
4171
- }).map((a2, index) => {
4172
+ }).map((_2, index) => {
4172
4173
  const isLast = index === page - 1;
4173
4174
  return u$1(ErrorBoundary, {
4174
4175
  Fallback: ErrorView,
@@ -4330,7 +4331,10 @@ const JobSearch = ({
4330
4331
  params
4331
4332
  }) => {
4332
4333
  const appRef = _(null);
4333
- const [appliedFilters, setAppliedFilters] = h(() => getFilterDefaults(properties));
4334
+ const [appliedFilters, setAppliedFilters] = h(() => ({
4335
+ default: true,
4336
+ filters: getFilterDefaults(properties)
4337
+ }));
4334
4338
  return u$1("div", {
4335
4339
  ref: appRef,
4336
4340
  class: className,
@@ -4342,16 +4346,19 @@ const JobSearch = ({
4342
4346
  children: u$1("div", {
4343
4347
  class: "flex flex-col gap-2",
4344
4348
  children: [u$1(FilterSection, {
4345
- appliedFilters,
4349
+ appliedFilters: appliedFilters.filters,
4346
4350
  onFilterValueChange: (key, value) => {
4347
4351
  setAppliedFilters((prev) => {
4348
4352
  onFilterChange == null ? void 0 : onFilterChange({
4349
- ...prev,
4353
+ ...prev.filters,
4350
4354
  [key]: value
4351
4355
  });
4352
4356
  return {
4353
- ...prev,
4354
- [key]: value
4357
+ default: false,
4358
+ filters: {
4359
+ ...prev.filters,
4360
+ [key]: value
4361
+ }
4355
4362
  };
4356
4363
  });
4357
4364
  },
@@ -4362,7 +4369,7 @@ const JobSearch = ({
4362
4369
  }), params.enableJobAlerts && u$1("div", {
4363
4370
  class: "flex justify-center px-4 md:px-0",
4364
4371
  children: u$1(AlertsButton, {
4365
- appliedFilters,
4372
+ appliedFilters: appliedFilters.filters,
4366
4373
  analytics,
4367
4374
  apiClient,
4368
4375
  logger,
@@ -4377,13 +4384,13 @@ const JobSearch = ({
4377
4384
  children: u$1(ErrorBoundary, {
4378
4385
  Fallback: ErrorView,
4379
4386
  children: u$1(ResultsSection, {
4380
- appliedFilters,
4387
+ appliedFilters: appliedFilters.filters,
4381
4388
  logger,
4382
4389
  apiClient,
4383
4390
  jobCardConfig: params.jobCard,
4384
- initialData: initialData == null ? void 0 : initialData.jobs
4391
+ initialData: appliedFilters.default ? initialData == null ? void 0 : initialData.jobs : void 0
4385
4392
  }, cacheKey({
4386
- filter: appliedFilters,
4393
+ filter: appliedFilters.filters,
4387
4394
  baseKey: "resultsSection"
4388
4395
  }))
4389
4396
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inploi/plugin-job-search",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
4
4
  "type": "module",
5
5
  "main": "dist/plugin-job-search.js",
6
6
  "types": "dist/index.d.ts",
@@ -44,7 +44,7 @@
44
44
  "vite": "^4.4.5",
45
45
  "vite-plugin-dts": "^3.7.0",
46
46
  "vite-tsconfig-paths": "^4.2.1",
47
- "@inploi/core": "1.12.0",
47
+ "@inploi/core": "1.14.0",
48
48
  "@inploi/plugin-job-alerts": "0.2.0",
49
49
  "@inploi/design-tokens": "0.2.1",
50
50
  "@inploi/sdk": "1.13.0",