@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.
- package/README.md +11 -11
- package/dist/cjs/client/index.js +10 -10
- package/dist/cjs/client/models.js +2 -2
- package/dist/cjs/client/sitecore-nextjs-client.js +160 -156
- package/dist/cjs/components/BYOCWrapper.js +31 -30
- package/dist/cjs/components/ComponentPropsContext.js +66 -59
- package/dist/cjs/components/FEaaSWrapper.js +33 -32
- package/dist/cjs/components/Link.js +117 -90
- package/dist/cjs/components/NextImage.js +66 -62
- package/dist/cjs/components/Placeholder.js +55 -50
- package/dist/cjs/components/RichText.js +133 -128
- package/dist/cjs/config/define-config.js +26 -25
- package/dist/cjs/config/index.js +5 -5
- package/dist/cjs/config-cli/define-cli-config.js +40 -39
- package/dist/cjs/config-cli/index.js +5 -5
- package/dist/cjs/editing/codegen/import-map.js +129 -118
- package/dist/cjs/editing/codegen/index.js +6 -6
- package/dist/cjs/editing/constants.js +10 -10
- package/dist/cjs/editing/editing-config-middleware.js +70 -69
- package/dist/cjs/editing/editing-render-middleware.js +145 -144
- package/dist/cjs/editing/feaas-render-middleware.js +102 -101
- package/dist/cjs/editing/index.js +19 -19
- package/dist/cjs/editing/render-middleware.js +46 -46
- package/dist/cjs/editing/utils.js +260 -257
- package/dist/cjs/index.js +132 -131
- package/dist/cjs/middleware/app-router-multisite-middleware.js +41 -20
- package/dist/cjs/middleware/index.js +30 -30
- package/dist/cjs/middleware/locale-middleware.js +85 -84
- package/dist/cjs/middleware/middleware.js +195 -192
- package/dist/cjs/middleware/multisite-middleware.js +141 -118
- package/dist/cjs/middleware/personalize-middleware.js +240 -236
- package/dist/cjs/middleware/redirects-middleware.js +323 -297
- package/dist/cjs/middleware/robots-middleware.js +45 -44
- package/dist/cjs/middleware/sitemap-middleware.js +50 -49
- package/dist/cjs/monitoring/healthcheck-middleware.js +31 -30
- package/dist/cjs/monitoring/index.js +5 -5
- package/dist/cjs/route-handler/editing-config-route-handler.js +110 -106
- package/dist/cjs/route-handler/editing-render-route-handler.js +270 -165
- package/dist/cjs/route-handler/index.js +11 -11
- package/dist/cjs/route-handler/robots-route-handler.js +69 -68
- package/dist/cjs/route-handler/sitemap-route-handler.js +66 -65
- package/dist/cjs/search/index.js +17 -0
- package/dist/cjs/services/component-props-service.js +142 -138
- package/dist/cjs/sharedTypes/component-props.js +2 -2
- package/dist/cjs/sharedTypes/sitecore-page-props.js +2 -2
- package/dist/cjs/site/index.js +5 -5
- package/dist/cjs/tools/codegen/import-map.js +15 -0
- package/dist/cjs/tools/component-props.loader.js +95 -95
- package/dist/cjs/tools/generate-map.js +317 -317
- package/dist/cjs/tools/index.js +14 -13
- package/dist/cjs/tools/templating/byoc-component.js +36 -36
- package/dist/cjs/tools/templating/constants.js +7 -7
- package/dist/cjs/tools/templating/default-component.js +35 -35
- package/dist/cjs/tools/templating/utils.js +200 -0
- package/dist/cjs/utils/index.js +14 -14
- package/dist/cjs/utils/utils.js +82 -73
- package/dist/esm/client/index.js +2 -2
- package/dist/esm/client/models.js +1 -1
- package/dist/esm/client/sitecore-nextjs-client.js +156 -152
- package/dist/esm/components/BYOCWrapper.js +27 -26
- package/dist/esm/components/ComponentPropsContext.js +28 -21
- package/dist/esm/components/FEaaSWrapper.js +29 -28
- package/dist/esm/components/Link.js +78 -51
- package/dist/esm/components/NextImage.js +60 -56
- package/dist/esm/components/Placeholder.js +18 -13
- package/dist/esm/components/RichText.js +96 -91
- package/dist/esm/config/define-config.js +21 -20
- package/dist/esm/config/index.js +1 -1
- package/dist/esm/config-cli/define-cli-config.js +36 -35
- package/dist/esm/config-cli/index.js +1 -1
- package/dist/esm/editing/codegen/import-map.js +92 -81
- package/dist/esm/editing/codegen/index.js +1 -1
- package/dist/esm/editing/constants.js +7 -7
- package/dist/esm/editing/editing-config-middleware.js +66 -65
- package/dist/esm/editing/editing-render-middleware.js +141 -140
- package/dist/esm/editing/feaas-render-middleware.js +98 -97
- package/dist/esm/editing/index.js +6 -6
- package/dist/esm/editing/render-middleware.js +42 -42
- package/dist/esm/editing/utils.js +246 -243
- package/dist/esm/index.js +25 -25
- package/dist/esm/middleware/app-router-multisite-middleware.js +37 -16
- package/dist/esm/middleware/index.js +11 -11
- package/dist/esm/middleware/locale-middleware.js +81 -80
- package/dist/esm/middleware/middleware.js +189 -186
- package/dist/esm/middleware/multisite-middleware.js +137 -114
- package/dist/esm/middleware/personalize-middleware.js +236 -232
- package/dist/esm/middleware/redirects-middleware.js +316 -290
- package/dist/esm/middleware/robots-middleware.js +41 -40
- package/dist/esm/middleware/sitemap-middleware.js +46 -45
- package/dist/esm/monitoring/healthcheck-middleware.js +27 -26
- package/dist/esm/monitoring/index.js +1 -1
- package/dist/esm/route-handler/editing-config-route-handler.js +106 -102
- package/dist/esm/route-handler/editing-render-route-handler.js +265 -160
- package/dist/esm/route-handler/index.js +4 -4
- package/dist/esm/route-handler/robots-route-handler.js +65 -64
- package/dist/esm/route-handler/sitemap-route-handler.js +63 -62
- package/dist/esm/search/index.js +1 -0
- package/dist/esm/services/component-props-service.js +135 -131
- package/dist/esm/sharedTypes/component-props.js +1 -1
- package/dist/esm/sharedTypes/sitecore-page-props.js +1 -1
- package/dist/esm/site/index.js +1 -1
- package/dist/esm/tools/codegen/import-map.js +11 -0
- package/dist/esm/tools/component-props.loader.js +59 -59
- package/dist/esm/tools/generate-map.js +279 -279
- package/dist/esm/tools/index.js +3 -2
- package/dist/esm/tools/templating/byoc-component.js +30 -30
- package/dist/esm/tools/templating/constants.js +4 -4
- package/dist/esm/tools/templating/default-component.js +29 -29
- package/dist/esm/tools/templating/utils.js +190 -0
- package/dist/esm/utils/index.js +3 -3
- package/dist/esm/utils/utils.js +74 -65
- package/package.json +87 -13
- package/search.d.ts +1 -0
- package/types/client/index.d.ts +3 -2
- package/types/client/index.d.ts.map +1 -0
- package/types/client/models.d.ts +9 -8
- package/types/client/models.d.ts.map +1 -0
- package/types/client/sitecore-nextjs-client.d.ts +68 -63
- package/types/client/sitecore-nextjs-client.d.ts.map +1 -0
- package/types/components/BYOCWrapper.d.ts +16 -14
- package/types/components/BYOCWrapper.d.ts.map +1 -0
- package/types/components/ComponentPropsContext.d.ts +30 -18
- package/types/components/ComponentPropsContext.d.ts.map +1 -0
- package/types/components/FEaaSWrapper.d.ts +17 -15
- package/types/components/FEaaSWrapper.d.ts.map +1 -0
- package/types/components/Link.d.ts +25 -15
- package/types/components/Link.d.ts.map +1 -0
- package/types/components/NextImage.d.ts +11 -6
- package/types/components/NextImage.d.ts.map +1 -0
- package/types/components/Placeholder.d.ts +14 -8
- package/types/components/Placeholder.d.ts.map +1 -0
- package/types/components/RichText.d.ts +35 -25
- package/types/components/RichText.d.ts.map +1 -0
- package/types/config/define-config.d.ts +42 -38
- package/types/config/define-config.d.ts.map +1 -0
- package/types/config/index.d.ts +2 -1
- package/types/config/index.d.ts.map +1 -0
- package/types/config-cli/define-cli-config.d.ts +10 -8
- package/types/config-cli/define-cli-config.d.ts.map +1 -0
- package/types/config-cli/index.d.ts +2 -1
- package/types/config-cli/index.d.ts.map +1 -0
- package/types/editing/codegen/import-map.d.ts +15 -3
- package/types/editing/codegen/import-map.d.ts.map +1 -0
- package/types/editing/codegen/index.d.ts +3 -2
- package/types/editing/codegen/index.d.ts.map +1 -0
- package/types/editing/constants.d.ts +8 -7
- package/types/editing/constants.d.ts.map +1 -0
- package/types/editing/editing-config-middleware.d.ts +37 -31
- package/types/editing/editing-config-middleware.d.ts.map +1 -0
- package/types/editing/editing-render-middleware.d.ts +47 -44
- package/types/editing/editing-render-middleware.d.ts.map +1 -0
- package/types/editing/feaas-render-middleware.d.ts +35 -32
- package/types/editing/feaas-render-middleware.d.ts.map +1 -0
- package/types/editing/index.d.ts +7 -6
- package/types/editing/index.d.ts.map +1 -0
- package/types/editing/render-middleware.d.ts +26 -25
- package/types/editing/render-middleware.d.ts.map +1 -0
- package/types/editing/utils.d.ts +110 -106
- package/types/editing/utils.d.ts.map +1 -0
- package/types/index.d.ts +25 -24
- package/types/index.d.ts.map +1 -0
- package/types/middleware/app-router-multisite-middleware.d.ts +28 -13
- package/types/middleware/app-router-multisite-middleware.d.ts.map +1 -0
- package/types/middleware/index.d.ts +12 -11
- package/types/middleware/index.d.ts.map +1 -0
- package/types/middleware/locale-middleware.d.ts +35 -32
- package/types/middleware/locale-middleware.d.ts.map +1 -0
- package/types/middleware/middleware.d.ts +135 -127
- package/types/middleware/middleware.d.ts.map +1 -0
- package/types/middleware/multisite-middleware.d.ts +54 -37
- package/types/middleware/multisite-middleware.d.ts.map +1 -0
- package/types/middleware/personalize-middleware.d.ts +81 -65
- package/types/middleware/personalize-middleware.d.ts.map +1 -0
- package/types/middleware/redirects-middleware.d.ts +68 -65
- package/types/middleware/redirects-middleware.d.ts.map +1 -0
- package/types/middleware/robots-middleware.d.ts +15 -13
- package/types/middleware/robots-middleware.d.ts.map +1 -0
- package/types/middleware/sitemap-middleware.d.ts +16 -14
- package/types/middleware/sitemap-middleware.d.ts.map +1 -0
- package/types/monitoring/healthcheck-middleware.d.ts +14 -12
- package/types/monitoring/healthcheck-middleware.d.ts.map +1 -0
- package/types/monitoring/index.d.ts +2 -1
- package/types/monitoring/index.d.ts.map +1 -0
- package/types/route-handler/editing-config-route-handler.d.ts +30 -24
- package/types/route-handler/editing-config-route-handler.d.ts.map +1 -0
- package/types/route-handler/editing-render-route-handler.d.ts +33 -25
- package/types/route-handler/editing-render-route-handler.d.ts.map +1 -0
- package/types/route-handler/index.d.ts +5 -4
- package/types/route-handler/index.d.ts.map +1 -0
- package/types/route-handler/robots-route-handler.d.ts +30 -28
- package/types/route-handler/robots-route-handler.d.ts.map +1 -0
- package/types/route-handler/sitemap-route-handler.d.ts +30 -28
- package/types/route-handler/sitemap-route-handler.d.ts.map +1 -0
- package/types/search/index.d.ts +2 -0
- package/types/search/index.d.ts.map +1 -0
- package/types/services/component-props-service.d.ts +62 -57
- package/types/services/component-props-service.d.ts.map +1 -0
- package/types/sharedTypes/component-props.d.ts +62 -47
- package/types/sharedTypes/component-props.d.ts.map +1 -0
- package/types/sharedTypes/sitecore-page-props.d.ts +14 -9
- package/types/sharedTypes/sitecore-page-props.d.ts.map +1 -0
- package/types/site/index.d.ts +2 -1
- package/types/site/index.d.ts.map +1 -0
- package/types/tools/codegen/import-map.d.ts +10 -0
- package/types/tools/codegen/import-map.d.ts.map +1 -0
- package/types/tools/component-props.loader.d.ts +8 -7
- package/types/tools/component-props.loader.d.ts.map +1 -0
- package/types/tools/generate-map.d.ts +26 -24
- package/types/tools/generate-map.d.ts.map +1 -0
- package/types/tools/index.d.ts +4 -2
- package/types/tools/index.d.ts.map +1 -0
- package/types/tools/templating/byoc-component.d.ts +3 -2
- package/types/tools/templating/byoc-component.d.ts.map +1 -0
- package/types/tools/templating/constants.d.ts +5 -4
- package/types/tools/templating/constants.d.ts.map +1 -0
- package/types/tools/templating/default-component.d.ts +3 -2
- package/types/tools/templating/default-component.d.ts.map +1 -0
- package/types/tools/templating/utils.d.ts +44 -0
- package/types/tools/templating/utils.d.ts.map +1 -0
- package/types/utils/index.d.ts +4 -3
- package/types/utils/index.d.ts.map +1 -0
- package/types/utils/utils.d.ts +34 -24
- package/types/utils/utils.d.ts.map +1 -0
- package/client.js +0 -1
- package/codegen.js +0 -1
- package/config-cli.js +0 -1
- package/config.js +0 -1
- package/editing.js +0 -1
- package/middleware.js +0 -1
- package/monitoring.js +0 -1
- package/route-handler.js +0 -1
- package/site.js +0 -1
- package/tools.js +0 -1
- package/utils.js +0 -1
package/dist/cjs/tools/index.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
+
}
|
package/dist/cjs/utils/index.js
CHANGED
|
@@ -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; } });
|
package/dist/cjs/utils/utils.js
CHANGED
|
@@ -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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
window.
|
|
19
|
-
|
|
20
|
-
eventSource.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
*
|
|
63
|
-
* @
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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;
|
package/dist/esm/client/index.js
CHANGED
|
@@ -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 {};
|