plugins/core/rest-api-plugin-methods/get-relationship.js:31:  await runHooks('checkPermissions')
plugins/core/rest-api-plugin-methods/get-relationship.js:32:  await runHooks('checkPermissionsGetRelationship')
plugins/core/rest-api-plugin-methods/get.js:94:  await runHooks('beforeData')
plugins/core/rest-api-plugin-methods/get.js:95:  await runHooks('beforeDataGet')
plugins/core/rest-api-plugin-methods/get.js:119:  await runHooks('checkDataPermissions')
plugins/core/rest-api-plugin-methods/get.js:120:  await runHooks('checkDataPermissionsGet')
plugins/core/rest-api-plugin-methods/get.js:126:  await runHooks('enrichRecord')
plugins/core/rest-api-plugin-methods/get.js:163:  await runHooks('enrichRecordWithRelationships')
plugins/core/rest-api-plugin-methods/get.js:165:  // The called hooks should NOT change context.record
plugins/core/rest-api-plugin-methods/get.js:166:  await runHooks('finish')
plugins/core/rest-api-plugin-methods/get.js:167:  await runHooks('finishGet')
plugins/core/rest-api-plugin-methods/query.js:131:  await runHooks('beforeData')
plugins/core/rest-api-plugin-methods/query.js:132:  await runHooks('beforeDataQuery')
plugins/core/rest-api-plugin-methods/query.js:155:  await runHooks('enrichRecord')
plugins/core/rest-api-plugin-methods/query.js:191:  // The called hooks should NOT change context.record
plugins/core/rest-api-plugin-methods/query.js:192:  await runHooks('finish')
plugins/core/rest-api-plugin-methods/query.js:193:  await runHooks('finishQuery')
plugins/core/rest-api-label-plugin.js:8:   * @param {function} deps.addHook - Register hooks
plugins/core/rest-api-label-plugin.js:31:    addHook(
plugins/core/rest-api-plugin-methods/post-relationship.js:50:    await runHooks('checkPermissions')
plugins/core/rest-api-plugin-methods/post-relationship.js:51:    await runHooks('checkPermissionsPostRelationship')
plugins/core/rest-api-plugin-methods/post-relationship.js:99:    await runHooks('finish')
plugins/core/rest-api-plugin-methods/post-relationship.js:100:    await runHooks('finishPostRelationship')
plugins/core/rest-api-positioning-plugin.js:27:    // Get configuration - hooked-api namespaces options by plugin name
plugins/core/rest-api-positioning-plugin.js:143:    addHook('scope:added', 'validate-position-field', {}, ({ context, vars }) => {
plugins/core/rest-api-positioning-plugin.js:187:    addHook('scope:added', 'add-position-index', { afterFunction: 'validate-position-field' }, async ({ context, vars, scopes }) => {
plugins/core/rest-api-positioning-plugin.js:257:    addHook('beforeSchemaValidate', 'process-beforeid', {}, async ({ context, scopeName, vars }) => {
plugins/core/rest-api-positioning-plugin.js:258:      log.debug('*** beforeSchemaValidate positioning hook', {
plugins/core/rest-api-positioning-plugin.js:326:    addHook('beforeDataCallPost', 'calculate-position-post', {}, async ({ context, scopeName, vars, helpers }) => {
plugins/core/rest-api-positioning-plugin.js:327:      log.debug('*** beforeDataCallPost hook fired for positioning', { scopeName, method: context.method })
plugins/core/rest-api-positioning-plugin.js:331:    addHook('beforeDataCallPut', 'calculate-position-put', {}, async ({ context, scopeName, vars, helpers }) => {
plugins/core/rest-api-positioning-plugin.js:332:      log.debug('*** beforeDataCallPut hook fired for positioning', { scopeName, method: context.method })
plugins/core/rest-api-positioning-plugin.js:339:    addHook('beforeDataCallPatch', 'calculate-position-patch', {}, async ({ context, scopeName, vars, helpers }) => {
plugins/core/rest-api-positioning-plugin.js:340:      log.debug('*** beforeDataCallPatch hook fired for positioning', { scopeName, method: context.method })
plugins/core/rest-api-positioning-plugin.js:558:    addHook('afterGet', 'add-beforeid-to-response', {}, async ({ context, vars }) => {
plugins/core/rest-api-positioning-plugin.js:574:    addHook('beforeQuery', 'apply-position-sort', {}, async ({ context, scopeName, vars }) => {
plugins/core/file-handling-plugin.js:104:    addHook('scope:added', 'analyzeFileFields', {}, ({ context }) => {
plugins/core/file-handling-plugin.js:280:    addHook('beforeProcessing', 'processFiles', {}, async ({ context }) => {
plugins/core/connectors/lib/busboy-detector.js:26:import { requirePackage } from 'hooked-api'
plugins/core/lib/querying/knex-relationship-includes.js:278: * @param {Object} scopes - The hooked-api scopes object
plugins/core/lib/querying/knex-relationship-includes.js:354: * @param {Object} scope - The hooked-api scope object containing:
plugins/core/lib/querying/knex-relationship-includes.js:366: *   - context.scopes: Object - The hooked-api scopes object
plugins/core/lib/querying/knex-relationship-includes.js:565: * @param {Object} scope - The hooked-api scope object containing:
plugins/core/lib/querying/knex-relationship-includes.js:576: *   - context.scopes: Object - The hooked-api scopes object
plugins/core/lib/querying/knex-relationship-includes.js:1045: * @param {Object} scope - The hooked-api scope object
plugins/core/lib/querying/knex-relationship-includes.js:1173: * @param {Object} scope - The hooked-api scope object containing:
plugins/core/lib/querying/knex-relationship-includes.js:1183: *   - context.scopes: Object - The hooked-api scopes object
plugins/core/lib/querying/knex-relationship-includes.js:1386: * @param {Object} scope - The hooked-api scope object containing:
plugins/core/lib/querying/knex-relationship-includes.js:1397: *   - context.scopes: Object - The hooked-api scopes object
plugins/core/lib/querying/knex-relationship-includes.js:1583: * @param {Object} scope - The hooked-api scope object containing:
plugins/core/lib/querying/knex-relationship-includes.js:1593: *   - context.scopes: Object - The hooked-api scopes object
plugins/core/lib/querying/knex-relationship-includes.js:1735: * @param {Object} scope - The hooked-api scope object containing:
plugins/core/lib/querying/knex-relationship-includes.js:1742: *   - context.scopes: Object - The hooked-api scopes object
plugins/core/rest-api-plugin-methods/patch.js:54:    // Run early hooks for pre-processing (e.g., file handling)
plugins/core/rest-api-plugin-methods/patch.js:55:    await runHooks('beforeProcessing')
plugins/core/rest-api-plugin-methods/patch.js:56:    await runHooks('beforeProcessingPatch')
plugins/core/rest-api-plugin-methods/patch.js:116:    await runHooks('beforeDataCall')
plugins/core/rest-api-plugin-methods/patch.js:117:    await runHooks('beforeDataCallPatch')
plugins/core/rest-api-plugin-methods/patch.js:136:    await runHooks('afterDataCallPatch')
plugins/core/rest-api-plugin-methods/patch.js:137:    await runHooks('afterDataCall')
plugins/core/rest-api-plugin-methods/patch.js:184:      await runHooks('afterCommit')
plugins/core/lib/querying/url-helpers.js:12: * 1. context.urlPrefixOverride - Explicit override (from hooks or middleware)
plugins/core/connectors/lib/formidable-detector.js:29:import { requirePackage } from 'hooked-api'
plugins/core/rest-api-plugin-methods/delete.js:25:  // Make the method available to all hooks
plugins/core/rest-api-plugin-methods/delete.js:74:    await runHooks('beforeDataCall')
plugins/core/rest-api-plugin-methods/delete.js:75:    await runHooks('beforeDataCallDelete')
plugins/core/rest-api-plugin-methods/delete.js:77:    // Initialize record context for hooks
plugins/core/rest-api-plugin-methods/delete.js:86:    await runHooks('afterDataCallDelete')
plugins/core/rest-api-plugin-methods/delete.js:87:    await runHooks('afterDataCall')
plugins/core/rest-api-plugin-methods/delete.js:91:    await runHooks('finish')
plugins/core/rest-api-plugin-methods/delete.js:92:    await runHooks('finishDelete')
plugins/core/rest-api-plugin-methods/delete.js:97:      await runHooks('afterCommit')
plugins/core/socketio-plugin.js:1:import { requirePackage } from 'hooked-api'
plugins/core/socketio-plugin.js:153:      } catch (hookError) {
plugins/core/socketio-plugin.js:154:        log.error('socketio auth failure handler threw error', hookError)
plugins/core/socketio-plugin.js:269:  await runHooks('subscriptionFilters', { subscription, auth })
plugins/core/socketio-plugin.js:576:    addHook('finish', 'socketio-broadcast', {}, async ({ context }) => {
plugins/core/socketio-plugin.js:604:    addHook('afterCommit', 'socketio-broadcast-deferred', {}, async ({ context }) => {
plugins/core/socketio-plugin.js:616:    addHook('afterRollback', 'socketio-cleanup-broadcasts', {}, async ({ context }) => {
plugins/core/rest-api-plugin-methods/post.js:49:    // Run early hooks for pre-processing (e.g., file handling)
plugins/core/rest-api-plugin-methods/post.js:50:    await runHooks('beforeProcessing')
plugins/core/rest-api-plugin-methods/post.js:51:    await runHooks('beforeProcessingPost')
plugins/core/rest-api-plugin-methods/post.js:103:    await runHooks('beforeDataCall')
plugins/core/rest-api-plugin-methods/post.js:104:    await runHooks('beforeDataCallPost')
plugins/core/rest-api-plugin-methods/post.js:123:    await runHooks('afterDataCallPost')
plugins/core/rest-api-plugin-methods/post.js:124:    await runHooks('afterDataCall')
plugins/core/rest-api-plugin-methods/post.js:161:      await runHooks('afterCommit')
plugins/core/lib/querying/knex-query-helpers.js:77:const createAdapterUtilities = (hookParams, { getStorageAdapter } = {}) => {
plugins/core/lib/querying/knex-query-helpers.js:78:  const context = hookParams.context || {}
plugins/core/lib/querying/knex-query-helpers.js:132: * @param {Object} hookParams - Hook parameters containing context
plugins/core/lib/querying/knex-query-helpers.js:184: * - rest-api-knex-plugin calls this hook first during query building
plugins/core/lib/querying/knex-query-helpers.js:185: * - Must run before other filter hooks to establish JOINs
plugins/core/lib/querying/knex-query-helpers.js:199: * 4. Sets hasJoins flag for subsequent hooks
plugins/core/lib/querying/knex-query-helpers.js:202:export const polymorphicFiltersHook = async (hookParams, dependencies) => {
plugins/core/lib/querying/knex-query-helpers.js:204:  const adapterUtils = createAdapterUtilities(hookParams, dependencies)
plugins/core/lib/querying/knex-query-helpers.js:207:  const scopeName = hookParams.context?.knexQuery?.scopeName
plugins/core/lib/querying/knex-query-helpers.js:208:  const filters = hookParams.context?.knexQuery?.filters
plugins/core/lib/querying/knex-query-helpers.js:209:  const query = hookParams.context?.knexQuery?.query
plugins/core/lib/querying/knex-query-helpers.js:210:  const db = hookParams.context?.knexQuery?.db || knex
plugins/core/lib/querying/knex-query-helpers.js:380:  // Mark that we have JOINs for other hooks
plugins/core/lib/querying/knex-query-helpers.js:381:  hookParams.context.knexQuery.hasJoins = true
plugins/core/lib/querying/knex-query-helpers.js:437: * @param {Object} hookParams - Hook parameters containing context
plugins/core/lib/querying/knex-query-helpers.js:507: * - rest-api-knex-plugin calls this hook second during query building
plugins/core/lib/querying/knex-query-helpers.js:526:export const crossTableFiltersHook = async (hookParams, dependencies) => {
plugins/core/lib/querying/knex-query-helpers.js:528:  const adapterUtils = createAdapterUtilities(hookParams, dependencies)
plugins/core/lib/querying/knex-query-helpers.js:531:  const scopeName = hookParams.context?.knexQuery?.scopeName
plugins/core/lib/querying/knex-query-helpers.js:532:  const filters = hookParams.context?.knexQuery?.filters
plugins/core/lib/querying/knex-query-helpers.js:533:  const query = hookParams.context?.knexQuery?.query
plugins/core/lib/querying/knex-query-helpers.js:534:  const db = hookParams.context?.knexQuery?.db || knex
plugins/core/lib/querying/knex-query-helpers.js:721:  // Store state for basic filters hook
plugins/core/lib/querying/knex-query-helpers.js:722:  hookParams.context.knexQuery.hasJoins = true
plugins/core/lib/querying/knex-query-helpers.js:801: * @param {Object} hookParams - Hook parameters containing context
plugins/core/lib/querying/knex-query-helpers.js:919: * - rest-api-knex-plugin calls this hook last during query building
plugins/core/lib/querying/knex-query-helpers.js:920: * - Runs after all JOINs have been established by previous hooks
plugins/core/lib/querying/knex-query-helpers.js:932: * 1. Skips filters already handled by polymorphic/cross-table hooks
plugins/core/lib/querying/knex-query-helpers.js:939:export const basicFiltersHook = async (hookParams, dependencies) => {
plugins/core/lib/querying/knex-query-helpers.js:941:  const adapterUtils = createAdapterUtilities(hookParams, dependencies)
plugins/core/lib/querying/knex-query-helpers.js:944:  const scopeName = hookParams.context?.knexQuery?.scopeName
plugins/core/lib/querying/knex-query-helpers.js:945:  const filters = hookParams.context?.knexQuery?.filters
plugins/core/lib/querying/knex-query-helpers.js:946:  const query = hookParams.context?.knexQuery?.query
plugins/core/lib/querying/knex-query-helpers.js:947:  const db = hookParams.context?.knexQuery?.db || knex
plugins/core/lib/querying-writing/compile-schemas.js:8: * @param {Object} deps - Dependencies with context and hooks
plugins/core/lib/querying-writing/compile-schemas.js:110: * - Provides hooks for schema enrichment
plugins/core/lib/querying-writing/compile-schemas.js:117: * 4. Runs schema:enrich hook for plugins
plugins/core/lib/querying-writing/compile-schemas.js:120: * 7. Runs searchSchema:enrich hook
plugins/core/lib/querying-writing/compile-schemas.js:190:  await runHooks('schema:enrich', schemaContext)
plugins/core/lib/querying-writing/compile-schemas.js:223:    await runHooks('searchSchema:enrich', searchSchemaContext)
plugins/core/rest-api-plugin-methods/common.js:207: * @param {Function} runHooks - Function to run hooks
plugins/core/rest-api-plugin-methods/common.js:214:    await runHooks('afterRollback')
plugins/core/rest-api-plugin-methods/common.js:255: * Gets the appropriate hook suffix based on HTTP method
plugins/core/rest-api-plugin-methods/common.js:258: * @returns {string} The capitalized method name for hook naming
plugins/core/rest-api-plugin-methods/common.js:271: * @param {Function} params.runHooks - Function to run hooks
plugins/core/rest-api-plugin-methods/common.js:285:  await runHooks('beforeSchemaValidate')
plugins/core/rest-api-plugin-methods/common.js:286:  await runHooks(`beforeSchemaValidate${methodSpecificHookSuffix}`)
plugins/core/rest-api-plugin-methods/common.js:409:  await runHooks(`afterSchemaValidate${methodSpecificHookSuffix}`)
plugins/core/rest-api-plugin-methods/common.js:410:  await runHooks('afterSchemaValidate')
plugins/core/rest-api-plugin-methods/common.js:419: * @param {function} runHooks - Function to run hooks
plugins/core/rest-api-plugin-methods/common.js:542:  // Step 1: Set up record state for hooks
plugins/core/rest-api-plugin-methods/common.js:574:    await runHooks('finish')
plugins/core/rest-api-plugin-methods/common.js:575:    await runHooks(`finish${methodSpecificHookSuffix}`)
plugins/core/rest-api-plugin-methods/common.js:594:    await runHooks('finish')
plugins/core/rest-api-plugin-methods/common.js:595:    await runHooks(`finish${methodSpecificHookSuffix}`)
plugins/core/rest-api-plugin-methods/common.js:611:    // Run finish hooks
plugins/core/rest-api-plugin-methods/common.js:612:    await runHooks('finish')
plugins/core/rest-api-plugin-methods/common.js:613:    await runHooks(`finish${methodSpecificHookSuffix}`)
plugins/core/rest-api-plugin-methods/put.js:53:    // Run early hooks for pre-processing (e.g., file handling)
plugins/core/rest-api-plugin-methods/put.js:54:    await runHooks('beforeProcessing')
plugins/core/rest-api-plugin-methods/put.js:55:    await runHooks('beforeProcessingPut')
plugins/core/rest-api-plugin-methods/put.js:176:    await runHooks('beforeDataCall')
plugins/core/rest-api-plugin-methods/put.js:177:    await runHooks('beforeDataCallPut')
plugins/core/rest-api-plugin-methods/put.js:195:    await runHooks('afterDataCallPut')
plugins/core/rest-api-plugin-methods/put.js:196:    await runHooks('afterDataCall')
plugins/core/rest-api-plugin-methods/put.js:246:      await runHooks('afterCommit')
plugins/core/lib/fractional-positioning.js:1:import { requirePackage } from 'hooked-api'
plugins/core/rest-api-plugin-methods/patch-relationship.js:24:    await runHooks('checkPermissions')
plugins/core/rest-api-plugin-methods/patch-relationship.js:25:    await runHooks('checkPermissionsPatchRelationship')
plugins/core/rest-api-plugin-methods/patch-relationship.js:44:    await runHooks('finish')
plugins/core/rest-api-plugin-methods/patch-relationship.js:45:    await runHooks('finishPatchRelationship')
plugins/core/rest-api-plugin-methods/release.js:1:import { ValidationError } from 'hooked-api'
plugins/core/rest-api-plugin-methods/release.js:5: * Runs the hook that tells plugins to release resources
plugins/core/rest-api-plugin-methods/release.js:8:  // Run the addRoute hook to notify transport plugins
plugins/core/rest-api-plugin-methods/release.js:9:  await runHooks('release')
plugins/core/rest-api-multihome-plugin.js:10:    // Get configuration - hooked-api namespaces options by plugin name
plugins/core/rest-api-multihome-plugin.js:21:    const resolveStorageAdapter = (scopeName, hookContext = {}) => {
plugins/core/rest-api-multihome-plugin.js:23:      if (hookContext.storageAdapter) return hookContext.storageAdapter
plugins/core/rest-api-multihome-plugin.js:24:      if (hookContext.knexQuery?.storageAdapter) return hookContext.knexQuery.storageAdapter
plugins/core/rest-api-multihome-plugin.js:31:    const translateColumnReference = ({ field, tableName, scopeName, hookContext }) => {
plugins/core/rest-api-multihome-plugin.js:32:      const storageAdapter = resolveStorageAdapter(scopeName, hookContext)
plugins/core/rest-api-multihome-plugin.js:40:    const translateFilterValue = ({ field, value, scopeName, hookContext }) => {
plugins/core/rest-api-multihome-plugin.js:41:      const storageAdapter = resolveStorageAdapter(scopeName, hookContext)
plugins/core/rest-api-multihome-plugin.js:65:    addHook('transport:request', 'extract-multihome-id', {}, async ({ context, request, helpers }) => {
plugins/core/rest-api-multihome-plugin.js:87:    addHook('scope:added', 'validate-multihome-field', {}, ({ context, vars }) => {
plugins/core/rest-api-multihome-plugin.js:110:    // Main filtering hook - adds WHERE clause to all queries
plugins/core/rest-api-multihome-plugin.js:111:    log.debug('Registering multihome filter hook')
plugins/core/rest-api-multihome-plugin.js:112:    addHook('knexQueryFiltering', 'multihome-filter', {}, async ({ context, vars }) => {
plugins/core/rest-api-multihome-plugin.js:158:        hookContext: context,
plugins/core/rest-api-multihome-plugin.js:165:        hookContext: context,
plugins/core/rest-api-multihome-plugin.js:182:    addHook('beforeSchemaValidate', 'set-multihome-id', {}, async ({ context, scopeName, vars }) => {
plugins/core/rest-api-multihome-plugin.js:230:    // Add checkPermissions hook to enforce tenant isolation
plugins/core/rest-api-multihome-plugin.js:232:    addHook('checkPermissions', 'multihome-check-permissions', {}, async ({ context, scopeName }) => {
plugins/core/rest-api-plugin-methods/delete-relationship.js:48:    await runHooks('checkPermissions')
plugins/core/rest-api-plugin-methods/delete-relationship.js:49:    await runHooks('checkPermissionsDeleteRelationship')
plugins/core/rest-api-plugin-methods/delete-relationship.js:106:    await runHooks('finish')
plugins/core/rest-api-plugin-methods/delete-relationship.js:107:    await runHooks('finishDeleteRelationship')
plugins/core/rest-api-plugin-methods/check-permissions.js:12:  await runHooks('checkPermissions')
plugins/core/bulk-operations-plugin.js:347:    addHook('afterAddScope', 'bulkOperationsRoutes', {}, async ({ scopeName }) => {
plugins/core/bulk-operations-plugin.js:418:      addHook('beforeBulkPost', 'optimizedBulkInsert', {}, async ({ scope, params, context }) => {
plugins/core/rest-api-plugin-methods/get-related.js:52:  await runHooks('checkPermissions')
plugins/core/rest-api-plugin-methods/get-related.js:53:  await runHooks('checkPermissionsGetRelated')
plugins/core/rest-api-access.js:87:    const resolveStorageAdapter = (scopeName, hookContext = {}) => {
plugins/core/rest-api-access.js:90:      if (hookContext.storageAdapter) return hookContext.storageAdapter
plugins/core/rest-api-access.js:91:      if (hookContext.knexQuery?.storageAdapter) return hookContext.knexQuery.storageAdapter
plugins/core/rest-api-access.js:99:    const translateColumnReference = ({ field, tableName, scopeName, hookContext }) => {
plugins/core/rest-api-access.js:100:      const storageAdapter = resolveStorageAdapter(scopeName, hookContext)
plugins/core/rest-api-access.js:108:    const translateFilterValue = ({ field, value, scopeName, hookContext }) => {
plugins/core/rest-api-access.js:109:      const storageAdapter = resolveStorageAdapter(scopeName, hookContext)
plugins/core/rest-api-access.js:148:    addHook('scope:added', 'rest-auth-process-rules', {}, ({ context, scopes }) => {
plugins/core/rest-api-access.js:167:    addHook('schema:enrich', 'rest-auth-auto-ownership-field', {}, ({ context }) => {
plugins/core/rest-api-access.js:239:    addHook('beforeProcessingPost', 'rest-auth-auto-set-owner', {}, ({ context, scopeName, scopes, scopeOptions }) => {
plugins/core/rest-api-access.js:242:    addHook('beforeProcessingPatch', 'rest-auth-auto-set-owner', {}, ({ context, scopeName, scopes, scopeOptions }) => {
plugins/core/rest-api-access.js:245:    addHook('beforeProcessingPut', 'rest-auth-auto-set-owner', {}, ({ context, scopeName, scopes, scopeOptions }) => {
plugins/core/rest-api-access.js:249:    addHook('knexQueryFiltering', 'rest-auth-filter-by-owner', { sequence: -40 }, ({ context, scopes, scopeOptions }) => {
plugins/core/rest-api-access.js:281:      const columnRef = translateColumnReference({ field, tableName, scopeName, hookContext: context })
plugins/core/rest-api-access.js:282:      const ownerValue = translateFilterValue({ field, value: context.auth.userId, scopeName, hookContext: context })
plugins/core/rest-api-access.js:291:    addHook('checkPermissions', 'rest-auth-enforce', { sequence: -100 }, async ({ context, scope, scopeName }) => {
plugins/core/rest-api-access.js:343:    addHook('checkPermissions', 'rest-auth-check-get-ownership', { sequence: -80 }, ({ context, scope, scopeName, scopeOptions }) => {
plugins/core/connectors/express-plugin.js:8: * - Automatic route creation via addRoute hook
plugins/core/connectors/express-plugin.js:17:import { requirePackage } from 'hooked-api'
plugins/core/connectors/express-plugin.js:27:    addHook('release', 'releaseHook', {},
plugins/core/connectors/express-plugin.js:116:    // Add transport hook middleware
plugins/core/connectors/express-plugin.js:129:      // Transport-specific data for hooks
plugins/core/connectors/express-plugin.js:149:      // Run transport hooks - don't check return value for consistency with other hooks
plugins/core/connectors/express-plugin.js:151:      await runHooks('transport:request', context)
plugins/core/connectors/express-plugin.js:155:        // Apply response headers from hooks
plugins/core/connectors/express-plugin.js:168:      // Check if request was already handled by a hook
plugins/core/connectors/express-plugin.js:268:      // Run transport:response hook for errors
plugins/core/connectors/express-plugin.js:273:        await runHooks('transport:response', req.context)
plugins/core/connectors/express-plugin.js:275:        // Apply response headers from hooks
plugins/core/connectors/express-plugin.js:285:     * Listen to addRoute hook to create Express routes
plugins/core/connectors/express-plugin.js:287:    addHook('addRoute', 'expressRouteCreator', {}, async ({ context }) => {
plugins/core/connectors/express-plugin.js:338:              await runHooks('transport:response', context)
plugins/core/connectors/express-plugin.js:487:          // Run transport:response hook for 404
plugins/core/connectors/express-plugin.js:488:          await runHooks('transport:response', context)
plugins/core/connectors/express-plugin.js:490:          // Apply response headers from hooks
plugins/core/rest-api-plugin-methods/add-route.js:1:import { ValidationError } from 'hooked-api'
plugins/core/rest-api-plugin-methods/add-route.js:16:  // Create context for enrichAttributes hooks
plugins/core/rest-api-plugin-methods/add-route.js:19:  // Run the addRoute hook to notify transport plugins
plugins/core/rest-api-plugin-methods/add-route.js:20:  await runHooks('addRoute')
plugins/core/lib/querying/knex-cross-table-search.js:7: * @param {Object} scopes - All registered hooked-api scopes containing schema and relationship definitions
plugins/core/lib/querying/knex-cross-table-search.js:87: * @param {Object} scopes - All registered hooked-api scopes containing schema and relationship definitions
plugins/core/lib/querying/knex-cross-table-search.js:390: * @param {Object} scopes - All registered hooked-api scopes containing schema and relationship definitions
plugins/core/lib/querying/knex-cross-table-search.js:488: * @param {Object} scopes - All registered hooked-api scopes containing schema and relationship definitions
plugins/core/rest-api-cors-plugin.js:43:    // Store reference in vars for access in hooks
plugins/core/rest-api-cors-plugin.js:129:    addHook('transport:response', 'cors-headers', { order: -1000 }, async ({ context }) => {
plugins/core/rest-api-cors-plugin.js:134:        log.error('CORS: request is undefined in transport:response hook')
plugins/core/rest-api-plugin.js:3:// Import hook functions
plugins/core/rest-api-plugin.js:4:import compileResourceSchemas from './rest-api-plugin-hooks/compile-resource-schemas.js'
plugins/core/rest-api-plugin.js:5:import validateIncludeConfigurations from './rest-api-plugin-hooks/validate-include-configurations.js'
plugins/core/rest-api-plugin.js:6:import turnScopeInitIntoVars from './rest-api-plugin-hooks/turn-scope-init-into-vars.js'
plugins/core/rest-api-plugin.js:7:import registerScopeRoutes from './rest-api-plugin-hooks/register-scope-routes.js'
plugins/core/rest-api-plugin.js:8:import registerRelationshipRoutes from './rest-api-plugin-hooks/register-relationship-routes.js'
plugins/core/rest-api-plugin.js:114:    // Scope (resources) added hooks
plugins/core/rest-api-plugin.js:117:    addHook('scope:added', 'validateRelationships', {}, validateRelationships)
plugins/core/rest-api-plugin.js:118:    addHook('scope:added', 'compileResourceSchemas', {}, compileResourceSchemas)
plugins/core/rest-api-plugin.js:119:    addHook('scope:added', 'validateIncludeConfigurations', {}, validateIncludeConfigurations)
plugins/core/rest-api-plugin.js:120:    addHook('scope:added', 'turnScopeInitIntoVars', {}, turnScopeInitIntoVars)
plugins/core/rest-api-plugin.js:145:    addHook('scope:added', 'registerRelationshipRoutes', {}, registerRelationshipRoutes)
plugins/core/rest-api-plugin.js:146:    addHook('scope:added', 'registerScopeRoutes', {}, registerScopeRoutes)
plugins/core/rest-api-plugin-methods/enrich-attributes.js:5: * Runs the enrichAttributes hook for a specific scope to allow plugins to modify attributes
plugins/core/rest-api-plugin-methods/enrich-attributes.js:183:  // Create context for enrichAttributes hooks
plugins/core/rest-api-plugin-methods/enrich-attributes.js:194:  // Run enrichAttributes hooks for additional/override computations
plugins/core/rest-api-plugin-methods/enrich-attributes.js:195:  await runHooks('enrichAttributes')
plugins/core/rest-api-plugin-methods/enrich-attributes.js:197:  // Return the attributes from context, which hooks may have modified
plugins/core/rest-api-knex-plugin.js:1:import { requirePackage } from 'hooked-api'
plugins/core/rest-api-knex-plugin.js:144:    // Register the three separate filter hooks
plugins/core/rest-api-knex-plugin.js:145:    // Dependencies object for the hooks
plugins/core/rest-api-knex-plugin.js:152:    addHook('knexQueryFiltering', 'polymorphicFiltersHook', {},
plugins/core/rest-api-knex-plugin.js:153:      async (hookParams) => polymorphicFiltersHook(hookParams, polymorphicFiltersHookParams)
plugins/core/rest-api-knex-plugin.js:157:    addHook('knexQueryFiltering', 'crossTableFiltersHook', {},
plugins/core/rest-api-knex-plugin.js:158:      async (hookParams) => crossTableFiltersHook(hookParams, polymorphicFiltersHookParams)
plugins/core/rest-api-knex-plugin.js:162:    addHook('knexQueryFiltering', 'basicFiltersHook', {},
plugins/core/rest-api-knex-plugin.js:163:      async (hookParams) => basicFiltersHook(hookParams, polymorphicFiltersHookParams)
plugins/core/rest-api-knex-plugin.js:167:    addHook('release', 'releaseHook', {},
plugins/core/rest-api-knex-plugin.js:316:      // Build query - no filtering hooks for single records
plugins/core/rest-api-knex-plugin.js:385:      // Build query - no filtering hooks for single records
plugins/core/rest-api-knex-plugin.js:428:     * @param {Object} [params.context.knexQuery] - Temporarily set during hooks for query building
plugins/core/rest-api-knex-plugin.js:430:     * @param {Function} params.runHooks - Function to run hooks (e.g., 'knexQueryFiltering')
plugins/core/rest-api-knex-plugin.js:475:       * This is where the magic happens. The knexQueryFiltering hook is called
plugins/core/rest-api-knex-plugin.js:476:       * to apply all filter conditions. The searchSchemaFilter hook (registered
plugins/core/rest-api-knex-plugin.js:479:       * IMPORTANT: Each hook should wrap its conditions in query.where(function() {...})
plugins/core/rest-api-knex-plugin.js:483:      log.trace('[DATA-QUERY] Calling knexQueryFiltering hook', { hasQuery: !!query, hasFilters: !!queryParams.filters, scopeName, tableName })
plugins/core/rest-api-knex-plugin.js:485:      log.trace('[DATA-QUERY] About to call runHooks', { hookName: 'knexQueryFiltering' })
plugins/core/rest-api-knex-plugin.js:491:      // Store the query data in context where hooks can access it
plugins/core/rest-api-knex-plugin.js:492:      // This is the proper way to share data between methods and hooks
plugins/core/rest-api-knex-plugin.js:507:      await runHooks('knexQueryFiltering')
plugins/core/rest-api-knex-plugin.js:509:      // Clean up after hook execution
plugins/core/rest-api-knex-plugin.js:514:      log.trace('[DATA-QUERY] Finished knexQueryFiltering hook')
plugins/core/rest-api-knex-plugin.js:516:      // Apply sorting directly (no hooks)
plugins/core/rest-api-knex-plugin.js:784:          // Apply filters through hooks (same as main query)
plugins/core/rest-api-knex-plugin.js:786:            // Store query data in context for hooks
plugins/core/rest-api-knex-plugin.js:798:            // Run the same filtering hooks
plugins/core/rest-api-knex-plugin.js:799:            await runHooks('knexQueryFiltering')
