@cavuno/board 4.33.0 → 4.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -0
- package/dist/{_spec-BdqHycDm.d.mts → _spec-DBpKC6Rv.d.mts} +73 -11
- package/dist/{_spec-BdqHycDm.d.ts → _spec-DBpKC6Rv.d.ts} +73 -11
- package/dist/analytics.d.mts +39 -2
- package/dist/analytics.d.ts +39 -2
- package/dist/analytics.js +57 -1
- package/dist/analytics.mjs +57 -1
- package/dist/{blog-D85cD8W0.d.ts → blog-Bk6oHqIR.d.ts} +1 -1
- package/dist/{blog-CE0g5csE.d.mts → blog-DXCzYj2q.d.mts} +1 -1
- package/dist/{board-CdG7z-Vq.d.mts → board-BpOyLLl_.d.ts} +11 -3
- package/dist/{board-CEsr8xMh.d.ts → board-D6yRj3IN.d.mts} +11 -3
- package/dist/{breadcrumbs-DmVbf4_6.d.ts → breadcrumbs-B5qrRrgN.d.ts} +2 -2
- package/dist/{breadcrumbs-B3n9k95M.d.mts → breadcrumbs-BnYHHx40.d.mts} +2 -2
- package/dist/browser/cavuno-board.global.min.js +1 -1
- package/dist/filters.d.mts +2 -2
- package/dist/filters.d.ts +2 -2
- package/dist/format.d.mts +4 -4
- package/dist/format.d.ts +4 -4
- package/dist/index.d.mts +68 -18
- package/dist/index.d.ts +68 -18
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{jobs-DbZuagy-.d.ts → jobs-Cgh8dwXB.d.mts} +13 -2
- package/dist/{jobs-COOBWXWV.d.mts → jobs-DX_wDSzt.d.ts} +13 -2
- package/dist/{search-BV2B73ty.d.ts → search-DOmwaBud.d.ts} +1 -1
- package/dist/{search-BapnDodc.d.mts → search-DsR5-O8E.d.mts} +1 -1
- package/dist/{seo-C_yEotTb.d.mts → seo-DbzhNmAY.d.mts} +1 -1
- package/dist/{seo-BcC8Tv0d.d.ts → seo-DtLE8C9q.d.ts} +1 -1
- package/dist/seo-files.d.mts +2 -2
- package/dist/seo-files.d.ts +2 -2
- package/dist/seo.d.mts +6 -6
- package/dist/seo.d.ts +6 -6
- package/dist/server.d.mts +6 -6
- package/dist/server.d.ts +6 -6
- package/dist/sitemap.d.mts +6 -6
- package/dist/sitemap.d.ts +6 -6
- package/dist/suggest.d.mts +2 -2
- package/dist/suggest.d.ts +2 -2
- package/package.json +1 -1
- package/skills/manifest.json +1 -1
package/dist/analytics.js
CHANGED
|
@@ -30,13 +30,14 @@ __export(analytics_exports, {
|
|
|
30
30
|
analytics: () => analytics,
|
|
31
31
|
install: () => install,
|
|
32
32
|
matchAnalyticsWellKnown: () => matchAnalyticsWellKnown,
|
|
33
|
+
recordConsent: () => recordConsent,
|
|
33
34
|
track: () => track
|
|
34
35
|
});
|
|
35
36
|
module.exports = __toCommonJS(analytics_exports);
|
|
36
37
|
|
|
37
38
|
// src/analytics/defaults.ts
|
|
38
39
|
var DEFAULT_COLLECT_URL = "https://cavuno.com/api/analytics/collect";
|
|
39
|
-
var DEFAULT_SCRIPT_URL = "https://cavuno.com/js/metrics.js?v=1.7.1-cavuno.
|
|
40
|
+
var DEFAULT_SCRIPT_URL = "https://cavuno.com/js/metrics.js?v=1.7.1-cavuno.2";
|
|
40
41
|
var PENDING_TENANT_ID = "boards_pending";
|
|
41
42
|
var WELL_KNOWN_ANALYTICS_SCRIPT_PATH = "/.well-known/cavuno/analytics.js";
|
|
42
43
|
var WELL_KNOWN_SCRIPT_PATH = WELL_KNOWN_ANALYTICS_SCRIPT_PATH;
|
|
@@ -210,9 +211,64 @@ function track(action, payload) {
|
|
|
210
211
|
}
|
|
211
212
|
postCollectJson(installed, trimmed, payload);
|
|
212
213
|
}
|
|
214
|
+
var CONSENT_CHOICES = [
|
|
215
|
+
"accepted",
|
|
216
|
+
"denied",
|
|
217
|
+
"withdrawn"
|
|
218
|
+
];
|
|
219
|
+
var CONSENT_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
220
|
+
var BANNER_VERSION_MAX_LENGTH = 128;
|
|
221
|
+
function recordConsent(input) {
|
|
222
|
+
const publishableKey = input.publishableKey.trim();
|
|
223
|
+
if (!publishableKey.startsWith("pk_")) {
|
|
224
|
+
throw new Error(
|
|
225
|
+
"analytics.recordConsent requires a publishable key (pk_\u2026)"
|
|
226
|
+
);
|
|
227
|
+
}
|
|
228
|
+
const consentId = input.consentId.trim().toLowerCase();
|
|
229
|
+
if (!CONSENT_ID_PATTERN.test(consentId)) {
|
|
230
|
+
throw new Error("analytics.recordConsent requires a UUID consentId");
|
|
231
|
+
}
|
|
232
|
+
if (!CONSENT_CHOICES.includes(input.choice)) {
|
|
233
|
+
throw new Error(
|
|
234
|
+
"analytics.recordConsent choice must be 'accepted', 'denied' or 'withdrawn'"
|
|
235
|
+
);
|
|
236
|
+
}
|
|
237
|
+
const bannerVersion = input.bannerVersion.trim();
|
|
238
|
+
if (bannerVersion.length === 0 || bannerVersion.length > BANNER_VERSION_MAX_LENGTH) {
|
|
239
|
+
throw new Error(
|
|
240
|
+
"analytics.recordConsent requires a bannerVersion of 1\u2013128 characters"
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
const collectUrl = normalizeCollectUrl(
|
|
244
|
+
(input.collectUrl ?? resolveDefaultCollectUrl()).trim() || resolveDefaultCollectUrl()
|
|
245
|
+
);
|
|
246
|
+
void fetch(collectUrl, {
|
|
247
|
+
method: "POST",
|
|
248
|
+
headers: {
|
|
249
|
+
Authorization: `Bearer ${publishableKey}`,
|
|
250
|
+
"Content-Type": "application/json",
|
|
251
|
+
Accept: "application/json"
|
|
252
|
+
},
|
|
253
|
+
body: JSON.stringify({
|
|
254
|
+
publishableKey,
|
|
255
|
+
action: "consent",
|
|
256
|
+
payload: {
|
|
257
|
+
consent_id: consentId,
|
|
258
|
+
choice: input.choice,
|
|
259
|
+
banner_version: bannerVersion
|
|
260
|
+
}
|
|
261
|
+
}),
|
|
262
|
+
// A consent record must not travel with cookies, first-party or not.
|
|
263
|
+
credentials: "omit",
|
|
264
|
+
keepalive: true
|
|
265
|
+
}).catch(() => {
|
|
266
|
+
});
|
|
267
|
+
}
|
|
213
268
|
var analytics = {
|
|
214
269
|
install,
|
|
215
270
|
track,
|
|
271
|
+
recordConsent,
|
|
216
272
|
matchAnalyticsWellKnown,
|
|
217
273
|
DEFAULT_COLLECT_URL,
|
|
218
274
|
DEFAULT_SCRIPT_URL,
|
package/dist/analytics.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/analytics/defaults.ts
|
|
2
2
|
var DEFAULT_COLLECT_URL = "https://cavuno.com/api/analytics/collect";
|
|
3
|
-
var DEFAULT_SCRIPT_URL = "https://cavuno.com/js/metrics.js?v=1.7.1-cavuno.
|
|
3
|
+
var DEFAULT_SCRIPT_URL = "https://cavuno.com/js/metrics.js?v=1.7.1-cavuno.2";
|
|
4
4
|
var PENDING_TENANT_ID = "boards_pending";
|
|
5
5
|
var WELL_KNOWN_ANALYTICS_SCRIPT_PATH = "/.well-known/cavuno/analytics.js";
|
|
6
6
|
var WELL_KNOWN_SCRIPT_PATH = WELL_KNOWN_ANALYTICS_SCRIPT_PATH;
|
|
@@ -174,9 +174,64 @@ function track(action, payload) {
|
|
|
174
174
|
}
|
|
175
175
|
postCollectJson(installed, trimmed, payload);
|
|
176
176
|
}
|
|
177
|
+
var CONSENT_CHOICES = [
|
|
178
|
+
"accepted",
|
|
179
|
+
"denied",
|
|
180
|
+
"withdrawn"
|
|
181
|
+
];
|
|
182
|
+
var CONSENT_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
183
|
+
var BANNER_VERSION_MAX_LENGTH = 128;
|
|
184
|
+
function recordConsent(input) {
|
|
185
|
+
const publishableKey = input.publishableKey.trim();
|
|
186
|
+
if (!publishableKey.startsWith("pk_")) {
|
|
187
|
+
throw new Error(
|
|
188
|
+
"analytics.recordConsent requires a publishable key (pk_\u2026)"
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
const consentId = input.consentId.trim().toLowerCase();
|
|
192
|
+
if (!CONSENT_ID_PATTERN.test(consentId)) {
|
|
193
|
+
throw new Error("analytics.recordConsent requires a UUID consentId");
|
|
194
|
+
}
|
|
195
|
+
if (!CONSENT_CHOICES.includes(input.choice)) {
|
|
196
|
+
throw new Error(
|
|
197
|
+
"analytics.recordConsent choice must be 'accepted', 'denied' or 'withdrawn'"
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
const bannerVersion = input.bannerVersion.trim();
|
|
201
|
+
if (bannerVersion.length === 0 || bannerVersion.length > BANNER_VERSION_MAX_LENGTH) {
|
|
202
|
+
throw new Error(
|
|
203
|
+
"analytics.recordConsent requires a bannerVersion of 1\u2013128 characters"
|
|
204
|
+
);
|
|
205
|
+
}
|
|
206
|
+
const collectUrl = normalizeCollectUrl(
|
|
207
|
+
(input.collectUrl ?? resolveDefaultCollectUrl()).trim() || resolveDefaultCollectUrl()
|
|
208
|
+
);
|
|
209
|
+
void fetch(collectUrl, {
|
|
210
|
+
method: "POST",
|
|
211
|
+
headers: {
|
|
212
|
+
Authorization: `Bearer ${publishableKey}`,
|
|
213
|
+
"Content-Type": "application/json",
|
|
214
|
+
Accept: "application/json"
|
|
215
|
+
},
|
|
216
|
+
body: JSON.stringify({
|
|
217
|
+
publishableKey,
|
|
218
|
+
action: "consent",
|
|
219
|
+
payload: {
|
|
220
|
+
consent_id: consentId,
|
|
221
|
+
choice: input.choice,
|
|
222
|
+
banner_version: bannerVersion
|
|
223
|
+
}
|
|
224
|
+
}),
|
|
225
|
+
// A consent record must not travel with cookies, first-party or not.
|
|
226
|
+
credentials: "omit",
|
|
227
|
+
keepalive: true
|
|
228
|
+
}).catch(() => {
|
|
229
|
+
});
|
|
230
|
+
}
|
|
177
231
|
var analytics = {
|
|
178
232
|
install,
|
|
179
233
|
track,
|
|
234
|
+
recordConsent,
|
|
180
235
|
matchAnalyticsWellKnown,
|
|
181
236
|
DEFAULT_COLLECT_URL,
|
|
182
237
|
DEFAULT_SCRIPT_URL,
|
|
@@ -197,5 +252,6 @@ export {
|
|
|
197
252
|
analytics,
|
|
198
253
|
install,
|
|
199
254
|
matchAnalyticsWellKnown,
|
|
255
|
+
recordConsent,
|
|
200
256
|
track
|
|
201
257
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as Schemas } from './_spec-
|
|
2
|
-
import { L as ListEnvelope,
|
|
1
|
+
import { S as Schemas } from './_spec-DBpKC6Rv.js';
|
|
2
|
+
import { L as ListEnvelope, t as RelatedSearch, a as CustomFieldFilter, O as ObjectReferenceFilter } from './jobs-DX_wDSzt.js';
|
|
3
3
|
|
|
4
4
|
type PublicCompany = Schemas['CompanyPublic'];
|
|
5
5
|
/** A market (sector) a company operates in — name + its source slug. */
|
|
@@ -123,6 +123,14 @@ type PublicBoardFeatures = PublicBoard['features'];
|
|
|
123
123
|
type PublicBoardAnalytics = PublicBoard['analytics'];
|
|
124
124
|
type PublicBoardAds = PublicBoard['ads'];
|
|
125
125
|
type PublicBoardJobForm = PublicBoard['jobForm'];
|
|
126
|
+
/**
|
|
127
|
+
* One of the board's custom employment types from
|
|
128
|
+
* `board.context().jobForm.employmentType.customTypes`. Offer it in the
|
|
129
|
+
* posting form next to the built-ins when `offered` is true, in
|
|
130
|
+
* `jobForm.employmentType.order`; send `key` as `customEmploymentType`
|
|
131
|
+
* and `employmentType` (its built-in Google equivalent) together.
|
|
132
|
+
*/
|
|
133
|
+
type BoardCustomEmploymentType = Schemas['BoardCustomEmploymentType'];
|
|
126
134
|
/**
|
|
127
135
|
* Sign-in options per role from `board.context().signIn`: which built-in
|
|
128
136
|
* methods to offer and the board's SSO connections. Render the sign-in page
|
|
@@ -165,4 +173,4 @@ type CustomFieldDefinition = Schemas['CustomFieldDefinition'];
|
|
|
165
173
|
type CustomFieldType = CustomFieldDefinition['type'];
|
|
166
174
|
type CustomFieldOption = Schemas['CustomFieldOption'];
|
|
167
175
|
|
|
168
|
-
export type {
|
|
176
|
+
export type { PublicBoardFeatures as A, BoardCustomEmploymentType as B, CustomFieldDefinition as C, PublicBoardJobForm as D, PublicBoardSignIn as E, PublicCompany as F, PublicCompanyDetail as G, PublicCompanyMembership as H, SalaryCompany as I, SalaryLocation as J, SalarySkill as K, LocationSalaryDetail as L, SalaryTitle as M, SkillLocationSalary as N, SkillLocationsIndex as O, PublicBoard as P, TitleLocationSalary as Q, TitleLocationsIndex as R, SkillSalaryDetail as S, TitleSalaryDetail as T, CompanyCategorySalary as a, CompanySalary as b, CompaniesListQuery as c, CompanyListEnvelope as d, CompaniesSearchBody as e, CompanyJobsListQuery as f, CompanySimilarQuery as g, CompanyMarketsListQuery as h, SalaryDetailQuery as i, BoardFormBuiltinField as j, BoardFormField as k, BoardFormLayout as l, BoardFormLockReason as m, BoardJobFormField as n, BoardProfileFormField as o, BoardRoleSignIn as p, BoardSignInSsoConnection as q, CompanyMarket as r, CompanyMarketRef as s, CompanySalarySummary as t, CustomFieldOption as u, CustomFieldType as v, LocationSkillsIndex as w, LocationTitlesIndex as x, PublicBoardAds as y, PublicBoardAnalytics as z };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as Schemas } from './_spec-
|
|
2
|
-
import { L as ListEnvelope,
|
|
1
|
+
import { S as Schemas } from './_spec-DBpKC6Rv.mjs';
|
|
2
|
+
import { L as ListEnvelope, t as RelatedSearch, a as CustomFieldFilter, O as ObjectReferenceFilter } from './jobs-Cgh8dwXB.mjs';
|
|
3
3
|
|
|
4
4
|
type PublicCompany = Schemas['CompanyPublic'];
|
|
5
5
|
/** A market (sector) a company operates in — name + its source slug. */
|
|
@@ -123,6 +123,14 @@ type PublicBoardFeatures = PublicBoard['features'];
|
|
|
123
123
|
type PublicBoardAnalytics = PublicBoard['analytics'];
|
|
124
124
|
type PublicBoardAds = PublicBoard['ads'];
|
|
125
125
|
type PublicBoardJobForm = PublicBoard['jobForm'];
|
|
126
|
+
/**
|
|
127
|
+
* One of the board's custom employment types from
|
|
128
|
+
* `board.context().jobForm.employmentType.customTypes`. Offer it in the
|
|
129
|
+
* posting form next to the built-ins when `offered` is true, in
|
|
130
|
+
* `jobForm.employmentType.order`; send `key` as `customEmploymentType`
|
|
131
|
+
* and `employmentType` (its built-in Google equivalent) together.
|
|
132
|
+
*/
|
|
133
|
+
type BoardCustomEmploymentType = Schemas['BoardCustomEmploymentType'];
|
|
126
134
|
/**
|
|
127
135
|
* Sign-in options per role from `board.context().signIn`: which built-in
|
|
128
136
|
* methods to offer and the board's SSO connections. Render the sign-in page
|
|
@@ -165,4 +173,4 @@ type CustomFieldDefinition = Schemas['CustomFieldDefinition'];
|
|
|
165
173
|
type CustomFieldType = CustomFieldDefinition['type'];
|
|
166
174
|
type CustomFieldOption = Schemas['CustomFieldOption'];
|
|
167
175
|
|
|
168
|
-
export type {
|
|
176
|
+
export type { PublicBoardFeatures as A, BoardCustomEmploymentType as B, CustomFieldDefinition as C, PublicBoardJobForm as D, PublicBoardSignIn as E, PublicCompany as F, PublicCompanyDetail as G, PublicCompanyMembership as H, SalaryCompany as I, SalaryLocation as J, SalarySkill as K, LocationSalaryDetail as L, SalaryTitle as M, SkillLocationSalary as N, SkillLocationsIndex as O, PublicBoard as P, TitleLocationSalary as Q, TitleLocationsIndex as R, SkillSalaryDetail as S, TitleSalaryDetail as T, CompanyCategorySalary as a, CompanySalary as b, CompaniesListQuery as c, CompanyListEnvelope as d, CompaniesSearchBody as e, CompanyJobsListQuery as f, CompanySimilarQuery as g, CompanyMarketsListQuery as h, SalaryDetailQuery as i, BoardFormBuiltinField as j, BoardFormField as k, BoardFormLayout as l, BoardFormLockReason as m, BoardJobFormField as n, BoardProfileFormField as o, BoardRoleSignIn as p, BoardSignInSsoConnection as q, CompanyMarket as r, CompanyMarketRef as s, CompanySalarySummary as t, CustomFieldOption as u, CustomFieldType as v, LocationSkillsIndex as w, LocationTitlesIndex as x, PublicBoardAds as y, PublicBoardAnalytics as z };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-
|
|
2
|
-
import { P as PublicJob } from './jobs-
|
|
1
|
+
import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-BpOyLLl_.js';
|
|
2
|
+
import { P as PublicJob } from './jobs-DX_wDSzt.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Wire enum for `salaryTimeframe`. Defined here (not re-exported from any
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-
|
|
2
|
-
import { P as PublicJob } from './jobs-
|
|
1
|
+
import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-D6yRj3IN.mjs';
|
|
2
|
+
import { P as PublicJob } from './jobs-Cgh8dwXB.mjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Wire enum for `salaryTimeframe`. Defined here (not re-exported from any
|