@versini/sassysaint-common 4.67.0 → 4.69.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/dist/constants/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./memory.js";export*from"./theme-types.js";let E="system",e="user",O="assistant",_="OpenAI",T="Anthropic",R="Google",S="Summary",t="Memory",a="Perplexity",A=_,I=[_,T,R],L="gpt-6.1-sol",i="gpt-6-luna",s="claude-opus-5-5",n="claude-sonnet-5-5",P="claude-haiku-5-5",N="gemini-3.8-flash",o="gemini-3.5-flash-lite",M="sonar",r="sonar-pro",D="perplexity-search",g="openai/gpt-oss-20b:free",C="claude-haiku-5-5",u="gpt-6-luna",l="gemini-3.5-flash-lite",c="gemini-3.8-flash",h="gpt-6.1-sol",U="gpt-6-luna",d="gpt-5.6-luna",m="gemini-3.6-flash",p="text-embedding-3-small",G="gpt-image-2.5-sunburst",H=5,y=1e4,B=3e3,Y={[L]:"GPT-6.1 Sol",[i]:"GPT-6 Luna",[s]:"Claude Opus 5.5",[n]:"Claude Sonnet 5.5",[P]:"Claude Haiku 5.5",[N]:"Gemini 3.8 Flash",[o]:"Gemini 3.5 Flash-Lite",[M]:"Sonar",[r]:"Sonar Pro",[D]:"Perplexity Search",[G]:"GPT Image 2.5 Sunburst"},F=[L,i,s,n,P,o,N,G],f=[L,i,s,n,P,N,o],V="fast",
|
|
1
|
+
export*from"./memory.js";export*from"./theme-types.js";let E="system",e="user",O="assistant",_="OpenAI",T="Anthropic",R="Google",S="Summary",t="Memory",a="Perplexity",A=_,I=[_,T,R],L="gpt-6.1-sol",i="gpt-6-luna",s="claude-opus-5-5",n="claude-sonnet-5-5",P="claude-haiku-5-5",N="gemini-3.8-flash",o="gemini-3.5-flash-lite",M="sonar",r="sonar-pro",D="perplexity-search",g="openai/gpt-oss-20b:free",C="claude-haiku-5-5",u="gpt-6-luna",l="gemini-3.5-flash-lite",c="gemini-3.8-flash",h="gpt-6.1-sol",U="gpt-6-luna",d="gpt-5.6-luna",m="gemini-3.6-flash",p="text-embedding-3-small",G="gpt-image-2.5-sunburst",H=5,y=1e4,B=3e3,Y={[L]:"GPT-6.1 Sol",[i]:"GPT-6 Luna",[s]:"Claude Opus 5.5",[n]:"Claude Sonnet 5.5",[P]:"Claude Haiku 5.5",[N]:"Gemini 3.8 Flash",[o]:"Gemini 3.5 Flash-Lite",[M]:"Sonar",[r]:"Sonar Pro",[D]:"Perplexity Search",[G]:"GPT Image 2.5 Sunburst"},F=[L,i,s,n,P,o,N,G],f=[L,i,s,n,P,N,o],V="fast",W="balanced",b="thorough",X=[V,W,b],k={[V]:"low",[W]:"medium",[b]:"high"},w={[_]:V,[T]:W,[R]:V},x="none",K=["settings","shortcuts","memories","history","usage","about"],Z={[_]:[L,i],[T]:[s,P,n],[R]:[o,N],[a]:[M,r,D]},v={[_]:[E,e,O],[T]:[e,O],[S]:[e,O],[t]:[e,O],[R]:[e,O],[a]:[e,O]},z={[T]:["claude-opus-5","claude-opus-4","claude-sonnet-5","claude-sonnet-4","claude-haiku-5","claude-haiku-4","claude-3"],[_]:["gpt-","o3","o4"],[R]:["gemini"],[a]:["sonar"]},Q="x-diggidy-chat-id",j="x-diggidy-chat-timestamp",q="complete",J="timestamp",$="tokenUsage",EE="Diggidy",Ee="sassy:basic",EO="sassy:plus",E_="sassy:advanced",ET={TOOL:{BARCODE:"getProductByBarcode",BUNDLESIZE:"getBundleSize",DATETIME:"getDateTime",GENERATE_IMAGE:"generateImage",IMAGES:"getImages",NUTRITION_FACTS:"getNutritionFacts",POLLUTION:"getAirPollution",WEATHER:"getWeather",URLCONTENTPARSER:"getUrlContent",MEMORIES:"getUserMemories",HUMANIZE:"humanize",WEBSEARCH:"getWebSearch",GITREPOSITORY:"getGitRepoDetails",HOTELS:"getHotelDetails",LOCAL_BUSINESSES:"getLocalBusinesses",NEWS_BRIEF:"getNewsBrief",PRODUCTS:"getProducts",REVIEW_TRUST:"getReviewTrust",STREAMING_PICKS:"getStreamingPicks",PRONUNCIATION:"getPronunciation",FRENCH_TEACHINGS:"getFrenchTeachings",PAST_CHATS:"searchPastChats"},ADDON:{ATTACHMENTS:"addon:attachments",CODEINTERPRETER:"addon:codeinterpreter",SHARE_CHAT:"addon:share-chat"}},ER={code_interpreter:"Running code...",web_search:"Searching the web...",[ET.TOOL.WEATHER]:"Checking the weather...",[ET.TOOL.POLLUTION]:"Fetching air pollution data...",[ET.TOOL.BUNDLESIZE]:"Analyzing bundle size...",[ET.TOOL.URLCONTENTPARSER]:"Reading a webpage...",[ET.TOOL.WEBSEARCH]:"Searching the web...",[ET.TOOL.GITREPOSITORY]:"Looking up repository...",[ET.TOOL.HOTELS]:"Searching for hotels...",[ET.TOOL.LOCAL_BUSINESSES]:"Searching for local businesses...",[ET.TOOL.NEWS_BRIEF]:"Reading today's news...",[ET.TOOL.PRODUCTS]:"Searching for products...",[ET.TOOL.REVIEW_TRUST]:"Checking reviews...",[ET.TOOL.STREAMING_PICKS]:"Finding movies to stream...",[ET.TOOL.NUTRITION_FACTS]:"Fetching nutrition facts...",[ET.TOOL.GENERATE_IMAGE]:"Generating image...",[ET.TOOL.BARCODE]:"Looking up product...",[ET.TOOL.PRONUNCIATION]:"Generating pronunciation...",[ET.TOOL.HUMANIZE]:"Rewriting text...",[ET.TOOL.IMAGES]:"Searching for images...",[ET.TOOL.PAST_CHATS]:"Searching your past chats..."},ES="Using tools...",Et=1e5,Ea=8e5;function EA(E){return E===E_?Ea:Et}let EI=16384,EL=4,Ei=3,Es=8388608,En="context-compression-summary",EP="data-urlRead",EN="[Note from the system: you read",Eo="data-newsLinks";export{F as ALL_MODELS,I as ALL_PROVIDERS,f as ALL_REASONING_MODELS,EE as APPLICATION_NAME,z as APPROXIMATE_MODELS_PER_PROVIDER,ET as CAPABILITIES,q as CHAT_COMPLETION_MARKER_KEY,Et as CONTEXT_COMPRESSION_EMERGENCY_THRESHOLD,Ea as CONTEXT_COMPRESSION_EMERGENCY_THRESHOLD_PREMIUM,Ei as CONTEXT_COMPRESSION_KEEP_IMAGES,EL as CONTEXT_COMPRESSION_KEEP_RECENT,Es as CONTEXT_COMPRESSION_MAX_DOCUMENT_BYTES,En as CONTEXT_COMPRESSION_SUMMARY_ID,A as DEFAULT_PROVIDER,w as DEFAULT_RESPONSE_SPEED,ES as DEFAULT_TOOL_LOADING_LABEL,Q as DIGGIDY_CHAT_ID_HEADER,j as DIGGIDY_CHAT_TIMESTAMP_HEADER,EI as MAX_OUTPUT_TOKENS,H as MAX_SEARCH_QUERIES,Z as MODELS_PER_PROVIDER,P as MODEL_ANTHROPIC_LOW,n as MODEL_ANTHROPIC_MEDIUM,s as MODEL_ANTHROPIC_TOP,u as MODEL_CHAT_SUMMARY,g as MODEL_DEV,Y as MODEL_DISPLAY_NAMES,p as MODEL_EMBEDDING_TEXT,G as MODEL_GENERATE_IMAGE,o as MODEL_GOOGLE_MEDIUM,N as MODEL_GOOGLE_TOP,h as MODEL_HUMANIZE_AUDIT,c as MODEL_HUMANIZE_REWRITE,C as MODEL_MEMORY_INFERENCE,U as MODEL_NUTRITION_SEARCH,i as MODEL_OPENAI_MEDIUM,L as MODEL_OPENAI_TOP,D as MODEL_PERPLEXITY_SEARCH,d as MODEL_REVIEW_TRUST_PANEL,m as MODEL_REVIEW_TRUST_PANEL_GOOGLE,l as MODEL_SEARCH_DECOMPOSER,M as MODEL_SONAR,r as MODEL_SONAR_PRO,Eo as NEWS_LINKS_PART_TYPE,Ee as PLAN_BASIC,EO as PLAN_PLUS,E_ as PLAN_PREMIUM,T as PROVIDER_ANTHROPIC,R as PROVIDER_GOOGLE,t as PROVIDER_MEMORY,_ as PROVIDER_OPENAI,a as PROVIDER_PERPLEXITY,v as PROVIDER_ROLE_MAP,S as PROVIDER_SUMMARY,x as QUICK_ACCESS_NONE,K as QUICK_ACCESS_PANELS,X as RESPONSE_SPEEDS,W as RESPONSE_SPEED_BALANCED,V as RESPONSE_SPEED_FAST,b as RESPONSE_SPEED_THOROUGH,k as RESPONSE_SPEED_TO_EFFORT,O as ROLE_ASSISTANT,E as ROLE_SYSTEM,e as ROLE_USER,B as SEARCH_DECOMPOSE_TIMEOUT_MS,y as SEARCH_QUERY_TIMEOUT_MS,J as SORT_BY_TIMESTAMP,$ as SORT_BY_TOKEN_USAGE,ER as TOOL_LOADING_LABELS,EN as URL_READ_NOTE_PREFIX,EP as URL_READ_PART_TYPE,EA as getCompressionEmergencyThreshold};
|
package/dist/index.d.ts
CHANGED
|
@@ -557,6 +557,8 @@ export declare const isHardCategory: (category: string) => boolean;
|
|
|
557
557
|
*/
|
|
558
558
|
export declare const isModelAllowedForPlan: (selectedModel: string | undefined | null, allowedModels: string[]) => boolean;
|
|
559
559
|
|
|
560
|
+
export declare function isNewsImageUrl(value: unknown): value is string;
|
|
561
|
+
|
|
560
562
|
/**
|
|
561
563
|
* Runtime guard: true only for a real, SDK-instantiable provider literal.
|
|
562
564
|
* Returns false for undefined, null, and anything else. Shared by the server
|
|
@@ -837,9 +839,19 @@ export declare const MODELS_PER_PROVIDER: {
|
|
|
837
839
|
readonly Perplexity: readonly ["sonar", "sonar-pro", "perplexity-search"];
|
|
838
840
|
};
|
|
839
841
|
|
|
842
|
+
/**
|
|
843
|
+
* UI message part that keeps a news brief's article links readable after a
|
|
844
|
+
* reload. getUrlContent may open a brief's links only while the getNewsBrief
|
|
845
|
+
* result is in the chat, and a saved chat does not keep tool results. The
|
|
846
|
+
* server persists the links the card showed as a message's `newsLinks`, and the
|
|
847
|
+
* client rebuilds this part from them when a chat is restored.
|
|
848
|
+
*/
|
|
849
|
+
export declare const NEWS_LINKS_PART_TYPE = "data-newsLinks";
|
|
850
|
+
|
|
840
851
|
export declare interface NewsBrief {
|
|
841
852
|
asOf: string;
|
|
842
853
|
note?: string;
|
|
854
|
+
place?: string;
|
|
843
855
|
earlier?: {
|
|
844
856
|
chatId: string;
|
|
845
857
|
time: string;
|
|
@@ -854,6 +866,7 @@ export declare interface NewsBriefItem {
|
|
|
854
866
|
title: string;
|
|
855
867
|
summary: string;
|
|
856
868
|
local: boolean;
|
|
869
|
+
image?: string;
|
|
857
870
|
evidence: NewsEvidence[];
|
|
858
871
|
commentary?: NewsCommentary[];
|
|
859
872
|
}
|
|
@@ -872,6 +885,18 @@ export declare interface NewsEvidence {
|
|
|
872
885
|
url: string;
|
|
873
886
|
}
|
|
874
887
|
|
|
888
|
+
/**
|
|
889
|
+
* The news-links part for a persisted message's `newsLinks`, keeping only
|
|
890
|
+
* string entries, or none when no link is left. The server validates them again
|
|
891
|
+
* before trusting them.
|
|
892
|
+
*/
|
|
893
|
+
export declare function newsLinkParts(newsLinks: unknown): {
|
|
894
|
+
type: string;
|
|
895
|
+
data: {
|
|
896
|
+
urls: string[];
|
|
897
|
+
};
|
|
898
|
+
}[];
|
|
899
|
+
|
|
875
900
|
export declare interface NewsOnThisDay {
|
|
876
901
|
title: string;
|
|
877
902
|
url: string;
|
|
@@ -905,6 +930,13 @@ export declare const PLAN_PLUS = "sassy:plus";
|
|
|
905
930
|
|
|
906
931
|
export declare const PLAN_PREMIUM = "sassy:advanced";
|
|
907
932
|
|
|
933
|
+
/**
|
|
934
|
+
* The accessible name of a post's "Read the post" link, on the chat card and
|
|
935
|
+
* the shared page alike: the visible text first, then the title and newsletter,
|
|
936
|
+
* so two posts with the same title still read as different links.
|
|
937
|
+
*/
|
|
938
|
+
export declare function postLinkName(post: NewsCommentary): string;
|
|
939
|
+
|
|
908
940
|
export declare const PROVIDER_ANTHROPIC = "Anthropic";
|
|
909
941
|
|
|
910
942
|
export declare const PROVIDER_GOOGLE = "Google";
|
|
@@ -1065,6 +1097,25 @@ export declare const SORT_BY_TOKEN_USAGE = "tokenUsage";
|
|
|
1065
1097
|
*/
|
|
1066
1098
|
export declare function stripAutoWrapper(modelName: string): string;
|
|
1067
1099
|
|
|
1100
|
+
/**
|
|
1101
|
+
* The follow-up a news card's "Tell me more" sends, and how the server tells it
|
|
1102
|
+
* apart from words the user typed.
|
|
1103
|
+
*
|
|
1104
|
+
* The story title is written by the model from third-party headlines, yet the
|
|
1105
|
+
* follow-up goes out as a user message, and the server grants a user's words
|
|
1106
|
+
* authority: a domain in them becomes a site getUrlContent may read
|
|
1107
|
+
* (buildAllowedHostSet), and memory extraction quotes them as the user's own.
|
|
1108
|
+
* So the title travels in one fixed form, between curly quotes, and
|
|
1109
|
+
* withoutCardQuote drops it wherever user text carries that authority. The chat
|
|
1110
|
+
* still shows the headline.
|
|
1111
|
+
*
|
|
1112
|
+
*/
|
|
1113
|
+
/**
|
|
1114
|
+
* The follow-up for one story: its title on one line, without curly quotes and
|
|
1115
|
+
* cut to MAX_TITLE_LENGTH characters, so it always matches CARD_FOLLOW_UP_RE.
|
|
1116
|
+
*/
|
|
1117
|
+
export declare function tellMeMorePrompt(title: string): string;
|
|
1118
|
+
|
|
1068
1119
|
/**
|
|
1069
1120
|
* Complete theme palette. This is the structure sent from the server to the
|
|
1070
1121
|
* client via getUserPreferences.
|
|
@@ -1082,6 +1133,18 @@ export declare interface ThemePalette {
|
|
|
1082
1133
|
normal: Palette;
|
|
1083
1134
|
}
|
|
1084
1135
|
|
|
1136
|
+
/**
|
|
1137
|
+
* The news-links part for a message's brief links. The single builder of that
|
|
1138
|
+
* shape, shared by the server, which also reads it back, and the client, which
|
|
1139
|
+
* rebuilds it from stored `newsLinks`.
|
|
1140
|
+
*/
|
|
1141
|
+
export declare function toNewsLinksPart(urls: string[]): {
|
|
1142
|
+
type: string;
|
|
1143
|
+
data: {
|
|
1144
|
+
urls: string[];
|
|
1145
|
+
};
|
|
1146
|
+
};
|
|
1147
|
+
|
|
1085
1148
|
/**
|
|
1086
1149
|
* Static loading labels for tool activity display. Generator tools override
|
|
1087
1150
|
* these with contextual text (e.g., "Analyzing bundle size for lodash...").
|
|
@@ -1124,4 +1187,11 @@ export declare interface UrlReadRecord {
|
|
|
1124
1187
|
partial: boolean;
|
|
1125
1188
|
}
|
|
1126
1189
|
|
|
1190
|
+
/**
|
|
1191
|
+
* A user message's text with a card follow-up's title removed, so only the
|
|
1192
|
+
* words the user chose keep their authority. Any other text is returned
|
|
1193
|
+
* unchanged.
|
|
1194
|
+
*/
|
|
1195
|
+
export declare function withoutCardQuote(text: string): string;
|
|
1196
|
+
|
|
1127
1197
|
export { }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let t="Tell me more about",e=RegExp(`^${t} “[^“”\\n]{1,200}”$`);function r(e){let r=e.replace(/[“”]/g,'"').replace(/\s+/g," ").trim().slice(0,200).trim()||"this story";return`${t} “${r}”`}function o(r){return e.test(r.trim())?`${t} a story`:r}export{r as tellMeMorePrompt,o as withoutCardQuote};
|
package/dist/utilities/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ALL_MODELS as e,ALL_PROVIDERS as t,ALL_REASONING_MODELS as r,APPROXIMATE_MODELS_PER_PROVIDER as n,DEFAULT_RESPONSE_SPEED as l,MODELS_PER_PROVIDER as
|
|
1
|
+
import{ALL_MODELS as e,ALL_PROVIDERS as t,ALL_REASONING_MODELS as r,APPROXIMATE_MODELS_PER_PROVIDER as n,DEFAULT_RESPONSE_SPEED as l,MODELS_PER_PROVIDER as o,PROVIDER_ANTHROPIC as s,PROVIDER_GOOGLE as i,PROVIDER_OPENAI as u,QUICK_ACCESS_NONE as f,QUICK_ACCESS_PANELS as a,RESPONSE_SPEEDS as d}from"../constants/index.js";export*from"./cardFollowUp.js";export*from"./newChatRequest.js";export*from"./newsBrief.js";export*from"./newsLinkParts.js";export*from"./readUrlParts.js";let c=new Set([u,s,i]);function p(e){return"string"==typeof e&&c.has(e)}let h=/^auto \((.+)\)$/;function m(e){let t=e.match(h);return t?t[1]:e}let g=e=>{for(let[t,r]of Object.entries(n))if(r.some(t=>e.startsWith(t)))return t;return null},v=/image|embedding|tts|realtime|transcribe|audio/;function w(t,{matchUnknownByPrefix:r=!1}){for(let[e,r]of Object.entries(o))if(r.includes(t))return p(e)?e:null;if(!r||e.includes(t)||v.test(t))return null;let n=g(t);return p(n)?n:null}let P=(e,r={})=>{if(!e||0===e.length)return[];let n=new Set;for(let t of e){let e=w(t,r);e&&n.add(e)}return t.filter(e=>n.has(e))},j=(e,t={})=>{let r=new Map;if(!e||0===e.length)return r;for(let n of e){let e=w(n,t);e&&(r.has(e)||r.set(e,[]),r.get(e)?.push(n))}return r},x=(e,t={})=>{for(let r of j(e,t).values())if(r.length>1)return!0;return!1},y=(e,t)=>!!e&&!!t&&0!==t.length&&t.includes(e);function M(e,t,r){if(!t||Array.isArray(t)&&0===t.length)return!0;let n=e instanceof Set?e:e?new Set(e):null;return!!n&&0!==n.size&&("string"==typeof t?n.has(t):r?.any===!0?t.some(e=>n.has(e)):t.every(e=>n.has(e)))}function A(e){return r.includes(e)}function S(e){let t=t=>{let r=e?.[t];return d.includes(r)?r:l[t]};return{[u]:t(u),[s]:t(s),[i]:t(i)}}function b(e){return a.includes(e)?e:f}export{g as findProvider,j as getModelsGroupedByProvider,P as getProvidersFromModels,x as hasMultipleModelsPerProvider,M as isEntitled,y as isModelAllowedForPlan,p as isRealProvider,A as isReasoningModel,b as resolveQuickAccess,S as resolveResponseSpeed,m as stripAutoWrapper};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function t(t){return"string"==typeof t&&""!==t.trim()}let
|
|
1
|
+
function t(t){return`Read the post: ${t.title}, ${t.newsletter}`}let e=/^https:\/\/encrypted-tbn\d\.gstatic\.com\/images\?q=tbn:[\w-]+$/;function r(t){return"string"==typeof t&&e.test(t)}function n(t){return"string"==typeof t&&""!==t.trim()}let a=new Set(['"',"\\","/","b","f","n","r","t","u"]),l={"\n":"\\n","\r":"\\r"," ":"\\t"};function i(t){return t.replace(/\\([\\|[\]])/g,"$1")}function u(t){if(!n(t))return!1;try{let{protocol:e}=new URL(t);return"http:"===e||"https:"===e}catch{return!1}}function f(t,e){return Array.isArray(t)?t.flatMap(t=>{let{author:r,newsletter:a,title:l,url:f,summary:s}=t??{};return!n(r)||!n(a)||!n(l)||!n(s)||!u(f)||e.has(f)?[]:(e.add(f),[{author:i(r),newsletter:a,title:i(l),url:f,summary:s}])}):[]}function s(t){let e,s=t.trim();if(!s||s.length>4e4)return null;try{e=function(t){try{return JSON.parse(t)}catch{return JSON.parse(function(t){let e="",r=!1;for(let n=0;n<t.length;n++){let i=t[n];if(r)if("\\"===i){let r=t[n+1]??"";e+=a.has(r)?`\\${r}`:`\\\\${r}`,n++}else'"'===i?(r=!1,e+=i):i<" "?e+=l[i]??`\\u${i.charCodeAt(0).toString(16).padStart(4,"0")}`:e+=i;else r='"'===i,e+=i}return e}(t))}}(s)}catch{return null}if(!e||!n(e.asOf)||!Array.isArray(e.items))return null;let o=new Set,c=function(t){let{title:e,url:r,line:a}=t??{};return n(e)&&u(r)&&n(a)?{title:i(e),url:r,line:a}:void 0}(e.onThisDay),h=new Set(c?[c.url]:[]),p=e.items.flatMap(t=>{let{id:e,title:a,summary:l,local:s,image:c,evidence:p,commentary:d}=t??{};if(!n(e)||o.has(e)||!n(a)||!n(l))return[];o.add(e);let m=f(d,h);return[{id:e,title:a,summary:l,local:!0===s,...r(c)?{image:c}:{},evidence:function(t){if(!Array.isArray(t))return[];let e=new Set;return t.flatMap(t=>{let{outlet:r,headline:a,url:l}=t??{};return!n(r)||!n(a)||!u(l)||e.has(l)?[]:(e.add(l),[{outlet:i(r),headline:i(a),url:l}])})}(p),...m.length>0?{commentary:m}:{}}]}),d=f(e.otherCommentary,h),m=e.earlier;return{asOf:e.asOf,...n(e.note)?{note:e.note}:{},...n(e.place)?{place:e.place}:{},...m&&n(m.chatId)&&n(m.time)?{earlier:{chatId:m.chatId,time:m.time}}:{},items:p,...d.length>0?{otherCommentary:d}:{},...c?{onThisDay:c}:{}}}let o=/^[^\S\n]{0,3}```(\w*)[^\S\n]*\n([\s\S]*?)\n[^\S\n]{0,3}```/gm;function c(t){for(let[,e,r]of t.matchAll(o))if("newsbrief"===e.toLowerCase()||""===e&&/"asOf"/.test(r)){let t=s(r);if(t)return t}return null}export{c as findNewsBrief,r as isNewsImageUrl,s as parseNewsBrief,t as postLinkName};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{NEWS_LINKS_PART_TYPE as t}from"../constants/index.js";function r(r){return{type:t,data:{urls:r}}}function n(t){if(!Array.isArray(t))return[];let n=t.filter(t=>"string"==typeof t);return n.length>0?[r(n)]:[]}export{n as newsLinkParts,r as toNewsLinksPart};
|