[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-includes/js/dist/script-modules/core-abilities/ -> index.js (source)

   1  var __create = Object.create;
   2  var __defProp = Object.defineProperty;
   3  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
   4  var __getOwnPropNames = Object.getOwnPropertyNames;
   5  var __getProtoOf = Object.getPrototypeOf;
   6  var __hasOwnProp = Object.prototype.hasOwnProperty;
   7  var __commonJS = (cb, mod) => function __require() {
   8    return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
   9  };
  10  var __copyProps = (to, from, except, desc) => {
  11    if (from && typeof from === "object" || typeof from === "function") {
  12      for (let key of __getOwnPropNames(from))
  13        if (!__hasOwnProp.call(to, key) && key !== except)
  14          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  15    }
  16    return to;
  17  };
  18  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  19    // If the importer is in node compatibility mode or this is not an ESM
  20    // file that has been converted to a CommonJS file using a Babel-
  21    // compatible transform (i.e. "__esModule" has not been set), then set
  22    // "default" to the CommonJS "module.exports" for node compatibility.
  23    isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  24    mod
  25  ));
  26  
  27  // package-external:@wordpress/api-fetch
  28  var require_api_fetch = __commonJS({
  29    "package-external:@wordpress/api-fetch"(exports, module) {
  30      module.exports = window.wp.apiFetch;
  31    }
  32  });
  33  
  34  // package-external:@wordpress/url
  35  var require_url = __commonJS({
  36    "package-external:@wordpress/url"(exports, module) {
  37      module.exports = window.wp.url;
  38    }
  39  });
  40  
  41  // packages/core-abilities/build-module/index.js
  42  var import_api_fetch = __toESM(require_api_fetch());
  43  var import_url = __toESM(require_url());
  44  import { registerAbility, registerAbilityCategory } from "@wordpress/abilities";
  45  var API_BASE = "/wp-abilities/v1";
  46  var ABILITIES_ENDPOINT = `$API_BASE}/abilities`;
  47  var CATEGORIES_ENDPOINT = `$API_BASE}/categories`;
  48  function createServerCallback(ability) {
  49    return async (input) => {
  50      let method = "POST";
  51      if (!!ability.meta?.annotations?.readonly) {
  52        method = "GET";
  53      } else if (!!ability.meta?.annotations?.destructive && !!ability.meta?.annotations?.idempotent) {
  54        method = "DELETE";
  55      }
  56      let path = `$ABILITIES_ENDPOINT}/$ability.name}/run`;
  57      const options = {
  58        method
  59      };
  60      if (["GET", "DELETE"].includes(method) && input !== null && input !== void 0) {
  61        path = (0, import_url.addQueryArgs)(path, { input });
  62      } else if (method === "POST" && input !== null && input !== void 0) {
  63        options.data = { input };
  64      }
  65      return (0, import_api_fetch.default)({
  66        path,
  67        ...options
  68      });
  69    };
  70  }
  71  async function initializeCategories() {
  72    try {
  73      const categories = await (0, import_api_fetch.default)({
  74        path: (0, import_url.addQueryArgs)(CATEGORIES_ENDPOINT, {
  75          per_page: -1,
  76          context: "edit"
  77        })
  78      });
  79      if (categories && Array.isArray(categories)) {
  80        for (const category of categories) {
  81          registerAbilityCategory(category.slug, {
  82            label: category.label,
  83            description: category.description,
  84            meta: {
  85              annotations: { serverRegistered: true }
  86            }
  87          });
  88        }
  89      }
  90    } catch (error) {
  91      console.error("Failed to fetch ability categories:", error);
  92    }
  93  }
  94  async function initializeAbilities() {
  95    try {
  96      const abilities = await (0, import_api_fetch.default)({
  97        path: (0, import_url.addQueryArgs)(ABILITIES_ENDPOINT, {
  98          per_page: -1,
  99          context: "edit"
 100        })
 101      });
 102      if (abilities && Array.isArray(abilities)) {
 103        for (const ability of abilities) {
 104          registerAbility({
 105            ...ability,
 106            callback: createServerCallback(ability),
 107            meta: {
 108              annotations: {
 109                ...ability.meta?.annotations,
 110                serverRegistered: true
 111              }
 112            }
 113          });
 114        }
 115      }
 116    } catch (error) {
 117      console.error("Failed to fetch abilities:", error);
 118    }
 119  }
 120  async function initialize() {
 121    await initializeCategories();
 122    await initializeAbilities();
 123  }
 124  initialize();


Generated : Thu Apr 16 08:20:10 2026 Cross-referenced by PHPXref