     1	export default async function turnScopeInitIntoVars ({ context, scopes, vars: apiVars }) {
     2	  // Refer to the scope's vars
     3	  const scope = scopes[context.scopeName]
     4	  const scopeOptions = scope?.scopeOptions || context.scopeOptions || {}
     5	  const vars = scope?.vars || apiVars
     6	
     7	  // The scope-specific ones
     8	  vars.sortableFields = scopeOptions.sortableFields || []
     9	  vars.defaultSort = scopeOptions.defaultSort || null
    10	
    11	  // The general ones that are also set at api level, but overrideable
    12	  if (typeof scopeOptions.queryDefaultLimit !== 'undefined') vars.queryDefaultLimit = scopeOptions.queryDefaultLimit
    13	  if (typeof scopeOptions.queryMaxLimit !== 'undefined') vars.queryMaxLimit = scopeOptions.queryMaxLimit
    14	  if (typeof scopeOptions.includeDepthLimit !== 'undefined') vars.includeDepthLimit = scopeOptions.includeDepthLimit
    15	  if (typeof scopeOptions.enablePaginationCounts !== 'undefined') vars.enablePaginationCounts = scopeOptions.enablePaginationCounts
    16	
    17	  // Set simplified settings as scope vars
    18	  if (typeof scopeOptions.simplifiedApi !== 'undefined') vars.simplifiedApi = scopeOptions.simplifiedApi
    19	  if (typeof scopeOptions.simplifiedTransport !== 'undefined') vars.simplifiedTransport = scopeOptions.simplifiedTransport
    20	
    21	  // Set returnRecord settings as scope vars
    22	  if (typeof scopeOptions.returnRecordApi !== 'undefined') vars.returnRecordApi = scopeOptions.returnRecordApi
    23	  if (typeof scopeOptions.returnRecordTransport !== 'undefined') vars.returnRecordTransport = scopeOptions.returnRecordTransport
    24	
    25	  // Set idProperty as scope var
    26	  if (typeof scopeOptions.idProperty !== 'undefined') vars.idProperty = scopeOptions.idProperty
    27	
    28	  // Add validation for query limits
    29	  if (vars.queryDefaultLimit && vars.queryMaxLimit) {
    30	    if (vars.queryDefaultLimit > vars.queryMaxLimit) {
    31	      throw new Error(
    32	        `Invalid scope '${context.scopeName}' configuration: ` +
    33	        `queryDefaultLimit (${vars.queryDefaultLimit}) cannot exceed queryMaxLimit (${vars.queryMaxLimit})`
    34	      )
    35	    }
    36	  }
    37	
    38	  // Validate relationship include limits at scope creation time
    39	  Object.entries(scopeOptions.relationships || {}).forEach(([relName, relDef]) => {
    40	    if (relDef.include?.limit && vars.queryMaxLimit) {
    41	      if (relDef.include.limit > vars.queryMaxLimit) {
    42	        throw new Error(
    43	          `Invalid relationship '${context.scopeName}.${relName}' configuration: ` +
    44	          `include.limit (${relDef.include.limit}) cannot exceed queryMaxLimit (${vars.queryMaxLimit})`
    45	        )
    46	      }
    47	    }
    48	  })
    49	}
