summaryrefslogtreecommitdiffstats
path: root/wp-includes/js/dist/private-apis.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 07:56:49 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 07:56:49 +0000
commita415c29efee45520ae252d2aa28f1083a521cd7b (patch)
treef4ade4b6668ecc0765de7e1424f7c1427ad433ff /wp-includes/js/dist/private-apis.js
parentInitial commit. (diff)
downloadwordpress-a415c29efee45520ae252d2aa28f1083a521cd7b.tar.xz
wordpress-a415c29efee45520ae252d2aa28f1083a521cd7b.zip
Adding upstream version 6.4.3+dfsg1.upstream/6.4.3+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'wp-includes/js/dist/private-apis.js')
-rw-r--r--wp-includes/js/dist/private-apis.js234
1 files changed, 234 insertions, 0 deletions
diff --git a/wp-includes/js/dist/private-apis.js b/wp-includes/js/dist/private-apis.js
new file mode 100644
index 0000000..0ba53ad
--- /dev/null
+++ b/wp-includes/js/dist/private-apis.js
@@ -0,0 +1,234 @@
+/******/ (function() { // webpackBootstrap
+/******/ "use strict";
+/******/ // The require scope
+/******/ var __webpack_require__ = {};
+/******/
+/************************************************************************/
+/******/ /* webpack/runtime/define property getters */
+/******/ !function() {
+/******/ // define getter functions for harmony exports
+/******/ __webpack_require__.d = function(exports, definition) {
+/******/ for(var key in definition) {
+/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
+/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
+/******/ }
+/******/ }
+/******/ };
+/******/ }();
+/******/
+/******/ /* webpack/runtime/hasOwnProperty shorthand */
+/******/ !function() {
+/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
+/******/ }();
+/******/
+/******/ /* webpack/runtime/make namespace object */
+/******/ !function() {
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/ }();
+/******/
+/************************************************************************/
+var __webpack_exports__ = {};
+// ESM COMPAT FLAG
+__webpack_require__.r(__webpack_exports__);
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, {
+ __dangerousOptInToUnstableAPIsOnlyForCoreModules: function() { return /* reexport */ __dangerousOptInToUnstableAPIsOnlyForCoreModules; }
+});
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/private-apis/build-module/implementation.js
+/**
+ * wordpress/private-apis – the utilities to enable private cross-package
+ * exports of private APIs.
+ *
+ * This "implementation.js" file is needed for the sake of the unit tests. It
+ * exports more than the public API of the package to aid in testing.
+ */
+
+/**
+ * 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/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.
+ *
+ * The use of private developer APIs is intended for use by WordPress Core
+ * and the Gutenberg plugin exclusively.
+ *
+ * Dangerously opting in to using these APIs is NOT RECOMMENDED. Furthermore,
+ * the WordPress Core philosophy to strive to maintain backward compatibility
+ * for third-party developers DOES NOT APPLY to private APIs.
+ *
+ * THE CONSENT STRING FOR OPTING IN TO THESE APIS MAY CHANGE AT ANY TIME AND
+ * 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.';
+
+/** @type {boolean} */
+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.
+ *
+ * @param {string} consent The consent string.
+ * @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
+ * registers it in an internal map of private data.
+ *
+ * The private data can't be accessed by any other means
+ * than the `unlock` function.
+ *
+ * @example
+ * ```js
+ * const object = {};
+ * const privateData = { a: 1 };
+ * lock( object, privateData );
+ *
+ * object
+ * // {}
+ *
+ * unlock( object );
+ * // { a: 1 }
+ * ```
+ *
+ * @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.
+ *
+ * It does not alter the passed object in any way, only
+ * returns the private data paired with it using the `lock()`
+ * function.
+ *
+ * @example
+ * ```js
+ * const object = {};
+ * const privateData = { a: 1 };
+ * lock( object, privateData );
+ *
+ * object
+ * // {}
+ *
+ * unlock( object );
+ * // { a: 1 }
+ * ```
+ *
+ * @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');
+
+// Unit tests utilities:
+
+/**
+ * Private function to allow the unit tests to allow
+ * a mock module to access the private APIs.
+ *
+ * @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();
+ }
+}
+/**
+ * Private function to allow the unit tests to reset
+ * the list of registered private apis.
+ */
+function resetRegisteredPrivateApis() {
+ while (registeredPrivateApis.length) {
+ registeredPrivateApis.pop();
+ }
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/private-apis/build-module/index.js
+
+
+(window.wp = window.wp || {}).privateApis = __webpack_exports__;
+/******/ })()
+; \ No newline at end of file