@smart-cloud/publisher-core 1.1.5 → 1.1.6

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/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var d=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var j=(e,t)=>{for(var r in t)d(e,r,{get:t[r],enumerable:!0})},E=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of W(t))!U.call(e,o)&&o!==r&&d(e,o,{get:()=>t[o],enumerable:!(n=I(t,o))||n.enumerable});return e};var M=e=>E(d({},"__esModule",{value:!0}),e);var Z={};j(Z,{PLUGIN_KEY:()=>T,bootstrapPublisherWpSuite:()=>v,createStore:()=>f,getDefaultPublisherCrawlMode:()=>S,getPublisherPlugin:()=>x,getStore:()=>D,getStoreSelect:()=>w,hasPublisherSubscription:()=>u,loadPublisherConfig:()=>c,reloadConfig:()=>R,resolvePublisherCrawlMode:()=>y,resolvePublisherDeploymentProfile:()=>C,resolvePublisherDeploymentProfileId:()=>b,sanitizePublisherConfig:()=>g,waitForPublisherReady:()=>O});module.exports=M(Z);var a=require("@smart-cloud/wpsuite-core"),s=require("@wordpress/data");function N(e){let t=e.trim();return t==="."?".":t.replace(/\/$/,"")}function z(e){return!e||typeof e!="object"?{}:Object.fromEntries(Object.entries(e).map(([t,r])=>[t.trim(),String(r??"")]).filter(([t])=>t.length>0))}function F(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(t=>t.length>0):[]}function A(e){if(!e||typeof e!="object")return;let t=e,r={};return typeof t.bucket=="string"&&(r.bucket=t.bucket.trim()),typeof t.prefix=="string"&&(r.prefix=t.prefix.trim()),typeof t.region=="string"&&(r.region=t.region.trim()),typeof t.htmlCacheControl=="string"&&(r.htmlCacheControl=t.htmlCacheControl.trim()),typeof t.assetCacheControl=="string"&&(r.assetCacheControl=t.assetCacheControl.trim()),Object.keys(r).length>0?r:void 0}function G(e){if(!e||typeof e!="object")return;let t=e,r={};typeof t.distributionId=="string"&&(r.distributionId=t.distributionId.trim());let n=F(t.invalidationPaths);return n.length>0&&(r.invalidationPaths=n),Object.keys(r).length>0?r:void 0}function L(e){if(!e||typeof e!="object")return null;let t=e,r={};if(typeof t.targetOrigin=="string"){let l=N(t.targetOrigin);l&&(r.targetOrigin=l)}let n=z(t.extraReplacements);Object.keys(n).length>0&&(r.extraReplacements=n);let o=A(t.s3);o&&(r.s3=o);let i=G(t.cloudFront);return i&&(r.cloudFront=i),r}function _(e){if(!e||typeof e!="object")return{};let t={};for(let[r,n]of Object.entries(e)){let o=r.trim();if(!o)continue;let i=L(n);i&&(t[o]=i)}return t}function h(e,t){if(typeof e!="string")return;let r=e.trim();if(!(!r||!t[r]))return r}function K(e,t){if(!e||typeof e!="object")return null;let r=e,n=String(r.command??"").trim();if(n!=="publish"&&n!=="crawl"&&n!=="deploy"&&n!=="invalidate"&&n!=="retry-timeouts"&&n!=="url")return null;let o=Number.parseInt(String(r.intervalMinutes??"0"),10);if(!Number.isFinite(o)||o<1)return null;let i=String(r.id??`${n}-${t+1}`).trim();if(!i)return null;let l=String(r.url??"").trim();if(n==="url"&&!l)return null;let p=String(r.crawlMode??"").trim(),m=String(r.deploymentProfile??"").trim();return{id:i,enabled:r.enabled!==!1,command:n,intervalMinutes:o,...p==="full"||p==="incremental"?{crawlMode:p}:{},...m?{deploymentProfile:m}:{},...l?{url:l}:{}}}function B(e){let t=e&&typeof e=="object"?e:{},n=(Array.isArray(t.rules)?t.rules:[]).map((o,i)=>K(o,i)).filter(o=>!!o);return{enabled:t.enabled===!0,timezone:String(t.timezone??"UTC").trim()||"UTC",rules:n}}var g=e=>{let t=e&&typeof e=="object"?e:{},r=_(t.deploymentProfiles),n=h(t.defaultDeploymentProfile,r),o=h(t.deploymentTargetOverride,r),i={...t};return i.scheduler=B(t.scheduler),i.deploymentProfiles=r,n?i.defaultDeploymentProfile=n:delete i.defaultDeploymentProfile,o?i.deploymentTargetOverride=o:delete i.deploymentTargetOverride,t.subscriptionType==="PROFESSIONAL"||t.subscriptionType==="AGENCY"?i.subscriptionType=t.subscriptionType:delete i.subscriptionType,i},c=async()=>g(await(0,a.getConfig)("publisher")),u=e=>typeof e?.subscriptionType=="string"&&e.subscriptionType.trim().length>0,S=e=>u(e)?"incremental":"full",y=(e,t)=>e==="incremental"&&u(t)?"incremental":"full",b=(e,t)=>{if(!u(e))return"";let r=e?.deploymentProfiles??{};for(let n of[t,e?.deploymentTargetOverride,e?.defaultDeploymentProfile]){let o=typeof n=="string"?n.trim():"";if(o&&r[o])return o}return""},C=(e,t)=>{let r=b(e,t);return r?e?.deploymentProfiles?.[r]??null:null},Y=async()=>({config:await c()}),$={setConfig:e=>({type:"SET_CONFIG",config:e})},H={getConfig(e){return e.config},getState(e){return e}},J={},w=e=>(0,s.select)(e),R=async e=>{let t=(0,a.getWpSuite)();t?.siteSettings&&(t.siteSettings.lastUpdate=Date.now());let r=await c();(0,s.dispatch)(e).setConfig?.(r)},f=async()=>{let e=await Y(),t=(0,s.createReduxStore)("smartcloud/publisher",{reducer(r=e,n){return n.type==="SET_CONFIG"?{...r,config:n.config??null}:r},actions:$,selectors:H,resolvers:J});return(0,s.register)(t),t};var k=require("@smart-cloud/wpsuite-core");var x=()=>typeof WpSuite>"u"?null:WpSuite.plugins?.staticPublisher??null,q=["accountId","siteId","reCaptchaPublicKey"],Q=["subscriber","useRecaptchaNet","useRecaptchaEnterprise","renderRecaptchaProvider"];function V(e,t){let r=e&&typeof e=="object"?e:{},n={...t??{}};delete n.siteKey;for(let o of q){if(!Object.hasOwn(r,o))continue;let i=String(r[o]??"").trim();i?n[o]=i:delete n[o]}if(Object.hasOwn(r,"lastUpdate")){let o=Number(r.lastUpdate);Number.isFinite(o)&&o>0?n.lastUpdate=o:delete n.lastUpdate}for(let o of Q)Object.hasOwn(r,o)&&(typeof r[o]=="boolean"?n[o]=r[o]:delete n[o]);return n}function X(e){if(!e||typeof window<"u")return;let t=e.trim();if(t)try{let r=new URL(t.includes("://")?t:`https://${t}`),n=globalThis;if(n.location?.hostname)return;Object.defineProperty(n,"location",{value:r,configurable:!0,writable:!0})}catch{}}var v=(e={})=>{let t=(0,k.getWpSuite)(),n={siteSettings:V(e.siteSettings,t?.siteSettings),nonce:typeof e.nonce=="string"?e.nonce:t?.nonce??"",restUrl:typeof e.restUrl=="string"?e.restUrl:t?.restUrl??"",uploadUrl:typeof e.uploadUrl=="string"?e.uploadUrl:t?.uploadUrl??"",view:e.view??t?.view??"settings",plugins:t?.plugins??{},...t?.events?{events:t.events}:{}};return globalThis.WpSuite=n,X(e.locationHref??e.siteOrigin),n},P=null,D=()=>(P||(P=f()),P),O=()=>Promise.resolve();var T="publisher";0&&(module.exports={PLUGIN_KEY,bootstrapPublisherWpSuite,createStore,getDefaultPublisherCrawlMode,getPublisherPlugin,getStore,getStoreSelect,hasPublisherSubscription,loadPublisherConfig,reloadConfig,resolvePublisherCrawlMode,resolvePublisherDeploymentProfile,resolvePublisherDeploymentProfileId,sanitizePublisherConfig,waitForPublisherReady});
1
+ "use strict";var g=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var z=Object.prototype.hasOwnProperty;var M=(e,t)=>{for(var n in t)g(e,n,{get:t[n],enumerable:!0})},F=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of N(t))!z.call(e,o)&&o!==n&&g(e,o,{get:()=>t[o],enumerable:!(r=U(t,o))||r.enumerable});return e};var G=e=>F(g({},"__esModule",{value:!0}),e);var oe={};M(oe,{PLUGIN_KEY:()=>A,bootstrapPublisherWpSuite:()=>W,createStore:()=>p,getDefaultPublisherCrawlMode:()=>v,getPublisherPlugin:()=>I,getStore:()=>j,getStoreSelect:()=>k,hasPublisherContentSyncAccess:()=>R,hasPublisherSubscription:()=>u,loadPublisherConfig:()=>f,reloadConfig:()=>D,resolvePublisherCrawlMode:()=>x,resolvePublisherDeploymentProfile:()=>T,resolvePublisherDeploymentProfileId:()=>h,sanitizePublisherConfig:()=>b,waitForPublisherReady:()=>E});module.exports=G(oe);var a=require("@smart-cloud/wpsuite-core"),s=require("@wordpress/data");function L(e){let t=e.trim();return t==="."?".":t.replace(/\/$/,"")}function _(e){return!e||typeof e!="object"?{}:Object.fromEntries(Object.entries(e).map(([t,n])=>[t.trim(),String(n??"")]).filter(([t])=>t.length>0))}function P(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(t=>t.length>0):[]}function B(e){return[...new Set(P(e).map(t=>t.toLowerCase().replace(/[^a-z0-9_-]/g,"")).filter(Boolean))]}function K(e){if(!e||typeof e!="object")return;let t=e,n={};return typeof t.bucket=="string"&&(n.bucket=t.bucket.trim()),typeof t.prefix=="string"&&(n.prefix=t.prefix.trim()),typeof t.region=="string"&&(n.region=t.region.trim()),typeof t.htmlCacheControl=="string"&&(n.htmlCacheControl=t.htmlCacheControl.trim()),typeof t.assetCacheControl=="string"&&(n.assetCacheControl=t.assetCacheControl.trim()),Object.keys(n).length>0?n:void 0}function Y(e){if(!e||typeof e!="object")return;let t=e,n={};typeof t.distributionId=="string"&&(n.distributionId=t.distributionId.trim());let r=P(t.invalidationPaths);return r.length>0&&(n.invalidationPaths=r),Object.keys(n).length>0?n:void 0}function $(e){if(!e||typeof e!="object")return null;let t=e,n={};if(typeof t.targetOrigin=="string"){let l=L(t.targetOrigin);l&&(n.targetOrigin=l)}let r=_(t.extraReplacements);Object.keys(r).length>0&&(n.extraReplacements=r);let o=K(t.s3);o&&(n.s3=o);let i=Y(t.cloudFront);return i&&(n.cloudFront=i),n}function H(e){if(!e||typeof e!="object")return{};let t={};for(let[n,r]of Object.entries(e)){let o=n.trim();if(!o)continue;let i=$(r);i&&(t[o]=i)}return t}function w(e,t){if(typeof e!="string")return;let n=e.trim();if(!(!n||!t[n]))return n}function J(e,t){if(!e||typeof e!="object")return null;let n=e,r=String(n.command??"").trim();if(r!=="publish"&&r!=="crawl"&&r!=="deploy"&&r!=="invalidate"&&r!=="retry-timeouts"&&r!=="url")return null;let o=Number.parseInt(String(n.intervalMinutes??"0"),10);if(!Number.isFinite(o)||o<1)return null;let i=String(n.id??`${r}-${t+1}`).trim();if(!i)return null;let l=String(n.url??"").trim();if(r==="url"&&!l)return null;let d=String(n.crawlMode??"").trim(),S=String(n.deploymentProfile??"").trim(),y=B(n.postTypes),C=P(n.listingPaths);return{id:i,enabled:n.enabled!==!1,command:r,intervalMinutes:o,...d==="full"||d==="incremental"?{crawlMode:d}:{},...S?{deploymentProfile:S}:{},...l?{url:l}:{},...y.length>0?{postTypes:y}:{},...C.length>0?{listingPaths:C}:{},...Object.fromEntries(["includePostTypeArchives","includeTaxonomyArchives","includeAuthorArchives","includeDateArchives","includePostsPage","includeSitemapChain"].filter(c=>typeof n[c]=="boolean").map(c=>[c,n[c]]))}}function q(e){let t=e&&typeof e=="object"?e:{},r=(Array.isArray(t.rules)?t.rules:[]).map((o,i)=>J(o,i)).filter(o=>!!o);return{enabled:t.enabled===!0,timezone:String(t.timezone??"UTC").trim()||"UTC",rules:r}}var b=e=>{let t=e&&typeof e=="object"?e:{},n=H(t.deploymentProfiles),r=w(t.defaultDeploymentProfile,n),o=w(t.deploymentTargetOverride,n),i={...t};return i.scheduler=q(t.scheduler),i.deploymentProfiles=n,r?i.defaultDeploymentProfile=r:delete i.defaultDeploymentProfile,o?i.deploymentTargetOverride=o:delete i.deploymentTargetOverride,t.subscriptionType==="PROFESSIONAL"||t.subscriptionType==="AGENCY"?i.subscriptionType=t.subscriptionType:delete i.subscriptionType,i},f=async()=>b(await(0,a.getConfig)("publisher")),u=e=>e?.subscriptionType==="PROFESSIONAL"||e?.subscriptionType==="AGENCY",R=u,v=e=>u(e)?"incremental":"full",x=(e,t)=>e==="incremental"&&u(t)?"incremental":"full",h=(e,t)=>{if(!u(e))return"";let n=e?.deploymentProfiles??{};for(let r of[t,e?.deploymentTargetOverride,e?.defaultDeploymentProfile]){let o=typeof r=="string"?r.trim():"";if(o&&n[o])return o}return""},T=(e,t)=>{let n=h(e,t);return n?e?.deploymentProfiles?.[n]??null:null},Q=async()=>({config:await f()}),V={setConfig:e=>({type:"SET_CONFIG",config:e})},X={getConfig(e){return e.config},getState(e){return e}},Z={},k=e=>(0,s.select)(e),D=async e=>{let t=(0,a.getWpSuite)();t?.siteSettings&&(t.siteSettings.lastUpdate=Date.now());let n=await f();(0,s.dispatch)(e).setConfig?.(n)},p=async()=>{let e=await Q(),t=(0,s.createReduxStore)("smartcloud/publisher",{reducer(n=e,r){return r.type==="SET_CONFIG"?{...n,config:r.config??null}:n},actions:V,selectors:X,resolvers:Z});return(0,s.register)(t),t};var O=require("@smart-cloud/wpsuite-core");var I=()=>typeof WpSuite>"u"?null:WpSuite.plugins?.staticPublisher??null,ee=["accountId","siteId","reCaptchaPublicKey"],te=["subscriber","useRecaptchaNet","useRecaptchaEnterprise","renderRecaptchaProvider"];function ne(e,t){let n=e&&typeof e=="object"?e:{},r={...t??{}};delete r.siteKey;for(let o of ee){if(!Object.hasOwn(n,o))continue;let i=String(n[o]??"").trim();i?r[o]=i:delete r[o]}if(Object.hasOwn(n,"lastUpdate")){let o=Number(n.lastUpdate);Number.isFinite(o)&&o>0?r.lastUpdate=o:delete r.lastUpdate}for(let o of te)Object.hasOwn(n,o)&&(typeof n[o]=="boolean"?r[o]=n[o]:delete r[o]);return r}function re(e){if(!e||typeof window<"u")return;let t=e.trim();if(t)try{let n=new URL(t.includes("://")?t:`https://${t}`),r=globalThis;if(r.location?.hostname)return;Object.defineProperty(r,"location",{value:n,configurable:!0,writable:!0})}catch{}}var W=(e={})=>{let t=(0,O.getWpSuite)(),r={siteSettings:ne(e.siteSettings,t?.siteSettings),nonce:typeof e.nonce=="string"?e.nonce:t?.nonce??"",restUrl:typeof e.restUrl=="string"?e.restUrl:t?.restUrl??"",uploadUrl:typeof e.uploadUrl=="string"?e.uploadUrl:t?.uploadUrl??"",view:e.view??t?.view??"settings",plugins:t?.plugins??{},...t?.events?{events:t.events}:{}};return globalThis.WpSuite=r,re(e.locationHref??e.siteOrigin),r},m=null,j=()=>(m||(m=p()),m),E=()=>Promise.resolve();var A="publisher";0&&(module.exports={PLUGIN_KEY,bootstrapPublisherWpSuite,createStore,getDefaultPublisherCrawlMode,getPublisherPlugin,getStore,getStoreSelect,hasPublisherContentSyncAccess,hasPublisherSubscription,loadPublisherConfig,reloadConfig,resolvePublisherCrawlMode,resolvePublisherDeploymentProfile,resolvePublisherDeploymentProfileId,sanitizePublisherConfig,waitForPublisherReady});
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { createStore, getDefaultPublisherCrawlMode, hasPublisherSubscription, getStoreSelect, loadPublisherConfig, reloadConfig, resolvePublisherCrawlMode, resolvePublisherDeploymentProfile, resolvePublisherDeploymentProfileId, sanitizePublisherConfig, type State, type Store, } from "./store";
1
+ export { createStore, getDefaultPublisherCrawlMode, hasPublisherContentSyncAccess, hasPublisherSubscription, getStoreSelect, loadPublisherConfig, reloadConfig, resolvePublisherCrawlMode, resolvePublisherDeploymentProfile, resolvePublisherDeploymentProfileId, sanitizePublisherConfig, type State, type Store, } from "./store";
2
2
  export { bootstrapPublisherWpSuite, getPublisherPlugin, getStore, waitForPublisherReady, type PublisherPlugin, } from "./runtime";
3
- export type { PublisherCloudFrontConfig, PublisherCrawlMode, PublisherDeploymentProfile, PublisherDeploymentProfiles, PublisherExtraDeploymentTargets, PublisherJobCommand, PublisherRuntimeWpSuiteConfig, PublisherSchedulerConfig, PublisherSchedulerRule, PublisherRemoteConfig, PublisherS3Config, PublisherWpSuiteBootstrapInput, PublisherWpSuiteSiteSettings, } from "./types";
3
+ export type { PublisherCloudFrontConfig, PublisherContentChangeEvent, PublisherContentProjection, PublisherContentProjectionTerm, PublisherContentSyncScope, PublisherCrawlMode, PublisherDeploymentProfile, PublisherDeploymentProfiles, PublisherExtraDeploymentTargets, PublisherJobCommand, PublisherRuntimeWpSuiteConfig, PublisherSchedulerConfig, PublisherSchedulerRule, PublisherRemoteConfig, PublisherS3Config, PublisherWpSuiteBootstrapInput, PublisherWpSuiteSiteSettings, } from "./types";
4
4
  export { PLUGIN_KEY } from "./constants";
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{getConfig as P,getWpSuite as m}from"@smart-cloud/wpsuite-core";import{createReduxStore as h,dispatch as S,register as y,select as C}from"@wordpress/data";function w(e){let t=e.trim();return t==="."?".":t.replace(/\/$/,"")}function R(e){return!e||typeof e!="object"?{}:Object.fromEntries(Object.entries(e).map(([t,r])=>[t.trim(),String(r??"")]).filter(([t])=>t.length>0))}function k(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(t=>t.length>0):[]}function x(e){if(!e||typeof e!="object")return;let t=e,r={};return typeof t.bucket=="string"&&(r.bucket=t.bucket.trim()),typeof t.prefix=="string"&&(r.prefix=t.prefix.trim()),typeof t.region=="string"&&(r.region=t.region.trim()),typeof t.htmlCacheControl=="string"&&(r.htmlCacheControl=t.htmlCacheControl.trim()),typeof t.assetCacheControl=="string"&&(r.assetCacheControl=t.assetCacheControl.trim()),Object.keys(r).length>0?r:void 0}function v(e){if(!e||typeof e!="object")return;let t=e,r={};typeof t.distributionId=="string"&&(r.distributionId=t.distributionId.trim());let n=k(t.invalidationPaths);return n.length>0&&(r.invalidationPaths=n),Object.keys(r).length>0?r:void 0}function D(e){if(!e||typeof e!="object")return null;let t=e,r={};if(typeof t.targetOrigin=="string"){let s=w(t.targetOrigin);s&&(r.targetOrigin=s)}let n=R(t.extraReplacements);Object.keys(n).length>0&&(r.extraReplacements=n);let o=x(t.s3);o&&(r.s3=o);let i=v(t.cloudFront);return i&&(r.cloudFront=i),r}function O(e){if(!e||typeof e!="object")return{};let t={};for(let[r,n]of Object.entries(e)){let o=r.trim();if(!o)continue;let i=D(n);i&&(t[o]=i)}return t}function d(e,t){if(typeof e!="string")return;let r=e.trim();if(!(!r||!t[r]))return r}function T(e,t){if(!e||typeof e!="object")return null;let r=e,n=String(r.command??"").trim();if(n!=="publish"&&n!=="crawl"&&n!=="deploy"&&n!=="invalidate"&&n!=="retry-timeouts"&&n!=="url")return null;let o=Number.parseInt(String(r.intervalMinutes??"0"),10);if(!Number.isFinite(o)||o<1)return null;let i=String(r.id??`${n}-${t+1}`).trim();if(!i)return null;let s=String(r.url??"").trim();if(n==="url"&&!s)return null;let u=String(r.crawlMode??"").trim(),p=String(r.deploymentProfile??"").trim();return{id:i,enabled:r.enabled!==!1,command:n,intervalMinutes:o,...u==="full"||u==="incremental"?{crawlMode:u}:{},...p?{deploymentProfile:p}:{},...s?{url:s}:{}}}function I(e){let t=e&&typeof e=="object"?e:{},n=(Array.isArray(t.rules)?t.rules:[]).map((o,i)=>T(o,i)).filter(o=>!!o);return{enabled:t.enabled===!0,timezone:String(t.timezone??"UTC").trim()||"UTC",rules:n}}var g=e=>{let t=e&&typeof e=="object"?e:{},r=O(t.deploymentProfiles),n=d(t.defaultDeploymentProfile,r),o=d(t.deploymentTargetOverride,r),i={...t};return i.scheduler=I(t.scheduler),i.deploymentProfiles=r,n?i.defaultDeploymentProfile=n:delete i.defaultDeploymentProfile,o?i.deploymentTargetOverride=o:delete i.deploymentTargetOverride,t.subscriptionType==="PROFESSIONAL"||t.subscriptionType==="AGENCY"?i.subscriptionType=t.subscriptionType:delete i.subscriptionType,i},a=async()=>g(await P("publisher")),l=e=>typeof e?.subscriptionType=="string"&&e.subscriptionType.trim().length>0,W=e=>l(e)?"incremental":"full",U=(e,t)=>e==="incremental"&&l(t)?"incremental":"full",b=(e,t)=>{if(!l(e))return"";let r=e?.deploymentProfiles??{};for(let n of[t,e?.deploymentTargetOverride,e?.defaultDeploymentProfile]){let o=typeof n=="string"?n.trim():"";if(o&&r[o])return o}return""},j=(e,t)=>{let r=b(e,t);return r?e?.deploymentProfiles?.[r]??null:null},E=async()=>({config:await a()}),M={setConfig:e=>({type:"SET_CONFIG",config:e})},N={getConfig(e){return e.config},getState(e){return e}},z={},F=e=>C(e),A=async e=>{let t=m();t?.siteSettings&&(t.siteSettings.lastUpdate=Date.now());let r=await a();S(e).setConfig?.(r)},c=async()=>{let e=await E(),t=h("smartcloud/publisher",{reducer(r=e,n){return n.type==="SET_CONFIG"?{...r,config:n.config??null}:r},actions:M,selectors:N,resolvers:z});return y(t),t};import{getWpSuite as G}from"@smart-cloud/wpsuite-core";var L=()=>typeof WpSuite>"u"?null:WpSuite.plugins?.staticPublisher??null,_=["accountId","siteId","reCaptchaPublicKey"],K=["subscriber","useRecaptchaNet","useRecaptchaEnterprise","renderRecaptchaProvider"];function B(e,t){let r=e&&typeof e=="object"?e:{},n={...t??{}};delete n.siteKey;for(let o of _){if(!Object.hasOwn(r,o))continue;let i=String(r[o]??"").trim();i?n[o]=i:delete n[o]}if(Object.hasOwn(r,"lastUpdate")){let o=Number(r.lastUpdate);Number.isFinite(o)&&o>0?n.lastUpdate=o:delete n.lastUpdate}for(let o of K)Object.hasOwn(r,o)&&(typeof r[o]=="boolean"?n[o]=r[o]:delete n[o]);return n}function Y(e){if(!e||typeof window<"u")return;let t=e.trim();if(t)try{let r=new URL(t.includes("://")?t:`https://${t}`),n=globalThis;if(n.location?.hostname)return;Object.defineProperty(n,"location",{value:r,configurable:!0,writable:!0})}catch{}}var $=(e={})=>{let t=G(),n={siteSettings:B(e.siteSettings,t?.siteSettings),nonce:typeof e.nonce=="string"?e.nonce:t?.nonce??"",restUrl:typeof e.restUrl=="string"?e.restUrl:t?.restUrl??"",uploadUrl:typeof e.uploadUrl=="string"?e.uploadUrl:t?.uploadUrl??"",view:e.view??t?.view??"settings",plugins:t?.plugins??{},...t?.events?{events:t.events}:{}};return globalThis.WpSuite=n,Y(e.locationHref??e.siteOrigin),n},f=null,H=()=>(f||(f=c()),f),J=()=>Promise.resolve();var q="publisher";export{q as PLUGIN_KEY,$ as bootstrapPublisherWpSuite,c as createStore,W as getDefaultPublisherCrawlMode,L as getPublisherPlugin,H as getStore,F as getStoreSelect,l as hasPublisherSubscription,a as loadPublisherConfig,A as reloadConfig,U as resolvePublisherCrawlMode,j as resolvePublisherDeploymentProfile,b as resolvePublisherDeploymentProfileId,g as sanitizePublisherConfig,J as waitForPublisherReady};
1
+ import{getConfig as y,getWpSuite as C}from"@smart-cloud/wpsuite-core";import{createReduxStore as w,dispatch as R,register as v,select as x}from"@wordpress/data";function T(e){let t=e.trim();return t==="."?".":t.replace(/\/$/,"")}function k(e){return!e||typeof e!="object"?{}:Object.fromEntries(Object.entries(e).map(([t,n])=>[t.trim(),String(n??"")]).filter(([t])=>t.length>0))}function a(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(t=>t.length>0):[]}function D(e){return[...new Set(a(e).map(t=>t.toLowerCase().replace(/[^a-z0-9_-]/g,"")).filter(Boolean))]}function O(e){if(!e||typeof e!="object")return;let t=e,n={};return typeof t.bucket=="string"&&(n.bucket=t.bucket.trim()),typeof t.prefix=="string"&&(n.prefix=t.prefix.trim()),typeof t.region=="string"&&(n.region=t.region.trim()),typeof t.htmlCacheControl=="string"&&(n.htmlCacheControl=t.htmlCacheControl.trim()),typeof t.assetCacheControl=="string"&&(n.assetCacheControl=t.assetCacheControl.trim()),Object.keys(n).length>0?n:void 0}function I(e){if(!e||typeof e!="object")return;let t=e,n={};typeof t.distributionId=="string"&&(n.distributionId=t.distributionId.trim());let r=a(t.invalidationPaths);return r.length>0&&(n.invalidationPaths=r),Object.keys(n).length>0?n:void 0}function W(e){if(!e||typeof e!="object")return null;let t=e,n={};if(typeof t.targetOrigin=="string"){let s=T(t.targetOrigin);s&&(n.targetOrigin=s)}let r=k(t.extraReplacements);Object.keys(r).length>0&&(n.extraReplacements=r);let o=O(t.s3);o&&(n.s3=o);let i=I(t.cloudFront);return i&&(n.cloudFront=i),n}function j(e){if(!e||typeof e!="object")return{};let t={};for(let[n,r]of Object.entries(e)){let o=n.trim();if(!o)continue;let i=W(r);i&&(t[o]=i)}return t}function h(e,t){if(typeof e!="string")return;let n=e.trim();if(!(!n||!t[n]))return n}function E(e,t){if(!e||typeof e!="object")return null;let n=e,r=String(n.command??"").trim();if(r!=="publish"&&r!=="crawl"&&r!=="deploy"&&r!=="invalidate"&&r!=="retry-timeouts"&&r!=="url")return null;let o=Number.parseInt(String(n.intervalMinutes??"0"),10);if(!Number.isFinite(o)||o<1)return null;let i=String(n.id??`${r}-${t+1}`).trim();if(!i)return null;let s=String(n.url??"").trim();if(r==="url"&&!s)return null;let c=String(n.crawlMode??"").trim(),g=String(n.deploymentProfile??"").trim(),P=D(n.postTypes),b=a(n.listingPaths);return{id:i,enabled:n.enabled!==!1,command:r,intervalMinutes:o,...c==="full"||c==="incremental"?{crawlMode:c}:{},...g?{deploymentProfile:g}:{},...s?{url:s}:{},...P.length>0?{postTypes:P}:{},...b.length>0?{listingPaths:b}:{},...Object.fromEntries(["includePostTypeArchives","includeTaxonomyArchives","includeAuthorArchives","includeDateArchives","includePostsPage","includeSitemapChain"].filter(u=>typeof n[u]=="boolean").map(u=>[u,n[u]]))}}function A(e){let t=e&&typeof e=="object"?e:{},r=(Array.isArray(t.rules)?t.rules:[]).map((o,i)=>E(o,i)).filter(o=>!!o);return{enabled:t.enabled===!0,timezone:String(t.timezone??"UTC").trim()||"UTC",rules:r}}var m=e=>{let t=e&&typeof e=="object"?e:{},n=j(t.deploymentProfiles),r=h(t.defaultDeploymentProfile,n),o=h(t.deploymentTargetOverride,n),i={...t};return i.scheduler=A(t.scheduler),i.deploymentProfiles=n,r?i.defaultDeploymentProfile=r:delete i.defaultDeploymentProfile,o?i.deploymentTargetOverride=o:delete i.deploymentTargetOverride,t.subscriptionType==="PROFESSIONAL"||t.subscriptionType==="AGENCY"?i.subscriptionType=t.subscriptionType:delete i.subscriptionType,i},f=async()=>m(await y("publisher")),l=e=>e?.subscriptionType==="PROFESSIONAL"||e?.subscriptionType==="AGENCY",U=l,N=e=>l(e)?"incremental":"full",z=(e,t)=>e==="incremental"&&l(t)?"incremental":"full",S=(e,t)=>{if(!l(e))return"";let n=e?.deploymentProfiles??{};for(let r of[t,e?.deploymentTargetOverride,e?.defaultDeploymentProfile]){let o=typeof r=="string"?r.trim():"";if(o&&n[o])return o}return""},M=(e,t)=>{let n=S(e,t);return n?e?.deploymentProfiles?.[n]??null:null},F=async()=>({config:await f()}),G={setConfig:e=>({type:"SET_CONFIG",config:e})},L={getConfig(e){return e.config},getState(e){return e}},_={},B=e=>x(e),K=async e=>{let t=C();t?.siteSettings&&(t.siteSettings.lastUpdate=Date.now());let n=await f();R(e).setConfig?.(n)},p=async()=>{let e=await F(),t=w("smartcloud/publisher",{reducer(n=e,r){return r.type==="SET_CONFIG"?{...n,config:r.config??null}:n},actions:G,selectors:L,resolvers:_});return v(t),t};import{getWpSuite as Y}from"@smart-cloud/wpsuite-core";var $=()=>typeof WpSuite>"u"?null:WpSuite.plugins?.staticPublisher??null,H=["accountId","siteId","reCaptchaPublicKey"],J=["subscriber","useRecaptchaNet","useRecaptchaEnterprise","renderRecaptchaProvider"];function q(e,t){let n=e&&typeof e=="object"?e:{},r={...t??{}};delete r.siteKey;for(let o of H){if(!Object.hasOwn(n,o))continue;let i=String(n[o]??"").trim();i?r[o]=i:delete r[o]}if(Object.hasOwn(n,"lastUpdate")){let o=Number(n.lastUpdate);Number.isFinite(o)&&o>0?r.lastUpdate=o:delete r.lastUpdate}for(let o of J)Object.hasOwn(n,o)&&(typeof n[o]=="boolean"?r[o]=n[o]:delete r[o]);return r}function Q(e){if(!e||typeof window<"u")return;let t=e.trim();if(t)try{let n=new URL(t.includes("://")?t:`https://${t}`),r=globalThis;if(r.location?.hostname)return;Object.defineProperty(r,"location",{value:n,configurable:!0,writable:!0})}catch{}}var V=(e={})=>{let t=Y(),r={siteSettings:q(e.siteSettings,t?.siteSettings),nonce:typeof e.nonce=="string"?e.nonce:t?.nonce??"",restUrl:typeof e.restUrl=="string"?e.restUrl:t?.restUrl??"",uploadUrl:typeof e.uploadUrl=="string"?e.uploadUrl:t?.uploadUrl??"",view:e.view??t?.view??"settings",plugins:t?.plugins??{},...t?.events?{events:t.events}:{}};return globalThis.WpSuite=r,Q(e.locationHref??e.siteOrigin),r},d=null,X=()=>(d||(d=p()),d),Z=()=>Promise.resolve();var ee="publisher";export{ee as PLUGIN_KEY,V as bootstrapPublisherWpSuite,p as createStore,N as getDefaultPublisherCrawlMode,$ as getPublisherPlugin,X as getStore,B as getStoreSelect,U as hasPublisherContentSyncAccess,l as hasPublisherSubscription,f as loadPublisherConfig,K as reloadConfig,z as resolvePublisherCrawlMode,M as resolvePublisherDeploymentProfile,S as resolvePublisherDeploymentProfileId,m as sanitizePublisherConfig,Z as waitForPublisherReady};
package/dist/store.d.ts CHANGED
@@ -3,6 +3,7 @@ import type { PublisherCrawlMode, PublisherDeploymentProfile, PublisherRemoteCon
3
3
  export declare const sanitizePublisherConfig: (input: unknown) => PublisherRemoteConfig;
4
4
  export declare const loadPublisherConfig: () => Promise<PublisherRemoteConfig>;
5
5
  export declare const hasPublisherSubscription: (config: PublisherRemoteConfig | null | undefined) => boolean;
6
+ export declare const hasPublisherContentSyncAccess: (config: PublisherRemoteConfig | null | undefined) => boolean;
6
7
  export declare const getDefaultPublisherCrawlMode: (config: PublisherRemoteConfig | null | undefined) => PublisherCrawlMode;
7
8
  export declare const resolvePublisherCrawlMode: (requestedMode: PublisherCrawlMode | null | undefined, config: PublisherRemoteConfig | null | undefined) => PublisherCrawlMode;
8
9
  export declare const resolvePublisherDeploymentProfileId: (config: PublisherRemoteConfig | null | undefined, requestedProfile: string | null | undefined) => string;
package/dist/types.d.ts CHANGED
@@ -1,6 +1,41 @@
1
1
  import type { SiteSettings, SubscriptionType, WpSuiteView } from "@smart-cloud/wpsuite-core";
2
2
  export type PublisherJobCommand = "publish" | "crawl" | "deploy" | "invalidate" | "retry-timeouts" | "url";
3
3
  export type PublisherCrawlMode = "full" | "incremental";
4
+ export interface PublisherContentSyncScope {
5
+ postTypes: string[];
6
+ listingPaths: string[];
7
+ includePostTypeArchives: boolean;
8
+ includeTaxonomyArchives: boolean;
9
+ includeAuthorArchives: boolean;
10
+ includeDateArchives: boolean;
11
+ includePostsPage: boolean;
12
+ includeSitemapChain: boolean;
13
+ }
14
+ export interface PublisherContentProjectionTerm {
15
+ taxonomy: string;
16
+ termId: number;
17
+ url: string | null;
18
+ }
19
+ export interface PublisherContentProjection {
20
+ status: string;
21
+ url: string | null;
22
+ authorId: number;
23
+ publishedGmt: string | null;
24
+ modifiedGmt: string | null;
25
+ terms: PublisherContentProjectionTerm[];
26
+ sticky: boolean;
27
+ archives: string[];
28
+ }
29
+ export interface PublisherContentChangeEvent {
30
+ sequence: number;
31
+ recordedGmt: string;
32
+ postId: number;
33
+ postType: string;
34
+ operation: "publish" | "update" | "unpublish" | "delete" | "permalink" | "taxonomy" | "sticky";
35
+ before: PublisherContentProjection | null;
36
+ after: PublisherContentProjection | null;
37
+ correlationId: string | null;
38
+ }
4
39
  export interface PublisherSchedulerRule {
5
40
  id: string;
6
41
  enabled: boolean;
@@ -9,6 +44,14 @@ export interface PublisherSchedulerRule {
9
44
  crawlMode?: PublisherCrawlMode;
10
45
  deploymentProfile?: string;
11
46
  url?: string;
47
+ postTypes?: string[];
48
+ listingPaths?: string[];
49
+ includePostTypeArchives?: boolean;
50
+ includeTaxonomyArchives?: boolean;
51
+ includeAuthorArchives?: boolean;
52
+ includeDateArchives?: boolean;
53
+ includePostsPage?: boolean;
54
+ includeSitemapChain?: boolean;
12
55
  }
13
56
  export interface PublisherSchedulerConfig {
14
57
  enabled: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smart-cloud/publisher-core",
3
- "version": "1.1.5",
3
+ "version": "1.1.6",
4
4
  "description": "Publisher Core Package",
5
5
  "author": "Smart Cloud Solutions Inc.",
6
6
  "license": "MIT",
@@ -29,7 +29,7 @@
29
29
  "build:types": "tsc -p tsconfig.types.json",
30
30
  "lint": "eslint 'src/**/*.ts' --report-unused-disable-directives --max-warnings 0",
31
31
  "test": "echo \"Error: no test specified\" && exit 1",
32
- "release:npm": "WPSUITE_PREMIUM=true yarn build && npm publish --access=public --registry=https://registry.npmjs.org/"
32
+ "release:npm": "yarn build && npm publish --access=public --registry=https://registry.npmjs.org/"
33
33
  },
34
34
  "publishConfig": {
35
35
  "registry": "https://registry.npmjs.org/",