@sitecore-content-sdk/nextjs 1.3.0-canary.9 → 1.4.0-canary.2

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 (234) hide show
  1. package/README.md +11 -11
  2. package/dist/cjs/client/index.js +10 -10
  3. package/dist/cjs/client/models.js +2 -2
  4. package/dist/cjs/client/sitecore-nextjs-client.js +160 -156
  5. package/dist/cjs/components/BYOCWrapper.js +31 -30
  6. package/dist/cjs/components/ComponentPropsContext.js +66 -59
  7. package/dist/cjs/components/FEaaSWrapper.js +33 -32
  8. package/dist/cjs/components/Link.js +117 -90
  9. package/dist/cjs/components/NextImage.js +66 -62
  10. package/dist/cjs/components/Placeholder.js +55 -50
  11. package/dist/cjs/components/RichText.js +133 -128
  12. package/dist/cjs/config/define-config.js +26 -25
  13. package/dist/cjs/config/index.js +5 -5
  14. package/dist/cjs/config-cli/define-cli-config.js +40 -39
  15. package/dist/cjs/config-cli/index.js +5 -5
  16. package/dist/cjs/editing/codegen/import-map.js +129 -118
  17. package/dist/cjs/editing/codegen/index.js +6 -6
  18. package/dist/cjs/editing/constants.js +10 -10
  19. package/dist/cjs/editing/editing-config-middleware.js +70 -69
  20. package/dist/cjs/editing/editing-render-middleware.js +145 -144
  21. package/dist/cjs/editing/feaas-render-middleware.js +102 -101
  22. package/dist/cjs/editing/index.js +19 -19
  23. package/dist/cjs/editing/render-middleware.js +46 -46
  24. package/dist/cjs/editing/utils.js +260 -257
  25. package/dist/cjs/index.js +132 -131
  26. package/dist/cjs/middleware/app-router-multisite-middleware.js +41 -20
  27. package/dist/cjs/middleware/index.js +30 -30
  28. package/dist/cjs/middleware/locale-middleware.js +85 -84
  29. package/dist/cjs/middleware/middleware.js +195 -192
  30. package/dist/cjs/middleware/multisite-middleware.js +141 -118
  31. package/dist/cjs/middleware/personalize-middleware.js +240 -236
  32. package/dist/cjs/middleware/redirects-middleware.js +323 -297
  33. package/dist/cjs/middleware/robots-middleware.js +45 -44
  34. package/dist/cjs/middleware/sitemap-middleware.js +50 -49
  35. package/dist/cjs/monitoring/healthcheck-middleware.js +31 -30
  36. package/dist/cjs/monitoring/index.js +5 -5
  37. package/dist/cjs/route-handler/editing-config-route-handler.js +110 -106
  38. package/dist/cjs/route-handler/editing-render-route-handler.js +270 -165
  39. package/dist/cjs/route-handler/index.js +11 -11
  40. package/dist/cjs/route-handler/robots-route-handler.js +69 -68
  41. package/dist/cjs/route-handler/sitemap-route-handler.js +66 -65
  42. package/dist/cjs/search/index.js +17 -0
  43. package/dist/cjs/services/component-props-service.js +142 -138
  44. package/dist/cjs/sharedTypes/component-props.js +2 -2
  45. package/dist/cjs/sharedTypes/sitecore-page-props.js +2 -2
  46. package/dist/cjs/site/index.js +5 -5
  47. package/dist/cjs/tools/codegen/import-map.js +15 -0
  48. package/dist/cjs/tools/component-props.loader.js +95 -95
  49. package/dist/cjs/tools/generate-map.js +317 -317
  50. package/dist/cjs/tools/index.js +14 -13
  51. package/dist/cjs/tools/templating/byoc-component.js +36 -36
  52. package/dist/cjs/tools/templating/constants.js +7 -7
  53. package/dist/cjs/tools/templating/default-component.js +35 -35
  54. package/dist/cjs/tools/templating/utils.js +200 -0
  55. package/dist/cjs/utils/index.js +14 -14
  56. package/dist/cjs/utils/utils.js +82 -73
  57. package/dist/esm/client/index.js +2 -2
  58. package/dist/esm/client/models.js +1 -1
  59. package/dist/esm/client/sitecore-nextjs-client.js +156 -152
  60. package/dist/esm/components/BYOCWrapper.js +27 -26
  61. package/dist/esm/components/ComponentPropsContext.js +28 -21
  62. package/dist/esm/components/FEaaSWrapper.js +29 -28
  63. package/dist/esm/components/Link.js +78 -51
  64. package/dist/esm/components/NextImage.js +60 -56
  65. package/dist/esm/components/Placeholder.js +18 -13
  66. package/dist/esm/components/RichText.js +96 -91
  67. package/dist/esm/config/define-config.js +21 -20
  68. package/dist/esm/config/index.js +1 -1
  69. package/dist/esm/config-cli/define-cli-config.js +36 -35
  70. package/dist/esm/config-cli/index.js +1 -1
  71. package/dist/esm/editing/codegen/import-map.js +92 -81
  72. package/dist/esm/editing/codegen/index.js +1 -1
  73. package/dist/esm/editing/constants.js +7 -7
  74. package/dist/esm/editing/editing-config-middleware.js +66 -65
  75. package/dist/esm/editing/editing-render-middleware.js +141 -140
  76. package/dist/esm/editing/feaas-render-middleware.js +98 -97
  77. package/dist/esm/editing/index.js +6 -6
  78. package/dist/esm/editing/render-middleware.js +42 -42
  79. package/dist/esm/editing/utils.js +246 -243
  80. package/dist/esm/index.js +25 -25
  81. package/dist/esm/middleware/app-router-multisite-middleware.js +37 -16
  82. package/dist/esm/middleware/index.js +11 -11
  83. package/dist/esm/middleware/locale-middleware.js +81 -80
  84. package/dist/esm/middleware/middleware.js +189 -186
  85. package/dist/esm/middleware/multisite-middleware.js +137 -114
  86. package/dist/esm/middleware/personalize-middleware.js +236 -232
  87. package/dist/esm/middleware/redirects-middleware.js +316 -290
  88. package/dist/esm/middleware/robots-middleware.js +41 -40
  89. package/dist/esm/middleware/sitemap-middleware.js +46 -45
  90. package/dist/esm/monitoring/healthcheck-middleware.js +27 -26
  91. package/dist/esm/monitoring/index.js +1 -1
  92. package/dist/esm/route-handler/editing-config-route-handler.js +106 -102
  93. package/dist/esm/route-handler/editing-render-route-handler.js +265 -160
  94. package/dist/esm/route-handler/index.js +4 -4
  95. package/dist/esm/route-handler/robots-route-handler.js +65 -64
  96. package/dist/esm/route-handler/sitemap-route-handler.js +63 -62
  97. package/dist/esm/search/index.js +1 -0
  98. package/dist/esm/services/component-props-service.js +135 -131
  99. package/dist/esm/sharedTypes/component-props.js +1 -1
  100. package/dist/esm/sharedTypes/sitecore-page-props.js +1 -1
  101. package/dist/esm/site/index.js +1 -1
  102. package/dist/esm/tools/codegen/import-map.js +11 -0
  103. package/dist/esm/tools/component-props.loader.js +59 -59
  104. package/dist/esm/tools/generate-map.js +279 -279
  105. package/dist/esm/tools/index.js +3 -2
  106. package/dist/esm/tools/templating/byoc-component.js +30 -30
  107. package/dist/esm/tools/templating/constants.js +4 -4
  108. package/dist/esm/tools/templating/default-component.js +29 -29
  109. package/dist/esm/tools/templating/utils.js +190 -0
  110. package/dist/esm/utils/index.js +3 -3
  111. package/dist/esm/utils/utils.js +74 -65
  112. package/package.json +87 -13
  113. package/search.d.ts +1 -0
  114. package/types/client/index.d.ts +3 -2
  115. package/types/client/index.d.ts.map +1 -0
  116. package/types/client/models.d.ts +9 -8
  117. package/types/client/models.d.ts.map +1 -0
  118. package/types/client/sitecore-nextjs-client.d.ts +68 -63
  119. package/types/client/sitecore-nextjs-client.d.ts.map +1 -0
  120. package/types/components/BYOCWrapper.d.ts +16 -14
  121. package/types/components/BYOCWrapper.d.ts.map +1 -0
  122. package/types/components/ComponentPropsContext.d.ts +30 -18
  123. package/types/components/ComponentPropsContext.d.ts.map +1 -0
  124. package/types/components/FEaaSWrapper.d.ts +17 -15
  125. package/types/components/FEaaSWrapper.d.ts.map +1 -0
  126. package/types/components/Link.d.ts +25 -15
  127. package/types/components/Link.d.ts.map +1 -0
  128. package/types/components/NextImage.d.ts +11 -6
  129. package/types/components/NextImage.d.ts.map +1 -0
  130. package/types/components/Placeholder.d.ts +14 -8
  131. package/types/components/Placeholder.d.ts.map +1 -0
  132. package/types/components/RichText.d.ts +35 -25
  133. package/types/components/RichText.d.ts.map +1 -0
  134. package/types/config/define-config.d.ts +42 -38
  135. package/types/config/define-config.d.ts.map +1 -0
  136. package/types/config/index.d.ts +2 -1
  137. package/types/config/index.d.ts.map +1 -0
  138. package/types/config-cli/define-cli-config.d.ts +10 -8
  139. package/types/config-cli/define-cli-config.d.ts.map +1 -0
  140. package/types/config-cli/index.d.ts +2 -1
  141. package/types/config-cli/index.d.ts.map +1 -0
  142. package/types/editing/codegen/import-map.d.ts +15 -3
  143. package/types/editing/codegen/import-map.d.ts.map +1 -0
  144. package/types/editing/codegen/index.d.ts +3 -2
  145. package/types/editing/codegen/index.d.ts.map +1 -0
  146. package/types/editing/constants.d.ts +8 -7
  147. package/types/editing/constants.d.ts.map +1 -0
  148. package/types/editing/editing-config-middleware.d.ts +37 -31
  149. package/types/editing/editing-config-middleware.d.ts.map +1 -0
  150. package/types/editing/editing-render-middleware.d.ts +47 -44
  151. package/types/editing/editing-render-middleware.d.ts.map +1 -0
  152. package/types/editing/feaas-render-middleware.d.ts +35 -32
  153. package/types/editing/feaas-render-middleware.d.ts.map +1 -0
  154. package/types/editing/index.d.ts +7 -6
  155. package/types/editing/index.d.ts.map +1 -0
  156. package/types/editing/render-middleware.d.ts +26 -25
  157. package/types/editing/render-middleware.d.ts.map +1 -0
  158. package/types/editing/utils.d.ts +110 -106
  159. package/types/editing/utils.d.ts.map +1 -0
  160. package/types/index.d.ts +25 -24
  161. package/types/index.d.ts.map +1 -0
  162. package/types/middleware/app-router-multisite-middleware.d.ts +28 -13
  163. package/types/middleware/app-router-multisite-middleware.d.ts.map +1 -0
  164. package/types/middleware/index.d.ts +12 -11
  165. package/types/middleware/index.d.ts.map +1 -0
  166. package/types/middleware/locale-middleware.d.ts +35 -32
  167. package/types/middleware/locale-middleware.d.ts.map +1 -0
  168. package/types/middleware/middleware.d.ts +135 -127
  169. package/types/middleware/middleware.d.ts.map +1 -0
  170. package/types/middleware/multisite-middleware.d.ts +54 -37
  171. package/types/middleware/multisite-middleware.d.ts.map +1 -0
  172. package/types/middleware/personalize-middleware.d.ts +81 -65
  173. package/types/middleware/personalize-middleware.d.ts.map +1 -0
  174. package/types/middleware/redirects-middleware.d.ts +68 -65
  175. package/types/middleware/redirects-middleware.d.ts.map +1 -0
  176. package/types/middleware/robots-middleware.d.ts +15 -13
  177. package/types/middleware/robots-middleware.d.ts.map +1 -0
  178. package/types/middleware/sitemap-middleware.d.ts +16 -14
  179. package/types/middleware/sitemap-middleware.d.ts.map +1 -0
  180. package/types/monitoring/healthcheck-middleware.d.ts +14 -12
  181. package/types/monitoring/healthcheck-middleware.d.ts.map +1 -0
  182. package/types/monitoring/index.d.ts +2 -1
  183. package/types/monitoring/index.d.ts.map +1 -0
  184. package/types/route-handler/editing-config-route-handler.d.ts +30 -24
  185. package/types/route-handler/editing-config-route-handler.d.ts.map +1 -0
  186. package/types/route-handler/editing-render-route-handler.d.ts +33 -25
  187. package/types/route-handler/editing-render-route-handler.d.ts.map +1 -0
  188. package/types/route-handler/index.d.ts +5 -4
  189. package/types/route-handler/index.d.ts.map +1 -0
  190. package/types/route-handler/robots-route-handler.d.ts +30 -28
  191. package/types/route-handler/robots-route-handler.d.ts.map +1 -0
  192. package/types/route-handler/sitemap-route-handler.d.ts +30 -28
  193. package/types/route-handler/sitemap-route-handler.d.ts.map +1 -0
  194. package/types/search/index.d.ts +2 -0
  195. package/types/search/index.d.ts.map +1 -0
  196. package/types/services/component-props-service.d.ts +62 -57
  197. package/types/services/component-props-service.d.ts.map +1 -0
  198. package/types/sharedTypes/component-props.d.ts +62 -47
  199. package/types/sharedTypes/component-props.d.ts.map +1 -0
  200. package/types/sharedTypes/sitecore-page-props.d.ts +14 -9
  201. package/types/sharedTypes/sitecore-page-props.d.ts.map +1 -0
  202. package/types/site/index.d.ts +2 -1
  203. package/types/site/index.d.ts.map +1 -0
  204. package/types/tools/codegen/import-map.d.ts +10 -0
  205. package/types/tools/codegen/import-map.d.ts.map +1 -0
  206. package/types/tools/component-props.loader.d.ts +8 -7
  207. package/types/tools/component-props.loader.d.ts.map +1 -0
  208. package/types/tools/generate-map.d.ts +26 -24
  209. package/types/tools/generate-map.d.ts.map +1 -0
  210. package/types/tools/index.d.ts +4 -2
  211. package/types/tools/index.d.ts.map +1 -0
  212. package/types/tools/templating/byoc-component.d.ts +3 -2
  213. package/types/tools/templating/byoc-component.d.ts.map +1 -0
  214. package/types/tools/templating/constants.d.ts +5 -4
  215. package/types/tools/templating/constants.d.ts.map +1 -0
  216. package/types/tools/templating/default-component.d.ts +3 -2
  217. package/types/tools/templating/default-component.d.ts.map +1 -0
  218. package/types/tools/templating/utils.d.ts +44 -0
  219. package/types/tools/templating/utils.d.ts.map +1 -0
  220. package/types/utils/index.d.ts +4 -3
  221. package/types/utils/index.d.ts.map +1 -0
  222. package/types/utils/utils.d.ts +34 -24
  223. package/types/utils/utils.d.ts.map +1 -0
  224. package/client.js +0 -1
  225. package/codegen.js +0 -1
  226. package/config-cli.js +0 -1
  227. package/config.js +0 -1
  228. package/editing.js +0 -1
  229. package/middleware.js +0 -1
  230. package/monitoring.js +0 -1
  231. package/route-handler.js +0 -1
  232. package/site.js +0 -1
  233. package/tools.js +0 -1
  234. package/utils.js +0 -1
@@ -1,13 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateMap = exports.writeImportMap = exports.extractFiles = exports.ModuleType = exports.generatePlugins = exports.getComponentList = exports.generateMetadata = exports.generateSites = void 0;
4
- var tools_1 = require("@sitecore-content-sdk/core/tools");
5
- Object.defineProperty(exports, "generateSites", { enumerable: true, get: function () { return tools_1.generateSites; } });
6
- Object.defineProperty(exports, "generateMetadata", { enumerable: true, get: function () { return tools_1.generateMetadata; } });
7
- Object.defineProperty(exports, "getComponentList", { enumerable: true, get: function () { return tools_1.getComponentList; } });
8
- Object.defineProperty(exports, "generatePlugins", { enumerable: true, get: function () { return tools_1.generatePlugins; } });
9
- Object.defineProperty(exports, "ModuleType", { enumerable: true, get: function () { return tools_1.ModuleType; } });
10
- Object.defineProperty(exports, "extractFiles", { enumerable: true, get: function () { return tools_1.extractFiles; } });
11
- Object.defineProperty(exports, "writeImportMap", { enumerable: true, get: function () { return tools_1.writeImportMap; } });
12
- var generate_map_1 = require("./generate-map");
13
- Object.defineProperty(exports, "generateMap", { enumerable: true, get: function () { return generate_map_1.generateMap; } });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.writeImportMap = exports.generateMap = exports.extractFiles = exports.ModuleType = exports.generatePlugins = exports.getComponentList = exports.generateMetadata = exports.generateSites = void 0;
4
+ var tools_1 = require("@sitecore-content-sdk/core/tools");
5
+ Object.defineProperty(exports, "generateSites", { enumerable: true, get: function () { return tools_1.generateSites; } });
6
+ Object.defineProperty(exports, "generateMetadata", { enumerable: true, get: function () { return tools_1.generateMetadata; } });
7
+ Object.defineProperty(exports, "getComponentList", { enumerable: true, get: function () { return tools_1.getComponentList; } });
8
+ Object.defineProperty(exports, "generatePlugins", { enumerable: true, get: function () { return tools_1.generatePlugins; } });
9
+ Object.defineProperty(exports, "ModuleType", { enumerable: true, get: function () { return tools_1.ModuleType; } });
10
+ Object.defineProperty(exports, "extractFiles", { enumerable: true, get: function () { return tools_1.extractFiles; } });
11
+ var generate_map_1 = require("./generate-map");
12
+ Object.defineProperty(exports, "generateMap", { enumerable: true, get: function () { return generate_map_1.generateMap; } });
13
+ var import_map_1 = require("./codegen/import-map");
14
+ Object.defineProperty(exports, "writeImportMap", { enumerable: true, get: function () { return import_map_1.writeImportMap; } });
@@ -1,18 +1,18 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.byocTemplate = void 0;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const config_1 = require("@sitecore-content-sdk/core/config");
9
- const constants_1 = require("./constants");
10
- /**
11
- * Next.js BYOC component boilerplate
12
- * @param {string} componentName - the component name
13
- * @returns component generated template
14
- */
15
- const generateTemplate = (componentName) => {
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.byocTemplate = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const config_1 = require("@sitecore-content-sdk/core/config");
9
+ const constants_1 = require("./constants");
10
+ /**
11
+ * Next.js BYOC component boilerplate
12
+ * @param {string} componentName - the component name
13
+ * @returns component generated template
14
+ */
15
+ const generateTemplate = (componentName) => {
16
16
  return `import React from 'react';
17
17
  import * as FEAAS from '@sitecore-feaas/clientside/react';
18
18
 
@@ -52,24 +52,24 @@ FEAAS.External.registerComponent(${componentName}, {
52
52
  },
53
53
  },
54
54
  });
55
- `;
56
- };
57
- /**
58
- * Generates a list of next steps when scaffolding a component.
59
- * @param {string} componentOutputPath - The file path where the component file is generated.
60
- * @returns {string[]} An array of strings, each representing a next step.
61
- */
62
- const getNextSteps = (componentOutputPath) => {
63
- const nextSteps = [];
64
- nextSteps.push('* Modify component registration through FEAAS.External.registerComponent if needed');
65
- if (componentOutputPath) {
66
- nextSteps.push(`* Implement the component in ${chalk_1.default.green(componentOutputPath)}`);
67
- }
68
- return nextSteps;
69
- };
70
- exports.byocTemplate = {
71
- name: config_1.ComponentTemplateType.BYOC,
72
- fileExtension: constants_1.COMPONENT_FILE_EXTENSION,
73
- generateTemplate,
74
- getNextSteps,
75
- };
55
+ `;
56
+ };
57
+ /**
58
+ * Generates a list of next steps when scaffolding a component.
59
+ * @param {string} componentOutputPath - The file path where the component file is generated.
60
+ * @returns {string[]} An array of strings, each representing a next step.
61
+ */
62
+ const getNextSteps = (componentOutputPath) => {
63
+ const nextSteps = [];
64
+ nextSteps.push('* Modify component registration through FEAAS.External.registerComponent if needed');
65
+ if (componentOutputPath) {
66
+ nextSteps.push(`* Implement the component in ${chalk_1.default.green(componentOutputPath)}`);
67
+ }
68
+ return nextSteps;
69
+ };
70
+ exports.byocTemplate = {
71
+ name: config_1.ComponentTemplateType.BYOC,
72
+ fileExtension: constants_1.COMPONENT_FILE_EXTENSION,
73
+ generateTemplate,
74
+ getNextSteps,
75
+ };
@@ -1,7 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.COMPONENT_FILE_EXTENSION = void 0;
4
- /**
5
- * The file extension for nextjs components
6
- */
7
- exports.COMPONENT_FILE_EXTENSION = 'tsx';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.COMPONENT_FILE_EXTENSION = void 0;
4
+ /**
5
+ * The file extension for nextjs components
6
+ */
7
+ exports.COMPONENT_FILE_EXTENSION = 'tsx';
@@ -1,18 +1,18 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.defaultTemplate = void 0;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const config_1 = require("@sitecore-content-sdk/core/config");
9
- const constants_1 = require("./constants");
10
- /**
11
- * Next.js component boilerplate
12
- * @param {string} componentName - the component name
13
- * @returns component generated template
14
- */
15
- const generateTemplate = (componentName) => {
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.defaultTemplate = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const config_1 = require("@sitecore-content-sdk/core/config");
9
+ const constants_1 = require("./constants");
10
+ /**
11
+ * Next.js component boilerplate
12
+ * @param {string} componentName - the component name
13
+ * @returns component generated template
14
+ */
15
+ const generateTemplate = (componentName) => {
16
16
  return `import React from 'react';
17
17
  import { ComponentParams, ComponentRendering } from '@sitecore-content-sdk/nextjs';
18
18
 
@@ -32,23 +32,23 @@ export const Default = (props: ${componentName}Props): JSX.Element => {
32
32
  </div>
33
33
  );
34
34
  };
35
- `;
36
- };
37
- /**
38
- * Generates a list of next steps when scaffolding a component.
39
- * @param {string} componentOutputPath - The file path where the component file is generated.
40
- * @returns {string[]} An array of strings, each representing a next step.
41
- */
42
- const getNextSteps = (componentOutputPath) => {
43
- const nextSteps = [];
44
- if (componentOutputPath) {
45
- nextSteps.push(`* Implement the React component in ${chalk_1.default.green(componentOutputPath)}`);
46
- }
47
- return nextSteps;
48
- };
49
- exports.defaultTemplate = {
50
- name: config_1.ComponentTemplateType.DEFAULT,
51
- fileExtension: constants_1.COMPONENT_FILE_EXTENSION,
52
- generateTemplate,
53
- getNextSteps,
54
- };
35
+ `;
36
+ };
37
+ /**
38
+ * Generates a list of next steps when scaffolding a component.
39
+ * @param {string} componentOutputPath - The file path where the component file is generated.
40
+ * @returns {string[]} An array of strings, each representing a next step.
41
+ */
42
+ const getNextSteps = (componentOutputPath) => {
43
+ const nextSteps = [];
44
+ if (componentOutputPath) {
45
+ nextSteps.push(`* Implement the React component in ${chalk_1.default.green(componentOutputPath)}`);
46
+ }
47
+ return nextSteps;
48
+ };
49
+ exports.defaultTemplate = {
50
+ name: config_1.ComponentTemplateType.DEFAULT,
51
+ fileExtension: constants_1.COMPONENT_FILE_EXTENSION,
52
+ generateTemplate,
53
+ getNextSteps,
54
+ };
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.detectRouterType = detectRouterType;
7
+ exports.detectComponentType = detectComponentType;
8
+ exports.getComponentListWithTypes = getComponentListWithTypes;
9
+ exports.nextjsClientMapTemplate = nextjsClientMapTemplate;
10
+ exports.nextjsDefaultMapTemplate = nextjsDefaultMapTemplate;
11
+ const tools_1 = require("@sitecore-content-sdk/core/tools");
12
+ const typescript_1 = __importDefault(require("typescript"));
13
+ const fs_1 = __importDefault(require("fs"));
14
+ const tools_2 = require("@sitecore-content-sdk/core/tools");
15
+ /**
16
+ * Detects the Next.js router type (App Router or Pages Router) based on directory structure.
17
+ * @param {string} projectRoot - The project root directory. Defaults to current working directory.
18
+ * @returns {RouterType} 'app' if App Router is detected, 'pages' otherwise
19
+ * @internal
20
+ */
21
+ function detectRouterType(projectRoot = process.cwd()) {
22
+ const appDirExists = fs_1.default.existsSync(`${projectRoot}/src/app`) || fs_1.default.existsSync(`${projectRoot}/app`);
23
+ const pagesDirExists = fs_1.default.existsSync(`${projectRoot}/src/pages`) || fs_1.default.existsSync(`${projectRoot}/pages`);
24
+ if (appDirExists) {
25
+ return 'app';
26
+ }
27
+ if (pagesDirExists) {
28
+ return 'pages';
29
+ }
30
+ return 'pages';
31
+ }
32
+ /**
33
+ * Detects the component type based on directives, imports, and router context.
34
+ * - Checks for 'use client' directive
35
+ * - Checks for explicit componentType export
36
+ * - Checks for server-only imports (next/headers, etc.)
37
+ * - Defaults to 'server' for App Router, 'universal' for Pages Router
38
+ * @param {string} filePath - Path to the component file
39
+ * @param {RouterType} [routerType] - Optional router type override. Auto-detected if not provided.
40
+ * @returns {ComponentType} 'server', 'client', or 'universal'
41
+ * @internal
42
+ */
43
+ function detectComponentType(filePath, routerType) {
44
+ try {
45
+ const content = fs_1.default.readFileSync(filePath, 'utf-8');
46
+ // Parse using TypeScript AST (following patterns from import-map.ts and utils.ts)
47
+ const sourceFile = typescript_1.default.createSourceFile(filePath, content, typescript_1.default.ScriptTarget.Latest, true);
48
+ let hasUseClientDirective = false;
49
+ let explicitComponentType = null;
50
+ let hasServerOnlyImports = false;
51
+ // Auto-detect router type if not provided
52
+ const detectedRouterType = routerType || detectRouterType();
53
+ // Track position to ensure directives come before imports/other statements
54
+ let foundFirstNonDirectiveStatement = false;
55
+ // Helper function to check if a node is a valid directive
56
+ const isValidDirective = (node) => {
57
+ return (typescript_1.default.isExpressionStatement(node) &&
58
+ typescript_1.default.isStringLiteral(node.expression) &&
59
+ !foundFirstNonDirectiveStatement);
60
+ };
61
+ // More comprehensive AST traversal (following patterns from import-map.ts and utils.ts)
62
+ const traverseNode = (node) => {
63
+ var _a;
64
+ // Check for 'use client'/'use server' directives (must be at top, before imports)
65
+ if (isValidDirective(node) &&
66
+ typescript_1.default.isStringLiteral(node.expression)) {
67
+ const directiveText = node.expression
68
+ .text;
69
+ if (directiveText === 'use client') {
70
+ hasUseClientDirective = true;
71
+ return; // Don't mark as non-directive statement
72
+ }
73
+ if (directiveText === 'use server') {
74
+ explicitComponentType = 'server';
75
+ return; // Don't mark as non-directive statement
76
+ }
77
+ }
78
+ // Mark that we've seen a non-directive statement (imports, declarations, etc.)
79
+ if (typescript_1.default.isImportDeclaration(node) ||
80
+ typescript_1.default.isVariableStatement(node) ||
81
+ typescript_1.default.isFunctionDeclaration(node) ||
82
+ typescript_1.default.isExportDeclaration(node) ||
83
+ typescript_1.default.isExportAssignment(node)) {
84
+ foundFirstNonDirectiveStatement = true;
85
+ }
86
+ // Check for import declarations with server-only modules
87
+ if (typescript_1.default.isImportDeclaration(node)) {
88
+ const moduleSpecifier = node.moduleSpecifier;
89
+ if (typescript_1.default.isStringLiteral(moduleSpecifier)) {
90
+ const importPath = moduleSpecifier.text;
91
+ // Expand server-only module detection
92
+ if (importPath === 'next/headers' ||
93
+ importPath === 'server-only' ||
94
+ importPath === 'next/cache' ||
95
+ importPath === 'next/cookies' ||
96
+ importPath.startsWith('node:') ||
97
+ importPath === 'fs' ||
98
+ importPath === 'path') {
99
+ hasServerOnlyImports = true;
100
+ }
101
+ }
102
+ }
103
+ // Check for explicit componentType export (improved detection)
104
+ if (typescript_1.default.isVariableStatement(node)) {
105
+ const hasExportModifier = (_a = node.modifiers) === null || _a === void 0 ? void 0 : _a.some((modifier) => modifier.kind === typescript_1.default.SyntaxKind.ExportKeyword);
106
+ if (hasExportModifier) {
107
+ node.declarationList.declarations.forEach((declaration) => {
108
+ if (typescript_1.default.isIdentifier(declaration.name) &&
109
+ declaration.name.text === 'componentType' &&
110
+ declaration.initializer) {
111
+ // Handle string literal
112
+ if (typescript_1.default.isStringLiteral(declaration.initializer)) {
113
+ const typeValue = declaration.initializer.text;
114
+ if (typeValue === 'server' || typeValue === 'client' || typeValue === 'universal') {
115
+ explicitComponentType = typeValue;
116
+ }
117
+ }
118
+ // Handle template literal (e.g., `client`)
119
+ else if (typescript_1.default.isNoSubstitutionTemplateLiteral(declaration.initializer)) {
120
+ const typeValue = declaration.initializer.text;
121
+ if (typeValue === 'server' || typeValue === 'client' || typeValue === 'universal') {
122
+ explicitComponentType = typeValue;
123
+ }
124
+ }
125
+ }
126
+ });
127
+ }
128
+ }
129
+ // Check for named export of componentType (export const componentType = ...)
130
+ if (typescript_1.default.isExportDeclaration(node) &&
131
+ node.exportClause &&
132
+ typescript_1.default.isNamedExports(node.exportClause)) {
133
+ node.exportClause.elements.forEach((exportSpecifier) => {
134
+ if (exportSpecifier.name.text === 'componentType') {
135
+ // This would need additional logic to resolve the actual value, but for now
136
+ // we'll rely on the variable declaration detection above
137
+ }
138
+ });
139
+ }
140
+ // Recursively traverse child nodes (following import-map.ts pattern)
141
+ typescript_1.default.forEachChild(node, traverseNode);
142
+ };
143
+ // Start traversal from the source file (following utils.ts pattern)
144
+ typescript_1.default.forEachChild(sourceFile, traverseNode);
145
+ // Priority: explicit componentType export > use client/server directives > server-only imports > universal default
146
+ if (explicitComponentType) {
147
+ return explicitComponentType;
148
+ }
149
+ if (hasUseClientDirective) {
150
+ return 'client';
151
+ }
152
+ if (hasServerOnlyImports) {
153
+ return 'server';
154
+ }
155
+ // Router-aware defaults:
156
+ // - App Router: defaults to server (RSC by default)
157
+ // - Pages Router: defaults to universal (isomorphic by default)
158
+ if (detectedRouterType === 'app') {
159
+ return 'server';
160
+ }
161
+ else {
162
+ return 'universal';
163
+ }
164
+ }
165
+ catch (error) {
166
+ console.warn(`Failed to parse component file ${filePath}, defaulting to universal:`, error);
167
+ return 'universal';
168
+ }
169
+ }
170
+ /**
171
+ * Get list of components with detected types (server, client, or universal).
172
+ * @param {string[]} paths - Paths to search for components
173
+ * @param {string[]} [exclude] - Paths and glob patterns to exclude from final result
174
+ * @param {boolean} includeVariants - Whether to include variant components
175
+ * @param {RouterType} [routerType] - Optional router type override for type detection. Auto-detected if not provided.
176
+ * @returns {ComponentFileWithType[]} Array of components with their detected types
177
+ * @internal
178
+ */
179
+ function getComponentListWithTypes(paths, exclude, includeVariants, routerType) {
180
+ const components = (0, tools_1.getComponentList)(paths, exclude, includeVariants);
181
+ const detectedRouterType = routerType || detectRouterType();
182
+ return components.map((component) => (Object.assign(Object.assign({}, component), { componentType: detectComponentType(component.filePath, detectedRouterType) })));
183
+ }
184
+ /**
185
+ * React-specific import map template with 'use client' directive. Used in App Router.
186
+ * @param {Map<string, ModuleExports>} indexedImportMap import map to be processed into final import-map.client.ts file
187
+ * @returns {string} contents for resulting import map file
188
+ */
189
+ function nextjsClientMapTemplate(indexedImportMap) {
190
+ return `'use client';
191
+ ${(0, tools_2.defaultImportMapTemplate)(indexedImportMap, 'nextjs')}`;
192
+ }
193
+ /**
194
+ * React-specific import map template with 'use client' directive. Used in App Router.
195
+ * @param {Map<string, ModuleExports>} indexedImportMap import map to be processed into final import-map.client.ts file
196
+ * @returns {string} contents for resulting import map file
197
+ */
198
+ function nextjsDefaultMapTemplate(indexedImportMap) {
199
+ return (0, tools_2.defaultImportMapTemplate)(indexedImportMap, 'nextjs');
200
+ }
@@ -1,14 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resetEditorChromes = exports.isEditorActive = exports.resolveUrl = exports.tryParseEnvValue = exports.parseRewriteHeader = exports.isServerSidePropsContext = exports.extractPath = exports.handleEditorFastRefresh = void 0;
4
- var utils_1 = require("./utils");
5
- Object.defineProperty(exports, "handleEditorFastRefresh", { enumerable: true, get: function () { return utils_1.handleEditorFastRefresh; } });
6
- Object.defineProperty(exports, "extractPath", { enumerable: true, get: function () { return utils_1.extractPath; } });
7
- Object.defineProperty(exports, "isServerSidePropsContext", { enumerable: true, get: function () { return utils_1.isServerSidePropsContext; } });
8
- Object.defineProperty(exports, "parseRewriteHeader", { enumerable: true, get: function () { return utils_1.parseRewriteHeader; } });
9
- var utils_2 = require("@sitecore-content-sdk/core/utils");
10
- Object.defineProperty(exports, "tryParseEnvValue", { enumerable: true, get: function () { return utils_2.tryParseEnvValue; } });
11
- Object.defineProperty(exports, "resolveUrl", { enumerable: true, get: function () { return utils_2.resolveUrl; } });
12
- var editing_1 = require("@sitecore-content-sdk/core/editing");
13
- Object.defineProperty(exports, "isEditorActive", { enumerable: true, get: function () { return editing_1.isEditorActive; } });
14
- Object.defineProperty(exports, "resetEditorChromes", { enumerable: true, get: function () { return editing_1.resetEditorChromes; } });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resetEditorChromes = exports.isEditorActive = exports.resolveUrl = exports.tryParseEnvValue = exports.parseRewriteHeader = exports.isServerSidePropsContext = exports.extractPath = exports.handleEditorFastRefresh = void 0;
4
+ var utils_1 = require("./utils");
5
+ Object.defineProperty(exports, "handleEditorFastRefresh", { enumerable: true, get: function () { return utils_1.handleEditorFastRefresh; } });
6
+ Object.defineProperty(exports, "extractPath", { enumerable: true, get: function () { return utils_1.extractPath; } });
7
+ Object.defineProperty(exports, "isServerSidePropsContext", { enumerable: true, get: function () { return utils_1.isServerSidePropsContext; } });
8
+ Object.defineProperty(exports, "parseRewriteHeader", { enumerable: true, get: function () { return utils_1.parseRewriteHeader; } });
9
+ var utils_2 = require("@sitecore-content-sdk/core/utils");
10
+ Object.defineProperty(exports, "tryParseEnvValue", { enumerable: true, get: function () { return utils_2.tryParseEnvValue; } });
11
+ Object.defineProperty(exports, "resolveUrl", { enumerable: true, get: function () { return utils_2.resolveUrl; } });
12
+ var editing_1 = require("@sitecore-content-sdk/core/editing");
13
+ Object.defineProperty(exports, "isEditorActive", { enumerable: true, get: function () { return editing_1.isEditorActive; } });
14
+ Object.defineProperty(exports, "resetEditorChromes", { enumerable: true, get: function () { return editing_1.resetEditorChromes; } });
@@ -1,73 +1,82 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseRewriteHeader = exports.isServerSidePropsContext = exports.extractPath = exports.getEditingSecret = exports.handleEditorFastRefresh = void 0;
4
- const editing_1 = require("@sitecore-content-sdk/core/editing");
5
- const middleware_1 = require("../middleware/middleware");
6
- /**
7
- * Since Sitecore editors do not support Fast Refresh:
8
- * 1. Subscribe on events provided by webpack.
9
- * 2. Reset editor chromes when build is finished
10
- * @param {boolean} [forceReload] force page reload instead of reset chromes
11
- */
12
- const handleEditorFastRefresh = (forceReload = false) => {
13
- if (process.env.NODE_ENV !== 'development' || !(0, editing_1.isEditorActive)()) {
14
- // Only run if development mode and editor is active
15
- return;
16
- }
17
- const eventSource = new window.EventSource('/_next/webpack-hmr');
18
- window.addEventListener('beforeunload', () => eventSource.close());
19
- eventSource.onopen = () => console.log('[Sitecore Editor Fast Refresh Listener] Online');
20
- eventSource.onmessage = (event) => {
21
- if (event.data.indexOf('{') === -1)
22
- return; // heartbeat
23
- const payload = JSON.parse(event.data);
24
- console.debug(`[Sitecore Editor Fast Refresh Listener] Saw event: ${JSON.stringify(payload)}`);
25
- if (payload.action !== 'built')
26
- return;
27
- if (forceReload)
28
- return window.location.reload();
29
- setTimeout(() => {
30
- console.log('[Sitecore Editor HMR Listener] Sitecore editor does not support Fast Refresh, reloading chromes...');
31
- (0, editing_1.resetEditorChromes)();
32
- }, 500);
33
- };
34
- };
35
- exports.handleEditorFastRefresh = handleEditorFastRefresh;
36
- const getEditingSecret = () => {
37
- const secret = process.env.SITECORE_EDITING_SECRET;
38
- if (!secret || secret.length === 0) {
39
- throw new Error('The SITECORE_EDITING_SECRET environment variable is missing or invalid.');
40
- }
41
- return secret;
42
- };
43
- exports.getEditingSecret = getEditingSecret;
44
- const extractPath = (context) => {
45
- var _a;
46
- return context.params === undefined
47
- ? '/'
48
- : Array.isArray(context.params.path)
49
- ? context.params.path.join('/')
50
- : (_a = context.params.path) !== null && _a !== void 0 ? _a : '/';
51
- };
52
- exports.extractPath = extractPath;
53
- /**
54
- * Determines whether context is GetServerSidePropsContext (SSR) or GetStaticPropsContext (SSG)
55
- * @param {GetServerSidePropsContext | GetStaticPropsContext} context
56
- */
57
- const isServerSidePropsContext = (context) => {
58
- return context.req !== undefined;
59
- };
60
- exports.isServerSidePropsContext = isServerSidePropsContext;
61
- /**
62
- * For App Router application, extracts the site and locale information from the rewrite header which is in format /[site]/[locale]/[...path].
63
- * @param {Headers} headers - The `Headers` object containing the rewrite header.
64
- * @returns An object containing the `site` and `locale` extracted from the rewrite header.
65
- */
66
- const parseRewriteHeader = (headers) => {
67
- const rewriteHeader = headers.get(middleware_1.REWRITE_HEADER_NAME);
68
- const rewriteSegments = (rewriteHeader === null || rewriteHeader === void 0 ? void 0 : rewriteHeader.split('/').filter((segment) => segment)) || [];
69
- const site = rewriteSegments[0];
70
- const locale = rewriteSegments[1];
71
- return { site, locale };
72
- };
73
- exports.parseRewriteHeader = parseRewriteHeader;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseRewriteHeader = exports.isServerSidePropsContext = exports.extractPath = exports.getEditingSecret = exports.handleEditorFastRefresh = void 0;
4
+ const editing_1 = require("@sitecore-content-sdk/core/editing");
5
+ const middleware_1 = require("../middleware/middleware");
6
+ /**
7
+ * Since Sitecore editors do not support Fast Refresh:
8
+ * 1. Subscribe on events provided by webpack.
9
+ * 2. Reset editor chromes when build is finished
10
+ * @param {boolean} [forceReload] force page reload instead of reset chromes
11
+ * @public
12
+ */
13
+ const handleEditorFastRefresh = (forceReload = false) => {
14
+ if (process.env.NODE_ENV !== 'development' || !(0, editing_1.isEditorActive)()) {
15
+ // Only run if development mode and editor is active
16
+ return;
17
+ }
18
+ const eventSource = new window.EventSource('/_next/webpack-hmr');
19
+ window.addEventListener('beforeunload', () => eventSource.close());
20
+ eventSource.onopen = () => console.log('[Sitecore Editor Fast Refresh Listener] Online');
21
+ eventSource.onmessage = (event) => {
22
+ if (event.data.indexOf('{') === -1)
23
+ return; // heartbeat
24
+ const payload = JSON.parse(event.data);
25
+ console.debug(`[Sitecore Editor Fast Refresh Listener] Saw event: ${JSON.stringify(payload)}`);
26
+ if (payload.action !== 'built')
27
+ return;
28
+ if (forceReload)
29
+ return window.location.reload();
30
+ setTimeout(() => {
31
+ console.log('[Sitecore Editor HMR Listener] Sitecore editor does not support Fast Refresh, reloading chromes...');
32
+ (0, editing_1.resetEditorChromes)();
33
+ }, 500);
34
+ };
35
+ };
36
+ exports.handleEditorFastRefresh = handleEditorFastRefresh;
37
+ const getEditingSecret = () => {
38
+ const secret = process.env.SITECORE_EDITING_SECRET;
39
+ if (!secret || secret.length === 0) {
40
+ throw new Error('The SITECORE_EDITING_SECRET environment variable is missing or invalid.');
41
+ }
42
+ return secret;
43
+ };
44
+ exports.getEditingSecret = getEditingSecret;
45
+ /**
46
+ * Extracts the path from the Next.js context parameters.
47
+ * @param {GetStaticPropsContext | GetServerSidePropsContext} context - The Next.js context parameters.
48
+ * @returns The extracted path.
49
+ * @public
50
+ */
51
+ const extractPath = (context) => {
52
+ var _a;
53
+ return context.params === undefined
54
+ ? '/'
55
+ : Array.isArray(context.params.path)
56
+ ? context.params.path.join('/')
57
+ : (_a = context.params.path) !== null && _a !== void 0 ? _a : '/';
58
+ };
59
+ exports.extractPath = extractPath;
60
+ /**
61
+ * Determines whether context is GetServerSidePropsContext (SSR) or GetStaticPropsContext (SSG)
62
+ * @param {GetServerSidePropsContext | GetStaticPropsContext} context
63
+ * @public
64
+ */
65
+ const isServerSidePropsContext = (context) => {
66
+ return context.req !== undefined;
67
+ };
68
+ exports.isServerSidePropsContext = isServerSidePropsContext;
69
+ /**
70
+ * For App Router application, extracts the site and locale information from the rewrite header which is in format /[site]/[locale]/[...path].
71
+ * @param {Headers} headers - The `Headers` object containing the rewrite header.
72
+ * @returns An object containing the `site` and `locale` extracted from the rewrite header.
73
+ * @public
74
+ */
75
+ const parseRewriteHeader = (headers) => {
76
+ const rewriteHeader = headers.get(middleware_1.REWRITE_HEADER_NAME);
77
+ const rewriteSegments = (rewriteHeader === null || rewriteHeader === void 0 ? void 0 : rewriteHeader.split('/').filter((segment) => segment)) || [];
78
+ const site = rewriteSegments[0];
79
+ const locale = rewriteSegments[1];
80
+ return { site, locale };
81
+ };
82
+ exports.parseRewriteHeader = parseRewriteHeader;
@@ -1,2 +1,2 @@
1
- export { DefaultRetryStrategy, GraphQLRequestClient, getEdgeProxyContentUrl, createGraphQLClientFactory, } from '@sitecore-content-sdk/core/client';
2
- export { SitecoreNextjsClient as SitecoreClient } from './sitecore-nextjs-client';
1
+ export { DefaultRetryStrategy, GraphQLRequestClient, getEdgeProxyContentUrl, createGraphQLClientFactory, } from '@sitecore-content-sdk/core/client';
2
+ export { SitecoreNextjsClient as SitecoreClient } from './sitecore-nextjs-client';
@@ -1 +1 @@
1
- export {};
1
+ export {};