@scalemule/news-publication 0.0.69 → 0.0.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -246,6 +246,26 @@ Inventory is unavailable until a verified operational placement is active. `plac
246
246
 
247
247
  The consent banner now offers a choice in every geography where optional measurement requires one. `measurementConsent` is the server gate for current, explicitly allowed categories and GPC/DNT. Positive permission is local: unsigned URL parameters and a binary network hub cannot grant all categories. Rendering sponsorship recognition does not require tracking consent; measuring it requires both performance and advertising permission.
248
248
 
249
+ ## Reader sign-in through Ledvery
250
+
251
+ The `reader-sso` (server) and `reader-sso-client` entry points generalize the
252
+ publications' Google sign-in into one Ledvery consumer flow with silent sign-in,
253
+ explicit email sign-in, account linking, precedence between two accounts,
254
+ RP-initiated sign-out and server-recorded telemetry. A site supplies its cookie
255
+ prefix, canonical origin, Ledvery client id and a request adapter that performs
256
+ gateway calls with the site's own API key; the package never sees a credential
257
+ other than that key and the browser only ever sees host-only HttpOnly cookies.
258
+
259
+ `startSignIn`, `completeSignIn`, `linkAccount`, `switchAccount`, `signOut` and
260
+ `sessionSummary` return cookie instructions and destinations; the site applies
261
+ them with `applyCookies` and answers with private, no-store headers. Merge
262
+ `READER_SSO_EVENTS` into the site's analytics registry and allow
263
+ `READER_SSO_PROPERTY_KEYS` in its property sanitizer. `ReaderSsoBoot` performs at
264
+ most one silent attempt per page load and never on private paths, for bots,
265
+ while typing, in frames or in prerendered documents; the server's negative cache
266
+ makes a loop impossible. `ReaderGreeting` is a client island that renders only a
267
+ first name, in the reader's own time zone and locale, after loading.
268
+
249
269
  ## Community pet sections
250
270
 
251
271
  The `pets`, `pets-view`, `pets-forms`, `pets-interactions`, `pets-server`,
@@ -18,4 +18,4 @@ declare function articlePresentation(value?: ArticlePresentation | null): Articl
18
18
  declare function articleHeroRatio(layout: ArticleLayout): number;
19
19
  declare function articleFormatLabel(format?: ArticleFormat | null): string | undefined;
20
20
 
21
- export { type ArticleFormat as A, type ArticlePresentation as a, type ArticleLayout as b, articleFormatLabel as c, articleHeroRatio as d, articlePresentation as e };
21
+ export { type ArticleFormat as A, type ArticleLayout as a, type ArticlePresentation as b, articleFormatLabel as c, articleHeroRatio as d, articlePresentation as e };
@@ -18,4 +18,4 @@ declare function articlePresentation(value?: ArticlePresentation | null): Articl
18
18
  declare function articleHeroRatio(layout: ArticleLayout): number;
19
19
  declare function articleFormatLabel(format?: ArticleFormat | null): string | undefined;
20
20
 
21
- export { type ArticleFormat as A, type ArticlePresentation as a, type ArticleLayout as b, articleFormatLabel as c, articleHeroRatio as d, articlePresentation as e };
21
+ export { type ArticleFormat as A, type ArticleLayout as a, type ArticlePresentation as b, articleFormatLabel as c, articleHeroRatio as d, articlePresentation as e };
@@ -39,6 +39,7 @@ var PublicationArticleClient = class {
39
39
  method,
40
40
  headers,
41
41
  body: body === void 0 ? void 0 : form ? body : JSON.stringify(body),
42
+ signal: AbortSignal.timeout(form ? 9e4 : 3e4),
42
43
  cache: "no-store",
43
44
  redirect: "error"
44
45
  });
@@ -61,15 +62,26 @@ var PublicationArticleClient = class {
61
62
  );
62
63
  }
63
64
  processing(articleId) {
64
- return this.request(`/articles/${encodeURIComponent(articleId)}/processing`);
65
+ return this.request(
66
+ `/articles/${encodeURIComponent(articleId)}/processing`
67
+ );
68
+ }
69
+ /** Existing private narration path for a saved revision and a before-publication audio policy. */
70
+ narrateRevision(articleId, expectedGeneration) {
71
+ return this.request(
72
+ `/articles/${encodeURIComponent(articleId)}/collaboration/narrate`,
73
+ "POST",
74
+ { expected_generation: expectedGeneration }
75
+ );
65
76
  }
66
- retryProcessing(articleId, expectedVersion, assetSourceFileId) {
77
+ retryProcessing(articleId, expectedVersion, assetSourceFileId, narrationProfileVersion) {
67
78
  return this.request(
68
79
  `/articles/${encodeURIComponent(articleId)}/processing`,
69
80
  "POST",
70
81
  {
71
82
  expected_version: expectedVersion,
72
- asset_source_file_id: assetSourceFileId
83
+ asset_source_file_id: assetSourceFileId,
84
+ narration_profile_version: narrationProfileVersion
73
85
  }
74
86
  );
75
87
  }
@@ -1,4 +1,4 @@
1
- import { A as ArticleFormat } from './article-presentation-0d1FiDgA.cjs';
1
+ import { A as ArticleFormat, a as ArticleLayout } from './article-presentation-BrNCcF-5.cjs';
2
2
 
3
3
  type ArticleDocument = {
4
4
  title: string;
@@ -33,6 +33,59 @@ type AssetMetadata = {
33
33
  rights_confirmed: boolean;
34
34
  private_preview_only?: boolean;
35
35
  };
36
+ type ArticleProcessing = {
37
+ article_id: string;
38
+ version: number;
39
+ publication_status: string;
40
+ narration: {
41
+ status: string;
42
+ attempts?: number | null;
43
+ audio_id?: string | null;
44
+ job_id?: string | null;
45
+ profile_override_version?: number | null;
46
+ error_code?: string | null;
47
+ last_progress_at?: string | null;
48
+ };
49
+ visual: {
50
+ status: string;
51
+ provider: string;
52
+ policy_governed: boolean;
53
+ };
54
+ assets: {
55
+ source_file_id: string;
56
+ public_file_id: string;
57
+ status: string;
58
+ attempts: number;
59
+ error_code?: string | null;
60
+ last_progress_at: string;
61
+ }[];
62
+ };
63
+ type ArticleWorkflowOptions = {
64
+ workflow_version: number;
65
+ profile_version: number;
66
+ formats: ArticleFormat[];
67
+ layouts: {
68
+ definition: ArticleLayout;
69
+ visual_requirements: {
70
+ hero_aspect: string;
71
+ mobile_aspect: string;
72
+ share_aspect: string;
73
+ };
74
+ }[];
75
+ sections: string[];
76
+ language: string;
77
+ narration?: {
78
+ provider: string;
79
+ model: string;
80
+ voice: string;
81
+ required_before_publish: boolean;
82
+ } | null;
83
+ capabilities: {
84
+ managed_private_asset_upload: boolean;
85
+ inline_media_body?: boolean;
86
+ automatic_public_narration?: boolean;
87
+ };
88
+ };
36
89
  type ArticleOperation = {
37
90
  article_id: string;
38
91
  revision_id: string;
@@ -78,25 +131,16 @@ declare class PublicationArticleClient {
78
131
  fetch?: typeof fetch;
79
132
  });
80
133
  private request;
81
- options(articleId?: string): Promise<{
82
- workflow_version: number;
83
- formats: string[];
84
- layouts: unknown[];
85
- capabilities: {
86
- managed_private_asset_upload: boolean;
87
- };
88
- }>;
134
+ options(articleId?: string): Promise<ArticleWorkflowOptions>;
89
135
  get(articleId: string): Promise<Record>;
90
- processing(articleId: string): Promise<{
91
- narration: {
92
- status: string;
93
- error_code?: string;
94
- };
95
- visual: {
96
- status: string;
97
- };
136
+ processing(articleId: string): Promise<ArticleProcessing>;
137
+ /** Existing private narration path for a saved revision and a before-publication audio policy. */
138
+ narrateRevision(articleId: string, expectedGeneration: number): Promise<{
139
+ status: string;
140
+ audio_id?: string | null;
141
+ job_id?: string | null;
98
142
  }>;
99
- retryProcessing(articleId: string, expectedVersion: number, assetSourceFileId?: string): Promise<unknown>;
143
+ retryProcessing(articleId: string, expectedVersion: number, assetSourceFileId?: string, narrationProfileVersion?: number): Promise<unknown>;
100
144
  create(key: string, authorProfileId: string, document: ArticleDocument, reviewPolicy?: string): Promise<ArticleOperation>;
101
145
  save(key: string, articleId: string, generation: number, document: ArticleDocument, reason?: string): Promise<ArticleOperation>;
102
146
  command(articleId: string, generation: number, action: object): Promise<unknown>;
@@ -128,4 +172,4 @@ declare class PublicationArticleClient {
128
172
  }): Promise<ArticleOperation>;
129
173
  }
130
174
 
131
- export { type ArticleDocument, type ArticleMedia, type ArticleOperation, ArticleWorkflowError, type AssetMetadata, PublicationArticleClient };
175
+ export { type ArticleDocument, type ArticleMedia, type ArticleOperation, type ArticleProcessing, ArticleWorkflowError, type ArticleWorkflowOptions, type AssetMetadata, PublicationArticleClient };
@@ -1,4 +1,4 @@
1
- import { A as ArticleFormat } from './article-presentation-0d1FiDgA.js';
1
+ import { A as ArticleFormat, a as ArticleLayout } from './article-presentation-BrNCcF-5.js';
2
2
 
3
3
  type ArticleDocument = {
4
4
  title: string;
@@ -33,6 +33,59 @@ type AssetMetadata = {
33
33
  rights_confirmed: boolean;
34
34
  private_preview_only?: boolean;
35
35
  };
36
+ type ArticleProcessing = {
37
+ article_id: string;
38
+ version: number;
39
+ publication_status: string;
40
+ narration: {
41
+ status: string;
42
+ attempts?: number | null;
43
+ audio_id?: string | null;
44
+ job_id?: string | null;
45
+ profile_override_version?: number | null;
46
+ error_code?: string | null;
47
+ last_progress_at?: string | null;
48
+ };
49
+ visual: {
50
+ status: string;
51
+ provider: string;
52
+ policy_governed: boolean;
53
+ };
54
+ assets: {
55
+ source_file_id: string;
56
+ public_file_id: string;
57
+ status: string;
58
+ attempts: number;
59
+ error_code?: string | null;
60
+ last_progress_at: string;
61
+ }[];
62
+ };
63
+ type ArticleWorkflowOptions = {
64
+ workflow_version: number;
65
+ profile_version: number;
66
+ formats: ArticleFormat[];
67
+ layouts: {
68
+ definition: ArticleLayout;
69
+ visual_requirements: {
70
+ hero_aspect: string;
71
+ mobile_aspect: string;
72
+ share_aspect: string;
73
+ };
74
+ }[];
75
+ sections: string[];
76
+ language: string;
77
+ narration?: {
78
+ provider: string;
79
+ model: string;
80
+ voice: string;
81
+ required_before_publish: boolean;
82
+ } | null;
83
+ capabilities: {
84
+ managed_private_asset_upload: boolean;
85
+ inline_media_body?: boolean;
86
+ automatic_public_narration?: boolean;
87
+ };
88
+ };
36
89
  type ArticleOperation = {
37
90
  article_id: string;
38
91
  revision_id: string;
@@ -78,25 +131,16 @@ declare class PublicationArticleClient {
78
131
  fetch?: typeof fetch;
79
132
  });
80
133
  private request;
81
- options(articleId?: string): Promise<{
82
- workflow_version: number;
83
- formats: string[];
84
- layouts: unknown[];
85
- capabilities: {
86
- managed_private_asset_upload: boolean;
87
- };
88
- }>;
134
+ options(articleId?: string): Promise<ArticleWorkflowOptions>;
89
135
  get(articleId: string): Promise<Record>;
90
- processing(articleId: string): Promise<{
91
- narration: {
92
- status: string;
93
- error_code?: string;
94
- };
95
- visual: {
96
- status: string;
97
- };
136
+ processing(articleId: string): Promise<ArticleProcessing>;
137
+ /** Existing private narration path for a saved revision and a before-publication audio policy. */
138
+ narrateRevision(articleId: string, expectedGeneration: number): Promise<{
139
+ status: string;
140
+ audio_id?: string | null;
141
+ job_id?: string | null;
98
142
  }>;
99
- retryProcessing(articleId: string, expectedVersion: number, assetSourceFileId?: string): Promise<unknown>;
143
+ retryProcessing(articleId: string, expectedVersion: number, assetSourceFileId?: string, narrationProfileVersion?: number): Promise<unknown>;
100
144
  create(key: string, authorProfileId: string, document: ArticleDocument, reviewPolicy?: string): Promise<ArticleOperation>;
101
145
  save(key: string, articleId: string, generation: number, document: ArticleDocument, reason?: string): Promise<ArticleOperation>;
102
146
  command(articleId: string, generation: number, action: object): Promise<unknown>;
@@ -128,4 +172,4 @@ declare class PublicationArticleClient {
128
172
  }): Promise<ArticleOperation>;
129
173
  }
130
174
 
131
- export { type ArticleDocument, type ArticleMedia, type ArticleOperation, ArticleWorkflowError, type AssetMetadata, PublicationArticleClient };
175
+ export { type ArticleDocument, type ArticleMedia, type ArticleOperation, type ArticleProcessing, ArticleWorkflowError, type ArticleWorkflowOptions, type AssetMetadata, PublicationArticleClient };
@@ -37,6 +37,7 @@ var PublicationArticleClient = class {
37
37
  method,
38
38
  headers,
39
39
  body: body === void 0 ? void 0 : form ? body : JSON.stringify(body),
40
+ signal: AbortSignal.timeout(form ? 9e4 : 3e4),
40
41
  cache: "no-store",
41
42
  redirect: "error"
42
43
  });
@@ -59,15 +60,26 @@ var PublicationArticleClient = class {
59
60
  );
60
61
  }
61
62
  processing(articleId) {
62
- return this.request(`/articles/${encodeURIComponent(articleId)}/processing`);
63
+ return this.request(
64
+ `/articles/${encodeURIComponent(articleId)}/processing`
65
+ );
66
+ }
67
+ /** Existing private narration path for a saved revision and a before-publication audio policy. */
68
+ narrateRevision(articleId, expectedGeneration) {
69
+ return this.request(
70
+ `/articles/${encodeURIComponent(articleId)}/collaboration/narrate`,
71
+ "POST",
72
+ { expected_generation: expectedGeneration }
73
+ );
63
74
  }
64
- retryProcessing(articleId, expectedVersion, assetSourceFileId) {
75
+ retryProcessing(articleId, expectedVersion, assetSourceFileId, narrationProfileVersion) {
65
76
  return this.request(
66
77
  `/articles/${encodeURIComponent(articleId)}/processing`,
67
78
  "POST",
68
79
  {
69
80
  expected_version: expectedVersion,
70
- asset_source_file_id: assetSourceFileId
81
+ asset_source_file_id: assetSourceFileId,
82
+ narration_profile_version: narrationProfileVersion
71
83
  }
72
84
  );
73
85
  }
@@ -0,0 +1,12 @@
1
+ // src/reader-sso-events.ts
2
+ var READER_SSO_EVENTS = {
3
+ reader_signin_started: { category: "engagement", source: "server" },
4
+ reader_signin_completed: { category: "conversion", source: "server" },
5
+ reader_signin_failed: { category: "system", source: "server" },
6
+ reader_sso_check: { category: "system", source: "server" },
7
+ reader_signed_out: { category: "engagement", source: "server" },
8
+ reader_account_linked: { category: "conversion", source: "server" }
9
+ };
10
+ var READER_SSO_PROPERTY_KEYS = ["method", "mode", "is_new", "reason", "outcome", "transaction"];
11
+
12
+ export { READER_SSO_EVENTS, READER_SSO_PROPERTY_KEYS };
package/dist/index.cjs CHANGED
@@ -3586,6 +3586,17 @@ function campaignReportHtml(report) {
3586
3586
  <footer><p>${escape(report.reporting_note)}</p><p>${escape(report.editorial_independence)}</p><p>Campaign reference: ${escape(report.campaign_id)}</p></footer></body></html>`;
3587
3587
  }
3588
3588
 
3589
+ // src/reader-sso-events.ts
3590
+ var READER_SSO_EVENTS = {
3591
+ reader_signin_started: { category: "engagement", source: "server" },
3592
+ reader_signin_completed: { category: "conversion", source: "server" },
3593
+ reader_signin_failed: { category: "system", source: "server" },
3594
+ reader_sso_check: { category: "system", source: "server" },
3595
+ reader_signed_out: { category: "engagement", source: "server" },
3596
+ reader_account_linked: { category: "conversion", source: "server" }
3597
+ };
3598
+ var READER_SSO_PROPERTY_KEYS = ["method", "mode", "is_new", "reason", "outcome", "transaction"];
3599
+
3589
3600
  // src/article-presentation.ts
3590
3601
  var standard = {
3591
3602
  id: "standard",
@@ -3742,6 +3753,8 @@ exports.NETWORK_PARENT = NETWORK_PARENT;
3742
3753
  exports.NEWS_CACHE = NEWS_CACHE;
3743
3754
  exports.NetworkCopyrightNotice = NetworkCopyrightNotice;
3744
3755
  exports.NewsError = NewsError;
3756
+ exports.READER_SSO_EVENTS = READER_SSO_EVENTS;
3757
+ exports.READER_SSO_PROPERTY_KEYS = READER_SSO_PROPERTY_KEYS;
3745
3758
  exports.SESSION_IDLE_MS = SESSION_IDLE_MS;
3746
3759
  exports.SPONSORSHIP_OFFERINGS = SPONSORSHIP_OFFERINGS;
3747
3760
  exports.SPONSORSHIP_POLICY = SPONSORSHIP_POLICY;
package/dist/index.d.cts CHANGED
@@ -17,7 +17,8 @@ export { C as CommunityMapArticleEmbed, c as communityMapEmbeds } from './commun
17
17
  export { C as ContentBlock, S as StructuredDocument, a as StructuredMedia, f as formatArtworkCaption, p as parseDocumentBlocks, r as renderArticleBlocksToHtml, s as sanitizeInlineMarkdown } from './article-blocks-DsabIDmH.cjs';
18
18
  import { M as Measurement } from './sponsorships-CtnBe3S8.cjs';
19
19
  export { a as Campaign, b as CampaignStatus, c as CampaignTarget, C as Creative, d as Placement, e as PlacementType, P as PublicAcknowledgment, S as SPONSORSHIP_OFFERINGS, f as SPONSORSHIP_POLICY, g as SponsorParty, p as placementAvailable, s as safeSponsorUrl } from './sponsorships-CtnBe3S8.cjs';
20
- export { A as ArticleFormat, b as ArticleLayout, a as ArticlePresentation, c as articleFormatLabel, d as articleHeroRatio, e as articlePresentation } from './article-presentation-0d1FiDgA.cjs';
20
+ export { R as READER_SSO_EVENTS, a as READER_SSO_PROPERTY_KEYS, b as ReaderSsoEventDefinition, c as ReaderSsoEventName } from './reader-sso-events-DBw8pGSM.cjs';
21
+ export { A as ArticleFormat, a as ArticleLayout, b as ArticlePresentation, c as articleFormatLabel, d as articleHeroRatio, e as articlePresentation } from './article-presentation-BrNCcF-5.cjs';
21
22
  import './pets.cjs';
22
23
 
23
24
  /** Walnut Creek Times broadsheet colors. A paper overrides only what it changes. */
package/dist/index.d.ts CHANGED
@@ -17,7 +17,8 @@ export { C as CommunityMapArticleEmbed, c as communityMapEmbeds } from './commun
17
17
  export { C as ContentBlock, S as StructuredDocument, a as StructuredMedia, f as formatArtworkCaption, p as parseDocumentBlocks, r as renderArticleBlocksToHtml, s as sanitizeInlineMarkdown } from './article-blocks-DsabIDmH.js';
18
18
  import { M as Measurement } from './sponsorships-CtnBe3S8.js';
19
19
  export { a as Campaign, b as CampaignStatus, c as CampaignTarget, C as Creative, d as Placement, e as PlacementType, P as PublicAcknowledgment, S as SPONSORSHIP_OFFERINGS, f as SPONSORSHIP_POLICY, g as SponsorParty, p as placementAvailable, s as safeSponsorUrl } from './sponsorships-CtnBe3S8.js';
20
- export { A as ArticleFormat, b as ArticleLayout, a as ArticlePresentation, c as articleFormatLabel, d as articleHeroRatio, e as articlePresentation } from './article-presentation-0d1FiDgA.js';
20
+ export { R as READER_SSO_EVENTS, a as READER_SSO_PROPERTY_KEYS, b as ReaderSsoEventDefinition, c as ReaderSsoEventName } from './reader-sso-events-DBw8pGSM.js';
21
+ export { A as ArticleFormat, a as ArticleLayout, b as ArticlePresentation, c as articleFormatLabel, d as articleHeroRatio, e as articlePresentation } from './article-presentation-BrNCcF-5.js';
21
22
  import './pets.js';
22
23
 
23
24
  /** Walnut Creek Times broadsheet colors. A paper overrides only what it changes. */
package/dist/index.js CHANGED
@@ -1,17 +1,18 @@
1
+ export { LocalNetworkBar } from './chunk-Q77T2S7B.js';
1
2
  export { NetworkCopyrightNotice } from './chunk-FWEYKWKP.js';
2
3
  export { CURATED_COMMUNITY_CARDS, VerifiedCardComponent, VerifiedCardSection, getArticleCards, isSafeActionUrl } from './chunk-KYUVXEJY.js';
4
+ export { CLASSIFIED_CATEGORIES, JOB_EMPLOYMENT_TYPES, categoryLabel, classifiedPath, classifiedSearchPath, clipChars, dealDollars, dealGoPath, dealsFeedPath, employmentLabel, isClassifiedCategory, isEmploymentType, jobEmployerBody, jobOpeningBody, jobPostingBody, prepareClassified, prepareJobPost, publicJobPath, publicJobsPath } from './chunk-C7ZPLH2K.js';
3
5
  export { MEET_ACTIVITIES, activityLabel, canHostMeetup, isAdult, prepareMeetup, screenMessage } from './chunk-AMLVCZDP.js';
4
6
  export { CookieConsentBanner } from './chunk-XSAVJJVW.js';
5
7
  export { CookieSettingsView } from './chunk-X7AU7DV6.js';
6
- export { THEME_COOKIE, THEME_EVENT, THEME_MAX_AGE_SECONDS, THEME_STORAGE_KEY, ThemeToggle, applyTheme, clearTheme, getStoredTheme, getSystemTheme, resolveEffectiveTheme, setTheme, subscribeTheme, themeInitScript } from './chunk-NQD3M7ZY.js';
7
- export { LocalNetworkBar } from './chunk-Q77T2S7B.js';
8
8
  import { localPublications } from './chunk-XWXPERLK.js';
9
9
  export { COOKIE_CATEGORIES, COOKIE_CONSENT_BACKUP_KEY, COOKIE_CONSENT_EVENT, COOKIE_CONSENT_KEY, COOKIE_CONSENT_MAX_AGE_SECONDS, DEFAULT_CONSENT_HUB_URL, DEFAULT_PREFERENCES_ACCEPTED, DEFAULT_PREFERENCES_REJECTED, EDITORIAL_PRINCIPLES, EU_EEA_UK_COUNTRIES, NETWORK_CONSENT_STORAGE_KEY, NETWORK_PARENT, acceptAllCookies, checkUrlConsentBridge, clearCookieConsent, communityPublications, consentModel, decorateNetworkUrl, effectivePreferences, findPublicationByHost, findPublicationBySlug, getCookieConsent, getNetworkPublicationUrl, hasConsented, impliedPreferences, isCategoryAllowed, isGeoConsentRequired, listedPublications, localPublications, queryNetworkConsentHub, recordConsentToCompliance, rejectOptionalCookies, setCookieConsent, setNetworkConsentHub, topicalPublications } from './chunk-XWXPERLK.js';
10
+ export { THEME_COOKIE, THEME_EVENT, THEME_MAX_AGE_SECONDS, THEME_STORAGE_KEY, ThemeToggle, applyTheme, clearTheme, getStoredTheme, getSystemTheme, resolveEffectiveTheme, setTheme, subscribeTheme, themeInitScript } from './chunk-NQD3M7ZY.js';
10
11
  export { communityMapEmbeds } from './chunk-IMYBSG7J.js';
11
12
  export { articleFormatLabel, articleHeroRatio, articlePresentation, formatArtworkCaption, parseDocumentBlocks, renderArticleBlocksToHtml, sanitizeInlineMarkdown } from './chunk-DN3TBZLK.js';
12
13
  import { definePublication } from './chunk-57YVL6BD.js';
13
14
  export { BROADSHEET_THEME, FEATURE_NAMES, LAYOUT_COOKIE, acceptRemoteRecord, acceptSnapshot, definePublication, featureEnabled, parseSnapshot, publicationFromSnapshot, publicationRecord, resolveLayout, snapshotFromRecord, syncPublication } from './chunk-57YVL6BD.js';
14
- export { CLASSIFIED_CATEGORIES, JOB_EMPLOYMENT_TYPES, categoryLabel, classifiedPath, classifiedSearchPath, clipChars, dealDollars, dealGoPath, dealsFeedPath, employmentLabel, isClassifiedCategory, isEmploymentType, jobEmployerBody, jobOpeningBody, jobPostingBody, prepareClassified, prepareJobPost, publicJobPath, publicJobsPath } from './chunk-C7ZPLH2K.js';
15
+ export { READER_SSO_EVENTS, READER_SSO_PROPERTY_KEYS } from './chunk-CVD64KP6.js';
15
16
  export { SPONSORSHIP_OFFERINGS, SPONSORSHIP_POLICY, placementAvailable, safeSponsorUrl } from './chunk-66GI2IX6.js';
16
17
  import './chunk-AFJ6S5WJ.js';
17
18
  import { jsxs, jsx } from 'react/jsx-runtime';