@sitecore-content-sdk/nextjs 0.1.0 → 0.2.0-beta.10

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.
Files changed (44) hide show
  1. package/dist/cjs/components/Link.js +0 -2
  2. package/dist/cjs/components/NextImage.js +6 -25
  3. package/dist/cjs/components/RichText.js +0 -5
  4. package/dist/cjs/config/define-config.js +25 -0
  5. package/dist/cjs/config/index.js +3 -3
  6. package/dist/cjs/editing/editing-render-middleware.js +1 -1
  7. package/dist/cjs/index.js +9 -4
  8. package/dist/cjs/middleware/index.js +10 -1
  9. package/dist/cjs/middleware/middleware.js +4 -0
  10. package/dist/cjs/middleware/personalize-middleware.js +32 -25
  11. package/dist/cjs/middleware/redirects-middleware.js +14 -3
  12. package/dist/cjs/middleware/robots-middleware.js +42 -0
  13. package/dist/cjs/tools/codegen/extract-components.js +64 -0
  14. package/dist/cjs/tools/codegen/utils.js +255 -0
  15. package/dist/cjs/tools/index.js +3 -1
  16. package/dist/esm/components/Link.js +1 -3
  17. package/dist/esm/components/NextImage.js +6 -25
  18. package/dist/esm/components/RichText.js +1 -3
  19. package/dist/esm/config/define-config.js +20 -0
  20. package/dist/esm/config/index.js +1 -1
  21. package/dist/esm/editing/editing-render-middleware.js +1 -1
  22. package/dist/esm/index.js +3 -3
  23. package/dist/esm/middleware/index.js +3 -0
  24. package/dist/esm/middleware/middleware.js +4 -0
  25. package/dist/esm/middleware/personalize-middleware.js +32 -25
  26. package/dist/esm/middleware/redirects-middleware.js +14 -3
  27. package/dist/esm/middleware/robots-middleware.js +38 -0
  28. package/dist/esm/tools/codegen/extract-components.js +57 -0
  29. package/dist/esm/tools/codegen/utils.js +212 -0
  30. package/dist/esm/tools/index.js +1 -0
  31. package/package.json +40 -38
  32. package/types/components/ComponentPropsContext.d.ts +1 -1
  33. package/types/components/RichText.d.ts +1 -14
  34. package/types/config/define-config.d.ts +33 -0
  35. package/types/config/index.d.ts +1 -1
  36. package/types/index.d.ts +4 -4
  37. package/types/middleware/index.d.ts +3 -0
  38. package/types/middleware/middleware.d.ts +3 -0
  39. package/types/middleware/personalize-middleware.d.ts +6 -29
  40. package/types/middleware/redirects-middleware.d.ts +13 -6
  41. package/types/middleware/robots-middleware.d.ts +11 -0
  42. package/types/tools/codegen/extract-components.d.ts +10 -0
  43. package/types/tools/codegen/utils.d.ts +40 -0
  44. package/types/tools/index.d.ts +1 -0
@@ -49,7 +49,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
49
49
  Object.defineProperty(exports, "__esModule", { value: true });
50
50
  exports.Link = void 0;
51
51
  const react_1 = __importStar(require("react"));
52
- const prop_types_1 = __importDefault(require("prop-types"));
53
52
  const link_1 = __importDefault(require("next/link"));
54
53
  const react_2 = require("@sitecore-content-sdk/react");
55
54
  /**
@@ -90,4 +89,3 @@ exports.Link = (0, react_1.forwardRef)((props, ref) => {
90
89
  return (react_1.default.createElement(react_2.Link, Object.assign({}, reactLinkProps, { ref: ref }, (process.env.TEST ? { 'data-react-link': true } : {}))));
91
90
  });
92
91
  exports.Link.displayName = 'NextLink';
93
- exports.Link.propTypes = Object.assign({ internalLinkMatcher: prop_types_1.default.instanceOf(RegExp) }, react_2.LinkPropTypes);
@@ -16,15 +16,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.NextImage = void 0;
18
18
  const media_1 = require("@sitecore-content-sdk/core/media");
19
- const prop_types_1 = __importDefault(require("prop-types"));
20
19
  const react_1 = __importDefault(require("react"));
21
20
  const react_2 = require("@sitecore-content-sdk/react");
22
21
  const image_1 = __importDefault(require("next/image"));
23
- const react_3 = require("@sitecore-content-sdk/react");
24
- const react_4 = require("@sitecore-content-sdk/react");
25
22
  const layout_1 = require("@sitecore-content-sdk/core/layout");
26
- exports.NextImage = (0, react_2.withFieldMetadata)((0, react_3.withEmptyFieldEditingComponent)((_a) => {
27
- var _b;
23
+ exports.NextImage = (0, react_2.withFieldMetadata)((0, react_2.withEmptyFieldEditingComponent)((_a) => {
24
+ var _b, _c;
28
25
  var { editable = true, imageParams, field, mediaUrlPrefix, fill, priority } = _a, otherProps = __rest(_a, ["editable", "imageParams", "field", "mediaUrlPrefix", "fill", "priority"]);
29
26
  const sitecoreContext = react_1.default.useContext(react_2.SitecoreContextReactContext);
30
27
  // next handles src and we use a custom loader,
@@ -43,9 +40,10 @@ exports.NextImage = (0, react_2.withFieldMetadata)((0, react_3.withEmptyFieldEdi
43
40
  if (!img) {
44
41
  return null;
45
42
  }
46
- // disable image optimization for Edit and Preview, but preserve original value if true
43
+ // disable image optimization for Edit / Preview / Component rendering, but preserve original value if true
47
44
  const unoptimized = otherProps.unoptimized ||
48
- ((_b = sitecoreContext.context) === null || _b === void 0 ? void 0 : _b.pageState) !== layout_1.LayoutServicePageState.Normal;
45
+ ((_b = sitecoreContext.context) === null || _b === void 0 ? void 0 : _b.renderingType) === layout_1.RenderingType.Component ||
46
+ ((_c = sitecoreContext.context) === null || _c === void 0 ? void 0 : _c.pageState) !== layout_1.LayoutServicePageState.Normal;
49
47
  const attrs = Object.assign(Object.assign(Object.assign({}, img), otherProps), { fill,
50
48
  priority, src: media_1.mediaApi.updateImageUrl(img.src, imageParams, mediaUrlPrefix), unoptimized });
51
49
  const imageProps = Object.assign(Object.assign({}, attrs), {
@@ -61,22 +59,5 @@ exports.NextImage = (0, react_2.withFieldMetadata)((0, react_3.withEmptyFieldEdi
61
59
  return (react_1.default.createElement(image_1.default, Object.assign({ alt: "" }, imageProps, (process.env.TEST ? { 'data-unoptimized': unoptimized } : {}))));
62
60
  }
63
61
  return null; // we can't handle the truth
64
- }, { defaultEmptyFieldEditingComponent: react_4.DefaultEmptyFieldEditingComponentImage }));
65
- exports.NextImage.propTypes = {
66
- field: prop_types_1.default.oneOfType([
67
- prop_types_1.default.shape({
68
- src: prop_types_1.default.string.isRequired,
69
- }),
70
- prop_types_1.default.shape({
71
- value: prop_types_1.default.object,
72
- }),
73
- ]),
74
- editable: prop_types_1.default.bool,
75
- mediaUrlPrefix: prop_types_1.default.instanceOf(RegExp),
76
- imageParams: prop_types_1.default.objectOf(prop_types_1.default.oneOfType([prop_types_1.default.number.isRequired, prop_types_1.default.string.isRequired]).isRequired),
77
- emptyFieldEditingComponent: prop_types_1.default.oneOfType([
78
- prop_types_1.default.object,
79
- prop_types_1.default.func,
80
- ]),
81
- };
62
+ }, { defaultEmptyFieldEditingComponent: react_2.DefaultEmptyFieldEditingComponentImage }));
82
63
  exports.NextImage.displayName = 'NextImage';
@@ -43,13 +43,9 @@ var __rest = (this && this.__rest) || function (s, e) {
43
43
  }
44
44
  return t;
45
45
  };
46
- var __importDefault = (this && this.__importDefault) || function (mod) {
47
- return (mod && mod.__esModule) ? mod : { "default": mod };
48
- };
49
46
  Object.defineProperty(exports, "__esModule", { value: true });
50
47
  exports.RichText = exports.prefetched = void 0;
51
48
  const react_1 = __importStar(require("react"));
52
- const prop_types_1 = __importDefault(require("prop-types"));
53
49
  const router_1 = require("next/router");
54
50
  const react_2 = require("@sitecore-content-sdk/react");
55
51
  exports.prefetched = {};
@@ -103,5 +99,4 @@ const RichText = (props) => {
103
99
  return react_1.default.createElement(react_2.RichText, Object.assign({ ref: richTextRef, editable: editable }, rest));
104
100
  };
105
101
  exports.RichText = RichText;
106
- exports.RichText.propTypes = Object.assign({ internalLinksSelector: prop_types_1.default.string }, react_2.RichTextPropTypes);
107
102
  exports.RichText.displayName = 'NextRichText';
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineConfig = exports.getNextFallbackConfig = void 0;
4
+ const config_1 = require("@sitecore-content-sdk/core/config");
5
+ /**
6
+ * Provides default NextJs initial values from env variables for SitecoreConfig
7
+ * @param {SitecoreConfigInput} config optional override values to be written over default config settings
8
+ * @returns default nextjs input config
9
+ */
10
+ const getNextFallbackConfig = (config) => {
11
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
12
+ return Object.assign(Object.assign({}, config), { api: Object.assign(Object.assign({}, config === null || config === void 0 ? void 0 : config.api), { edge: Object.assign(Object.assign({}, (_a = config === null || config === void 0 ? void 0 : config.api) === null || _a === void 0 ? void 0 : _a.edge), { contextId: ((_c = (_b = config === null || config === void 0 ? void 0 : config.api) === null || _b === void 0 ? void 0 : _b.edge) === null || _c === void 0 ? void 0 : _c.contextId) || process.env.NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID || '', clientContextId: ((_e = (_d = config === null || config === void 0 ? void 0 : config.api) === null || _d === void 0 ? void 0 : _d.edge) === null || _e === void 0 ? void 0 : _e.clientContextId) || process.env.NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID, edgeUrl: ((_g = (_f = config === null || config === void 0 ? void 0 : config.api) === null || _f === void 0 ? void 0 : _f.edge) === null || _g === void 0 ? void 0 : _g.edgeUrl) || process.env.NEXT_PUBLIC_SITECORE_EDGE_URL }), local: Object.assign(Object.assign({}, (_h = config === null || config === void 0 ? void 0 : config.api) === null || _h === void 0 ? void 0 : _h.local), { apiKey: ((_k = (_j = config === null || config === void 0 ? void 0 : config.api) === null || _j === void 0 ? void 0 : _j.local) === null || _k === void 0 ? void 0 : _k.apiKey) || process.env.NEXT_PUBLIC_SITECORE_API_KEY || '', apiHost: ((_m = (_l = config === null || config === void 0 ? void 0 : config.api) === null || _l === void 0 ? void 0 : _l.local) === null || _m === void 0 ? void 0 : _m.apiHost) || process.env.NEXT_PUBLIC_SITECORE_API_HOST || '' }) }), defaultSite: (config === null || config === void 0 ? void 0 : config.defaultSite) || process.env.NEXT_PUBLIC_SITECORE_SITE_NAME || '', defaultLanguage: (config === null || config === void 0 ? void 0 : config.defaultLanguage) || process.env.NEXT_PUBLIC_DEFAULT_LANGUAGE || 'en', multisite: Object.assign(Object.assign({}, config === null || config === void 0 ? void 0 : config.multisite), { useCookieResolution: (_p = (_o = config === null || config === void 0 ? void 0 : config.multisite) === null || _o === void 0 ? void 0 : _o.useCookieResolution) !== null && _p !== void 0 ? _p : (() => process.env.VERCEL_ENV === 'preview') }), personalize: Object.assign(Object.assign({}, config === null || config === void 0 ? void 0 : config.personalize), { scope: ((_q = config === null || config === void 0 ? void 0 : config.personalize) === null || _q === void 0 ? void 0 : _q.scope) || process.env.NEXT_PUBLIC_PERSONALIZE_SCOPE }), disableStaticPaths: process.env.DISABLE_SSG_FETCH !== undefined
13
+ ? process.env.DISABLE_SSG_FETCH.toLowerCase() === 'true'
14
+ : (_r = config === null || config === void 0 ? void 0 : config.disableStaticPaths) !== null && _r !== void 0 ? _r : false });
15
+ };
16
+ exports.getNextFallbackConfig = getNextFallbackConfig;
17
+ /**
18
+ * Accepts a SitecoreConfigInput object and returns full sitecore configuration
19
+ * @param {SitecoreConfigInput} config override values to be written over default config settings
20
+ * @returns {SitecoreConfig} full sitecore configuration to use in application
21
+ */
22
+ const defineConfig = (config) => {
23
+ return (0, config_1.defineConfig)((0, exports.getNextFallbackConfig)(config));
24
+ };
25
+ exports.defineConfig = defineConfig;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defineCliConfig = exports.defineConfig = void 0;
4
- var config_1 = require("@sitecore-content-sdk/core/config");
5
- Object.defineProperty(exports, "defineConfig", { enumerable: true, get: function () { return config_1.defineConfig; } });
3
+ exports.defineConfig = exports.defineCliConfig = void 0;
6
4
  var define_cli_config_1 = require("./define-cli-config");
7
5
  Object.defineProperty(exports, "defineCliConfig", { enumerable: true, get: function () { return define_cli_config_1.defineCliConfig; } });
6
+ var define_config_1 = require("./define-config");
7
+ Object.defineProperty(exports, "defineConfig", { enumerable: true, get: function () { return define_config_1.defineConfig; } });
@@ -105,7 +105,7 @@ class EditingRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
105
105
  language: query.sc_lang,
106
106
  site: query.sc_site,
107
107
  mode: 'library',
108
- dataSourceId: query.sc_datasourceId,
108
+ dataSourceId: query.dataSourceId,
109
109
  version: query.sc_version,
110
110
  }, {
111
111
  maxAge: 3,
package/dist/cjs/index.js CHANGED
@@ -33,8 +33,8 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.DefaultEmptyFieldEditingComponentImage = exports.DesignLibrary = exports.File = exports.getDesignLibraryStylesheetLinks = exports.BYOCComponent = exports.fetchFEaaSComponentServerProps = exports.FEaaSComponent = exports.DateField = exports.Text = exports.Image = exports.BYOCWrapper = exports.FEaaSWrapper = exports.NextImage = exports.Placeholder = exports.RichText = exports.Link = exports.useComponentProps = exports.ComponentPropsContext = exports.ComponentPropsReactContext = exports.normalizeSiteRewrite = exports.getSiteRewriteData = exports.getSiteRewrite = exports.GraphQLSiteInfoService = exports.SiteResolver = exports.GraphQLRobotsService = exports.GraphQLErrorPagesService = exports.GraphQLSitemapXmlService = exports.GraphQLSitePathService = exports.ComponentPropsService = exports.CdpHelper = exports.normalizePersonalizedRewrite = exports.getGroomedVariantIds = exports.getPersonalizedRewriteData = exports.getPersonalizedRewrite = exports.personalizeLayout = exports.GraphQLDictionaryService = exports.mediaApi = exports.RestComponentLayoutService = exports.RenderingType = exports.EditMode = exports.getContentStylesheetLink = exports.getFieldValue = exports.getChildPlaceholder = exports.GraphQLLayoutService = exports.LayoutServicePageState = exports.MemoryCacheClient = exports.debug = exports.enableDebug = exports.NativeDataFetcher = exports.constants = void 0;
37
- exports.Form = exports.EditingScripts = exports.withEmptyFieldEditingComponent = exports.withFieldMetadata = exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecoreContext = exports.withSitecoreContext = exports.SitecoreContextReactContext = exports.SitecoreContext = exports.DefaultEmptyFieldEditingComponentText = void 0;
36
+ exports.fetchFEaaSComponentServerProps = exports.FEaaSComponent = exports.DateField = exports.Text = exports.Image = exports.BYOCWrapper = exports.FEaaSWrapper = exports.NextImage = exports.Placeholder = exports.RichText = exports.Link = exports.useComponentProps = exports.ComponentPropsContext = exports.ComponentPropsReactContext = exports.ComponentPropsService = exports.normalizeSiteRewrite = exports.getSiteRewriteData = exports.getSiteRewrite = exports.GraphQLSiteInfoService = exports.SiteResolver = exports.GraphQLRobotsService = exports.GraphQLErrorPagesService = exports.GraphQLSitemapXmlService = exports.REDIRECT_TYPE_SERVER_TRANSFER = exports.REDIRECT_TYPE_302 = exports.REDIRECT_TYPE_301 = exports.GraphQLRedirectsService = exports.GraphQLSitePathService = exports.GraphQLPersonalizeService = exports.CdpHelper = exports.normalizePersonalizedRewrite = exports.getGroomedVariantIds = exports.getPersonalizedRewriteData = exports.getPersonalizedRewrite = exports.personalizeLayout = exports.GraphQLDictionaryService = exports.mediaApi = exports.RestComponentLayoutService = exports.RenderingType = exports.EditMode = exports.getContentStylesheetLink = exports.getFieldValue = exports.getChildPlaceholder = exports.GraphQLLayoutService = exports.LayoutServicePageState = exports.MemoryCacheClient = exports.debug = exports.enableDebug = exports.NativeDataFetcher = exports.constants = void 0;
37
+ exports.Form = exports.EditingScripts = exports.withEmptyFieldEditingComponent = exports.withFieldMetadata = exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecoreContext = exports.withSitecoreContext = exports.SitecoreContextReactContext = exports.SitecoreContext = exports.DefaultEmptyFieldEditingComponentText = exports.DefaultEmptyFieldEditingComponentImage = exports.DesignLibrary = exports.File = exports.getDesignLibraryStylesheetLinks = exports.BYOCComponent = void 0;
38
38
  var core_1 = require("@sitecore-content-sdk/core");
39
39
  Object.defineProperty(exports, "constants", { enumerable: true, get: function () { return core_1.constants; } });
40
40
  // generic data access
@@ -63,10 +63,13 @@ Object.defineProperty(exports, "getPersonalizedRewriteData", { enumerable: true,
63
63
  Object.defineProperty(exports, "getGroomedVariantIds", { enumerable: true, get: function () { return personalize_1.getGroomedVariantIds; } });
64
64
  Object.defineProperty(exports, "normalizePersonalizedRewrite", { enumerable: true, get: function () { return personalize_1.normalizePersonalizedRewrite; } });
65
65
  Object.defineProperty(exports, "CdpHelper", { enumerable: true, get: function () { return personalize_1.CdpHelper; } });
66
- var component_props_service_1 = require("./services/component-props-service");
67
- Object.defineProperty(exports, "ComponentPropsService", { enumerable: true, get: function () { return component_props_service_1.ComponentPropsService; } });
66
+ Object.defineProperty(exports, "GraphQLPersonalizeService", { enumerable: true, get: function () { return personalize_1.GraphQLPersonalizeService; } });
68
67
  var site_1 = require("@sitecore-content-sdk/core/site");
69
68
  Object.defineProperty(exports, "GraphQLSitePathService", { enumerable: true, get: function () { return site_1.GraphQLSitePathService; } });
69
+ Object.defineProperty(exports, "GraphQLRedirectsService", { enumerable: true, get: function () { return site_1.GraphQLRedirectsService; } });
70
+ Object.defineProperty(exports, "REDIRECT_TYPE_301", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_301; } });
71
+ Object.defineProperty(exports, "REDIRECT_TYPE_302", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_302; } });
72
+ Object.defineProperty(exports, "REDIRECT_TYPE_SERVER_TRANSFER", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_SERVER_TRANSFER; } });
70
73
  var site_2 = require("@sitecore-content-sdk/core/site");
71
74
  Object.defineProperty(exports, "GraphQLSitemapXmlService", { enumerable: true, get: function () { return site_2.GraphQLSitemapXmlService; } });
72
75
  Object.defineProperty(exports, "GraphQLErrorPagesService", { enumerable: true, get: function () { return site_2.GraphQLErrorPagesService; } });
@@ -76,6 +79,8 @@ Object.defineProperty(exports, "GraphQLSiteInfoService", { enumerable: true, get
76
79
  Object.defineProperty(exports, "getSiteRewrite", { enumerable: true, get: function () { return site_2.getSiteRewrite; } });
77
80
  Object.defineProperty(exports, "getSiteRewriteData", { enumerable: true, get: function () { return site_2.getSiteRewriteData; } });
78
81
  Object.defineProperty(exports, "normalizeSiteRewrite", { enumerable: true, get: function () { return site_2.normalizeSiteRewrite; } });
82
+ var component_props_service_1 = require("./services/component-props-service");
83
+ Object.defineProperty(exports, "ComponentPropsService", { enumerable: true, get: function () { return component_props_service_1.ComponentPropsService; } });
79
84
  var ComponentPropsContext_1 = require("./components/ComponentPropsContext");
80
85
  Object.defineProperty(exports, "ComponentPropsReactContext", { enumerable: true, get: function () { return ComponentPropsContext_1.ComponentPropsReactContext; } });
81
86
  Object.defineProperty(exports, "ComponentPropsContext", { enumerable: true, get: function () { return ComponentPropsContext_1.ComponentPropsContext; } });
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SitemapMiddleware = exports.MultisiteMiddleware = exports.PersonalizeMiddleware = exports.RedirectsMiddleware = exports.defineMiddleware = exports.Middleware = exports.MiddlewareBase = exports.debug = void 0;
3
+ exports.REDIRECT_TYPE_SERVER_TRANSFER = exports.REDIRECT_TYPE_302 = exports.REDIRECT_TYPE_301 = exports.GraphQLRedirectsService = exports.GraphQLPersonalizeService = exports.RobotsMiddleware = exports.SitemapMiddleware = exports.MultisiteMiddleware = exports.PersonalizeMiddleware = exports.RedirectsMiddleware = exports.defineMiddleware = exports.Middleware = exports.MiddlewareBase = exports.debug = void 0;
4
4
  var core_1 = require("@sitecore-content-sdk/core");
5
5
  Object.defineProperty(exports, "debug", { enumerable: true, get: function () { return core_1.debug; } });
6
6
  var middleware_1 = require("./middleware");
@@ -15,3 +15,12 @@ var multisite_middleware_1 = require("./multisite-middleware");
15
15
  Object.defineProperty(exports, "MultisiteMiddleware", { enumerable: true, get: function () { return multisite_middleware_1.MultisiteMiddleware; } });
16
16
  var sitemap_middleware_1 = require("./sitemap-middleware");
17
17
  Object.defineProperty(exports, "SitemapMiddleware", { enumerable: true, get: function () { return sitemap_middleware_1.SitemapMiddleware; } });
18
+ var robots_middleware_1 = require("./robots-middleware");
19
+ Object.defineProperty(exports, "RobotsMiddleware", { enumerable: true, get: function () { return robots_middleware_1.RobotsMiddleware; } });
20
+ var personalize_1 = require("@sitecore-content-sdk/core/personalize");
21
+ Object.defineProperty(exports, "GraphQLPersonalizeService", { enumerable: true, get: function () { return personalize_1.GraphQLPersonalizeService; } });
22
+ var site_1 = require("@sitecore-content-sdk/core/site");
23
+ Object.defineProperty(exports, "GraphQLRedirectsService", { enumerable: true, get: function () { return site_1.GraphQLRedirectsService; } });
24
+ Object.defineProperty(exports, "REDIRECT_TYPE_301", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_301; } });
25
+ Object.defineProperty(exports, "REDIRECT_TYPE_302", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_302; } });
26
+ Object.defineProperty(exports, "REDIRECT_TYPE_SERVER_TRANSFER", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_SERVER_TRANSFER; } });
@@ -13,6 +13,7 @@ exports.defineMiddleware = exports.MiddlewareBase = exports.Middleware = exports
13
13
  const site_1 = require("@sitecore-content-sdk/core/site");
14
14
  const core_1 = require("@sitecore-content-sdk/core");
15
15
  const server_1 = require("next/server");
16
+ const client_1 = require("@sitecore-content-sdk/core/client");
16
17
  exports.REWRITE_HEADER_NAME = 'x-sc-rewrite';
17
18
  /**
18
19
  * Middleware class to be extended by all middleware implementations
@@ -108,6 +109,9 @@ class MiddlewareBase extends Middleware {
108
109
  }
109
110
  return this.siteResolver.getByHost(hostname);
110
111
  }
112
+ getClientFactory(graphQLOptions) {
113
+ return (0, client_1.createGraphQLClientFactory)(graphQLOptions);
114
+ }
111
115
  /**
112
116
  * Create a rewrite response
113
117
  * @param {string} rewritePath the destionation path
@@ -23,6 +23,7 @@ class PersonalizeMiddleware extends middleware_1.MiddlewareBase {
23
23
  * @param {PersonalizeMiddlewareConfig} [config] Personalize middleware config
24
24
  */
25
25
  constructor(config) {
26
+ var _a;
26
27
  super(config);
27
28
  this.config = config;
28
29
  this.handle = (req, res) => __awaiter(this, void 0, void 0, function* () {
@@ -123,14 +124,39 @@ class PersonalizeMiddleware extends middleware_1.MiddlewareBase {
123
124
  return res;
124
125
  }
125
126
  });
127
+ const graphQLOptions = {
128
+ api: {
129
+ edge: {
130
+ contextId: this.config.contextId,
131
+ clientContextId: this.config.clientContextId,
132
+ edgeUrl: this.config.edgeUrl,
133
+ },
134
+ },
135
+ };
126
136
  // NOTE: we provide native fetch for compatibility on Next.js Edge Runtime
127
137
  // (underlying default 'cross-fetch' is not currently compatible: https://github.com/lquixada/cross-fetch/issues/78)
128
- this.personalizeService = new personalize_1.GraphQLPersonalizeService({
129
- clientFactory: this.config.clientFactory,
130
- timeout: this.config.edgeTimeout,
131
- scope: this.config.scope,
132
- fetch: fetch,
133
- });
138
+ this.personalizeService =
139
+ (_a = this.config.personalizeService) !== null && _a !== void 0 ? _a : new personalize_1.GraphQLPersonalizeService({
140
+ clientFactory: this.getClientFactory(graphQLOptions),
141
+ timeout: this.config.edgeTimeout,
142
+ scope: this.config.scope,
143
+ fetch: fetch,
144
+ });
145
+ }
146
+ getExperienceParams(req) {
147
+ const extraParams = this.config.getExtraUtmParams ? this.config.getExtraUtmParams(req) : {};
148
+ const utm = Object.assign({ campaign: req.nextUrl.searchParams.get('utm_campaign') || undefined, content: req.nextUrl.searchParams.get('utm_content') || undefined, medium: req.nextUrl.searchParams.get('utm_medium') || undefined, source: req.nextUrl.searchParams.get('utm_source') || undefined }, extraParams);
149
+ return {
150
+ // It's expected that the header name "referer" is actually a misspelling of the word "referrer"
151
+ // req.referrer is used during fetching to determine the value of the Referer header of the request being made,
152
+ // used as a fallback
153
+ referrer: req.headers.get('referer') || req.referrer,
154
+ utm,
155
+ };
156
+ }
157
+ disabled(req, res) {
158
+ // ignore files
159
+ return req.nextUrl.pathname.includes('.') || super.disabled(req, res);
134
160
  }
135
161
  initPersonalizeServer(_a) {
136
162
  return __awaiter(this, arguments, void 0, function* ({ hostname, siteName, request, response, }) {
@@ -159,25 +185,6 @@ class PersonalizeMiddleware extends middleware_1.MiddlewareBase {
159
185
  }, { timeout }));
160
186
  });
161
187
  }
162
- getExperienceParams(req) {
163
- const utm = {
164
- campaign: req.nextUrl.searchParams.get('utm_campaign') || undefined,
165
- content: req.nextUrl.searchParams.get('utm_content') || undefined,
166
- medium: req.nextUrl.searchParams.get('utm_medium') || undefined,
167
- source: req.nextUrl.searchParams.get('utm_source') || undefined,
168
- };
169
- return {
170
- // It's expected that the header name "referer" is actually a misspelling of the word "referrer"
171
- // req.referrer is used during fetching to determine the value of the Referer header of the request being made,
172
- // used as a fallback
173
- referrer: req.headers.get('referer') || req.referrer,
174
- utm: utm,
175
- };
176
- }
177
- disabled(req, res) {
178
- // ignore files
179
- return req.nextUrl.pathname.includes('.') || super.disabled(req, res);
180
- }
181
188
  /**
182
189
  * Aggregates personalize executions based on the provided route personalize information and language
183
190
  * @param {PersonalizeInfo} personalizeInfo the route personalize information
@@ -30,6 +30,7 @@ class RedirectsMiddleware extends middleware_1.MiddlewareBase {
30
30
  * @param {RedirectsMiddlewareConfig} [config] redirects middleware config
31
31
  */
32
32
  constructor(config) {
33
+ var _a;
33
34
  super(config);
34
35
  this.config = config;
35
36
  this.handle = (req, res) => __awaiter(this, void 0, void 0, function* () {
@@ -140,9 +141,19 @@ class RedirectsMiddleware extends middleware_1.MiddlewareBase {
140
141
  return res;
141
142
  }
142
143
  });
144
+ const graphQLOptions = {
145
+ api: {
146
+ edge: {
147
+ contextId: this.config.contextId,
148
+ clientContextId: this.config.clientContextId,
149
+ edgeUrl: this.config.edgeUrl,
150
+ },
151
+ },
152
+ };
143
153
  // NOTE: we provide native fetch for compatibility on Next.js Edge Runtime
144
154
  // (underlying default 'cross-fetch' is not currently compatible: https://github.com/lquixada/cross-fetch/issues/78)
145
- this.redirectsService = new site_1.GraphQLRedirectsService(Object.assign(Object.assign({}, config), { fetch: fetch }));
155
+ this.redirectsService =
156
+ (_a = this.config.redirectsService) !== null && _a !== void 0 ? _a : new site_1.GraphQLRedirectsService(Object.assign(Object.assign({}, config), { clientFactory: this.getClientFactory(graphQLOptions), fetch: fetch }));
146
157
  this.locales = config.locales;
147
158
  }
148
159
  /**
@@ -242,9 +253,9 @@ class RedirectsMiddleware extends middleware_1.MiddlewareBase {
242
253
  return false;
243
254
  })
244
255
  .join('&');
245
- const newUrl = new URL(`${url.pathname}?${newQueryString}`, url.origin);
256
+ const newUrl = new URL(`${url.pathname.toLowerCase()}?${newQueryString}`, url.origin);
246
257
  url.search = newUrl.search;
247
- url.pathname = newUrl.pathname;
258
+ url.pathname = newUrl.pathname.toLocaleLowerCase();
248
259
  url.href = newUrl.href;
249
260
  return url;
250
261
  }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RobotsMiddleware = void 0;
13
+ /**
14
+ * Middleware for handling robots.txt requests in a Next.js application.
15
+ */
16
+ class RobotsMiddleware {
17
+ constructor(client) {
18
+ this.client = client;
19
+ }
20
+ getHandler() {
21
+ return this.handler.bind(this);
22
+ }
23
+ handler(req, res) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ var _a;
26
+ res.setHeader('Content-Type', 'text/plain');
27
+ const hostName = ((_a = req.headers.host) === null || _a === void 0 ? void 0 : _a.split(':')[0]) || 'localhost';
28
+ const site = this.client.resolveSite(hostName);
29
+ try {
30
+ const robotsContent = yield this.client.getRobots(site.name);
31
+ if (!robotsContent) {
32
+ return res.status(404).send('User-agent: *\nDisallow: /');
33
+ }
34
+ res.status(200).send(robotsContent);
35
+ }
36
+ catch (_b) {
37
+ res.status(500).send('Internal Server Error');
38
+ }
39
+ });
40
+ }
41
+ }
42
+ exports.RobotsMiddleware = RobotsMiddleware;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.extractComponents = void 0;
16
+ const chalk_1 = __importDefault(require("chalk"));
17
+ const utils_1 = require("./utils");
18
+ const core_1 = require("@sitecore-content-sdk/core");
19
+ const tools_1 = require("@sitecore-content-sdk/core/tools");
20
+ /**
21
+ * Extracts components from the app folder and sends them to XMCloud.
22
+ * @param {ExtractComponentsConfig} args - Config for components extraction
23
+ */
24
+ const extractComponents = (args) => {
25
+ const authParams = {
26
+ clientId: process.env.SITECORE_AUTH_CLIENT_ID || '',
27
+ clientSecret: process.env.SITECORE_AUTH_CLIENT_SECRET || '',
28
+ endpoint: process.env.SITECORE_AUTH_ENDPOINT || core_1.constants.DEFAULT_SITECORE_AUTH_ENDPOINT,
29
+ audience: process.env.SITECORE_AUTH_AUDIENCE || core_1.constants.DEFAULT_SITECORE_AUTH_AUDIENCE,
30
+ };
31
+ return () => __awaiter(void 0, void 0, void 0, function* () {
32
+ if (!(0, utils_1.validateDeployContext)()) {
33
+ console.log(chalk_1.default.yellow('Skipping code extraction, not in deploy context'));
34
+ return;
35
+ }
36
+ if (!(0, utils_1.validateConsent)()) {
37
+ console.log(chalk_1.default.yellow('Skipping code extraction, consent not given'));
38
+ return;
39
+ }
40
+ const basePath = process.cwd();
41
+ try {
42
+ const bearer = yield (0, tools_1.fetchBearerToken)(authParams);
43
+ if (!bearer) {
44
+ console.error(chalk_1.default.red('Failed to get bearer token, aborting code extraction'));
45
+ return;
46
+ }
47
+ const componentPaths = yield (0, utils_1.resolveComponentImportFiles)(basePath, args.componentMapPath);
48
+ const codeDispatches = Array.from(componentPaths, (mapEntry) => (0, utils_1.sendCode)({
49
+ file: {
50
+ name: mapEntry[0],
51
+ path: mapEntry[1],
52
+ type: utils_1.ExtractedFileType.Component,
53
+ },
54
+ token: bearer,
55
+ edgeUrl: args.scConfig.api.edge.edgeUrl,
56
+ }));
57
+ yield Promise.all(codeDispatches);
58
+ }
59
+ catch (error) {
60
+ console.error(chalk_1.default.red('Error during component extraction:', error));
61
+ }
62
+ });
63
+ };
64
+ exports.extractComponents = extractComponents;