Merged in feature/81-dev-dev01 (pull request #5)
auto-patch 81-dev-dev01-2023-12-05T22_45_26 * auto-patch 81-dev-dev01-2023-12-05T22_45_26
This commit is contained in:
39
wp/wp-includes/js/dist/private-apis.js
vendored
39
wp/wp-includes/js/dist/private-apis.js
vendored
@@ -39,7 +39,7 @@ __webpack_require__.r(__webpack_exports__);
|
||||
|
||||
// EXPORTS
|
||||
__webpack_require__.d(__webpack_exports__, {
|
||||
"__dangerousOptInToUnstableAPIsOnlyForCoreModules": function() { return /* reexport */ __dangerousOptInToUnstableAPIsOnlyForCoreModules; }
|
||||
__dangerousOptInToUnstableAPIsOnlyForCoreModules: function() { return /* reexport */ __dangerousOptInToUnstableAPIsOnlyForCoreModules; }
|
||||
});
|
||||
|
||||
;// CONCATENATED MODULE: ./node_modules/@wordpress/private-apis/build-module/implementation.js
|
||||
@@ -54,15 +54,16 @@ __webpack_require__.d(__webpack_exports__, {
|
||||
/**
|
||||
* The list of core modules allowed to opt-in to the private APIs.
|
||||
*/
|
||||
const CORE_MODULES_USING_PRIVATE_APIS = ['@wordpress/block-editor', '@wordpress/block-library', '@wordpress/blocks', '@wordpress/commands', '@wordpress/components', '@wordpress/core-commands', '@wordpress/core-data', '@wordpress/customize-widgets', '@wordpress/data', '@wordpress/edit-post', '@wordpress/edit-site', '@wordpress/edit-widgets', '@wordpress/editor', '@wordpress/reusable-blocks', '@wordpress/router'];
|
||||
const CORE_MODULES_USING_PRIVATE_APIS = ['@wordpress/block-editor', '@wordpress/block-library', '@wordpress/blocks', '@wordpress/commands', '@wordpress/components', '@wordpress/core-commands', '@wordpress/core-data', '@wordpress/customize-widgets', '@wordpress/data', '@wordpress/edit-post', '@wordpress/edit-site', '@wordpress/edit-widgets', '@wordpress/editor', '@wordpress/patterns', '@wordpress/reusable-blocks', '@wordpress/router'];
|
||||
|
||||
/**
|
||||
* A list of core modules that already opted-in to
|
||||
* the privateApis package.
|
||||
*
|
||||
* @type {string[]}
|
||||
*/
|
||||
|
||||
const registeredPrivateApis = [];
|
||||
|
||||
/*
|
||||
* Warning for theme and plugin developers.
|
||||
*
|
||||
@@ -77,21 +78,21 @@ const registeredPrivateApis = [];
|
||||
* WITHOUT NOTICE. THIS CHANGE WILL BREAK EXISTING THIRD-PARTY CODE. SUCH A
|
||||
* CHANGE MAY OCCUR IN EITHER A MAJOR OR MINOR RELEASE.
|
||||
*/
|
||||
const requiredConsent = 'I know using unstable features means my theme or plugin will inevitably break in the next version of WordPress.';
|
||||
|
||||
const requiredConsent = 'I know using unstable features means my plugin or theme will inevitably break on the next WordPress release.';
|
||||
/** @type {boolean} */
|
||||
|
||||
let allowReRegistration; // The safety measure is meant for WordPress core where IS_WORDPRESS_CORE
|
||||
let allowReRegistration;
|
||||
// The safety measure is meant for WordPress core where IS_WORDPRESS_CORE
|
||||
// is set to true.
|
||||
// For the general use-case, the re-registration should be allowed by default
|
||||
// Let's default to true, then. Try/catch will fall back to "true" even if the
|
||||
// environment variable is not explicitly defined.
|
||||
|
||||
try {
|
||||
allowReRegistration = true ? false : 0;
|
||||
} catch (error) {
|
||||
allowReRegistration = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by a @wordpress package wishing to opt-in to accessing or exposing
|
||||
* private private APIs.
|
||||
@@ -100,30 +101,26 @@ try {
|
||||
* @param {string} moduleName The name of the module that is opting in.
|
||||
* @return {{lock: typeof lock, unlock: typeof unlock}} An object containing the lock and unlock functions.
|
||||
*/
|
||||
|
||||
|
||||
const __dangerousOptInToUnstableAPIsOnlyForCoreModules = (consent, moduleName) => {
|
||||
if (!CORE_MODULES_USING_PRIVATE_APIS.includes(moduleName)) {
|
||||
throw new Error(`You tried to opt-in to unstable APIs as module "${moduleName}". ` + 'This feature is only for JavaScript modules shipped with WordPress core. ' + 'Please do not use it in plugins and themes as the unstable APIs will be removed ' + 'without a warning. If you ignore this error and depend on unstable features, ' + 'your product will inevitably break on one of the next WordPress releases.');
|
||||
}
|
||||
|
||||
if (!allowReRegistration && registeredPrivateApis.includes(moduleName)) {
|
||||
// This check doesn't play well with Story Books / Hot Module Reloading
|
||||
// and isn't included in the Gutenberg plugin. It only matters in the
|
||||
// WordPress core release.
|
||||
throw new Error(`You tried to opt-in to unstable APIs as module "${moduleName}" which is already registered. ` + 'This feature is only for JavaScript modules shipped with WordPress core. ' + 'Please do not use it in plugins and themes as the unstable APIs will be removed ' + 'without a warning. If you ignore this error and depend on unstable features, ' + 'your product will inevitably break on one of the next WordPress releases.');
|
||||
}
|
||||
|
||||
if (consent !== requiredConsent) {
|
||||
throw new Error(`You tried to opt-in to unstable APIs without confirming you know the consequences. ` + 'This feature is only for JavaScript modules shipped with WordPress core. ' + 'Please do not use it in plugins and themes as the unstable APIs will removed ' + 'without a warning. If you ignore this error and depend on unstable features, ' + 'your product will inevitably break on the next WordPress release.');
|
||||
}
|
||||
|
||||
registeredPrivateApis.push(moduleName);
|
||||
return {
|
||||
lock,
|
||||
unlock
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Binds private data to an object.
|
||||
* It does not alter the passed object in any way, only
|
||||
@@ -148,18 +145,16 @@ const __dangerousOptInToUnstableAPIsOnlyForCoreModules = (consent, moduleName) =
|
||||
* @param {any} object The object to bind the private data to.
|
||||
* @param {any} privateData The private data to bind to the object.
|
||||
*/
|
||||
|
||||
function lock(object, privateData) {
|
||||
if (!object) {
|
||||
throw new Error('Cannot lock an undefined object.');
|
||||
}
|
||||
|
||||
if (!(__private in object)) {
|
||||
object[__private] = {};
|
||||
}
|
||||
|
||||
lockedData.set(object[__private], privateData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unlocks the private data bound to an object.
|
||||
*
|
||||
@@ -183,27 +178,24 @@ function lock(object, privateData) {
|
||||
* @param {any} object The object to unlock the private data from.
|
||||
* @return {any} The private data bound to the object.
|
||||
*/
|
||||
|
||||
|
||||
function unlock(object) {
|
||||
if (!object) {
|
||||
throw new Error('Cannot unlock an undefined object.');
|
||||
}
|
||||
|
||||
if (!(__private in object)) {
|
||||
throw new Error('Cannot unlock an object that was not locked before. ');
|
||||
}
|
||||
|
||||
return lockedData.get(object[__private]);
|
||||
}
|
||||
|
||||
const lockedData = new WeakMap();
|
||||
|
||||
/**
|
||||
* Used by lock() and unlock() to uniquely identify the private data
|
||||
* related to a containing object.
|
||||
*/
|
||||
const __private = Symbol('Private API ID');
|
||||
|
||||
const __private = Symbol('Private API ID'); // Unit tests utilities:
|
||||
// Unit tests utilities:
|
||||
|
||||
/**
|
||||
* Private function to allow the unit tests to allow
|
||||
@@ -211,16 +203,14 @@ const __private = Symbol('Private API ID'); // Unit tests utilities:
|
||||
*
|
||||
* @param {string} name The name of the module.
|
||||
*/
|
||||
|
||||
|
||||
function allowCoreModule(name) {
|
||||
CORE_MODULES_USING_PRIVATE_APIS.push(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Private function to allow the unit tests to set
|
||||
* a custom list of allowed modules.
|
||||
*/
|
||||
|
||||
function resetAllowedCoreModules() {
|
||||
while (CORE_MODULES_USING_PRIVATE_APIS.length) {
|
||||
CORE_MODULES_USING_PRIVATE_APIS.pop();
|
||||
@@ -230,7 +220,6 @@ function resetAllowedCoreModules() {
|
||||
* Private function to allow the unit tests to reset
|
||||
* the list of registered private apis.
|
||||
*/
|
||||
|
||||
function resetRegisteredPrivateApis() {
|
||||
while (registeredPrivateApis.length) {
|
||||
registeredPrivateApis.pop();
|
||||
|
||||
Reference in New Issue
Block a user