{"ast":null,"code":"const data = {\n  lastId: 2,\n  resources: [{\n    id: 1,\n    label: 'First resource'\n  }, {\n    id: 2,\n    label: 'Second resource'\n  }],\n  liked: false,\n  likeCount: 42,\n  todos: ['Buy groceries', 'Walk the dog'],\n  users: {\n    1: {\n      id: 1,\n      name: 'Alice Johnson',\n      email: 'alice@example.com'\n    },\n    2: {\n      id: 2,\n      name: 'Bob Smith',\n      email: 'bob@example.com'\n    },\n    3: {\n      id: 3,\n      name: 'Carol White',\n      email: 'carol@example.com'\n    }\n  },\n  fruits: ['Apple', 'Apricot', 'Avocado', 'Banana', 'Blueberry', 'Cherry', 'Coconut', 'Date', 'Elderberry', 'Fig', 'Grape', 'Guava', 'Kiwi', 'Lemon', 'Lime', 'Mango', 'Melon', 'Nectarine', 'Orange', 'Papaya', 'Peach', 'Pear', 'Pineapple', 'Plum', 'Raspberry', 'Strawberry', 'Watermelon']\n};\n\n/**\n * @param {Function} result\n * @param {number} delay\n */\nconst simulateRequest = function (result) {\n  let delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Math.random() * 1e3;\n  return new Promise(resolve => setTimeout(() => resolve(result()), delay));\n};\nconst simulateFailure = function (error) {\n  let delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Math.random() * 1e3;\n  return new Promise((_, reject) => setTimeout(() => reject(error), delay));\n};\nconst api = {\n  get: () => simulateRequest(() => data.resources),\n  post: resource => simulateRequest(() => {\n    const newResource = {\n      ...resource,\n      id: ++data.lastId\n    };\n    data.resources.push(newResource);\n    return newResource;\n  }),\n  put: (id, resource) => simulateRequest(() => {\n    const oldResource = data.resources.find(resource => resource.id === id);\n    if (!oldResource) return undefined;\n    const updatedResource = {\n      ...resource,\n      id\n    };\n    data.resources = data.resources.map(resource => resource.id === id ? updatedResource : resource);\n    return updatedResource;\n  }),\n  delete: id => simulateRequest(() => {\n    const {\n      length\n    } = data.resources;\n    data.resources = data.resources.filter(resource => resource.id !== id);\n    return data.resources.length !== length;\n  }),\n  getLikeStatus: () => simulateRequest(() => ({\n    liked: data.liked,\n    count: data.likeCount\n  })),\n  toggleLike: liked => simulateRequest(() => {\n    data.liked = liked;\n    data.likeCount += liked ? 1 : -1;\n    return {\n      liked: data.liked,\n      count: data.likeCount\n    };\n  }, 800 + Math.random() * 700),\n  getUser: id => simulateRequest(() => data.users[id], 600 + Math.random() * 600),\n  getTodos: () => simulateRequest(() => [...data.todos]),\n  addTodo: text => simulateRequest(() => {\n    data.todos.push(text);\n    return [...data.todos];\n  }),\n  addTodoFail: () => simulateFailure('Server error: could not save', 800),\n  search: query => simulateRequest(() => data.fruits.filter(f => f.toLowerCase().includes(query.toLowerCase())), 200 + Math.random() * 1300)\n};\nexport default api;","map":{"version":3,"names":["data","lastId","resources","id","label","liked","likeCount","todos","users","name","email","fruits","simulateRequest","result","delay","arguments","length","undefined","Math","random","Promise","resolve","setTimeout","simulateFailure","error","_","reject","api","get","post","resource","newResource","push","put","oldResource","find","updatedResource","map","delete","filter","getLikeStatus","count","toggleLike","getUser","getTodos","addTodo","text","addTodoFail","search","query","f","toLowerCase","includes"],"sources":["/root/.openclaw/workspace/projects/termosa-use-request/example/src/api.js"],"sourcesContent":["const data = {\n  lastId: 2,\n  resources: [\n    { id: 1, label: 'First resource' },\n    { id: 2, label: 'Second resource' },\n  ],\n  liked: false,\n  likeCount: 42,\n  todos: ['Buy groceries', 'Walk the dog'],\n  users: {\n    1: { id: 1, name: 'Alice Johnson', email: 'alice@example.com' },\n    2: { id: 2, name: 'Bob Smith', email: 'bob@example.com' },\n    3: { id: 3, name: 'Carol White', email: 'carol@example.com' },\n  },\n  fruits: ['Apple', 'Apricot', 'Avocado', 'Banana', 'Blueberry', 'Cherry', 'Coconut', 'Date', 'Elderberry', 'Fig', 'Grape', 'Guava', 'Kiwi', 'Lemon', 'Lime', 'Mango', 'Melon', 'Nectarine', 'Orange', 'Papaya', 'Peach', 'Pear', 'Pineapple', 'Plum', 'Raspberry', 'Strawberry', 'Watermelon'],\n}\n\n/**\n * @param {Function} result\n * @param {number} delay\n */\nconst simulateRequest = (result, delay = Math.random() * 1e3) =>\n  new Promise((resolve) => setTimeout(() => resolve(result()), delay))\n\nconst simulateFailure = (error, delay = Math.random() * 1e3) =>\n  new Promise((_, reject) => setTimeout(() => reject(error), delay))\n\nconst api = {\n  get: () => simulateRequest(() => data.resources),\n  post: (resource) =>\n    simulateRequest(() => {\n      const newResource = { ...resource, id: ++data.lastId }\n      data.resources.push(newResource)\n      return newResource\n    }),\n  put: (id, resource) =>\n    simulateRequest(() => {\n      const oldResource = data.resources.find((resource) => resource.id === id)\n      if (!oldResource) return undefined\n\n      const updatedResource = { ...resource, id }\n      data.resources = data.resources.map((resource) => (resource.id === id ? updatedResource : resource))\n      return updatedResource\n    }),\n  delete: (id) =>\n    simulateRequest(() => {\n      const { length } = data.resources\n      data.resources = data.resources.filter((resource) => resource.id !== id)\n      return data.resources.length !== length\n    }),\n  getLikeStatus: () => simulateRequest(() => ({ liked: data.liked, count: data.likeCount })),\n  toggleLike: (liked) =>\n    simulateRequest(() => {\n      data.liked = liked\n      data.likeCount += liked ? 1 : -1\n      return { liked: data.liked, count: data.likeCount }\n    }, 800 + Math.random() * 700),\n  getUser: (id) => simulateRequest(() => data.users[id], 600 + Math.random() * 600),\n  getTodos: () => simulateRequest(() => [...data.todos]),\n  addTodo: (text) =>\n    simulateRequest(() => {\n      data.todos.push(text)\n      return [...data.todos]\n    }),\n  addTodoFail: () => simulateFailure('Server error: could not save', 800),\n  search: (query) =>\n    simulateRequest(\n      () => data.fruits.filter((f) => f.toLowerCase().includes(query.toLowerCase())),\n      200 + Math.random() * 1300\n    ),\n}\n\nexport default api\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}