first commit
Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled

This commit is contained in:
Arian Tron
2026-03-10 19:37:31 +03:30
commit 61f56f997c
27684 changed files with 2784175 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
// eslint-disable-next-line @typescript-eslint/no-var-requires
const plugins = require("scripts/temp/config-plugins");
/**
* JSS configuration object
*/
export interface JssConfig extends Record<string, string | undefined> {
sitecoreApiKey?: string;
sitecoreApiHost?: string;
jssAppName?: string;
graphQLEndpointPath?: string;
defaultLanguage?: string;
graphQLEndpoint?: string;
}
export interface ConfigPlugin {
/**
* Detect order when the plugin should be called, e.g. 0 - will be called first (can be a plugin which data is required for other plugins)
*/
order: number;
/**
* A function which will be called during config generation
* @param {JssConfig} config Current (accumulated) config
*/
exec(config: JssConfig): Promise<JssConfig>;
}
export class JssConfigFactory {
public async create(defaultConfig: JssConfig = {}): Promise<JssConfig> {
return (Object.values(plugins) as ConfigPlugin[])
.sort((p1, p2) => p1.order - p2.order)
.reduce(
(promise, plugin) => promise.then((config) => plugin.exec(config)),
Promise.resolve(defaultConfig),
);
}
}
export const jssConfigFactory = new JssConfigFactory();

View File

@@ -0,0 +1,21 @@
import { ConfigPlugin, JssConfig } from "..";
/**
* This plugin will set computed config props.
* The "graphQLEndpoint" is an example of making a _computed_ config setting
* based on other config settings.
*/
class ComputedPlugin implements ConfigPlugin {
// should come after other plugins (but before fallback)
order = 10;
async exec(config: JssConfig) {
return Object.assign({}, config, {
graphQLEndpoint:
config.graphQLEndpoint ||
`${config.sitecoreApiHost}${config.graphQLEndpointPath}`,
});
}
}
export const computedPlugin = new ComputedPlugin();

View File

@@ -0,0 +1,19 @@
import { ConfigPlugin, JssConfig } from "..";
/**
* This config will set fallback values for properties that were left empty
* If neither env, nor other places had a proper value, this will ensure a fallback is set
*/
class FallbackPlugin implements ConfigPlugin {
// should always come last
order = 100;
async exec(config: JssConfig) {
return Object.assign({}, config, {
defaultLanguage: config.defaultLanguage || "en",
sitecoreApiKey: config.sitecoreApiKey || "no-api-key-set",
});
}
}
export const fallbackPlugin = new FallbackPlugin();

View File

@@ -0,0 +1,22 @@
import { ConfigPlugin, JssConfig } from "..";
import packageConfig from "package.json";
/**
* This plugin will set config props based on package.json.
*/
class PackageJsonPlugin implements ConfigPlugin {
order = 1;
async exec(config: JssConfig) {
if (!packageConfig.config) return config;
return Object.assign({}, config, {
jssAppName: config.jssAppName || packageConfig.config.appName,
graphQLEndpointPath:
config.graphQLEndpointPath || packageConfig.config.graphQLEndpointPath,
defaultLanguage: config.defaultLanguage || packageConfig.config.language,
});
}
}
export const packageJsonPlugin = new PackageJsonPlugin();

View File

@@ -0,0 +1,29 @@
import { ConfigPlugin, JssConfig } from "..";
/**
* This plugin will set config props based on scjssconfig.json.
* scjssconfig.json may not exist if you've never run `jss setup` (development)
* or are depending on environment variables instead (production).
*/
class ScJssConfigPlugin implements ConfigPlugin {
order = 1;
async exec(config: JssConfig) {
let scJssConfig;
try {
scJssConfig = require("scjssconfig.json");
} catch (e) {
return config;
}
if (!scJssConfig) return config;
return Object.assign({}, config, {
sitecoreApiKey: config.sitecoreApiKey || scJssConfig.sitecore?.apiKey,
sitecoreApiHost:
config.sitecoreApiHost || scJssConfig.sitecore?.layoutServiceHost,
});
}
}
export const scjssconfigPlugin = new ScJssConfigPlugin();